Cisco Japan Blog
Share

DoNot のマルウェア Firestarter が Google Firebase Cloud Messaging を悪用して拡散中


2020年11月17日


  • 最近新たに発見されたマルウェア「Firestarter 」は、Google Firebase Cloud Messaging を利用して最終的なペイロードの場所を攻撃者グループに通知します。
  • 攻撃者グループ DoNot は、コマンドアンドコントロール(C2)がダウンした場合でも、Google のインフラを利用して別の C2 にマルウェアをリダイレクトできます。
  • 最終的なペイロードのアップロード方法から判断すると、DoNot はターゲットを極めて厳密に絞り込んで攻撃を実行しているものと見られます。

最近の変化:現在、DoNot APT グループは、新たなペイロード配信方法の実験を進めているものと見られます。配信には Google のインフラストラクチャ内の正規サービスが利用されているため、ユーザネットワーク内での検出が困難になっています。

仕組み:ユーザを騙してモバイルデバイスに悪意のあるアプリをインストールするよう仕向けます。このマルウェアには、侵入先デバイスから取得した情報に基づいてペイロードのダウンロードを試みる悪意のあるコードが含まれています。このコードは、特定のデバイスのみに悪意のあるペイロードを配信します。

特徴:APT グループが新たな攻撃手口を考案すること自体は特に珍しくありません。秘匿性を確保するために運用モデルを変え続けることも驚くには値しません。ただし標的となっている地域の人々にとっては、意欲的なグループの犠牲者になる可能性が十分あることを示す新たな兆候と言えます。

エグゼクティブサマリー

 

ハッカー集団「DoNot」は、カシミールの非営利組織やパキスタン政府関係者を標的にしていることで知られています。カシミールは、インド、中国、パキスタンが領有権を巡って紛争中の地域です。同地域ではたびたび衝突の可能性が高まっています。DoNot は、最近「Firestarter」と呼ばれる新しいマルウェアローダの使用を開始しました。また、Talos の最近の調査から、DoNot が被害者のマシンに足場を築く新たな手口を試みていることが明らかになっています。Firestarter ローダの使用により裏付けられるこうした試みには、発覚を恐れず活動を継続するという強い決意が表れています。今活発にスパイ活動が繰り広げられている地域にとって、DoNot は特に危険な存在となっています。また、最近の変更により、地理情報と個人情報に基づいてどの侵入先システムに最終的なペイロードを送り込むかを決定できるようになったことで、活動の秘匿性も大幅に強化されています。その結果、マルウェアが研究者たちによって発見される可能性は大幅に下がっています。

DoNot は現在、マルウェアとの通信に欠かせないチャネルとして Google Firebase Cloud Messaging(Google FCM)を利用しています。この通信チャネルは暗号化され、 Android オペレーティングシステムと Google インフラの間の通信にも利用されるため、DoNot は攻撃トラフィックの一部を通常のトラフィックに紛れ込ませて隠蔽することができます。DoNot は現在もコマンドアンドコントロール(C2)インフラストラクチャを必要としていますが、ハードコードされた C2 が必要になるのはインストール時のみで、その後は簡単に別の C2 へ切り替えることができます。したがって、最初の C2 が警察機関によって閉鎖されたり、悪意のあるサーバとして監視を受けたりしても、新しい C2 を通じて被害者のデバイスにアクセスし続けることができます。こうした新しい戦術が導入されたことで、現在このマルウェアを効果的に阻止できる組織は Google 社だけとなっています。被害者のデバイス上で Google FMC メカニズムを無効にできるのは Google 社だけだからです。

このマルウェアは、被害者へのダイレクトメッセージを通じてマシンにインストールされることにより拡散する可能性が高いと考えられます。組織や個人は、開発元が不明なソフトウェアを Android にインストールしないようにし、可能な場合は C2 に送信される最初のネットワークフローを検出することで被害を防止できます。

被害者に関する考察

ハッカー集団 DoNot は、以前からインドとパキスタンに強い関心を持っていることで知られています。いくつかの Android アプリケーションのファイル名からも同様の関心が伺われます(kashmir_sample.apk や Kashmir_Voice_v4.8.apk など)。今回発見された新しいキャンペーンでも、これまでと同様に、インド人やパキスタン人、カシミール紛争の関係者が狙われているものと見られます。
攻撃の主要なターゲットは、この地域に関連するエンドユーザと非営利組織です。

ローダフロー

