ペンテストツールBrute Ratel C4: 脅威アクターによるレッドチームツール悪用

A conceptual image illustrating the concept of an adversary, underscoring the ethical discussion around red-teaming tools such as Brute Ratel

This post is also available in: English (英語)

概要

Unit 42は、既知のAPT攻撃グループ(Advanced Persistent Threat 持続的標的型攻撃)のパターンや戦術に合致する新たな独自マルウェアサンプルを継続的にハントしています。5月19日、こうしたサンプルの1つがVirusTotalにアップロードされ、評価した56のベンダすべてから良性という判定を受けました。検出にまつわる懸念は明らかですが、このサンプルは悪性ペイロード、コマンド&コントロール(C2)、パッケージングといった点でも重要と考えられます。

このサンプルには、最新のレッドチームおよび敵対的攻撃シミュレーションツールBrute Ratel C4(BRc4) と関連する悪性ペイロードが含まれていました。類似ツールのCobalt Strikeに比べて名前こそあまり知られていませんが、その性能は折り紙つきです。むしろこのツールは、とくにEDR (Endpoint Detection and Response)やAV (Antivirus)機能による検出を避けるよう設計されているという点で、ほかに類を見ないほど危険なものです。その効果は前述のVirusTotalのベンダが検出できていなかったことからも明らかです。

C2に関していえば、このサンプルは米国にあるAmazon Web Services(AWS)のIPアドレスに443番ポート経由でコールホーム通信をしていることがわかりました。さらに、当該リスニングポート上のX.509証明書は、組織名を「Microsoft」、組織単位(OU)を「Security」として、Microsoftになりすますよう設定されていました。証明書そのほかのアーティファクトを軸にさらに調べた結果、悪意のあるIPアドレスを合計41個、BRc4のサンプルを9個、これまでにこのツールによる影響を受けた南北アメリカの3つの組織を特定しました。

このユニークなサンプルは、既知のAPT29のテクニックや最近のキャンペーンとパッケージング方法が合致していて、有名クラウドストレージやオンラインコラボレーションアプリケーションが活用されていました。具体的には、このサンプルは自己完結型ISOとしてパッケージングされており、このISOのなかにWindowsショートカット(LNK)ファイル、悪性ペイロードDLL、Microsoft OneDrive Updaterの正規コピーが入っています。ISOをマウントしたフォルダからこの正規アプリケーションを実行しようとすると、「DLL検索順序ハイジャック(DLL search order hijacking)」と呼ばれる手法により、悪性ペイロードが依存関係としてロードされることになります。パッケージング技術だけでこのサンプルがAPT29のものと決めつけることはできないものの、こうしたテクニックはこのツールの使い手がBRc4を展開するのに国家レベルの技能を用いたことを示しています。

全体として、私たちは今回の調査は2つの点で重要と考えています。1点めはほとんどのサイバーセキュリティベンダが検出しない新たなレッドチーム能力が特定されたこと。2点めのさらに重要なことは、いまや国家レベルの展開テクニックの使い手と評すべき能力が特定され、しかもそのユーザーベースは拡大中だということです。本稿は、BRc4の概要、悪質なサンプルの詳細な分析、このサンプルのパッケージングと最近のAPT29サンプルの比較、この活動のハンティングに使えるIoC(indicators of compromise)一覧を提供します。

私たちはすべてのセキュリティベンダに同ツールの活動を検出する保護対策を開発することを推奨します。また、すべての組織にこのツールの活動に警戒することを推奨します。

パロアルトネットワークスのお客様は、脅威防御、Cortex XDR、WildFireのマルウェア解析を通じ、本稿で解説する脅威からの保護を受けています。

本稿に関連して観測されたテクニックやそれに対応してとるべき行動指針全体 (CoA) を視覚化した内容についてはUnit 42のATOMビューアからご確認ください。

Unit 42の関連トピック APT29, Cobalt Strike

目次

Brute Ratel C4の概要
クリックからBruteへ
Roshan_CV.isoのパッケージング
version.dllの変更
x64シェルコード: 復号したOneDrive.Update
標的のネットワークインフラ
OneDrive.Updateの特定
badger_x64.exeの使用
そのほかのサンプルとインフラ
保護と緩和策
結論
IoC
追加リソース

Brute Ratel C4の概要

