「ZNIU」:脆弱性Dirty COWを突くAndroid端末向け不正アプリを確認

トレンドマイクロは、この Android端末を狙うマルウェア「ZNIU(ズィーニュー)」について Google に報告しました。これを受けて Google は、Google Play プロテクトのセキュリティ機能によって端末が保護されることを検証済みです。

Dirty COW」と呼ばれる Linuxの脆弱性「CVE-2016-5195」が、2016年に初めて一般に公開されました。この脆弱性は、Red Hat のようなアップストリームの Linuxや、Linuxベースのカーネルを持つ Android などのプラットフォームに確認されました。攻撃者によってシステムのルート権限を取得される可能性のある深刻な権限昇格の脆弱性に分類されたものの、その後、Dirty COW を利用した Android端末への攻撃は確認されていませんでした。理由としては、Android端末主要モデルへの攻撃手法を確立するために時間を要したことが考えられます。それから約1年が経過し、トレンドマイクロは、Androidプラットフォームの脆弱性「Dirty COW」を狙う初の不正アプリ「ZNIU(「AndroidOS_ZNIU」として検出)」の検体を入手しました。

ZNIU は、2017年8月には世界中 40カ国以上で検出され、そのほとんどが中国およびインドで確認されています。米国、日本、カナダ、ドイツ、インドネシアでも検出され、本記事執筆時点(2017年9月25日)、5,000人を超えるユーザに影響を与えています。トレンドマイクロのクラウド型セキュリティ技術基盤「Trend Micro Smart Protection Network(SPN)」の情報によると、ZNIUが仕込まれた不正アプリ 1,200余りが、不正な Webサイト上で確認されています(※)。不正アプリには、Dirty COW の脆弱性を攻撃できるルートキットが含まれ、ポルノやゲームアプリなどとして偽装されています。

図1
図1:ZNIU が仕込まれているポルノアプリ

トレンドマイクロは、2016年12月6日、Dirty COW の「概念実証(Proof of Concept、POC)」を検証し、すべてのバージョンの Android OS が影響を受けることを確認していますが、ZNIU の場合、64ビットの ARM64またはx86_64のアーキテクチャを搭載した Android端末でのみ Dirty COWの脆弱性を突く攻撃が可能です。しかし、今回確認された脆弱性攻撃では、Security-Enhanced Linux(SELinux)を迂回してバックドアを設置することが可能になっています。一方 POCでは、システムのサービスコードを変更することしかできませんでした。

トレンドマイクロは、ZNIU のルートキット 6種について解析しました。そのうちの 4つは脆弱性 Dirty COW を利用するもの、もう 1つはルート化アプリ「KingoRoot」、そしてもう1つは Iovyroot と呼ばれる脆弱性「CVE-2015-1805」を利用するルートキットでした。ZNIU は、Dirty COW では狙うことのできない 32ビットの ARMを使う CPU端末をルート化するために、KingoRoot と脆弱性 Iovyroot を利用すると考えられます。

■ZNIUの感染フロー

ZNIU は、しばしば、ユーザが不正な Webサイトからポルノアプリをダウンロードすることによって侵入します。マルウェアが仕込まれたアプリを端末にインストールさせるため、ユーザは不正な URLをクリックするように促されます。ZNIU は、起動すると、コマンド&コントロール(C&C)サーバと通信します。コードに更新がある場合は、C&Cサーバから更新を取得し端末のシステムに読み込みます。同時に、システムの制限を解除するため、Dirty COW を利用してローカルで権限昇格し、将来実行する見込みの遠隔からの攻撃の準備として、端末にバックドアを設置します。

図2
図2:ZNIUの感染経路

ZNIUは、端末のメインUIに侵入した後、ユーザの通信事業者の情報を収集します。攻撃者は端末の所有者になりすまし、ショートメッセージサービス(SMS)対応の決済サービスを通じて通信事業者と取引を行います。攻撃者はZNIUを利用することにより、被害者の端末上で、通信事業者の決済サービスを利用し代金を集金します。確認した検体のうちの1つのコードを調べると、代金はダミー会社に送金されるよう設定されており、ネットワークトラフィックから、ダミー会社は中国のある都市に所在していることが確認されました。SMS による取引が完了すると、ZNIU は端末からメッセージを削除し、通信事業者と攻撃者との間に取引があったという足跡は残りません。通信事業者が中国国外にある場合、SMSによる通信事業者との取引はできませんが、それでも ZNIU はシステムの脆弱性を利用しバックドアを設置します。

図3
図3:ZNIU から通信事業者に送信された取引要求