ローダの最初の実行時には、被害者に何もインストールされなかったかのように思い込ませるためのメッセージが表示されます。以下の一連の画像は、最初の実行時にユーザに表示されるメッセージを示しています。

 

アンインストールのメッセージが表示された後、ユーザインターフェイスからアイコンが削除されます。アプリケーションを検出するには、アプリケーションリストを確認するほかありません。下図に示すように、アプリケーションリストには、無効化されているように見えるアプリケーションのアイコンが表示されます。

 

 

アプリケーションの権限を確認すると、権限がまだ存在していることを確認できます。ただし、名前が「System Service」となっていて、アプリケーションの権限ではなくシステム関連の権限であるかのような誤解を招くものとなっています。

デバイスに互換性がないことを示すメッセージがユーザに表示されている間に、マルウェアは C2 との最初の通信を実行します。その際、被害者の個人情報と位置情報が送信されます。いずれも、攻撃者が実行する次のステップに不可欠の情報となります。C2 から最初のコマンドを受信するまでのフローは、以下に示す 6 つのステップで構成されています

攻撃者は Google FMC トークンを取得することで(ステップ 1)、マルウェアに Google FMC メッセージを送信するために必要な情報をすべて入手できます。攻撃者はこのメッセージを通じてペイロードのダウンロード元となる URL をマルウェアに通知します。攻撃者は被害者の位置情報、IP アドレス、IMEI、電子メールアドレスも入手できるため、どの被害者にペイロードを送り込むかを選択できます。

Talos は静的分析を行い、ローダ内で使用されている Google FMC メカニズムの役割を確認する部分までコードを実行したところで、動的テストを開始することにしました。

マルウェアは Google FMC から受信したメッセージに「link」というキーが含まれているかどうかを確認します。このキーが存在する場合は、「https」で始まるかどうかをチェックし、メッセージをすべてチェックした後、メッセージ内のリンクを使用してホスティングサーバからペイロードをダウンロードします。次の図に示すように、マルウェアはファイルを受信し、ペイロードからクラスをインポートすることにより、マニフェストで宣言されている悪意のあるサービスを起動できるようになります。

 

これは別のマルウェアサンプルです。埋め込みペイロードを含んでおり、悪意のあるサービスを起動します。

被害者のデバイスにペイロードがダウンロードされると、ローダがクラスを読み込み、悪意のあるサービスを起動します。デバイスが再起動された場合は、ローダがデバイス上のペイロードの存在を自動的に確認し、存在する場合はペイロードを読み込みます。

マルウェアの分析

マルウェアのサンプルにパッチを適用してメッセージフローを制御できるようにすることで、Talos が静的分析で突き止めた動作を確認できます。

Talos ではまずはじめに、研究者のアカウントに関連付けられた Google Firebase プロジェクトを作成しました。Google Firebase のエントリレベルは無料で、おそらく誰でもプロジェクトを作成できます。プロジェクトを作成した後、マルウェアサンプルとまったく同じ名前のアプリケーションを定義しました。このケースでは、「com.chatlitesocial.app」としています。すると、以下のような JSON Google サービス設定ファイルが生成されます。サービスを使用するには、この設定ファイルをプロジェクトに追加する必要があります。

 

さらに、割り当てられた ID をマルウェアに追加する必要があります。その後、マルウェアをアンパックして Google サービス設定が含まれているかを調べたところ、strings.xml ファイルのリソースディレクトリに発見しました。次の図は、JSON 設定ファイルから取得した値で置き換えたエントリを示しています。

APK を再ビルドして署名し、テストデバイスにインストールしました。その後、テスト環境をセットアップしました。この環境は、マルウェアからの要求を記録する HTTPS Web サーバ、マルウェアのログメッセージを確認するための logcat、Google Firebase Cloud Messaging Admin API と通信して被害者にメッセージを送信するスクリプトで構成されています。

ローダが変更された理由

C2 が閉鎖されても侵入先デバイスを引き続き制御できるようにする

新しいローダには、攻撃者にとって重要な機能が 2 つあります。1 つ目は、ペイロードを送信する前に被害者の身元を確認して、どの被害者にペイロードを送り込むかを決定できる機能です。この機能により、攻撃者はペイロードが研究者や捜査機関の手に渡るのを防ぐことができます。2 つ目は、強力なオフバンド永続化メカニズムです。