Brute Ratel C4は2020年12月にペネトレーションテスト(ペンテスト)ツールとしてデビューしました。当初はインド在住のセキュリティエンジニア、Chetan Nayak(別名Paranoid Ninja)氏が空き時間に開発を進めていたものです。Nayak氏のWebサイト(Dark Vortex)によると、Nayak氏は欧米のサイバーセキュリティベンダでシニアレッドチームとして数年の勤務経験があるようです。これまで2年半をかけ、Nayak氏は当該ペンテストツールの機能、性能、サポート、トレーニング面をすこしずつ改善してきました。

2022年1月、Nayak氏は本格的に開発・育成のワークショップを行うために本業を辞し、同月、「Brute Ratelにとってこれまでで最大のリリース」と評されるBrute Ratel v0.9.0(Checkmate) をリリースしました。

Checkmateのリリースノート。「Brute Ratel v0.9.0 (Checkmate) は、Brute Ratel のこれまでで最大のリリース」としている。このリリースでは、Brute Ratelに大きな変更が加えられています。
図1. Checkmateのリリースノート

ここで気になるのが、リリースの説明に「本リリースは複数のトップレベルEDR製品とアンチウイルス製品のDLLをリバースエンジニアリングして作られた」と明記されている点です。

本分析は、兵器転用可能なペンテストツールの開発・使用に関する倫理をめぐり、サイバーセキュリティ業界内で持ち上がっている、しかるべき議論を強調するものとなっています。

BRc4は現在、「レッドチームや敵対的攻撃シミュレーション用にカスタマイズされたC2センター(A Customized Command and Control Center for Red Team and Adversary Simulation)」と自らを宣伝しています。5月16日にNayak氏は同ツールが350名の顧客で480名のユーザーを獲得していると公表しています。

Paranoid Ninja (Brute Ratel C4)のTwitter投稿。「前週Brute Ratelの顧客数が350を超えライセンス数も480を超えたことを発表でき非常にうれしい」#BRc4 は2年前、趣味のプロジェクトとして始まったもので、その後商用化することにしました。当初のBRc4はほんとうにベーシックな機能しかなく、バグも少なくなかったので、始めたときはその後どうなるかについてそれ相応の不安もありました。ただ、多くのフォロワーさんが私と製品に信頼を寄せてくれているようでした。お客様がチャンネルで議論して何かあれば報告できるよう、Discordでのサポート全体を透明化することにしました。コミュニティからの多くのフィードバックとサポートのおかげで、BRc4はリリースごとに改良され、市場のどのC2より多くの機能を持ち、安定するようになりました。今後数ヶ月のロードマップには、とんでもない数の機能が待っています。
図2. BRC4の顧客への発表。出典: https://twitter.com/NinjaParanoid/status/1526110403356282880

最新版のBrute Ratel v1.0 (Sicilian Defense)は、翌5月17日にリリースされ、現在1ユーザー2,500ドル、1更新あたり2,250ドルで販売されています。この小売価格と顧客基盤でBRc4は今後1年間で100万ドル以上の売上を上げられると位置づけられています。

Brute Ratelのライセンスとコスト: ドキュメント、Eメール/Discordサポート、バグフィックス、ライセンスが切れるまでのすべての新機能のアップデートが含まれています。ライセンス費用: 1ユーザーあたり2500ドル。税込み(ただし必要に応じて物品サービス税追加) 1年間のライセンス。デモのご依頼は[メールアドレス]まで。ライセンス更新: 1ユーザーあたり2,250ドル(税込)。
図3. BRc4のライセンスとコスト
BRc4は次の機能があると喧伝しています。

  • SMB/TCPのペイロードがSlack、Discord、Microsoft Teamsなど正規Webサイト経由でのカスタム外部C2チャンネル作成機能を提供
  • EDRのユーザランドフックを検出するデバッガを内蔵
  • EDRやAVからのメモリアーティファクト隠蔽機能
  • Windows SYSのオンザフライでの直接呼び出し
  • EgressにHTTP、HTTPS、DNS Over HTTPS、SMB、TCPを利用可能
  • LDAP Sentinelがドメインやフォレストに対するさまざまなLDAPクエリを行うリッチなGUIインターフェイスを提供
  • コマンド&コントロールチャンネルを複数利用可: SMB、TCP、WMI、WinRMなど複数のピボットオプションを使用可能、RPCによるリモートサービス管理が可能
  • スクリーンショット撮影
  • x64シェルコードローダ
  • 反射型/オブジェクトファイルローダ
  • Kerberosチケットを復号してhashcatに変換
  • Windowsイベントトレーシング (ETW) へのパッチ適用
  • マルウェア対策スキャン インターフェイス(AMSI)へのパッチ適用
  • Windowsシステムサービスの作成
  • ファイルアップロード/ダウンロード
  • CreateFileTransacted経由のファイル作成
  • ポートスキャン