トレンドマイクロの解析から、ZNIU は中国の通信事業者に加入するユーザを標的としていると考えられます。また、攻撃者は高額な金額を設定をすることもできますが、ユーザに気付かれないよう、意図的に 20元(340円前後。2017年9月29日現在)と少額に設定していました。

図4
図4:SMS による取引の様子

Android OS は、アプリが端末の SMS機能にアクセスする許可を与える場合、ユーザの操作を必要とします。このため、ZNIU は目的を果たすためにルート権限を必要とします。また、ZNIU はバックドアを設置することによって、後に追加の不正コードを遠隔からロードし、ユーザから継続して金銭を窃取することを可能にします。

■ルートキットの解析

ZNIU に利用されるルートキットは、独立したコンポーネント「ブロードキャストレシーバ」を介して、不正アプリに組み込まれる場合があります。


図5

図5:ネットワーク上でアクティブ化されるZNIUのコード

ZNIU は他のコンポーネントには変更を加えず、簡単にサードパーティのアプリにルートキットを挿入することができます。この方法は、大規模なマルウェアの拡散に利用される可能性があります。

攻撃者は、ZNIU の不正な DEXコードを保護するために暗号化し、圧縮しています。これは、リバースエンジニアリングによる静的コード解析の回避を目的としています。さらに調査すると、ユーザが端末をネットワークに接続するか、または電源に接続するだけでも、ブロードキャストレシーバを利用して脆弱性攻撃コードをアクティブ化できることが確認されました。その後、不正なネイティブコードが直接送信され、実行されます。


図6

図6:ZNIU のネイティブコード

以下は、ZNIU のネイティブコードの主要なロジックです。

  1. 端末のモデル情報を収集する
  2. リモートサーバから条件に合うルートキットを取得する
  3. ルートキットのエクスプロイトコードを復号する
  4. エクスプロイトコードを一つずつ実行して結果を確認し、ELFファイルを削除する。
  5. 攻撃が成功したか失敗したかを報告する


    図6

    図7:ZNIU のネットワーク活動

    攻撃を管理するリモートの C&Cサーバの URLと、クライアントとサーバ間の通信も暗号化されていましたが、文字列の復号を実行したところ、C&C サーバの詳細が判明し、ドメインとサーバのホストが中国に所在することが明らかになりました。 確認された C&Cサーバの URLについては、こちらを参照してください。


    図8

    図8:リモートの C&Cサーバの攻撃管理画面

    ルートキット “exp * .ziu” は、ダウンロードされると、ZLIB を利用して “exp * .inf” に解凍されます。


    図9

    図9:ZIUファイルを解凍する ZLIB

    ルートキットが必要とするファイルはまとめて一つの INFファイルに圧縮されています。このファイルは「ulnz」で始まるファイル名を持ち、複数の ELFファイル、またはスクリプトファイルが含まれています。


    図10

    図10:INFファイルの構造

    ZNIU のルートキットは、「virtual dynamically linked shared object(仮想動的共有オブジェクト、vDSO)」に任意の書き込みをすることが可能です。vDSO は、任意のカーネル空間の関数をユーザ空間にエクスポートすることにより、アプリケーションのパフォーマンスを向上させるオブジェクトです。vDSOコードはカーネルのコンテキストで実行されるため、SELinux による制限がありません。

    ルートキットは、一般公開されているエクスプロイトコードを利用し、シェルコードを vDSO に書き込むことによってリバースシェルを作成します。そして、SELinux を書き換えることによって制限を解除し、バックドアのルートシェルを仕掛けます。


    図11

    図11:vDSO のコードを書き換える

    追記:2017年9月25日公開後、弊社の継続した監視から、新たに ZNIUマルウェアが組み込まれた不正アプリ30万以上を確認しました。なお、これらの不正アプリは、サードパーティのストアで拡散されているようです。また、これら新たに確認された不正アプリには、14万以上に固有のラベルがあり、ラベルには読みづらくするための記号や文字が利用されていました。これは、検出を回避する目的の意図的なものと考えられます。

    ZNIU に関連するハッシュ(SHA256)、パッケージ名およびラベルなどの IOCの一覧、および新たに追加された検体については、こちらを参照してください。

    ■トレンドマイクロの対策

    トレンドマイクロでは、モバイル環境での総合セキュリティ対策として、個人利用者向けには Google Playで利用可能な「ウイルスバスター モバイル」、法人利用者向けには「Trend Micro Mobile Security™」を提供しています。これらの製品ではトレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network(SPN)」の機能である「Mobile App Reputation(MAR)」技術や「Web レピュテーション(WRS)」技術により、不正/迷惑アプリの検出や、関連する不正 Webサイトのブロックに対応しています。

    参考記事:

    翻訳:室賀 美和(Core Technology Marketing, TrendLabs)