通常は、被害者のデバイス上でマルウェアが稼働していても、C2 を閉鎖すればマルウェアは機能しなくなります。警察機関やホスティング プラットフォームの運営企業は、侵害を認識した時点で、こうした対処を取ることができます。ただし、侵害について被害者に通知するのは困難であり、場合によってはほぼ不可能です。攻撃者は Google Firebase Messaging サービスを C2 制御チャネルとして使用することで、C2 がダウンした場合でもマルウェアを制御し続けることができます。ネットワーク側からすると、こうした操作は完全に無害に見えます。すべての通信が Google を通じて行われ、正規の証明書を使用して暗号化されているためです。

C2 サーバがダウンした場合でも、攻撃者は新しい Google Firebase メッセージをプッシュすることで、新しい場所(新しい C2 や新しいホストロケーション)から新しいペイロードをダウンロードできます。この操作は侵入先デバイスに対しては完全に隠されていて、ユーザの操作は求められません。Talos が調査を進める間に、Google Firebase を使用する同じマルウェアの別バージョンが新たな通信チャネルとして発見されました。なお、古いバージョンでは、単純にコマンドを発行する方法で悪意のあるサービスが起動されていました。

アナリストが最終的なペイロードを入手できないようにする

最終的なペイロードは Android アプリケーションに埋め込まれていないため、アナリストが分析することは不可能です。また、このアプローチを取られると、検出がさらに困難になります。このマルウェアは、インストール後にターゲットを不正操作するための偽のユーザインターフェイスを備えたローダです。

前述したように、攻撃者が Google Firebase を使用してマルウェアに接続するには、マルウェアが C2 に接続する必要があります。興味深いことに、C2 の URL は難読化されていませんが、Google Firebase コンポーネントはすぐに特定できないようになっています。次のコードスニペットは、ペイロードのダウンロードに関連する部分です。

 

2 行目で HTTP メソッドが GET に設定されていますが、GET がデフォルトであるため、これは不必要な記述です。続いて、 setDoOutput(True) を呼び出してメソッドを POST に変更します。ここで、送信するデータは何も設定せずに、connect() メソッドを使用して C2 に接続します。これらの処理は、分析を困難にするために意図的に行われているものと考えられます。まず不必要にメソッドを GET に設定した後で、正しいメソッドを使用せずに POST に変更しています。最後に、このアプローチを機能させるには、データなしでも POST を受け入れるようにペイロード ホスティング サーバを設定する必要があります。これはデフォルトのメソッドではないため、攻撃者側で設定を行う必要があったはずです。

追加の作業なしで従来と同じ最終ペイロードを送り込めるようにする

ローダは、「com.system.myapplication.Activities.dcteat」という名前のクラスを読み込みように設計されています。

この名前は、同じグループの以前のサンプルと同じです。そのため、最新のローダでも DoNot グループが以前に作成した APK を読み込めるようになっています。つまり、追加コストをかけることなく、最新のローダで以前のマルウェアを引き続き利用できる仕組みになっているのです。

DoNot のモバイルフレームワーク

Talos は最近、DoNot Team APT によって開発された新しいローダを発見しました。この攻撃者グループは、Android マルウェアを開発して使用することで知られています。RiskIQpopup_icon による分析の例を以下に示します。DoNot が開発したマルウェアは侵入先のデバイスを制御します。また、スパイフレームワークに見られる以下の代表的機能をすべてサポートしています。

  • 通話履歴の取得
  • アドレス帳の取得
  • SMS の取得
  • キーボード入力
  • SD カード内のファイルの取得
  • ユーザ情報の取得
  • ネットワーク情報の取得
  • デバイスの位置の取得
  • インストールされているアプリケーションの取得
  • ブラウザ情報の取得
  • カレンダー情報の取得
  • WhatsApp 情報の取得

新しいローダとハッカー集団 DoNot が使用する標準的なマルウェアの間には完全な互換性があります。ただし、最新のローダでは、最終的なペイロードを動的にダウンロードしてロードすることで分析を困難にし、Google Firebase のメッセージング フレームワークを使用することでマルウェアの信頼性を高めています。このフレームワークは、最終的なペイロードが配置されている URL を含むメッセージを侵入先デバイスに送信するために使用されます。C2 サーバをブロックするだけでは不十分で、Firebase メッセージングが有効であれば、最新のローダは新しい C2 サーバから新しいペイロードをダウンロードできます。

まとめ