クリックからBruteへ

Roshan_CVのサンプルに対するVirusTotalの判定のスクリーンショット
図4. Roshan_CVのサンプルに対するVirusTotalの判定結果(2022年6月27日時点)

VirusTotal に保存されているRoshan_CV.iso (SHA256:1FC7B0E1054D54CE8F1DE0CC95976081C7A85C7926C03172A3DDAA672690042C) というファイルは、Roshan という名前のある個人のCV (職務経歴を含む履歴書)と思われるものです。このファイルは2022年5月19日にスリランカからVirusTotalにアップロードされていました。このISOというファイル拡張子は、国際標準化機構(International Organization for Standardization)のISO 9960ファイルシステムから派生した光ディスクイメージファイルを指していて、CD/DVDのファイルバックアップに使用されることが多いものです。ISOファイルは悪意のあるものではなく、ユーザーによるダブルクリックが必要です。ダブルクリックされると、このISOはWindowsドライブとしてマウントされます。最終的にISOのアーカイブされたファイルがユーザーに表示されます。この場合、ISOをダブルクリックすると、次のようにユーザーに表示されます。

このスクリーンショットは、ISOイメージの閲覧時に表示されるRoshan-Bandara-CV-Dialogファイルの内容です。
図5. ISOイメージを閲覧したところ

図5に示すように、ユーザーにはRoshan-Bandara_CV_Dialogという名前のファイルが表示されます。このファイルには偽のMicrosoft Wordアイコン画像がついていて、Microsoft Wordで作成された個人の履歴書を装っています。ウィンドウのダイアログボックスからこのISOが2022年5月17日に作られたことがわかりますが、くしくもこれは新たなBRc4のリリース日と同日です。

このファイルをダブルクリックすると、ユーザーのマシンにBrute Ratel C4がインストールされます。

Windows OSのデフォルトでは、隠しファイルはユーザーには表示されません。図6では、表示されない4つの隠しファイルが存在します。隠しファイルの表示が有効な場合、ユーザーには以下のように表示されます。

と
図6. 隠しファイルの表示を有効にしてISOイメージを表示した場合の見えかた

ユーザーから見えるルアー(おとり)のファイルは、Windowsのショートカットファイル(LNK)で、以下のようなプロパティを持っています。

Roshan-Bandara-CV-Dialogのプロパティを開いたときに表示される内容のスクリーンショット
図7 Roshan-Bandara_CV_Dialogのプロパティ

Microsoftのショートカットファイル(拡張子.lnkのファイル)には、メタデータが豊富に含まれていて、ここからファイルに関するアーティファクト(痕跡情報)を得られます。同ファイルの主要アーティファクトを下記に一覧します。

  • リンクのCLSID: 20D04FE0-3AEA-1069-A2D8-08002B30309D
    • ここで使われているCLSIDは通常のLNKファイルのCLSIDではない。このCLSIDはコントロールパネル(常にアイコン表示)に紐付いているもの
  • コマンドライン引数: %windir%/system32/cmd.exe /c start OneDriveUpdater.exe
  • アイコンの場所: C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE

Roshan-Bandara_CV_Dialogをダブルクリックすると以下の動作をします。

  1. cmd.exeを次のパラメータを指定して起動:
    1. /c start OneDriveUpdater.exe (/cパラメータは、カレント ワーキング ディレクトリからWindowsのスタートコマンド経由でOneDriveUpdater.exeを起動してから終了するようcmd.exeに指示する)。
  2. OneDriveUpdater.exeはローカルマシンのデータをクラウドに同期するさいに使うMicrosoftのデジタル署名がついたバイナリです。これじたいは悪質なものではなく、単にアクターのDLLをロードするのに悪用されています。OneDriveUpdater.exeが実行されると以下の動作をします。
    1. version.dllOneDriveUpdater.exeと依存関係にあるDLLで、OneDriveUpdater.exeと同じディレクトリに存在するため、ここから読み込まれます。
    2. アクターはこのversion.dllを変更済みで、暗号化されたペイロードファイルのOneDrive.updateをロードするようになっています。この変更がファイルを復号し、メモリ内にシェルコードの第1段階をロードします。コードの機能を維持するため、アクターはDLL APIプロキシを使ってvresion.dll (綴りが違うことに注意)という名前の正規のversion.dllにリクエストを転送します。vresion.dll は、アクターが変更済みのversion.dllの依存ファイルで、アクターのversion.dllとともにロードされます。
  3. このインメモリコードがBrute Ratel C4で、これがRuntimeBroker.exeプロセス空間のWindowsスレッドとして実行され、443/tcp経由でIP 174.129.157[.]251との通信を開始します。

