今回の調査では The Citizen Lab にご協力とサポートを賜り、情報を提供していただきました。心より感謝申し上げます。
- 商用スパイウェアの利用が拡大しています。攻撃者はこの種の高度なツールを活用し、監視活動を行う対象を広げています。Cisco Talos は、スパイウェア開発企業の Intellexa 社(旧称 Cytrox 社)が販売している商用スパイウェア製品について、新たな詳細情報を明らかにしました。
- 同社のモバイル スパイウェア スイートのうち、調査で特に注目したのが「ALIEN」と「PREDATOR」という 2 つのコンポーネントです。この 2 つはスパイウェアのインプラントの根幹を成しています。調査結果として、感染チェーンについても詳細にとりまとめています。その中で、インプラントのさまざまな情報窃取機能について取り上げています。
- 2 つのスパイウェアコンポーネントについて詳しく調べた結果、ALIEN は単に PREDATOR のローダーであるだけではなく、PREDATOR が標的に対してスパイ活動を行ううえで必要な機能のうち、土台となる機能をいくつもセットアップすることが判明しました。
- 他にも tcore(主要コンポーネント)と kmem(特権昇格用のメソッド)という 2 つのコンポーネントが存在する可能性が高いと考えられますが、これらのモジュールの入手、分析はできませんでした。
- 読者の中に、自社のシステムが商用スパイウェアの侵害を受けている可能性があるという方がおられましたら、ぜひ Talos の研究チーム(talos-mercenary-spyware-help@external.cisco.com)までご一報ください。商用スパイウェアの脅威に関するコミュニティの知識を深めるために、ご協力をお願いします。
スパイウェアの利用拡大に一役買っている ALIEN と PREDATOR
攻撃者による商用スパイウェアの利用が拡大しており、この種の製品やサービスを供給する企業も増え続けていると見られます。大半の商用スパイウェアは政府機関による利用が想定されています。たとえば NSO Group 社は、自社製品の宣伝で、テロ防止、犯罪捜査、国家安全保障の強化に役立つテクノロジーだと謳っています。ですが近年、こうした監視ツールの使用をめぐっては倫理的にも法的にも疑念が渦巻いており、セキュリティコミュニティでは監視ツールを「傭兵スパイウェア」とみなすようになっています。こうした製品が急激に普及し、悪用への懸念が高まっていることを受け、バイデン=ハリス政権は 2023 年 3 月 27 日、国家安全保障上のリスクがある商用スパイウェア、あるいは外国の攻撃者によって人権侵害に悪用されている商用スパイウェアを米国政府が使用することを禁ずる大統領令に署名しました。
スパイウェアの供給者は、ユーザーの操作をほとんどあるいはまったく必要としない展開シーケンスを作成して、最終ペイロードの検出、入手、分析、防御が困難になるよう細心の注意を払っています。配布方法としてよく見られるのは、ゼロクリックでエクスプロイトを開始できるエクスプロイトチェーンです。イスラエルのスパイウェア企業 NSO Group 社が作成した FORCEDENTRY はその一例です。他に、被害者がリンクをクリックするよう仕向ける手口(いわゆる「ワンクリック」エクスプロイト)もあります。たとえば監視プログラムを開発する Cytrox 社のスパイウェア「PREDATOR」はこの方法で配布されます(注:Cytrox 社は、スパイウェア PREDATOR を販売している Intellexa 社の子会社)。
PREDATOR は傭兵スパイウェアの中でも興味深いもので、遅くとも 2019 年から出回っています。繰り返しエクスプロイトすることなく Python ベースの新しいモジュールを配布できるよう柔軟な設計になっているため、特に汎用性が高く危険なスパイウェアだといえます。
Talos の新たな分析により、PREDATOR の内部の仕組みと、併せて展開されるスパイウェアコンポーネント「ALIEN」との通信方法が明らかになりました。両コンポーネントが連携し、Android OS 上の従来のセキュリティ機能を回避します。調査結果から、PREDATOR と ALIEN 間では機能が複雑に絡み合っていることが明らかになりました。ALIEN は、これまでは PREDATOR の単なるローダーと考えられていましたが、それ以外にもさまざまな機能を持つことが判明しています。
Intellexa 社のスパイウェアフレームワーク
Intellexa 社のスパイウェア製品は、複数のコンポーネントで構成されています。これは、最近公開された製品も同様です。コンポーネントは、一連の攻撃段階に沿って大きく 3 つに分類できます。
最初の 2 つは、エクスプロイトと特権昇格です。多くの場合、これらはエクスプロイトチェーンにまとめられています。はじめに、リモートの脆弱性をエクスプロイトしてリモートコード実行(RCE)の権限を取得します。その後、緩和策の回避と特権昇格が行われます。後者の理由は、脆弱性を持つプロセスの権限は低いことが多いからです。
初期チェーンの例については、Google の Threat Analysis Group(TAG)による 2021 年のブログ記事で詳しく取り上げられました。このレポートでは、攻撃者が 5 件のゼロデイ脆弱性をエクスプロイトして ALIEN(スパイウェア PREDATOR をロードするためのインプラント)を配布した方法が説明されています。エクスプロイトされた脆弱性は、Google Chrome に影響を及ぼす CVE-2021-37973、CVE-2021-37976、CVE-2021-38000、CVE-2021-38003 と、Linux および Android に存在する CVE-2021-1048 です。いずれも 2021 年に発見されました。
ALIEN と PREDATOR は、Android と iOS どちらのモバイルデバイスにも使えますが、今回 Talos が分析したサンプルは Android 用のものでした。特権昇格には QUAILEGGS というメソッドを使うよう、また QUAILEGGS が存在しない場合は「kmem」というメソッドを使うように構成されていました。Talos が分析したサンプルは、QUAILEGGS を実行していました。
QUAILEGGS のコードそのものは確認できなかったため、QUAILEGGS がエクスプロイトする脆弱性がどれなのかを確実に知る術はありません。ですが、Talos 以外の研究者の皆様に情報を補っていただけることを期待して、Talos なりの見解を公開することにしました。
Talos は、QUAILEGGS がエクスプロイトしているのは、先ほど挙げたゼロデイ脆弱性の CVE-2021-1048 の可能性が高いと考えています。Google の根本原因分析によると、この脆弱性をエクスプロイトすれば、特権プロセスへのコードインジェクションが可能になります。これは、QUAILEGGS 使用時に ALIEN が実行している処理内容そのものです。Linux カーネル開発の git log によると、この脆弱性は 2020 年 8 月に公開され、翌 9 月にパッチが適用されています。ですが、一部の Google Pixel スマートフォンは 2021 年 3 月まで、Samsung 社のデバイスは 2021 年 10 月まで、脆弱性が修正されないままとなっていました。
Cisco Talos が確認できた PREDATOR のコンポーネントを調べた結果、分析できなかったコンポーネントが最低でもあと 2 つ存在すると考えています。それが、「tcore」と「kmem」です。
Python モジュールの tcore は、初期化完了後、主要な展開モジュールである loader.py によってロードされます。
tcore をインポートするローダーモジュール
tcore のロードに失敗した場合、ローダーはダウンロードした SQLite3 の暗号化ファイルを削除します。まずファイル自体の削除を試みます。もし失敗した場合には、書き込み操作を行うためにファイル開き、ゼロバイトを書き込んで内容を消します。こうすれば、ファイルそのものを削除しなくても内容を実質的に消去できます。
Python モジュールの tcore には、スパイウェアの核となる機能があると考えられます。ALIEN と PREDATOR のネイティブコードを分析したところ、通話や VOIP ベースのアプリケーションの音声を録音する機能があることがわかりました。Signal、WhatsApp、Telegram など一部の人気アプリケーションから情報を収集することも可能です。また、アプリケーションを非表示にする機能や、デバイスの再起動時にアプリケーションの実行を阻止する機能など、補助的な機能も備えています。
分析できていないもう 1 つのコンポーネントは、KMEM モジュールを実装するアーティファクトです。Python モジュール「_km」の分析から、KMEM はカーネルのアドレス空間への任意の読み取りおよび書き込みアクセスを提供するモジュールと考えられます。
CVE-2021-1048 をエクスプロイトしてアクセスを取得すると、追加ペイロードのロードやシステムレベルでの実行など、このスパイウェアに備わっている大半の機能を実行できるようになります。最終的にはカーネルへのアクセスを取得して kmem に構成設定の変更を加えられるようになる可能性があります。
スパイウェアインプラントのアーキテクチャと概要
ALIEN と PREDATOR の連携
スパイウェアのインプラントは、さまざまなプロセスを実行して Android のセキュリティモデル特有の制限を回避します。現在実行中のプロセスの「__progname」を取得し、それを使って呼び出す一連の関数を決定します。探すプロセスは、zygote64、system_server、installd、audioserver(alien_voip)、audioserver の別バージョン(alien_recorder)です。
処理の大部分を担うのは、zygote64 と system_server のコールチェーンです。一方、installd のコールチェーンは、スパイウェアの他の部分のファイル構造を設定します。これらのコールチェーンはそれぞれ、特定の ioctl コマンドを傍受するためのプロセス構造を設定します。スパイウェアはそのプロセスの機能を利用して SELinux コンテキストを悪用し、他のプロセスに別の機能を付与します。
以下の図は、SELinux ポリシーが適用された zygote プロセスにより、あらゆる種類のソケット(Unix タイプのローカルなソケットは除く)へのアクセスを防止している例です。
出典:https://android.googlesource.com/platform/system/sepolicy/+/master/private/app_zygote.te#130
ですが、録音した音声を ALIEN を使って共有メモリ領域に格納し、PREDATOR を使ってそれをディスクに保存し漏洩させれば、この制限を回避できます。なお、これはプロセスの概略です。ALIEN は、Android の権限モデル内の特殊な特権プロセスに転換するために、zygote のアドレス空間に挿入されることにご注意ください。zygote は Android の大半のプロセスの親プロセスにあたるため、ほとんどの UID に変更できるほか、異なる特権を持つ別の SELinux コンテキストに変更することもできます。そのため、複数の権限セットが必要となる操作を行いたい場合、zygote は格好の標的となります。
ALIEN コンポーネントの構成には、PREDATOR コンポーネントをダウンロードする URL が含まれています。初期化中にダウンロードを開始し、dlsym() 関数を使ってインポートして main_exec() 関数を呼び出した後、スパイウェアの主要コンポーネントを初期化します。ALIEN の初期起動の方法はよくわかっていませんが、初期ステージで使用したエクスプロイトによって実行したシェルコードからロードされる可能性が高いと考えられます。
ALIEN に含まれる PREDATOR のダウンロード URL
ALIEN は(2 回目のエクスプロイトの後などに)PREDATOR を更新する役割も担っています。
構成に「_refresh」という文言が含まれている場合、ダウンロードしたファイルは fs.db として格納されます。このファイルを処理する sqlimper.py モジュールは PREDATOR 内のみに存在し、ALIEN には存在しません。これは、PREDATOR と ALIEN という 2 つのモジュールが相互に強く依存し合っているという Talos の調査結果の裏付けとなるものです。注目すべきは、fs.db が暗号化された SQLite3 データベースであり、新しい構成設定や、シリアル化した Python コードを格納できるという点です。このため、モジュラー化が進んだ適応性の高いスパイウェアとなっています。
また、ALIEN と PREDATOR は、binder トランザクションで通信も行います。ALIEN は、初期化ルーチン中に ioctl() 関数をフックし、ホストプロセスに到達する binder トランザクションを確認します。通信方法の詳しい例は、後述する音声録音機能についての説明で取り上げます。
ALIEN の概要
ALIEN は、最初に処理を行うスパイウェアコンポーネントです。展開後、バイナリにハードコーディングされている構成に従い、その他のコンポーネントをダウンロードしアクティブ化します。ALIEN は、特権プロセスのアドレス空間に挿入された後、独立したスレッドで起動される可能性が高いと考えられます。
ALIEN はまず、自身が zygote64 にロードされているかどうかを確認し、ロードされている場合は先のステップに進み、アクティビティを実行します。必要であれば、構成で定義されているホスティングサイトから PREDATOR コンポーネントをダウンロードします。場合によっては、ここで更新が行われることもあります。すでに PREDATOR が存在する場合、つまり標的のデバイスがエクスプロイトされるのが初めてではなく 2 回目の場合は、新しいバージョンへの入れ替えが行われます。インストールされるのは tcore の新バージョンです。あくまでも tcore であり、PREDATOR のペイロードすべてが入れ替えられるわけではない点にご注意ください。ALIEN の構成には、データ漏洩などのタスク実行によく使用される作業ディレクトリの場所も含まれています。
たとえば「/data/local/tmp/wd/」などです。作業ディレクトリでは、PREDATOR や暗号化された SQLite3 データベースといったスパイウェアのアーティファクトが見つかります。
パス | 目的 |
/data/local/tmp/wd/pred[.]so | スパイウェア PREDATOR の共有ライブラリ |
/data/local/tmp/wd/fs[.]db | 追加のペイロードを含む SQLITE3 ファイル |
ALIEN は単なるローダーではなく実行プログラムでもあります。複数のスレッドで PREDATOR のコマンドを読み込んで実行し続け、Android フレームワークのセキュリティ機能の一部をスパイウェアが回避できるようにします。以下に示すとおり、PREDATOR の起動前には複数のステップを実行しなければなりません。
PREDATOR との通信手段の 1 つに、xHook というオープンソースライブラリを使って libbinder.so の ioctl() API をフックするというものがあります。スパイウェアは分散型の特性があるため、適切に動作するためにはコンポーネント間の通信と同期が必要です。スパイウェアフレームワークには、通信と同期の手段が複数存在します。
ALIEN は、Android フレームワークのプロセス間通信(IPC)を担う libbinder.so の ioctl() 関数をフックします。ioctl() フックは、インプラントがそれ自身(分岐したプロセス上に存在)や他のインプラントコンポーネントと通信できる構成となっています。
ioctl() フック
インプラントは、実行を開始する際、どのアプリケーション コンテキスト内で実行するかを選択します。アクティビティが始まると、実行場所のスレッド ID を記録し、そのプロセスの ioctl アクティビティにフックを登録します。この ioctl フックが BINDER_WRITE_READ の IOCTL コマンドの中のさまざまな binder コマンドを管理し、BINDER_WRITE_READ の全関数の中から ALIEN 用のハンドラコマンドを選び出します。
リダイレクトされるコマンドは、BC_TRANSACTION、BR_TRANSACTION、BR_REPLY、BC_REPLY です。これにより、ターゲットプロセスの情報の入出力を制御できます。上述の各プロセスには、後に悪意のあるモジュールがシステムで実行できるようになるさまざまなアクションが存在します。
こうしてインプラント内で通信する有効な手段ができるとともに、インプラントが他の正規のシステムプロセス内に紛れ込めるようになります。インプラントは目立たないように自身と通信し、ネットワークベースの通信の痕跡を残さないようにして、SELinux の制限を回避します。
instalID プロセスでフックするのは、BR_TRANSACTION と BC_REPLY です。どちらのコマンドも、実行するアクションは同じです。スレッドを起動し、アプリケーションとユーザーのメディアに属する 26 のディレクトリの権限を再帰的に変更するように処理を進めていきます。各アプリケーションには、それぞれ関連フラグのリストがあります。フラグは、どのベンダーのアプリケーションである可能性が高いか、また新しい権限をそのアプリケーションに適用するかどうかを示します。今回のサンプルの場合、各アプリケーションに付与されていた権限は 777 ですが、これはどんな値にも拡張できます。また、setfilecon 関数を使い、スパイウェアの「u:object_r:shell_data_file:s0」の構成と一貫性のある SELinux コンテキストをアプリケーションに付与します。これらのファイル(アプリケーション)は、スパイウェアが存在する構成ディレクトリにコピーされ、後に抽出されるものと思われます。
PREDATOR の概要
PREDATOR は、シリアル化された Python モジュールと、組み込みのモジュールかダウンロードしたモジュールのいずれかで使用されるネイティブコードを含む pyfrozen ELF ファイルです。ALIEN は PREDATOR を起動し、2 つのファイル記述子を含むパラメータを指定してエクスポート関数 main_exec() を呼び出します。これらのファイル記述子は ALIEN が作成した共有メモリ領域のファイル記述子であり、2 つのコンポーネント間の通信媒体として使用されます。
PREDATOR の main_exec() 関数は、ファイルハンドルを複製して PREDATOR の本当の main 関数をネイティブスレッドで起動するという単純な関数です。ALIEN のプロセスやメインのプロセス実行にブロックされることなく実行できるようになっています。
PREDATOR の初期化プロセス
PREDATOR は、スパイウェアが使用する Python ランタイム環境を整える startPy() 関数を呼び出します。他の pyfrozen バイナリと同様、この関数もまずいつもの「__main__」モジュールをインポートします。その後、「__main__」モジュールに次の属性を定義します。
名前 | 用途 |
SHMEMFD_PC2 | ALIEN と通信するための共有メモリハンドル |
SHMEMFD_VSS | ALIEN と通信するための共有メモリハンドル |
DEV | 現在の PREDATOR インプラントが開発バージョンかどうかを定義。この定義は、実行されるロギングの量に影響します。 |
installID | 攻撃対象、デバイス、攻撃に関係付けできるインストール ID。初期化の時点で、この値がハードコーディングされます。 |
最後に loader という名の別のモジュールをインポートします。すると、メインサブルーチンである「mainExec」という Python 関数が呼び出されます。なお、インストール ID はネイティブコードでは特定の値でハードコーディングされるのに対し、Python モジュールである loader.py では、プレースホルダ値で初期化されます。これは興味深い点です。Python ランタイムが適切に初期化されると、PREDATOR はスパイウェアコンポーネント tcore の初期化と起動に進みます。
スパイウェアの機能
これらのコンポーネントを連携させることで、さまざまな情報窃取、監視、リモートアクセス機能が使えるようになります。ここで説明する機能は、スパイウェアの機能の一部に過ぎません。現時点で Talos はスパイウェアの全コンポーネントにはアクセスできていないため、まだ抜けている機能があると考えるべきでしょう。tcore モジュールには、地理位置情報の追跡、カメラへのアクセス、スマートフォンの電源がオフになっているように見せかける機能などがあると Talos は考えています。
任意のコード実行
ALIEN は、ファイルシステムの指定された場所からコードを読み込んで実行することもできます。たとえば先に「/system/fonts/NotoColorEmoji.ttf」からコードを読み込み、それを system_server プロセスメモリに挿入して実行することが可能です。
コードインジェクションを実行後、結果待ち
このスパイウェアのアーキテクチャは、プロセスベースの並列処理に高い信頼性があります。fork() 関数の呼び出し後にシェルコードが挿入されると、子プロセスがシェルコードを挿入して実行し、終了します。その間、親プロセスはシェルコードの実行を 5 秒間待ち、その後結果を返します。コードフローを踏まえ、挿入されるシェルコードは、「/data/system/.0」の内容をパラメータとして使用している可能性があると Talos は考えています。
インジェクションプロセス全体では、ptrace() 関数と mmap() 関数を使ってターゲットプロセスにコードを挿入するという方法が使われています。
全体的なインジェクションフロー
音声の録音
このスパイウェアは、各種ソースの音声をいくつかの手法で録音できます。マイクのほか、イヤホンや VOIP ベースの通話の録音も可能です。手法としては、オーディオ関連プロセス内の memcpy フックなど高度なテクニックを使用することも、より簡単に OpenSLES ネイティブライブラリを使用して RECORD インターフェイスを作成することもできます。この機能は 2 つのコンポーネントにまたがっています。他のコンポーネントと同様、PREDATOR がロードした Python 環境から起動できます。
音声レコーダーのコマンドコード
この機能の内部名は pc2 です。上のスクリーンショットは、Python 環境の準備をしている部分です。ALIEN と PREDATOR のモジュール間でコマンドとして使用される定数が定義されています。PREDATOR は、ALIEN との通信を担うネイティブコードを実装します。その一方で、コードを Python インタープリタに公開して、tcore モジュールから呼び出せるようにします。
ALIEN は、プロセスで使用されている音声ライブラリの API のフックを試みます(以下の表を参照)。API のフックには、xHook フレームワークを使用します。フックが確立されたら、正規の API に提供されるソースデータを、スパイウェアが割り当てて指定したバッファにコピーします。
ライブラリ名 | フックされる関数 |
libaudioutils.so | memcpy_by_audio_format |
.*\\libaudiohal.*.so$ | memcpy |
.*\\libaudioflinger.so$ | memcpy |
xHook を使用して音声ライブラリに作成されるフック
他にも ALIEN は、ioctl フックとレコーダーインターフェイスを設定して傍受手段として展開することができます。これらのフックでレコーダーが実行または要求した操作を傍受して識別し、スパイウェアが定義した場所にデータをコピーします。
ターゲットプロセスはデバイス上の audioserver で、基本的には VOIP および音声録音インターフェイスの音声を録音するための仕組みということになります。音声の録音を可能にするインフラストラクチャ全体をセットアップするのは ALIEN ですが、主な操作は PREDATOR が実行します。録音を開始または停止するコマンドを発行するのは PREDATOR です。音声の録音も、ALIEN と PREDATOR が密接に連携して、欠かすことのできない悪意のあるアクティビティを感染したデバイス上で行っている一例といえます。
ストアに証明書を追加
このスパイウェアは、現在ユーザーが信頼している認証局(CA)に証明書を追加することもできます。方法は、以下に示すように、認証局の公開証明書を「/data/misc/user/0/cacerts-added」というパスに書き込むというものです。
いくらスパイウェアが高い権限を保有していても、システムレベルで証明書を追加しようとはしません。そのような操作は、デバイスの正常な機能を妨げる可能性があります。Android のバージョンによっては、読み取り/書き込み権限でファイルシステムを再マウントしなければならなくなるでしょう。TLS 復号中にシステムレベルで何らかの問題が生じれば、デバイスが不安定になり、被害者に察知されかねません。これでは、攻撃者にしてみればリスクがメリットを上回ります。ユーザーレベルの証明書があればブラウザ内のあらゆる通信で TLS 復号を実行できるため、スパイウェアにはそれで十分ということになります。
アプリケーションの非表示と再起動時の実行阻止
「/data/system/.0」の内容を読み込み、それを入力として使用して、YAHFA フレームワークのカスタムバージョンで Android ランタイム(ART)にフックを確立します。フックは、ALIEN に含まれる組み込みの DEX ファイルが InMemoryClassLoader() メソッドで読み込まれることで機能します。
ALIEN に存在する組み込みの DEX ファイル
DEX ファイルに格納されているカスタマイズバージョンには、「com.jnative.pluginshideapp」というプラグインらしきものが含まれています。これは、以下のメソッドを実装します。
- getInstalledApplications
- getInstalledPackages
- queryIntentActivitiesInternal
- queryIntentReceiversInternal
パッケージマネージャ API に対して定義されたフックを含む不正プラグイン
DEX ファイルがこれらのフックを使う主な目的は以下の 2 つです。
- アプリケーションやパッケージを非表示にする:DEX ファイルのプラグインは、インストールされているパッケージやアプリケーションのリストから特定の名前をフックして除外できます。
- 再起動時に実行されないようにする:このプラグインで、BOOT_COMPLETED のインテント通知をブロードキャスト経由で受信したときに実行されるパッケージやアプリケーションのリストから、特定の名前をフックして除外することもできます。
「packageName」フィールドに基づいて、アプリケーションとパッケージの名前をフィルタリング
アプリケーションやパッケージのリストをフィルタリングして非表示にしたり再起動時に実行できないようにしたりするために、DEX ファイルは元の API コールをフックし、独自のカスタムコードに置き換えます。フックされたメソッドの呼び出しが実行されるたびに、カスタムコードによって通信先リストと独自のリストが照合されます。非表示にするアプリケーションやパッケージの名前と一致したものは、通信先リストから削除されます。リストのフィルタリングを行った後で、元の API が呼び出されます。このとき、引数にはフィルタリング後のリストが使用されます。
Talos が分析したコードは、再起動後にアプリケーションが起動しないようにする BOOT_COMPLETED のブロードキャストのみを実装します。同じ手法を他のブロードキャストに適用し、その過程で他のアプリケーションの動作をモデリングすることも可能です。たとえば同じことを SMS_RECEIVED ブロードキャスト通知について行えば、SMS がユーザーに送信されないようになります。この目的では、SMS_RECEIVED のブロードキャスト通知を優先的に受け取るアプリケーションをインストールするという手法を使うのが一般的なので、このスパイウェアは、より攻撃的な傍受手法を採用しているとみなすことができます。
システム情報の入手
このスパイウェアは、システム情報を入手するためさまざまなソースを利用します。感染したデバイスから静的に利用可能なデータをできるだけ多く抽出できるよう、ファイルシステム上のさまざまなディレクトリを列挙し、複数のファイルを読み込みます。
ディレクトリの列挙
ALIEN インプラントは、まずシステムプロパティ「ro.product.manufacturer」からデバイスのメーカー名を取得します。そして、ハードコートされているリストと照合して特定のメーカーをチェックします。
- Samsung
- Huawei
- Oppo
- Xiaomi
いずれかのメーカー名が一致したら、ディスク上の以下のディレクトリの格納ファイルを再帰的に列挙します。
タイプ | ディレクトリ |
メッセージ | /data/data/com.samsung.android.messaging |
連絡先 | /data/data/com.samsung.android.providers.contacts
/data/data/com.android.providers.contacts |
メディア | /data/data/com.samsung.android.providers.media
/data/data/com.android.providers.media /data/data/com.google.android.providers.media /data/media/0 /data/media /data/data/com.google.android.providers.media.module /data/data/com.android.providers.media.module |
電子メール | /data/data/com.samsung.android.email.provider
com.google.android.gm |
テレフォニー | /data/data/com.android.providers.telephony |
ソーシャルメディアアプリ | /data/data/com.instagram.android
/data/data/com.facebook.orca /data/data/com.twitter.android |
メッセージングアプリ | /data/data/com.skype.raider
/data/data/jp.naver.line.android /data/data/com.whatsapp /data/data/org.telegram.messenger /data/data/com.viber.voip /data/data/com.tencent.mm (WeChat) /data/data/org.thoughtcrime.securesms /data/data/com.google.android.apps.messaging |
ALIEN の作業ディレクトリ | /data/local/tmp/wd – ALIEN がデバイスから窃取したデータを格納するために使用 |
ブラウザアプリ | /data/data/com.android.chrome |
構成データの入手
インプラントは構成情報を収集するほか、以下に列挙したファイルの内容をコピーして、連絡先と通話やメッセージの情報も収集します。
インプラントは再びメーカー名をチェックしたうえで、以下のファイルからデータを読み取ります。
- /data/misc/wifi/.WifiConfigStore.xml
- /data/local/tmp/wd/WifiConfigStore.xml
- /data/data/com.android.providers.contacts/databases/contacts2.db-wal
- /data/data/com.android.providers.media/databases/contacts2.db-wal
- /data/data/com.android.providers.contacts/databases/contacts2.db-shm
- /data/data/com.android.providers.media/databases/contacts2.db-shm
- /data/data/com.android.providers.contacts/databases/contacts2.db
- /data/data/com.android.providers.media/databases/contacts2.db
- /data/data/com.android.providers.contacts/databases/calls.db-wal
- /data/data/com.android.providers.media/databases/calls.db-wal
- /data/data/com.android.providers.contacts/databases/calls.db-shm
- /data/data/com.android.providers.media/databases/calls.db-shm
- /data/data/com.android.providers.contacts/databases/calls.db-journal
- /data/data/com.android.providers.media/databases/calls.db-journal
- /data/data/com.android.providers.contacts/databases/calls.db
- /data/data/com.android.providers.media/databases/calls.db
- /data/data/com.android.providers.telephony/databases/mmssms.db-wal
- /data/data/com.android.providers.media/databases/mmssms.db-wal
- /data/data/com.android.providers.telephony/databases/mmssms.db-shm
- /data/data/com.android.providers.media/databases/mmssms.db-shm
- /data/data/com.android.providers.telephony/databases/mmssms.db
- /data/data/com.android.providers.media/databases/mmssms.db
入手した内容は、「/data/local/tmp/wd/」に書き込んでから漏洩させます。これは、下位レベルのメソッドを使用した情報収集の手法だとみなすことができます。通常、システム上の権限が少ないスパイウェアは Android フレームワークの API を使用して情報収集を行いますが、その場合はユーザーに操作を行わせて必要な権限を入手する必要があります。
カバレッジ
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。
IOC
この脅威に関連する IOC は、こちらをご覧ください。
本稿は 2023 年 05 月 25 日に Talos Group のブログに投稿された「Mercenary mayhem: A technical analysis of Intellexa’s PREDATOR spyware」の抄訳です。