証明書デコードの錯覚: Blank Grabber Stealerがどのようにしてそのローダーを隠すか
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
BlankGrabber は Python ベースの情報スティーラーで、バッチスクリプト ローダーから始まります。これは「デコード」され、証明書ファイルとして偽装された Rust コンパイル ステージャーです。ステージャーはサンドボックスおよび VM チェックを実行し、埋め込まれたペイロードを復号化し、XWorm クライアントや PyInstaller でパックされたスティーラーを含む複数の悪意のあるコンポーネントをドロップします。データのエクスフィルは、Telegram ボット API や IP ルックアップ エンドポイントなどの公共の Web サービスに依存して、通常のトラフィックに溶け込ませます。マルウェアはまた、システム設定を変更し、セキュリティ サイトへのアクセスをブロックし、持続性を強化するために UAC バイパスを試みます。
調査
Splunk の脅威調査チームは、gofile.io 経由で配信される初期ローダー、そのペイロード デコードに certutil.exe を使用すること、および Rust ステージャーの分析回避ロジックを分析しました。彼らは AES-GCM/CTR 復号フローを逆コンパイルし、埋め込まれた ZIP アーカイブを抽出し、結果として得られたペイロードセットをマッピングしました。行動テストでは、広範なホスト探索、ウェブカムキャプチャ、クリップボード収集、ホストキーやその他の機密アーティファクトの盗難が示されました。
軽減策
疑わしい certutil.exe の使用、Windows Defender の設定を変更する PowerShell コマンド、ホストファイルへの不正な編集を監視します。WinRAR/rar.exe の標準外のパスからの実行や、Telegram API または既知の IP ルックアップ サービスへの DNS ルックアップについて警告を発行します。既知の悪意のあるファイル名をブロックし、アプリケーション制御ポリシーを通じて署名されていない PyInstaller バンドル Python バイナリの実行を制限します。
レスポンス
インジケーターが検出された場合、エンドポイントを隔離し、揮発性証拠を保存し、法医学的レビューのために %TEMP% ディレクトリをキャプチャします。悪意のあるスケジュールされたタスクやレジストリの Run エントリを削除し、ホストファイルの変更を元に戻し、Windows Defender の除外をリセットします。潜在的に露出したブラウザの認証情報や暗号ウォレットデータのために、完全な認証情報のリセットを実行します。
"graph TB %% クラス定義 classDef technique fill:#e6f7ff classDef operator fill:#ffcc66 classDef data fill:#d9ead3 %% ノード u2013 テクニック init_exec["<b>Technique</b> – T1059.003: Windows コマンドシェル<br/><b>説明</b>: バッチスクリプトが certutil を実行して埋め込まれた Rust ステージャーをデコード"] class init_exec technique evasion_vm["<b>Technique</b> – T1497: 仮想化/サンドボックス回避<br/><b>説明</b>: ドライバー、ユーザー名、UUID を確認して分析環境を検出"] class evasion_vm technique obfuscation["<b>Technique</b> – T1027: ファイルや情報の難読化<br/><b>説明</b>: Rust 実行ファイルが証明書ファイルとして偽装されている"] class obfuscation technique decode["<b>Technique</b> – T1140: ファイルや情報のデオブスクエート/デコード<br/><b>説明</b>: 暗号化されたペイロード (blank.aes) の AESu2011CTR/GCM 復号"] class decode technique load_stager["<b>Technique</b> – T1105: インバウンド ツール転送<br/><b>説明</b>: ランダムに名前が付けられた実行ファイルを %TEMP% にドロップして起動"] class load_stager technique pers_startup["<b>Technique</b> – T1037.005: ブートまたはログオン初期化スクリプト (スタートアップ フォルダー)"] class pers_startup technique elev_uac["<b>Technique</b> – T1548.002: エレベーション制御メカニズムの悪用 (レジストリ UAC バイパス)"] class elev_uac technique impair_def["<b>Technique</b> – T1562.004: 防御の妨害 (Windows Defender の無効化、除外の追加)"] class impair_def technique hide_hosts["<b>Technique</b> – T1564.012: アーティファクトの隠蔽 (ホストファイルを変更してセキュリティサイトをブロック)"] class hide_hosts technique data_collection["<b>Technique</b> – T1082: システム情報の取得と関連する収集"] class data_collection data sysinfo["<b>Technique</b> – T1082: システム情報の取得"] class sysinfo technique browser_info["<b>Technique</b> – T1217: ブラウザー情報の取得"] class browser_info technique clipboard["<b>Technique</b> – T1115: クリップボードデータ"] class clipboard technique video_capture["<b>Technique</b> – T1125: ビデオキャプチャ"] class video_capture technique wifi_passwords["<b>Technique</b> – T1016: システムネットワーク構成の発見 (Wi-Fi パスワード)"] class wifi_passwords technique product_key["<b>Technique</b> – T1012: レジストリクエリ (Windows プロダクトキー)"] class product_key technique removable_media["<b>Technique</b> – T1025: リムーバブルメディアからのデータ"] class removable_media technique wmi_queries["<b>Technique</b> – T1047: Windows マネジメント インストゥルメンテーション (システムクエリ)"] class wmi_queries technique archive_data["<b>Technique</b> – T1560.001: 収集されたデータのアーカイブ (RAR ユーティリティ)"] class archive_data technique exfil_telegram["<b>Technique</b> – T1041: C2 チャネルを介したエクスフィル (Telegram ボット API)"] class exfil_telegram technique exfil_public["<b>Technique</b> – T1048: 代替プロトコルを介したエクスフィル (パブリック ファイル共有サービス)"] class exfil_public technique self_delete["<b>Technique</b> – T1070: インジケーターの削除 (エクスフィル後の自己削除)"] class self_delete technique %% フロー接続 init_exec –>|lead_to| evasion_vm evasion_vm –>|lead_to| obfuscation obfuscation –>|lead_to| decode decode –>|lead_to| load_stager load_stager –>|enable| pers_startup load_stager –>|enable| elev_uac load_stager –>|enable| impair_def load_stager –>|enable| hide_hosts load_stager –>|start| data_collection data_collection –>|include| sysinfo data_collection –>|include| browser_info data_collection –>|include| clipboard data_collection –>|include| video_capture data_collection –>|include| wifi_passwords data_collection –>|include| product_key data_collection –>|include| removable_media data_collection –>|include| wmi_queries data_collection –>|lead_to| archive_data archive_data –>|use| exfil_telegram archive_data –>|use| exfil_public exfil_telegram –>|followed_by| self_delete exfil_public –>|followed_by| self_delete "
攻撃フロー
検出
特権昇格 (UAC バイパス) via FodHelper (via cmdline)
表示
持続性可能なポイント [ASEPs – Software/NTUSER Hive] (via cmdline)
表示
可能性のあるデータの侵入/漏洩/C2 via サード パーティ サービス/ツール (via proxy)
表示
一時フォルダにおける潜在的なデータステージング (via file_event)
表示
システム列挙の可能性 (via cmdline)
表示
環境パスの変更 (via registry_event)
表示
遅延実行のための PING 使用の可能性 (via cmdline)
表示
Ms-settings レジストリ キーでの疑わしい操作 (via cmdline)
表示
データエンコーディングおよび証明書操作のための Certutil の使用 (via cmdline)
表示
WiFi パスワード発見の可能性 (via cmdline)
表示
コマンドライン引数における環境変数 (via cmdline)
表示
データの侵入/漏洩/C2 via サード パーティ サービス/ツール (via dns)
表示
システムネットワーク構成の発見の可能性 (via cmdline)
表示
アンチウイルスまたはファイアウォール ソフトウェアの列挙の可能性 (via process_creation)
表示
Windows Defender 設定の疑わしい変更 (via powershell)
表示
Windows Defender リアルタイム監視の無効化 (via powershell)
表示
自動開始位置における疑わしいバイナリ/スクリプト (via file_event)
表示
IP ルックアップ ドメイン通信用の試行の可能性 (via dns)
表示
Windows Defender リアルタイム監視およびその他の設定変更の無効化 (via cmdline)
表示
IOC (HashSha256) の検出: Blank Grabber スティーラーのローダー隠蔽の証明書デコード錯覚
表示
DNS クエリを介した BlankGrabber C2 通信の検出 [Windows Sysmon]
表示
BlankGrabber PowerShell 活動の検出 [Windows Powershell]
表示
シミュレーション実行
前提条件: テレメトリとベースラインのプリフライト チェックがパスしている必要があります。
合理性: このセクションでは、特定された検出ルールを作動させるためにデザインされた攻撃技術 (TTP) の正確な実行について詳述しています。コマンドと物語は、識別された TTP に直接対応し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃の物語 & コマンド:
BlankGrabber スティーラーでエンドポイントを侵害した敵対者が、マルウェアによって C2 および偵察のために使用される 3 つの異なるサービスに DNS クエリを発行します:- Telegram API ドメイン – Telegram ボットを介してコマンドを取得するために使用されます。
Resolve-DnsName -Name api.telegram.org -Type A - パブリックIPチェック サービス – 後でのデータ漏洩のために被害者の外部 IP アドレスを取得します。
Resolve-DnsName -Name api.ipify.org -Type A - 悪用されたファイル共有サービス –
pastebin.com.のサブドメインを介して小さいエンコードデータチャンクを送信します。
各呼び出しは、PowerShell のネイティブである
Resolve-DnsNameを使用して実行され、DNS クライアントログがローカルホストで生成されることを保証します。これらの 3 つのクエリは、シグマ規則の 3 ブロックに直接マッピングされ、マッチが保証されます。選択_の - Telegram API ドメイン – Telegram ボットを介してコマンドを取得するために使用されます。
-
リグレッション テスト スクリプト:
# BlankGrabber DNS C2 シミュレーション – 検出ルールをトリガー $domains = @( "api.telegram.org", "api.ipify.org", "maliciouspayload.pastebin.com" ) foreach ($d in $domains) { Write-Host "Querying $d ..." try { Resolve-DnsName -Name $d -Type A -ErrorAction Stop | Out-Null Write-Host "✔ $d queried" } catch { Write-Warning "❌ Failed to query $d : $_" } Start-Sleep -Seconds 2 # 現実的なトラフィックを模倣するためのわずかな遅延 } -
クリーンアップ コマンド:
# Resolve-DnsName によって生成される永続的なアーティファクトはありません。 # DNS キャッシュをクリアして、残存しているエントリを削除します。 ipconfig /flushdns Write-Host "DNS キャッシュがクリアされました。"