図8は、このプロセスの概要を示したものです。

Rosahan-Bandara-CV-Dialog > cmd.exeの実行 > OneDriveUpdate.exeの実行(cmd.exe経由) > version.dll > OneDrive.Update > アクター
図8 Roshan-Bandara_CV_Dialogをダブルクリックしたときの実行フロー

Roshan_CV.ISOのパッケージング

ISOファイルRoshan_CV.ISOの構成はほかの国家支援型APT攻撃グループのISOファイル構成とよく似ています。以下の表はRoshan_CV.ISOと以前に特定済みのAPT29のサンプル(Decret.ISO)とを並べて比較したものです。

RoshanのファイルとDecretのファイル(既知のAPT29のサンプル)との比較。ここからは、どちらもデジタル署名済みの信頼されているアプリケーションを悪用し、隠しファイルを含み、共通のファイル拡張子を持ち、「おとり」としてショートカット(LNK)ファイルをドロップし、偽のアイコンを使い、version.dllを使っていることがわかります。Roshanは暗号化されたペイロードを使用しますが、Decretはちがいます。またこの図には両ファイルのSHA-256ハッシュも含めています。
表1. 既知のAPT29サンプルとパッケージの展開内容を比較

以下の図はRoshan_CV.ISODecret.ISOをダブルクリックしたときのユーザーからの見えかたを示したものです。図9はWindowsのデフォルトのファイルエクスプローラーの画面で隠しファイルの表示にチェックが入っていません。ダブルクリックしたとき悪意のある活動を開始するショートカットファイル(LNKファイル)がユーザに表示されています。

DecretとRoshanはいずれもマウントされたISOイメージ内にファイルを1つだけ表示する
図9 マウントしたISOイメージを横に並べて比較したもの。隠しファイルの表示が有効になっていない状態

図10は隠しファイルの表示を有効にして閲覧した場合のISOの見えかたです。

いつ
図10 マウントしたISOイメージを横に並べて比較したもの。隠しファイルの表示が有効になった状態

実行フローは以下の通りです。

Roshan_CV.ISO→Roshan-Bandar_CV_Dialog.LNK→cmd.exe→OneDriveUpdater.exe→version.dll→OneDrive.Update

Decret.ISO→Decret.LNK→cmd.exe→HPScan.exe→version.dll→HPScanApi.dll

パッケージングされたISOファイルの配信は、スピアフィッシングメールキャンペーンで送信されるか、第2段階のダウンローダによって被害者環境にダウンロードされるパターンが多いです。

この特定のペイロードがどのようにして標的環境に配信されたかはわかりませんが、5月19日から20日にかけては3つのスリランカ内のIPアドレスからのC2サーバーへの接続試行が確認されています。

version.dllの変更

version.dllはC++で記述されたマイクロソフト正規のファイルを変更したものです。埋め込まれたコードは暗号化済みペイロードファイルのロードと復号に使われます。復号されたペイロードファイルはx64シェルコード(アセンブリ命令)で、自身の解凍のために一連の命令を実行します。

OneDriveUpdater.exe用にversion.dllのコード機能を維持するため、アクターは正規のデジタル署名付きMicrosoft製version.dllを含めてこれにvresion.dllという名前を付けています(綴りがversionではないことに注意)。OneDriveUpdater.exeがアクターのversion.dllを呼び出すと、その呼び出しはvresion.dllにすべてプロキシされます。このためアクターのversion.dllは依存ファイルとしてvresion.dllをロードします。

