音声や動画を窃取する Android 端末向けバッグドア型不正アプリ「GhostCtrl」

2017 年 6 月にイスラエルの病院への攻撃が確認された「RETADUP(レタダップ)」は、ワーム活動で拡散し、バックドア活動によって情報を窃取するマルウェアです。Windows を狙ったこの事例は攻撃の一部に過ぎず、少なくとも対象となるプラットフォームは当初の想定よりも広範であることが判明しました。イスラエルの事例に続き、今回、より多くの機能を備えた Android 端末向け不正アプリが確認されています。

トレンドマイクロでは、今回確認した問題のアプリが感染した端末のさまざまな機能をひそかに操作することから「GhostCtrl(ゴーストコントロール)」と名付けました。「ANDROIDOS_GHOSTCTRL.OPS」または「ANDROIDOS_GHOSTCTRL.OPSA」として検出しています。

GhostCtrl には 3 つのバージョンがあります。バージョン 1 は、難読化されておらず、端末の機能を操作して情報を窃取します。バージョン 2 では、操作可能な端末の機能が追加されました。バージョン 3 は、従来のバージョンの良いところを組み合わせたもので、さらにいくつかの機能が追加されています。このように、GhostCtrl は新しい機能を追加しながらバージョンアップを繰り返しており、今後もさらに変化していくものと思われます。

■GhostCtrl の素性を示すわずかな痕跡

GhostCtrl は、2015 年 11 月に注目を集めた「OmniRAT」(「ANDROIDOS_GHOSTCTRL.OPS」または「ANDROIDOS_GHOSTCTRL.OPSA」として検出)の亜種、あるいは少なくとも OmniRAT に基づいて開発された不正アプリです。OmniRAT は、商用販売されているマルチプラットフォーム向け「Remote AdministrationTool(RAT)」で、Android 端末から Windows、Linux、Mac の各プラットフォームを遠隔操作する機能が売りとなっています。逆に、各プラットフォームの PC から Android 端末を遠隔操作することも可能です。無期限ライセンスは、25~75 米ドル(2017 年 7 月 20 日時点で、約 2,800~8,400 円)で販売されています。OmniRAT は不正な目的のアプリではありませんが、改ざんして悪用する方法がアンダーグラウンドの掲示板で頻繁にやり取りされ、中にはそのための更新プログラムを提供する者もいました。

図 1 のように、実際に、この不正アプリをインストールするための「Android application package(APK ファイル)」には、OmniRAT から派生したものであることを示す証拠として、「omnirat」という文字列が確認されています。しかし、OmniRAT が「RAT as aservice(サービスとしてのRAT)」であることを踏まえると、アプリのコンパイル時に修正あるいは削除することによってこの文字列が残らないようにすることも可能です。

図1
図 1:GhostCtrl バージョン 3 の「resources.arsc」ファイル内に文字列「omnirat」を確認

■執拗にインストールを要求する GhostCtrl

GhostCtrl は、「App」、「MMS」、「whatsapp」、さらには「PokemonGO」のような名称を利用し、正規アプリや人気のあるアプリに偽装します。この不正アプリは、起動後にリソースファイル内の文字列を「base64 方式」で復号し、端末に書き込みます。実はこれがメインの不正な APK です。次に、この不正な APK を格納していた元の APK が、ドロップした不正な APK をクリックします。この時、インストールを要求するメッセージが表示されますが、ユーザがキャンセルしてもすぐに同じメッセージがポップアップするため、これをキャンセルするのは困難です。この不正な APK にはアイコンがありません。インストール後、元の APK がこの不正な APK のサービスをバックグラウンドで実行します。

図2
図 2:元の APK がメインの不正な APK をドロップ

メインの APK のバックドア機能には、ユーザに正規のシステムアプリケーションと誤解させるため、通常、「com.android.engine」のような名称が付けられています。この不正な APK は、「new Socket(“hef-klife[.]ddns[.]net,3176)」というコードでソケットを作成し、コマンド & コントロール(C&C)サーバに接続してコマンドを受信します。

