活動休止と思われた中国APTグループFamousSparrowの活動実態と最新攻撃ツールの詳細解説
ESETの研究者は、APTグループ「FamousSparrow」高度なツールセットを発見。これには、グループ専用のバックドアであるSparrowDoorのこれまでに特定および文書化されていなかった2つのバージョンを含みます。
Alexandre Côté Cyr 11 Apr 2025
ESETの研究者は、APTグループ「FamousSparrow」高度なツールセットを発見。これには、グループ専用のバックドアであるSparrowDoorのこれまでに特定および文書化されていなかった2つのバージョンを含みます。
Alexandre Côté Cyr 11 Apr 2025
2024年7月、ESETは、米国の金融業界に関連する業界団体のシステムで、攻撃が疑われるアクティビティを発見しました。ESETは、この侵害による影響を修復するために支援を続ける中で、同組織のネットワーク内で予期しない発見をしました。それは、中国とつながりのあるAPTグループ「FamousSparrow」を使用している悪意のあるツールでした。2022年以降、FamousSparrowの活動は公に記録されておらず、このグループは活動していないと考えられていました。侵害されたネットワークから、FamousSparrowの代表的なバックドアであるSparrowDoorの、過去に特定および文書化されていなかったバージョンが1つではなく2つも発見されたことから、FamousSparrowはこの期間中も活動を続けていただけでなく、ツールセットの積極的な開発にも取り組んでいたと考えられます。
SparrowDoorのこれらのバージョンは、特にコード品質とアーキテクチャの面で、以前のバージョンよりも著しい進歩を遂げています。そのうちの1つのバージョンは、Trend Microの研究者がCrowDoorと命名し、2024年11月にAPTグループ「Earth Estries」に帰属していることを公開したバックドアと共通点があります。もう1つのバージョンはモジュール型であり、過去のすべてのバージョンとは大きく異なっています。このキャンペーンでは、FamousSparrowが初めてShadowPadを使用したことも記録されています。ShadowPadは、中国とつながりのある一部のサイバー攻撃グループにのみ販売されているバックドアです。
さらに、このキャンペーンの一環として、このサイバー攻撃グループは米国の団体を侵害した数日前にメキシコの研究機関を侵害していたことも判明しました。
これらの攻撃で特定した情報に基づいてこのグループを追跡している間に、ESETは2022年から2024年にかけて、ホンジュラスの政府機関を標的にした攻撃など同グループの別の活動も発見しました。これらの活動については、現在も調査を続けています。
このブログでは、2024年7月のキャンペーンで使用されたツールセットの概要について、被害を受けた米国の組織で発見されたSparrowDoorバックドアの文書化されていない新しいバージョンに中心に説明します。
本ブログの要点:
FamousSparrowは、2019年から活動している中国とつながりのあるサイバースパイグループです。ESETは、FamousSparrowグループがProxyLogonの脆弱性を悪用していることを観測した際に、 2021年のブログで初めてこのグループの存在を明らかにしました。このグループは当初、世界各国のホテルを標的にしていたことで知られていましたが、その後、政府機関、国際機関、エンジニアリング企業、法律事務所なども標的にしていたことが明らかになっています。FamousSparrowは、SparrowDoorバックドアを使用している唯一のグループです。
ESETがこの侵害を特定した時点では、FamousSparrowは活動していないように見えましたが、これらの攻撃が同グループによって実行されたことを確信しています。展開されたペイロードは、このグループのみが使用していると考えられているSparrowDoorバックドアの新しいバージョンです。これらの新しいバージョンでは、コード品質とアーキテクチャが大幅にアップグレードされていますが、過去に特定および文書化されているバージョンと直接的な関係を確認することができます。これらの攻撃で使用されたローダーは、FamousSparrowが使用していると考えられている過去の検体のコードと多くの点が一致しています。注目すべきは、英国の国家サイバーセキュリティセンター(NCSC)が発表した2022年2月のレポートで説明されているlibhost.dllローダーの検体と同じリフレクティブローダーのシェルコードが使用されている点です。ローダーとバックドアにハードコードされている暗号化キー以外は、その設定も同じ特定の形式を共有しています。XOR暗号もRC4に置き換えられています。
さらに、C&Cサーバーとの通信は、以前のSparrowDoorのバージョンで使用されていた形式と酷似しています。
2021年にKasperskyの研究者は、GhostEmperorとして同社が追跡しているサイバー攻撃グループについてレポートを公開しています。FamousSparrowとは一部のインフラが共通していますが、ESETはこれらを別々のグループとして追跡しています。2023年8月にTrend Microは、いくつかのFamousSparrowのTTP(戦術/技術/手順)がEarth Estriesと重複していることを報告しました。また、ESETは、SparrowDoorとEarth Estriesが使用するバックドア「HemiGate」でコードが重複していることも確認しています。これらのコードの重複については、「プラグイン」のセクションで詳しく説明します。この2つのグループには少なくとも部分的な重複が見られますが、ESETは両グループが関連していることを示す明確な特徴や、重複の程度に関するデータを確認していません。
FamousSparrowのツールセットの分析結果を伝える前に、Microsoft Threat Intelligenceが主張しているFamousSparrowとSalt Typhoonの関連性について、ESETの見解を示します。
2024年9月、ウォール・ストリート・ジャーナルは有料版の記事を公開し、米国のインターネットサービスプロバイダーがSalt Typhoonと呼ばれるサイバー攻撃グループによって侵害されたことを報じました。この記事では、このサイバー攻撃グループがFamousSparrowやGhostEmperorと同じであるというMicrosoftの主張を伝えています。これらの2つのグループが同一であるとの見解を示した報告書が公表されたのは、この記事が初めてでした。しかし、前述のように、ESETはGhostEmperorとFamousSparrowは2つの異なるグループだと考えています。両グループにはいくつかの共通点がある一方で、多くの点が異なっています。どちらのグループも2021年に27.102.113[.]240をダウンロードサーバーとして使用していました。両グループは、ProxyLogonの脆弱性(CVE-2021-26855)を早くから悪用しており、一般に利用可能な同じツールを複数使用しています。しかし、これらの一般に利用可能なツールの他に、それぞれのサイバー攻撃グループは独自のカスタムツールセットを使用しています。
Trend Microの研究者は、最初のレポートを公開してからEarth EstriesをSalt Typhoonの関連グループリストに追加しました。このブログ記事の執筆時点では、MicrosoftはSalt Typhoonによる一連の攻撃について報告しているものの、このサイバー攻撃グループが使用した技術的指標やTTPの詳細は公表しておらず、帰属についての説明も行っていません。混乱を避けるため、現時点ではSparrowDoorに直接関連する一連の活動についてはFamousSparrowとして追跡を続け、帰属に関する主張を信頼して評価するために必要な情報が揃うまで、ESETはこの方針を維持します。
ESETのデータと公開されているレポートの分析結果から、FamousSparrowは他のグループとのある程度の関連性があるものの、独自で異なるクラスタ(一連の攻撃)であると考えられます。これらのサイバー攻撃グループは緩やかにつながっていますが、ESETはこれらの個別のクラスタを1つのグループに帰属させて混同するのではなく、デジタルクォーターマスターのような共通の第三者が存在していると仮定する方が、より適切に説明できると考えています。
FamousSparrowは、標的のネットワークへの初期アクセスを取得するために、IISサーバーにWebシェルを展開しました。Webシェルの展開に使用されたエクスプロイトを特定することはできませんでしたが、両方の被害者は、いくつかのエクスプロイトが公開されているWindows ServerとMicrosoft Exchangeの古いバージョンを実行していました。
このサイバー攻撃グループがこのキャンペーンで使用しているツールセットは、中国とつながりのあるAPTグループと共有されている独自のツールやマルウェアに加え、一般に利用可能なソースから取得したツールやマルウェアを組み合わせたものです。最終的なペイロードはSparrowDoorとShadowPadでした。図1に、攻撃で展開された侵害チェーンの概要を示します。
このサイバー攻撃グループはまず、43.254.216[.]195のダウンロードサーバーからHTTP経由でバッチスクリプトをダウンロードしました。このスクリプトには、base64でエンコードされた.NET Webシェルが含まれており、C:\users\public\s.txtに書き込まれます。次に、certutil.exeを使用して復号し、復号した出力をC:\users\public\s.ashxに保存します。ASHXモジュールは、ASP.NETのHTTPハンドラの一種です。これは、ASPXモジュールと似ていますが、ASHXモジュールにはユーザーインターフェイスコンポーネントは含まれません。このスクリプトは、C:からI:、そしてP:までドライブをスキャンし、 DotNetNukeのインストールディレクトリを見つけ、ASHX Webシェルを\DesktopModules\DotNetNuke.ashxにコピーします。
Webシェル自体は非常に汎用的であり、DotNetNukeに特化したコードは使用していません。このWebシェルが受け取って返すデータはすべて、ハードコードされた鍵(e2c99096bcecd1b5)を使用してAESで暗号化されています。最初のリクエストでは、.NET PEファイルが要求されます。この実行ファイルはメモリにロードされ、セッション変数に保存されます。それ以降のリクエストでは、.NETアセンブリに含まれるLYクラスのインスタンスが作成され、受け取ったデータはそのEqualsメソッドに渡されます。ESETは、このWebシェルに送信されたペイロードを収集していませんが、Equalsメソッドが一般的なコントラクトに従っていないことは明らかです。
ESETが確認したケースでは、これは対話型のリモートPowerShellセッションを起動するために使用されていました。このセッションが確立されると、攻撃者は正規のWindowsツールを使用して、ホストとそのホストが参加しているActive Directoryドメインの情報を取得します。そして、攻撃者が管理するサーバーからオープンソースのポストエクスプロイト活動を支援するフレームワーク「PowerHub」をダウンロードし、特権を昇格する手法「BadPotato」を使用してSYSTEM権限を獲得しました。このエクスプロイトはフレームワークには存在しませんが、このグループはオープンソースのInvoke-BadPotatoモジュールをPowerHubを展開した環境に追加したと考えられます。最後に、攻撃者はPowerShellに組み込まれているInvoke-WebRequestを使用して、SparrowDoorの三叉槍ローダーを構成する3つのファイルを同じサーバーからダウンロードしました。
英国のNCSCが2022年に説明しているのと酷似したプロセスで、前述のファイルはSparrowDoorを実行するために三叉槍のローディングスキームを使用します。この例では、DLLサイドローディングに使用される実行ファイルはK7AVMScn.exeという名前のK7AntiVirus Messenger Scannerの正規バージョンですが、悪意のあるDLLと暗号化されたペイロードファイルはそれぞれK7AVWScn.dllとK7AVWScn.docという名前が付けられています。ペイロードファイルは、ローダーと復号されたペイロードの両方にハードコードされているRC4キーを使用して暗号化されますが、その鍵は検体によって異なります。
復号されたペイロードは、UK NCSCが説明しているのとほぼ同じ独自の設定とリフレクティブローダーのシェルコードで構成されていますが、唯一の違いは、4バイトのXORキーが含まれていた最初のフィールドが削除されていることです。ファイルの最後の202バイトは別々に暗号化されていますが、同じRC4キーを使用しており、C&Cサーバーの設定が含まれています。
前述のように、ESETはこれらの攻撃で使用された2つの新しいバージョンのSparrowDoorを確認しました。最初のものは、2024年11月に公開されたTrend MicroによるEarth Estriesに関する記事の中で、同社の研究者がCrowDoorと呼んでいたバックドアに酷似しています。このマルウェアは、伊藤忠商事とマクニカが2023年にVirusBulletinのプレゼンテーションで最初に文書化しています。ESETは、これらを別系統ではなく、SparrowDoorが継続的に開発された後継のマルウェアの一部と見なしています。ESETは、2021年に説明した最初のバージョンから、CrowDoorと命名されたマルウェアを経て、このブログの後半で説明するモジュール型バージョンへと進化した軌跡を追跡しました。
このキャンペーンで使用されたSparrowDoorの両方のバージョンは、旧バージョンと比較して、コードの品質とアーキテクチャにおいて明らかに進歩を遂げています。最も大きな変化は、ファイルI/Oや対話型シェルなど、時間のかかるコマンドを並列化するようになったことです。この進化によってバックドアは、これらのタスクを実行している間も、新しいコマンドを処理し続けることが可能です。このブログの後半でコマンドの詳細を説明するときに、この手順についても説明します。
過去のバージョンと同様、バックドアの動作は、渡されるコマンドライン引数によって変化します。これらの引数を表1に示します。
引数 | 動作 |
---|---|
引数なし | 常駐化。 |
11 | colorcpl.exeのプロセスハロウイング |
22 | メインバックドアの操作。 |
表1. SparrowDoorのコマンドライン引数
引数なしで実行されると、マルウェアはシステムに常駐します。まず、K7Softという名前のサービスを作成し、起動時に自動的に実行されるように設定します。自動実行に失敗すると、同じ名前のレジストリの「Run」キーが代わりに使用されます。どちらの場合も、常駐のメカニズムはコマンドライン引数11を使用してバックドアを実行するように設定されています。また、StartServiceAまたはShellExecuteA APIを使用して、同じ引数によって即座に起動されます。
引数11を使用してバックドアが実行されると、バックドアはコマンドライン引数22を使用してWindowsのカラー管理ツール(colorcpl.exe)を起動し、新しく作成されたプロセスにローダーを挿入します。
コマンドライン引数が22に設定されているときだけ、バックドアはメインペイロードを実行します。 SparrowDoorがこのバックドアモードで実行された後、すでに実行されている他のインスタンスを間接的に終了させます。このバックドアはK32EnumProcesses APIを使用して、実行中のすべてのプロセスのプロセスID(PID)を列挙し、GlobalID()という名前のミューテックスの作成を試行します。15以下のPIDは省略されていますが、これはおそらく、必要なシステムプロセスを終了するのを避けるためだと考えられます。ミューテックスがすでに存在する場合、プロセスは終了します。そうでなければ、ミューテックスはすぐに閉じられます。SparrowDoorがPIDを列挙し終わると、同じ名前の形式と独自のPIDを使用して新しいミューテックスを作成します。
次に、このバックドアは、暗号化されたペイロードファイルから最後の202バイトを読み出し、ローダーが使用したのと同じRC4キーを使用して復号します。結果として得られる平文は、C&Cサーバーの設定です。この設定ではアドレスとポートの3つのペアの後に、このバックドアがすべての設定されたC&Cサーバーを試行した後に待機すべき日数、時間、分、秒を表す4つの数値が続きます。これは、バックドアがC&Cの設定を変更するために使用するコマンドの機能と関連しています。これらの機能については、後のセクションで説明します。
バックドアは、この設定をロードした後、最初のサーバーへの接続を試行します。接続できない場合やC&Cサーバーがメインコマンドのループを終了させるコマンドを発行した場合、SparrowDoorは次のサーバーへの接続を順番に試行します。設定にある最後のサーバーが試行されると、バックドアは定義された時間(ESETが分析した検体では6分間)スリープし、設定をリロードし、プロセスを繰り返します。この間、SparrowDoorはコマンドに応答しません。しかし、すでに実行されていたコマンドは並列化され、完了するか、エラーが発生するか、サーバーによって終了されるまで実行され続けます。
バックドアは接続を管理するために、抽象クラスCBaseSocketとその子クラスCTcpSocketの2つのクラスを使用します。これらは基本的にWinsock TCPソケットのラッパーです。これらのクラス名は一般的なものであり、Microsoft Foundation Classライブラリ(MFC)と同じ命名規則に従っていますが、クラスには独自のコードが含まれているようです。
SparrowDoorは、整数値を、被害者またはセッションの識別子として使用します。この識別子は、C&Cサーバーがホストに関する情報を要求したときや、新しいソケットが作成されたときに送信されます。この値はHKLMレジストリキーから読み取られ、何か問題があればHKCUハイブの同じパスを確認します。この値が存在しない場合、識別子はマシンのパフォーマンスカウンターから取得され、前述のレジストリキーに書き込まれます。その値自体は無害ですが、標準ではないレジストリキーが使用されているため、攻撃を検出する機会となります。実際、SoftwareClassesCLSIDの下のレジストリキーの名前は、有効なCLSIDでなければなりません。このCLSIDは、波括弧で囲まれたGUIDとして表されます。これは必ずしも悪意があることを示すわけではありませんが、CLSIDの下に標準ではない名前のキーが存在することは異常です。
このキャンペーンで使用されたSparrowDoorの最初のバージョンは、表2に示すように、過去に文書化されたバージョンよりも多くのコマンドをサポートします。コマンドのIDはTrend Microが分析したバージョンで使用されたIDとは異なりますが、ID間の順序とオフセットは同じです。ESETはこの検体を入手していないため、追加コマンドがなかったのか、単にTrend Microの著者が文書化しなかったのかは不明です。
前述したように、いくつかのコマンドは並列化されています。バックドアがこれらのコマンドを受け取ると、C&Cサーバーへの新しい接続を開始するスレッドを作成します。その後、一意な被害者IDは、新しい接続を介して送信されます。また、この新しい接続を作成したコマンドを示すコマンドIDも一緒に送信されます。これによってC&Cサーバーは、接続と被害者を関連付け、接続の目的を追跡できます。これらの各スレッドは、特定のサブコマンドセットを処理できます。複雑にならないように、表2にはこれらのサブコマンドは追加していません。
コマンド ID | 説明 | 受信データ | 送信データ |
---|---|---|---|
0x32341122 | 最初の接続。 | メッセージなし | 空 |
0x32341123 | ホスト情報を送信。 | 空 |
|
0x32341124 | 対話型のシェルセッション(並列化)を開始。 | 空 | 対話型シェル のサブセクションを参照。 |
0x32341127 | スリープしてから、設定にある次のサーバーに移動。 | 数分間スリーブ。 | 応答なし |
0x32341128 | バックドアをアンインストールし、クリーンアップ。 | 空 | 応答なし |
0x32341129 | 現在のネットワーク設定を取得。 | 空 | ネットワーク設定の構造。 |
0x3234112A | ネットワークを設定。 | ネットワーク設定の構造。 | 応答なし |
0x3234112B | コマンドライン引数11を使用してローダーを実行し、現在のプロセスを終了。 | 空 | 応答なし |
0x3234112D | ファイルI/O(並列化)。 | オペレーションID。 | 「ファイル操作」のセクションを参照。 |
0x32341131 | 接続されているドライブ情報を取得。 | 空 | A:からZ:までのすべてのドライブのドライブタイプを、GetDriveTypeWによって返される形式で表した26バイトの配列。 |
0x32341132 | ファイルを一覧表示。 | ディレクトリパス。 | ファイル情報、ファイル1つにつき1つの応答。「ファイル一覧」のセクションを参照。 |
0x32341135 | ディレクトリを作成。 | ディレクトリパス。 | 応答なし |
0x32341136 | ファイルを移動またはファイルの名前を変更。 |
| 応答なし |
0x32341137 | ファイルを削除します。 | ファイルパス。 | 応答なし |
0x32341138 | プロキシを開始。 | 空 | プロキシ のサブセクションを参照。 |
表2. SparrowDoorが実装する主なコマンド
マルウェアとそのC&Cサーバー間のすべての通信は、 定義された同じ基本のパケット形式を使用します(図2を参照)。データセクションの形式は送信されるコマンドに依存し、空になる場合もあります。多くのケースでは、バックドアが応答しているコマンドのIDが応答で使用されます。ただし、いくつかの例外もあります。これらの例外については、関連コマンドの詳細な説明の中で取り上げます。
SparrowDoorは、対話型シェルコマンドを受信すると、前述のように新しいスレッドとソケットを生成し、新しいソケットを使用してこのスレッド内で以下のすべてのアクションを実行します。まず、このバックドアは、コマンドID0x32341125と一意の被害者IDをデータフィールドに含む確認メッセージを返します。次に、cmd.exeプロセスを生成し、スレッドのペアと名前付きパイプを使用して、C&Cサーバーとシェルの間でコマンドとその出力を中継します。名前付きパイプ\\.\pipe\id2
は、C&Cサーバーから受信したコマンドをシェルに渡すために使用され、\\.\pipe\id1は、STDOUTとSTDERRの結果としての出力に使用されます。どちらの場合も、はCTCPSocketインスタンスの10進数のメモリアドレスになります。これらのコマンドは、ID 0x32341126を使用し、そのデータ部分には実行されるコマンドと、そのコマンドを実行した結果として得られる出力がそのまま含まれています。他の値に設定されたコマンドIDがあるメッセージをバックドアが受信すると、対話型シェルセッションは終了します。
C&Cの設定は、暗号化されたペイロードファイルに保存されます。バックドアが設定を変更するコマンド(0x3234112A)を受信すると、受信した構造体はRC4で暗号化され、暗号化されたファイルの最後の202バイトがその結果で上書きされます。設定は自動的に再ロードされないことに注意が必要です。前に説明したように、設定されている3つすべてのサーバーが試行された後にのみ、この設定が再ロードされます。強制的に設定を再ロードするために、サーバーは0x32341127コマンドを実行するか、無効なコマンドを実行する場合があります。両方のケースで、SparrowDoorはコマンドループを終了して、次のサーバーに移動します。0x3234112Bコマンドなどを使用して、バックドアが再起動された場合、設定も再ロードされます。
並列化される他のコマンドと同様に、すべてのファイル操作も新しいソケットを使用して新しいスレッドで実行されます。SparrowDoorは、元のコマンドと同じIDを使用して確認メッセージを送信します。このメッセージの本文には、被害者の一意のIDとC&Cサーバーから送信された操作IDが含まれます。この操作IDには恐らく何も意味はなく、複数のファイル操作コマンドが並行化されて実行される場合に、サーバーが接続をファイル操作コマンドに関連付けるためだけに使用されていると考えられます。コマンドID 0x3234112Eと0x3234112Fは、それぞれファイルの読み取りと書き込みに使用されます。
ファイル読み取りの場合、メッセージの本文には、開始オフセット、読み取るサイズ、ファイルへのパスが含まれます。要求された読み取りがファイルの終端を越える、エラーとなり、応答は送信されません。終端を超えない場合、マルウェアは4KBのチャンクでファイルを読み込み、各チャンクはコマンドID 0x32341130を使用してメッセージの本文で送信されます。
ファイル書き込みの場合もプロセスは同じになります。C&Cからの最初のメッセージには、書き込まれるデータの合計サイズと、それに続くターゲットファイルのパスが含まれています。このサイズがターゲットファイルの現在のサイズより大きい場合にのみ、書き込みが実行されます。次にデータは、0x32341130という同じコマンドIDを使用して、4KBのチャンクでC&Cサーバーから送信されます。
バックドアは、ファイル一覧表示のコマンドを受信すると、最初にコマンドID 0x32341133を使用して確認メッセージを返送します。そして、FindFirstFileWとFindNextFileW API関数を使用して、ターゲットディレクトリ内のファイルを非再帰的に繰り返し処理します。各ファイルに対して、SparrowDoorはファイル一覧表示のコマンドと同じコマンドID(0x32341132)を使用して、図3に示す情報があるメッセージを1つ送信します。ファイル名の長さが直接指定されていなくても、ヘッダーのdata_lengthの値から残りのフィールドのサイズ(0x16)減算することで得られることに注意してください。
すべてのファイルが繰り返し処理されると、コマンドID 0x32341134とデータのないメッセージが送信され、ファイル一覧操作が正常に完了したことを示します
この機能により、このバックドアはC&Cサーバーと任意のマシン間におけるTCPプロキシとして動作できます。並列化される他のコマンドと同様に、以下の処理も独自のソケットを使用して新しいスレッドで実行されます。SparrowDoorは、元のコマンドと同じIDを使用して確認メッセージを送信します。このメッセージの本文には、被害者の一意のIDが含まれます。コマンドID 0x32341139は、実際にプロキシを開始するためにサーバーから送信されます。プロキシ機能は、C&Cサーバーに接続されたソケットと、サーバーがその新しい接続で提供したアドレスとポートに接続されたもう1つのソケットを作成することで実現されます。SparrowDoorは、Winsock構造体とイベントのペアを使用して、受信パケットを追跡し、サーバーとマシン間でそれらを中継します。SparrowDoorにプロキシ機能が追加されたことは、中国とつながりのあるサイバー攻撃グループがオペレーショナルリレーボックス(ORB)のネットワークを構築して使用する傾向にあることを示している可能性があります。
SparrowDoorのモジュール型バージョンは、これまでのバージョンとは大きく異なります。ネットワーク通信の処理では、コマンドヘッダーは本文とは別に送信され、そのデータはハードコードされたキーiotrh^%4CFGTjを使用してRC4で暗号化されます。このバージョンのネットワーク通信に使用されるカスタムクラスは、依然としてWinsock TCPソケットを使用しており、前述のクラスと非常に似ています。最も顕著な違いは、子クラスの名前がCTcpSocketではなく、CShttpsという名前になっている点です。表3に示すように、過去のバージョンのSparrowDoorに存在したコマンドの中でも、このバージョンはC&C設定の管理とバックドアのアンインストールに関連するコマンドのみを実装しています。ホストマシンに関する情報は、最初の接続メッセージの後に自動的に送信され、以前のバージョンで送信されていた情報に加えて、インストールされているセキュリティ製品のリストも含まれます。
その他のコマンドはすべて、プラグインの処理に関連しています。削除された機能は、単に1つまたは複数のモジュールに移動されただけだと考えられます。ESETは、これらのプラグインを観察していませんが、この機能を実装しているコードの分析に基づく洞察を共有します。
コマンドID | 応答ID | 説明 |
---|---|---|
N/A | 0x136433 | 最初の接続。 |
N/A | 0x0A4211 | ホスト情報を送信します。 |
0x3A72 | 0x0A4214 | 現在のネットワーク設定を取得します。 |
0x3A73 | 応答なし | ネットワークを設定します。 |
0x3A75 | 0x136434 | プラグインのコマンドループを開始します。「プラグイン 」サブセクションを参照してください。 |
0x3A76 | 0x136435 / 0x0A4217 | |
0x3A77 | 0x136435 / 0x0A421F | |
0x3A78 | 0x136435 / 0x0A4221 | |
0x3A7B | 0x136435 / 0x0A4228 | |
0x3A7A | 応答なし | バックドアをアンインストールし、クリーンアップします。 |
表3. モジュール型のSparrowDoorに実装されたコマンド
インストールされるプラグインは、標準的なC++のリストを通じて参照されます。各エントリは、ビットマスクとハンドラ関数のアドレスから構成されます。ビットマスクは、プラグインによって処理されるコマンドIDを決定するために使用され、コマンドIDの3バイト目の下位ニブルに対応します(つまりCommandID & 0xF0000)。 このバージョンのSparrowDoorは、プラグインコマンドを呼び出すために5つの異なるコマンドIDを使用します。これらIDの3つ(0x3A76、0x3A77、0x3A7B)はコード内でほぼ同じ経路をたどります。確認メッセージの応答IDのみが異なります。この一連のコマンドと他の2つのコマンドとの間には、ハンドシェイクプロセスにおいて非常に小さな違いがあります。しかし、すべてのケースでこのコマンドは「コマンド」セクションで説明したのと同じ方法で並列化されます。バックドアは、新しいソケットを使用して、対応する応答ID、一意のホストID、C&Cサーバーから最初に受信したデータを送信します。このデータは、「ファイル操作」のセクションで説明した操作IDと同じように機能すると考えられます。このハンドシェイクが完了すると、5つのコマンドはすべて同じ関数を呼び出し、プラグインコマンドを実際に処理します。この関数は、C&CサーバーからコマンドIDとデータを受け取り、インストールされているプラグインを繰り返し処理して、コマンドを正しいハンドラに送信します。このプロセスは、バックドアが不正な形式のコマンドメッセージを受信するまで繰り返されます。
デフォルトでは、0x10000のビットマスクを持つプラグインが1つだけインストールされます。このプラグインは、C&Cサーバーから送信される新しいプラグインのインストールを処理します。プラグインはPEファイルとしてサーバーから送信され、ディスクには保存されません。基本的なバックドアに存在する機能セットも削減されていますが、これはおそらく検出を回避するためだと考えられます。プラグインを受け取った後、手動でメモリにマッピングされ、fmainエクスポートが呼び出されます。この関数は、プラグインのビットマスクを返す関数のアドレスと、ハンドラ関数のアドレスを含む構造体へのポインタを返します。同じビットマスクを持つプラグインがインストールされていない場合、新しく受信したプラグインがリストに追加されます。
また、ESETはこのモジュール型バージョンと多くのコードが重複している古い検体も特定していますが、これらの検体にはプラグインを処理する似たようなコードも含まれています。これらの検体は、Trend Microが2023年8月の記事でHemiGateと命名したバックドアです。検体のいくつかは、同記事で説明されているのと同じRC4キーも使用しています。プラグインはC&Cから送信されるのではなく、PluginInterfaceという名前の抽象クラスを継承したC++クラスとして実装されます。これらのプラグインは、前の段落で説明したのと同じパターンに従っています。つまり、コマンドを配信するために使用されるビットマスクを返すメソッドと、コマンドを処理するための2番目のメソッドがあります。ESETは、HemiGateがモジュール型バックドアの進化における初期の段階を示していると考えています。そのため、HemiGateに含まれているプラグインは、最新のモジュール型バージョンで使用されているものを代表している可能性が高いです。表4に、プラグインの概要とその機能を示します。
ビットマスク | クラス名 | 説明 |
---|---|---|
0x20000 | Cmd | 1つのコマンドを実行します。 |
0x30000 | CFile | ファイルシステムの操作。 |
0x40000 | CKeylogPlug | キーロガー機能。 |
0x50000 | CSocket5 | TCPプロキシ。これは、プロキシセクションで説明した機能と非常に似ています。 |
0x60000 | CShell | 対話型シェル。 |
0x70000 | CTransf | クライアントとC&Cサーバー間でファイルを転送します。 |
0x80000 | CRdp | スクリーンショットを取得します。 |
0xA0000 | CPro |
|
0xC0000 | CFileMoniter | 指定したディレクトリのファイルシステムの変更を監視します。 |
表4. HemiGateに含まれるプラグインの概要
これらの類似点は、ESETがFamousSparrowとして追跡している一連の攻撃が、少なくとも部分的にEarth Estriesと重複していることを示す証拠になっています。HemiGateは、本ブログの前のセクションで詳述したSparrowDoorの両バージョンよりも前に登場しているため、SparrowDoorのモジュール型バージョンと並列化バージョンが同時に開発されている可能性もあります。
SparrowDoorは米国の被害者のネットワークで検出されましたが、このバックドアはMFCベースのローダーを実行するために使用されており、以前にCisco Talosが文書化したShadowPadローダーに類似していました。
このShadowPadローダーは、imjpp14.dllという名前のDLLで、14年以上前の古い正規のMicrosoft Office IME実行ファイル(imecmnt.exe)を、imjp14k.exeという名前に変更してDLLサイドローディングによってロードすることを目的としています。ローダーはまず、メモリ内のオフセット0xE367でパターンマッチングを実行して、現在のプロセスが必要とするサイドローディングのホストであるかどうかを確認します。この検証が成功すると、悪意のあるDLLは、DLLとそのサイドローディングのホストと同じディレクトリにあるimjp14k.dll.datという名前のファイルを復号します。最後に、復号されたペイロードはwmplayer.exeプロセス(Windowsメディアプレーヤー)に挿入されます。
ESETは暗号化されたペイロードを取得していませんが、wmplayer.exeプロセスでShadowPadがメモリ内で実行されていたことを検出し、その親プロセスとしてimpjp14k.exeを確認しました。さらに、このプロセスは、 ShadowPadのC&Cサーバー(IP:216.238.106[.]150)に接続していました。このプロセスを使用したShadowPadの検体は観測されませんでしたが、SparrowDoorのC&Cサーバーの1つが、既知のShadowPadフィンガープリントと一致するTLS証明書を使用していました。
さらに、ESETは被害者のネットワーク内の複数のマシンのメモリでShadowPadローダーとShadowPadバックドアを検出しました。
なお、FamousSparrowがShadowPadバックドアを使用しているのが確認されたのは今回が初めてです。
今回の侵害では、上記のさまざまなマルウェアに加え、以下のマルウェアがこのサイバー攻撃グループによって使用されていることも確認しています。
また、これまでに文書化されていないMiniDumpW API関数を使用してLSASSメモリをダンプするツールも使用されています。このツールは、%HOME%dph.dllと%WINDIR%PhysSysWOW64としてディスクに保存される2つのDLLに分割されます。後者のDLLは、同じディレクトリに保存されているMicrosoft Visual C++(MSVC)の正規ライブラリと混同させるためのものだと考えられます。前者のDLLは正規のバージョンのVLCのキャッシュジェネレータ(vlc-gen-cache.exe)からロードされ、dph.exeに名前が変更され、後者のDLLから関数をインポートします。VLCプラグインはネイティブのDLLに実装されている場合があるため、そのキャッシュジェネレータには、これらのライブラリをロードして実行するコードが当然含まれます。
ShadowPad C&Cサーバーは、SHA-1フィンガープリントがBAED2895C80EB6E827A6D47C3DD7B8EFB61ED70Bの自己署名TLS証明書を使用して、Dellが使用する証明書になりすまそうとしています。これは、2024年2月にHunt Intelligenceが公開した記事で説明した形式に従っています。このパターンは、ShadowPadサーバーを追跡するために使用することはできますが、特定のサイバー攻撃グループに関連するものでありません。SparrowDoorによって使用されたC&Cサーバーの1つ(45.131.179[.]24:80)は、前述のShadowPad C&Cサーバーによって使用された証明書と同一のコモンネーム(CN)を持つTLS証明書をポート443で使用していました。また、このサーバーは、SparrowDoorの両方のバージョンに存在した唯一のサーバーです。
このキャンペーンでは、3つの異なるSparrowDoorの C&Cサーバーが観測され、そのすべてがポート80を使用していました。モジュール型バージョンの検体は、amelicen[.]comを3番目のC&Cサーバーとして設定していました。この検体が最初に検出されたとき、このドメインは前の段落で説明したIPアドレスを指していました。モジュール型バージョンの検体で設定されたC&Cサーバーの1つ(43.254.216[.]195:80)は、SparrowDoorローダーでも使用されていました。SparrowDoorは標準的なTCP通信を使用し、ファイルはHTTP経由でダウンロードされているため、これは奇妙と言えます。しかし、2024年6月30日のダウンロードと、2024年7月12日のモジュール型のSparrowDoorのコンパイルには、約2週間の間隔があります。そのポートで待機しているサービスが、これら2つバージョンが発生した間に変更されたかどうか、あるいはSparrowDoorのC&CサーバーにHTTP経由でファイルを提供する機能があるかは不明です。
FamousSparrowは、2022年から2024年にかけて活動が確認されておらず、レポートも公開されていなかったため、活動を休止していると考えられていました。しかし、2024年7月に侵害された米国の業界団体のネットワークを分析したところ、2つの新しいバージョンのSparrowDoorが発見され、FamousSparrowが現在も代表的なバックドアを開発していることが判明しました。これらの新バージョンの1つは、メキシコの研究機関のマシンでも見つかっています。このブログで取り上げた情報に基づいて追跡を続けていたところ、ホンジュラスの政府機関を標的した攻撃など、この期間に同グループによる新たな活動も特定されました。この新たに発見された活動は、このグループがまだ活動しているだけでなく、この時期にSparrowDoorの新バージョンを積極的に開発していたことを示しています。
FamousSparrowの活動を引き続き監視し、報告していくとともに、FamousSparrowとSalt Typhoonとの潜在的な関連性についても今後も議論していきます。
SHA-1 | ファイル名 | 検出 | 説明 |
---|---|---|---|
C26F04790C6FB7950D89AB1B08207ACE01EFB536 | DotNetNuke.ashx | ASP/Webshell.SE | ASHX Webシェル。 |
F35CE62ABEEDFB8C6A38CEAC50A250F48C41E65E | DrmUpdate.exe | N/A | DLLサイドローディングに使用される正規のMicrosoft Office IME 2010。 |
5265E8EDC9B5F7DD00FC772522511B8F3BE217E3 | imjp14k.dll | Win32/Agent.AGOZ | ShadowPadローダー。 |
A91B42E5062FEF608F285002DEBAFF9358162B25 | dph.exe | N/A | 正規のVLCキャッシュジェネレータ。 |
0DC20B2F11118D5C0CC46B082D7F5DC060276157 | vlc.exe | N/A | DLLサイドローディングに使用される正規のVLCメディアプレイヤー。 |
EF189737FB7D61B110B9293E8838526DCE920127 | libvlc.dll | Win64/Agent.FAY | SparrowDoorローダー。 |
D03FD329627A58B40E805F4F55B5D821063AC27F | notify.exe | N/A | DLLサイドローディングに使用される正規のYandexアプリケーション。 |
3A395DAAF518BE113FCFF2E5E48ACD9B9C0DE69D | WINMM.dll | Win32/ShellcodeRunner.LK | モジュール型のSparrowDoorローダー。 |
0925F24082971F50EDD987D82F708845A6A9D7C9 | WindowsUpdate.exe | N/A | DLLサイドローディングに使用される正規のFortemediaオーディオ処理機能。 |
5F1553F3AF9425EF5D68341E991B6C5EC96A82EB | FmApp.dll | Win64/Agent.EEA | ShadowPadローダー。 |
CC350BA25947B7F9EC5D11EA8269407C0FD74095 | FmApp.dll | Win64/Agent.EDQ | ShadowPadローダー。 |
DB1591C6E23160A94F6312CA46DA2D0BB243322C | K7AVWScn.exe | N/A | DLLサイドローディングに使用される正規のK7AntiVirus Messenger Scannerスタブ。 |
1B06E877C2C12D74336E7532BC0ECF761E5FA5D4 | K7AVWScn.dll | Win32/Agent.AGOJ | SparrowDoorローダー。 |
EBC93A546BCDF6CC1EB61D7174BCB85407BBD892 | start.bat | BAT/Agent.DP | ASHX Webシェルを展開するバッチスクリプト。 |
D6D32A1F17D48FE695C0778018C0D51626DB4A3B | dph.dll | Win64/Riskware.LsassDumper.EN | LSASSメモリをダンプするプログラム。 |
7D66B550EA68A86FCC0958E7C159531D4431B788 | Ntmssvc.dll | WinGo/ShellcodeRunner.EC | 改変されたSpark RAT。 |
D78F353A70ADF68371BC10CF869B761BD51484B0 | N/A(インメモリ) | Win32/Agent.VQI | 復号されたSparrowDoorのペイロード。 |
99BED842B5E222411D19F0C5B54478E8CC7AE68F | N/A(インメモリ) | Win32/Agent.VQI | 復号されたモジュール型のSparrowDoorペイロード。 |
5DF3C882DB6BE14887182B7439B72A86BD28B83F | taskhosk.exe | Win32/Agent.AHCV | プラグインが組み込まれたSparrowDoor/HemiGate。 |
AA823148EEA6F43D8EB9BF20412402A7739D91C2 | taskhosk.exe | Win32/Agent.AHCV | プラグインが組み込まれたSparrowDoor/HemiGate。 |
IP | ドメイン | ホスティングプロバイダー | 最初に確認された日付 | 詳細 |
---|---|---|---|---|
43.254.216[.]195 | N/A | Hongkong Wen Jing Network Limited | 2024年6月27日 | FamousSparrowのC&Cとダウンロードサーバー。 |
45.131.179[.]24 | amelicen[.]com | XNNET LLC | 2024年7月5日 | SparrowDoorのC&Cサーバー。 |
103.85.25[.]166 | N/A | Starry Network Limited | 2024年6月6日 | SparrowDoorのC&Cサーバー。 |
216.238.106[.]150 | N/A | Vultr Holdings, LLC | 2024年03月11日 | ShadowPadのC&Cサーバー。 |