この埋め込みコードは_PROCESS_ATTACHを介してDLLがロードされた時点で開始され、DLLMainサブルーチンで以下のことを行います。

  1. すべてのプロセスを列挙してRuntimebroker.exeのプロセスID(PID)を見つける
  2. ペイロードファイルOneDrive.Updateをカレントワーキングディレクトリから読み込む
  3. 手順1で得たプロセスIDを使ってWindows API ntdll ZwOpenProcessを呼び出す。このプロセスはフルコントロールのアクセス権で開かれる
  4. 28バイトのキー(jikoewarfkmzsdlhfnuiwaejrpaw)を使い、ペイロードファイルをXOR暗号アルゴリズムで復号する
  5. Windows API NtCreateSectionを呼び出し、プロセス間で共有可能なメモリブロックを作成する。このAPIを使ってRuntimebroker.exeversion.dllとの間でメモリを共有する
  6. Windows API NtMapViewOfSectionを2回呼び出す。1回めの呼び出しは復号したペイロードの内容を現在のプロセスのメモリ空間にマッピングし、2回めの呼び出しはその内容をRuntimebroker.exeのメモリ空間にマッピングする
  7. Windows API NtDelayExecutionを呼び出し、およそ4.27秒間スリープ(実行を一時停止)させる
  8. Windows API NtCreateThreadExを呼び出す。このAPIはRuntimebroker.exeにコピーされたメモリの開始アドレスで新しいスレッドを開始する
  9. Windows API NtDelayExecutionを呼び出し、およそ4.27秒間スリープ(実行を一時停止)させる
  10. 終了

上記のテクニックでは文書化されていないWindows NTAPI呼び出しを介したプロセスインジェクションが使われています。復号されたペイロードはruntimebroker.exeのメモリ空間内で実行されています。以下は、インメモリで復号されたペイロードの実行を開始するversion.dllのコードスニペットです。

version.dllがNtCreateThreadExを呼び出している
図11 version.dllがNtCreateThreadExを呼び出している

x64シェルコード: 復号したOneDrive.Update

復号されたペイロードファイルはx64シェルコード(アセンブリ命令)で、自身の解凍のために一連の命令を実行します。このアセンブリ命令には複数のpush命令とmov命令が含まれています。その目的は、Brute Ratel C4コード(x64アセンブリ)を1度に8バイトずつスタックにコピーし、最終的に実行用のメモリ空間(MZヘッダを取り除いたDLL)に再アセンブルすることです。これら一連のpush命令とmov命令を使用すれば、シェルコードをブロック単位でアセンブルできるので、コードベース全体をスキャン対象にしてしまうことがなく、インメモリのスキャンを回避できます。復号されたペイロードのエントリポイントは以下の通りです。

復号されたペイロードのversion.dllのエントリポイント
図12. 復号されたペイロードのversion.dllのエントリポイント

このアンパックには25,772個のpush命令と25,769個のmov命令が必要です。終了するとコードは次の内容を実行します。

  1. APIのハッシュ化(ROR13、ROtate Right 13)を使い、NtAllocateVirtualMemory用のハッシュを検索する。すべてのAPI呼び出しはAPIハッシュのルックアップによって行われる
  2. NtAllocateVirtualMemoryのシステムコールインデックスをシステムサービスディスパッチテーブル(SSDT)を参照して解決する。Windows API関数はすべてsyscall経由で作られるが、これはBrute Ratel C4(Syscall Everything)の特徴
  3. Windows API NtAllocateVirtualMemoryを呼び出し、0x3000バイトのメモリを確保する
  4. Windows API NtAllocateVirtualMemoryを再度呼び出してBrute Ratel C4が使用する設定ファイル用メモリを確保する
  5. 先ほどスタックにプッシュしておいたシェルコードを新たに割り当てられたメモリセグメントにコピーする
  6. Windows API NtProtectVirtualMemoryを呼び出して新たに割り当てたメモリブロックの保護機能を変更する
  7. 新たに確保したメモリの開始アドレスを指定してNtCreateThreadExを呼び出し、パラメータとして設定データを渡す
  8. 終了

以下はNtCreateThreadExを呼び出して第2段階のシェルコードの実行を開始するコードのスニペットです。

第2段階のシェルコードを呼び出す
図13. 第2段階のシェルコードを呼び出す

新しいスレッドの開始アドレスに、設定データがパラメータとして渡されます。このデータには、Brute Ratel C4の暗号化された設定が含まれています。暗号化されている内容は以下の通りです。