■感染した端末でコマンドを実行する GhostCtrl の機能

C&C サーバからのコマンドは暗号化されており、受信後に APK によって端末で復号されます。興味深いことに、このバックドアは IP アドレスを利用して直接 C&C に接続するのではなく、ドメイン名を利用します。これは、トラフィックを目立たないようにするための挙動だと考えられます。また、下記のように、同じ C&C サーバの IP アドレスを返す「Dynamic Name Server(DNS)」もいくつか確認されています。

  • hef–klife[.]ddns[.]net
  • f–klife[.]ddns[.]net
  • php[.]no-ip[.]biz
  • ayalove[.]no-ip[.]biz

注目すべきコマンドとして、操作する機能を指定する「アクションコード」と、収集する情報を指定するオブジェクト「DATA」を含んだものがあります。このような形式により、攻撃者は GhostCtrl を利用してさまざまな攻撃を柔軟に実行することができます。また、これらのコマンドは感染端末のユーザによる同意を必要としないため、攻撃者は、気づかれることなくコマンドを実行し、端末の機能を操作することが可能です。

以下は、アクションコードとそれに対応する操作の一例です。

アクションコード 端末に対する操作
10, 11 Wi-Fi の状態を制御
34 端末のセンサーをリアルタイムで監視
37 端末の「UiMode」を設定
(例:夜間モード、車内モード、等)
41 バイブレーション機能の制御(パターンやタイミング等)
46 壁紙として画像をダウンロード
48 カレントディレクトリのファイル一覧を C&C サーバに送信
49 指定したディレクトリのファイルを削除
50 指定したディレクトリのファイル名を変更
51 任意のファイルを C&C サーバにアップロード
52 指定したディレクトリを作成
60 テキスト情報を音声に変換
62 任意の情報を、指定した番号に SMS または MMS で送信
68 ブラウザの履歴を削除
70 SMS を削除
74 ファイルのダウンロード
75 指定した番号にダイヤル
77 処理を担う「Activity」と画面を構成する「View」を持ったアプリの起動。
「Uniform Resource Identifier(URI)」の指定も可能。
(例:ブラウザ、地図アプリ、ダイヤル、等)
78 赤外線送信を制御
79 シェルコマンドを実行し、結果をアップロード

表 1:アクションコードに対応する操作の一覧

その他の独特な C&C コマンドとして、整数で指定する形式の、情報窃取を担うコマンドがあります。このコマンドによって、通話履歴、SMS の記録、連絡先、電話番号、SIM のシリアル番号、位置情報、ブラウザのお気に入り情報のような、攻撃者にとって価値のあるさまざまな機密情報を収集し、アップロードします。

GhostCtrl は、その他の情報窃取型 Android 端末向け不正アプリに比べ、より多くの種類の情報を窃取します。上述したものの他に、Android OS のバージョン、ユーザ名、Wi-Fi、バッテリー、Bluetooth、音声機器の状態、UiMode、センサー、カメラ、ブラウザ、検索、サービスプロセス、Activity、壁紙等の情報を窃取します。

他にも、GhostCtrl は、指定した携帯電話番号からのテキストメッセージを傍受することも可能です。中でも厄介なのは、ひそかに録音した音声を決まった時刻に C&C サーバにアップロードする機能です。窃取された情報は、暗号化の後、C&C サーバにアップロードされます。

図3
図 3:アップロード後に情報を削除するコード

図4
図 4:情報窃取に関連するコードのほとんどは「transfer」パッケージ内に存在

「account」や「audioManager」、「clipboard」などのその他の C&C コマンドも確認されています。攻撃者は、これらのコマンドを送信することで、以下のような不正な機能の実行を開始します。こういった機能は、Android RAT では珍しいものです。

  • 指定したアカウントのパスワードを消去し、再設定
  • さまざまな効果音の再生
  • クリップボードの内容を指定
  • 通知とショートカットリンクの書式や内容を編集
  • Bluetooth を制御し、接続可能な端末を検索
  • 「ユーザー補助」を有効にし、通話を終了