攻撃者らは常に新たな手法を編み出し続けています。ハッカー集団 DoNot も新しいマルウェアを通じてあらゆるコンポーネントの従来的手法を積極的に変え続けています。たとえば、Google プラットフォームを使用することにより検出を回避して一般ユーザを装い、さまざまな設定オプションを使用して独自の Web サーバインフラストラクチャの機能を利用し、古いバージョンのマルウェアとの下位互換性を確保しています。これらを総合すると、DoNot には Android マルウェアに組み込む新機能を次々に開発できるだけの能力と資金力が備わっていると考えられます。インドとパキスタンを狙い続ける DoNot は、このマルウェアを通じて現在も両国への攻勢を強めています。

DoNot のマルウェアにはフォールバックメカニズムが組み込まれ、侵入先のデバイス上で永続化される設計になっています。これは、侵入先デバイスへの長期的アクセスを確保する上で極めて重要なメカニズムです。このフォールバックメカニズムと選択的配信メカニズムから、DoNot が長期間にわたって検出を回避し、諜報活動を十分に行えるようにすることを重視している姿勢が伺えます。

カバレッジ

今回の脅威は、以下の製品で検出してブロックすることが可能です。

Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。AMP 内に存在するエクスプロイト防止機能は、このような未知の攻撃からお客様を自動的に保護するように設計されています。

Cisco クラウド Web セキュリティ(CWS)または Web セキュリティアプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述の攻撃で使用されるマルウェアを検出します。

E メールセキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。次世代ファイアウォール(NGFW)、次世代侵入防御システム(NGIPS)、Cisco ISRMeraki MXpopup_icon などのネットワーク セキュリティ アプライアンスは、今回の脅威に関連する不正アクティビティを検出します。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。

Umbrellapopup_icon(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.orgpopup_icon で購入可能な最新のルールパックをダウンロードすると、最新状態を維持できます。Snort ルール 56081 は、Firestarter に特化した検出ルールです。

IOC(侵入の痕跡)

ハッシュ

b4c112d402c2555bea91d5c03763cfed87aa0fb0122558554c9a3bc7ac345990
69f257092947e003465f24b9b0b44d489e798bd5b8cf51f7e84bc161937b2e7c
a5cfb2de4ca0f27b012cb9ae56ceacc2351c9b9f16418406edee5e45d1834650
d0a597a24f9951a5d2e7cc71702d01f63ff2b914a9585dbab5a77c69af5d60b5
e7a24751bc009bbd917df71fd4815d1483f52669e8791c95de2f44871c36f7f4
86194d9cb948d61da919e238c48a01694c92836a89c6108730f5684129830541
8770515a5e974a59f023c4c71b0c772299578f1e386f60f9dd203b64e2e2d92e
a074aa746a420a79a38e27b766d122e8340f81221fe011f644d84ff9b511f29a
3d3f61d5406149fd8f2c018fbc842ccef2f645fc22f4e5702368131c1bd4e560
3d40fdc4dc550394884f0b4e38aa8a448f91f8e935c1b51fedc4b71394fa2366
83d174c65f1c301164683c163dab3ea79d56caeda1a4379a5a055723e1cb9d00
0c2494c03f07f891c67bb31390c12c84b0bb5eea132821c0873db7a87f27ccef
b583ae22c9022fb71b06ec1bae58d0d40338432b47d5733bf550972c5cb627c4
c4971a65af3693896fdbb02f460848b354251b28067873c043366593b8dbc6f9
fa85813a90a2d0b3fc5708df2156381fdb168919b57e32f81249f8812b20e00a
fde7ca904d9ae72ea7e242ee31f7fbaee963937341ca2863d483300828a4c6e0
0c2494c03f07f891c67bb31390c12c84b0bb5eea132821c0873db7a87f27ccef
192f699e6ce2cccb2c78397392f4d85566892d9c8cf7de1175feb4d58f97d815
e8605854c8730d2e80d8a5edd8bc83eb7c397a700255754ec9140b9717f7d467
2481f133dd3594cbf18859b72faa391a4b34fd5b4261b26383242c756489bf07
0c2494c03f07f891c67bb31390c12c84b0bb5eea132821c0873db7a87f27ccef

ドメインと IP アドレス

178.62.188[.]181
bulk[.]fun
inapturst[.]top
seahome[.]top
fif0[.]top
apkv6.endurecif[.]top

 

本稿は 2020 年 10 月 29 日に Talos Grouppopup_icon のブログに投稿された「DoNot’s Firestarter abuses Google Firebase Cloud Messaging to spreadpopup_icon」の抄訳です。

 

Tags:
コメントを書く