暗号化されたBRc4の設定内容
図14 暗号化されたBRc4の設定内容

このデータはbase64でエンコードされ、RC4で暗号化されています。16バイトのRC4復号鍵はbYXJm/3#M?:XyMBFです。

復号された設定ファイルは次のような内容です。

復号された設定ファイルの内容

各パラメータはパイプ()文字で区切られ、そのなか値の1つが、先に見たIP174.129.157[.]251とポート443です。

標的のネットワークインフラ

IP 174.129.157[.]251はAmazon AWSでホストされています。弊社Cortex Xpanseの履歴によれば、このIPは2022年4月29日から2022年5月23日まで443/tcpをオープンにしており、Microsoft Security を装った自己署名SSL証明書を使っていました。

  • subjectFullName: C=US,ST=California,O=Microsoft,OU=Security,CN=localhost
  • Serial Number: 476862511373535319627199034793753459614889484917
  • sha256_fingerprint: d597d6572c5616573170275d0b5d5e3ab0c06d4a9104bbdbe952c4bcb52118c9

IP 174.129.157[.]251へのSSLハンドシェイクが完了するとBrute Ratel C4のリッスンポートにHTTP POSTで以下のデータが送信されます。

BRc4のHTTP POSTリクエスト
図15. BRc4のHTTP POSTリクエスト

OneDrive.Updateの特定

Brute Ratel C4と関連しているインメモリの復号済みペイロードを特定するため、メモリ内にある特徴的なアセンブリ命令、pushとmovに基づいてハンティングを行いました。これらの命令はシェルコードの第2段階のアセンブリに使用されます。VirusTotalで検索したところ、同じpush/mov命令を持つ2つめのサンプルが見つかりました。

  • ファイル名: badger_x64.exe
  • SHA256: 3AD53495851BAFC48CAF6D2227A434CA2E0BEF9AB3BD40ABFE4EA8F318D37BBE
  • ファイルタイプ: Windows実行ファイル(x64)

当初、私たちの目に留まったのは、「badger」という単語を含むファイル名でした。Brute Ratel C4のWebサイトによると、badgerという単語はリモートアクセスに使用されるペイロードを表しているとのことです。VirusTotalにアップロードしたところ66社中2社のみがこのサンプルを「malicious (悪質)」と判定しました。本稿執筆時点では、12ベンダがこのサンプルを悪質と判定し、8ベンダがこのサンプルを「Brutel」と分類していることから、私たちのインメモリコードがBrute Ratel C4となんらかの関連をもっていることをさらに裏付けるかたちになっています。

badger_x64.exeのエントリポイントと復号したOneDrive.Updateのサンプルを並べて比較ところ、以下のようになりました。

OneDrive.Updateとbadger_x64.exeの比較
図16. OneDrive.Updateとbadger_x64.exeの比較

push/mov命令を終了したbadger_x64.exeはAPIハッシュを使ってOneDrive.Updateと同じWindows API呼び出しを行いますが、直接にはsyscallを使いません(これはBrute Ratel C4のユーザー設定機能)。badger_x64.exeのサンプルは次の内容です。

badger_x64.exeがシェルコードを呼び出しているところ
図17. badger_x64.exeがシェルコードを呼び出しているところ

OneDrive.Updateのサンプル同様、呼び出し側のスレッドに渡されるパラメータは、Brute Ratel C4の設定データです。このサンプルでは、データはbase64エンコードやRC4暗号化はされておらず、平文で渡されています。本サンプルで使われていた設定は以下の通りです。

OneDrive.Updateのサンプルで使われていた設定内容

この場合、サンプルはIP159.65.186[.]50に443/tcpで通信するよう設定されています。

以下のことからOneDrive.UpdateはじっさいにBrute Ratel C4と関連していると結論付けることができます。

  • 設定ファイルの構造が同じでパイプ(|)でフィールドを区切っている
  • NtCreateThreadEx/CreateThread経由で第2段階のシェルコードを実行するのに同じWindows APIの呼び出しパターンが使われている
  • シェルコードを割り当てられたメモリにコピーする関数の命令が合致している
  • いずれの第2段階シェルコードのサンプルにも「badger」という単語に言及する以下の文字列が含まれる(注: OneDrive.Updateのサンプルはこれらの文字列をRC4で暗号化している)。
    • imp_Badger
    • BadgerDispatch
    • BadgerDispatchW
    • BadgerStrlen
    • BadgerWcslen
    • BadgerMemcpy
    • BadgerMemset
    • BadgerStrcmp
    • BadgerWcscmp
    • BadgerAtoi
  • Badger*という名前がBRc4 GitHubのWebサイトに記載されているエクスポート名と合致している

