マカフィーモバイルリサーチチームは、サイバー犯罪集団「Lazarus Group」が過去に使用した実行形式のファイルと類似した構成を持つ ELF形式 のバックドアが含まれた新種のAndroidマルウェアについて調査を行いました。(サイバー犯罪集団「Lazarus Group」の詳細については、脅威研究チームのブログを参照してださい)
このマルウェアは、韓国語で聖書を読むアプリをリパッケージしたもので、正規アプリはGoogle Playストア上で配布され、1300回以上インストールされていました。一方、この正規アプリをリパッケージしたマルウェアはGoogle Playストアで配布された実績がなく、どのように配布されていたかは現時点では不明となっています。
図1:Google Playストア上の正規アプリ
図2:マルウェアの概要
開発者署名の比較
リパッケージされたAPKファイルは、正規アプリとは異なる証明書で署名されています。次の2つの画面キャプチャからその違いを確認することができます。
図3:マルウェアの開発者署名
図4:正規アプリの開発者署名
マルウェアのAPKファイルをインストールすると、ELF形式のバックドア実行ファイル “assets/while” の起動を試みます。実行ファイルの起動に成功すると、そのデバイスはボット化します。
図5:バックドアを起動するためのコード
バックドアの分析
バックドアが起動すると、自分自身を保護するためにゾンビプロセスになります。また、親プロセスが終了したとしても、DEXファイルのexecute関数が動作している限りは、ゾンビプロセスとして残り続ます。
図6:マルウェアはゾンビプロセスとして残り続ける
マルウェアには、制御サーバーのIPアドレス一覧が含まれています。その一覧はエンコードし、ファイル /data/system/dnscd.db として保存します。下表は、マルウェアに含まれていたIPアドレスの情報です。これらの制御サーバーは現在すべて停止されています。
図7:エンコードされた制御サーバーのIPアドレスをファイルに書き込むフロー
IPアドレスのリストは、読み取り専用のデータセクションからメモリにロードされるとシンプルな処理でエンコードされ、ファイル /data/system/dnscd.dbに書き込まれます。
一方、マルウェアがそのデータを取得する際には、デコードされたファイルをメモリにロードし、接続先のIPアドレスを選択します。バックドアプロセスは、接続が成功するまで制御サーバーのリストからランダムに1つ選択し接続を試みます。
図8:マルウェアはソケットを作成し、ランダムに選択された制御サーバーに接続する
制御サーバーに接続すると、マルウェアはコールバックビーコンを使用してバッファを満たし始めます。図9はメッセージ生成コードの一部です。パケットデータのいくつかのフィールドにおいて、ハードコードされたバイトがあります。オフセット0のバイトはハンドシェイクタイプ、オフセット4と5はトランスポート層の一部であるハンドシェイクレイヤーのSSLバージョンを表しています。
図9:コールバックビーコンを生成する関数の一部
図10:コールバックビーコンとして使用するデータを制御サーバーに転送する
メッセージが生成されると、次のパケット(図11)がコールバックビーコンとして制御サーバーに送信されます。サーバー名インジケーターフィールドは拡張データのフィールドとして配置され、パケット内にはランダムに選択された有名なドメイン名が含まれています。これは疑わしい動作を検知するセキュリティソリューションによる検出を回避する手法だと考えられます。
図11:コールバックビーコンからキャプチャされたパケット
図12:バイナリ内の正当な(よく知られた)ドメインのリスト
コールバックビーコンを送信した後、命令コード0x5429を受信すると、マルウェアはグローバル変数を割り当て、デバイス情報を制御サーバーに転送します。図13はコマンドとその疑似コードのジャンプテーブルです。
図13:命令コードとデータ受信用の構造
下表は命令コードの一覧です。図13に示すように、命令コードと引数は制御サーバーから構造化データとして到着し、それぞれ受信データ構造のCMDとDATA変数として割り当てられています。
制御サーバーから受信したコマンドを実行した後、マルウェアは図14および図15のコードを使用して結果を制御サーバーに応答します。結果を転送する際に使用する応答コードとデータは、構造化データとして送信されます。
図14、図15:応答コードとデータ送信用の構造
「Lazarus」マルウェアとの類似点
図16の左図は今回解析したバックドアの一部で、右図はサイバー犯罪集団「Lazarus」により使用された実行ファイルの一部です。
図16:Sony Picturesに対する攻撃で使用された実行ファイルと同様の機能
どちらの関数も非常によく似ています。暗号化と復号のための鍵を生成するための16進数のシードも同じです。これらの関数は、端末と制御サーバーの間でメッセージの暗号化と復号の鍵を生成するために使用されています。
図17も同様に、左図は今回解析したバックドアの一部で、右図はサイバー犯罪集団「Lazarus」により最近使用された実行ファイルの一部です。これらは、制御サーバーに接続して偽装SSL ClientHelloパケットを生成する関数です。生成されたパケットは、コールバックビーコンとして制御サーバに送信されます。
図17:制御サーバーへの接続の確立(左:ELFファイル)
図18の関数は、コールバックビーコンとして使用するために、偽装されたClientHelloパケットを生成します。
図18:偽装ClientHelloパケットの生成(左:ELFファイル)
制御サーバーからメッセージ受信機能を分析した際に、両方のバックドアで同じプロトコルが使用されていました。図19は、バックドアと制御サーバーの間でメッセージを転送するためのプロトコルです。
図19:プロトコルに含まれる受信メッセージ機能(左:ELFファイル)
メッセージ送信時における手順として、まずマルウェアが制御サーバーに5バイトのメッセージを送信します。このメッセージには、次のパケットのサイズ、ハードコードされた値、およびメッセージのタイプに関する情報が含まれています。ハードコーディングされた値は0x0301であり、メッセージのタイプは0x14-0x17の値です。メッセージタイプは、受信パケットの検証にも使用されます。図21は受信関数の擬似コードです。
図20:メッセージを送信する前に送信された5バイトのパケット
図21:受信メッセージ関数の擬似コード
結論
セキュリティ業界はサイバー犯罪集団「Lazarus」に注目しており、マカフィーのセキュリティ研究者もまた「Lazarus」やその他のサイバー犯罪集団によるモバイルの脅威を常に監視しています。 私たち、モバイルマルウェアリサーチチームは、サイバー犯罪テクニックを研究するマカフィーの脅威研究チームと協力し、攻撃インフラの再利用、コードの類似点、偽のトランスポート層のセキュリティ機能など、サイバー犯罪集団「Lazarus」の最近の攻撃手法との多くの一致を確認しました。
今回発見したAndroidに対する脅威が「Lazarus」によるモバイルプラットフォームでの最初の活動であるかどうかはわかりません。しかし、コードの類似性に基づいて、私たちはサイバー犯罪集団「Lazarus」が現在モバイル分野で攻撃を展開していることについて高い確信を持っています。
McAfee Mobile Securityは、この脅威を Android/Backdoor として検出し、その実行を阻止します。悪意あるアプリに対する脅威から自身の端末を保護するためには、モバイルセキュリティアプリケーションを常に最新のバージョンに更新してください。また、不審なサイトからダウンロードしたアプリケーションをインストールしないでください。この習慣により、マルウェアによる感染リスクを低減することができます。
※本ページの内容は 2017年11月20日更新のMcAfee Blog の抄訳です。
原文: Android Malware Appears Linked to Lazarus Cybercrime Group
著者: Inhee Han