■各バージョンにおける GhostCtrl の変更点

GhostCtrl の最初のバージョンには、図 5 のように、管理者権限の取得が可能なクラスが存在します。当時は何の機能も実装されていませんでしたが、バージョン 2 になって機能が追加されました。バージョンが進むにつれ、制御可能な端末の機能も増加しています。

図5
図 5:GhostCtrl バージョン 1 で管理者権限を取得するクラス

図6
図 6:バージョン 1(左)とバージョン 2(右)のバックドア機能

図7
図 7:GhostCtrl バージョン 2 で端末の管理者権限を利用するコード

GhostCtrl の バージョン 2 は、端末ロック型ランサムウェアの機能も持ちます。端末の画面ロック、パスワードの再設定、感染した端末の「ルート権限取得(ルート化)」が可能です。また、カメラを乗っ取って写真や動画を撮影するタスクを登録し、「MP4」等のファイル形式で C&C サーバにアップロードします。

図8
図 8:画面をロックしてパスワードを再設定するコード

図9
図 9:感染した端末をルート化するコード

GhostCtrl のバージョン 3 は、不正活動を隠ぺいするために難読化が施されており、図 10 のような手順で復号化されます。

図10
図 10:GhostCtrl バージョン 3 の攻撃経路

GhostCtrl バージョン 3 の攻撃では、まず元の APK が、圧縮された APK を作成します。次に、この圧縮された APK が、メインの不正な APK、「Dalvic 実行ファイル(DEX)」、「Linkable Format file(ELF)」を解凍します。この DEX および ELF ファイルが、メインの不正な APK 内の文字列と「Application Programming Interface(API)」コールを実行時に復号化します。このような複雑な攻撃経路に加えて、元の APK の「Assets」フォルダ内に、DEX ファイルや ELF ファイルだけでなく、圧縮された APK も格納するという手法が、検出をさらに困難にしています。

■被害に遭わないためには

「RETADUP」のような情報窃取機能を備えたワームと GhostCtrl の組み合わせは、強力なだけでなく、効果的でもあります。攻撃者は、さまざまなプラットフォームを攻撃の対象とし、PC だけでなくモバイル端末も標的とします。モバイル端末が、企業や日常利用するユーザに普及していることを踏まえると、GhostCtrl の機能は警戒に値するものだと言えます。

GhostCtrl の事例は、より徹底した対策の重要性を再確認する良い機会です。PC だけでなく、モバイル端末も含めた多層的なセキュリティ対策の導入が推奨されます。職場で利用する個人所有の端末「Bring Your Own Device(BYOD)」を守るために、情報セキュリティの専門家および IT/システム管理者が採用することのできる対策には以下のようなものがあります。

  • モバイル端末を最新の状態に保ってください。Android の更新プログラムは端末のベンダーに依存して「断片化」しており、端末の更新には法人ごとの要件や設定を必要とする場合があります。企業は、生産性とセキュリティのバランスを取りながら Android 端末を更新してください。
  • 最小権限の原則を適用してください。BYOD 端末のユーザ権限を制限し、不正アクセスおよび疑わしいアプリのインストールを防いでください。
  • アプリに関するレピュテーションシステムを用いて、不正アプリや疑わしいアプリをブロックしてください。
  • PC およびモバイル端末の両方に、ファイアウォール、侵入検知および侵入防御システムを設定し、ネットワークにおけるマルウェアの不正活動を阻止してください。
  • 潜在的なセキュリティリスクを軽減するために、モバイル端末管理方針を徹底および強化してください。
  • 暗号化やネットワークのセグメンテーションおよび情報の分類によって、さらなる情報流出の被害を軽減してください。
  • 端末の紛失や盗難、不正な暗号化に備え、定期的に情報のバックアップを実施してください。

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

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

「ANDROIDOS_GHOSTCTRL.OPS」または「ANDROIDOS_GHOSTCTRL.OPSA」として検出された不正アプリのハッシュ値はこちらの資料(英語)をご参照ください。

参考記事:

翻訳:澤山 高士(Core Technology Marketing, TrendLabs)