badger_x64.exeはBrute Ratel C4(badgerペイロード)を実行するスタンドアロンのx64実行ファイルです。一方、復号されたOneDrive.Updateファイルはアクターの変更したDLL(version.dll)で実行されるBrute Ratel C4のインメモリコンポーネントです。

badger_x64.exeの使用

badger_x64.exeOneDrive.UpdateがいずれもBRc4のペイロードであることを確認した後、私たちはこの2つめのサンプルの使用を分析する作業に取り掛かりました。

VirusTotalの記録からはこのサンプルが2022年5月20日にウクライナのWebユーザーによってアップロードされたことが判明しました。くしくもこれは、Roshan_CV.ISOファイルのアップロード日の翌日です。

前述の通り、このサンプルはポート443で159.65.186[.]50にコールホーム通信するよう設定されています。弊社Cortex Xpanseの履歴によれば、この443ポートは2022年5月21日から6月18日までオープンになっており、上で見たのと同じ「Microsoft Security」の自己署名SSL証明書を使っていました。この時系列を考えると、このサンプルが実際にVirusTotalにアップロードされた日が、当該C2インフラがコールホーム通信のリッスンを設定される前だったことは注目に値するでしょう。

この時間帯の159.65.186[.]50のネットフロー接続を評価したところ、ウクライナのIP(213.200.56[.]105)からポート22、443、8060への接続が発信されていることが判明しました。私たちはこのウクライナのアドレスが、C2インフラの管理に利用された一般家庭のユーザーIPである可能性が高いと評価しています。213.200.56[.]105を発着する接続をさらに詳しく調べたところ、UDPポート33445を経由する複数のフローが見つかりました。このポートはToxでよく使用されるポートで、Toxはエンドツーエンドの暗号化を提供するセキュアなピアツーピアチャット/ビデオアプリです。

159.65.186[]50のポート443への追加接続を調査したところ、被害者と思われる組織が複数確認されました。これらの被害者のなかには、あるアルゼンチンの組織や南北アメリカにコンテンツを提供しているIPテレビ局、メキシコのある大手繊維メーカーなどが含まれていました。偶然にも、当該繊維メーカーのホームページを最近閲覧しようとしたところ、「500 internal server error」メッセージが表示されるようになっています。

これら被害組織の地理的分布、ウクライナのIPへの上りの接続、そのほかいくつかの要因を考慮すると、BRc4が合法的かつ認可されたペネトレーションテスト活動を支援するために展開された可能性は極めて低いものと考えられます。

その他のサンプルとインフラ

過去1年でMicrosoft Securityの偽X.509証明書は41件のIPアドレスにリンクされています。これらのアドレスは世界各地に分散しており、その主な所有者は大規模な仮想専用サーバー(VPS)のホスティングプロバイダです。また上記の2つのサンプル以外にも、2021年2月にまでさかのぼるBRc4のサンプルを7つ確認済みです。

保護と緩和策

パロアルトネットワークス製品をご利用のお客様は、弊社の製品・サービスにより本グループに関連する以下の対策が提供されています。

脅威防御は、Brute Ratel C4に対する保護を提供します。「Brute Ratel C4 Tool Command and Control Traffic Detections」シグネチャの脅威IDは86647です。

Cortex XDRはBrute Ratel C4ツールを検出してエンドポイントを保護します。

クラウド型脅威解析サービス「WildFire」は、Brute Ratel C4サンプルをマルウェアとして正確に特定します。

結論

新たなペネトレーションテストツールや敵対的攻撃シミュレーションツールの出現には注意が必要ですが、BRc4には最新のEDRやAVの防御を突破する力があることからさらなる警戒が求められます。

同ツールはこの2年半の間に空き時間を使った趣味の開発からフルタイムの開発プロジェクトへと成長し、顧客数も増えてきて、いまでは数百人規模の顧客基盤を抱え、サイバーセキュリティ界隈で正規ペンテスター、悪意のあるサイバーアクター両者の注目を集めるまでになっています。

本稿で紹介した2つのサンプルの解析結果とこれらペイロードのパッケージングに使われた高度な技能から、悪意のあるサイバーアクターがBRc4を使用し始めていることが明らかになっています。このため私たちは、すべてのセキュリティベンダがBRc4検出用の保護対策を開発し、すべての組織が同ツールに積極的防御策を講じることが必須と考えています。

パロアルトネットワークスはファイルサンプルや侵害の兆候などをふくむこれらの調査結果をCyber Threat Alliance (CTA サイバー脅威アライアンス) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使用して、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害することができます。詳細については Cyber Threat Alliance からご覧ください。

なおここで使われていたMicrosoftの名前とロゴは同組織になりすまして使われているのであり、同社との提携を表すものではない点にご注意ください。このなりすましはMicrosoftの製品やサービスに脆弱性が存在するということは意味していません。

IoC

Brute Ratel C4のISOサンプル:

1FC7B0E1054D54CE8F1DE0CC95976081C7A85C7926C03172A3DDAA672690042C

X64 Brute Ratel C4のWindowsカーネルモジュール:

31ACF37D180AB9AFBCF6A4EC5D29C3E19C947641A2D9CE3CE56D71C1F576C069

APT29のISOサンプル:

F58AE9193802E9BAF17E6B59E3FDBE3E9319C5D27726D60802E3E82D30D14D46

X64 Brute Ratel C4のサンプル:

3ED21A4BFCF9838E06AD3058D13D5C28026C17DC996953A22A00F0609B0DF3B9
3AD53495851BAFC48CAF6D2227A434CA2E0BEF9AB3BD40ABFE4EA8F318D37BBE
973F573CAB683636D9A70B8891263F59E2F02201FFB4DD2E9D7ECBB1521DA03E
DD8652E2DCFE3F1A72631B3A9585736FBE77FFABEE4098F6B3C48E1469BF27AA
E1A9B35CF1378FDA12310F0920C5C53AD461858B3CB575697EA125DFEE829611
EF9B60AA0E4179C16A9AC441E0A21DC3A1C3DC04B100EE487EABF5C5B1F571A6
D71DC7BA8523947E08C6EEC43A726FE75AED248DFD3A7C4F6537224E9ED05F6F
5887C4646E032E015AA186C5970E8F07D3ED1DE8DBFA298BA4522C89E547419B

悪意のあるDLL:

EA2876E9175410B6F6719F80EE44B9553960758C7D0F7BED73C0FE9A78D8E669

悪意のある暗号化されたペイロード:

B5D1D3C1AEC2F2EF06E7D0B7996BC45DF4744934BD66266A6EBB02D70E35236E

X.509証明書のSHA1ハッシュ値:

55684a30a47476fce5b42cbd59add4b0fbc776a3
66aab897e33b3e4d940c51eba8d07f5605d5b275

X.509証明書またはサンプルにリンクされたインフラ:

104.6.92[.]229
137.184.199[.]17
138.68.50[.]218
138.68.58[.]43
139.162.195[.]169
139.180.187[.]179
147.182.247[.]103
149.154.100[.]151
15.206.84[.]52
159.223.49[.]16
159.65.186[.]50
162.216.240[.]61
172.105.102[.]247
172.81.62[.]82
174.129.157[.]251
178.79.143[.]149
178.79.168[.]110
178.79.172[.]35
18.133.26[.]247
18.130.233[.]249
18.217.179[.]8
18.236.92[.]31
185.138.164[.]112
194.29.186[.]67
194.87.70[.]14
213.168.249[.]232
3.110.56[.]219
3.133.7[.]69
31.184.198[.]83
34.195.122[.]225
34.243.172[.]90
35.170.243[.]216
45.144.225[.]3
45.76.155[.]71
45.79.36[.]192
52.48.51[.]67
52.90.228[.]203
54.229.102[.]30
54.90.137[.]213
89.100.107[.]65
92.255.85[.]173
92.255.85[.]44
94.130.130[.]43
ds.windowsupdate.eu[.]org

追加リソース

APT29のスピアフィッシング攻撃をCortex XDRで検出する方法 - パロアルトネットワークスブログ
Cozy Smuggled Into The Box: APT29 Abusing Legitimate Software For Targeted Operations In Europe
Trello From the Other Side: Tracking APT29 Phishing Campaigns
New sophisticated email-based attack from NOBELIUM

2022-07-08 11:00 JST 英語版更新日 2022-07-06 09:30 PDT の内容を反映