スパーロックに気をつけろ: 噛みつくバックドア、輝くコマンドを捕える
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
中国に拠点を置くAPTグループFamousSparrowが、新たなモジュール型C++バックドアであるSparroWockyを展開し、以前のSparrowDoorインプラントを置き換えました。このマルウェアは、スタックスプーフィングやリフレクティブメモリローディングなど、先進的な解析回避機能を備えています。現在の活動は、ラテンアメリカの政府機関に重点を置いています。
調査
ESETの研究者は、モジュラー構造とJabberwockyの詩への言及などの独特なコード特性を調査して、SparroWockyを特定しました。この調査では、DLLサイドローディングとRC4で復号化されたカスタムペイロードフォーマットに依存するトライデントローダースキームが明らかになりました。分析者はまた、ステルス性と機能性を向上させるために使用されるオープンソースライブラリであるMbed TLSやMinHookを観察しました。
対策
組織はDLLサイドローディング周辺の厳格な管理を施し、疑わしいサービスの作成やレジストリのRunキーの変更を監視するべきです。メモリのみのPE実行とスタックの操作を特定できる高度なエンドポイント検出も重要です。Exchangeサーバを含む公開アプリケーションは迅速にパッチを適用し、初期アクセスの機会を減らす必要があります。
対応
SparroWockyの活動が検出された場合、影響を受けたシステムはすぐに隔離し、横方向の移動や指令・制御通信を防ぐべきです。レスポンダーは、リフレクティブにロードされたモジュールを特定するためにメモリフォレンジックを行い、乗っとられた実行フローを調査すべきです。監査ログも未承認サービスのインストールや、SnapCartなどの永続化メカニズムの変更について確認すべきです。 SnapCart レジストリ値。
攻撃の流れ
この部分はまだ更新中です。
検出
可能性のある永続化ポイント [ASEPs – Software/NTUSER Hive] (レジストリイベント経由)
可能性のある遅延実行動作(コマンドライン経由)
IOCs(HashSha1)による検出:SparroWockに注意:噛みつくバックドア、捕らえるコマンド
IOCs(SourceIP)による検出:SparroWockに注意:噛みつくバックドア、捕らえるコマンド
IOCs(DestinationIP)による検出:SparroWockに注意:噛みつくバックドア、捕らえるコマンド
SparroWockyバックドアのリフレクティブコード読み込みの検出[Windows Sysmon]
SparroWockyバックドアのC&C通信とプロキシ検出[Windowsネットワーク接続]
SparroWockyのメモリ上実行の検出[Windowsプロセス作成]
シミュレーションの実行
-
攻撃の流れ & コマンド: 攻撃者は指令・制御(C2)サーバーへの秘密の通信チャネルを確立することを目的としています。単純な境界防御を回避するために、攻撃者はSOCKS5プロキシを使用してトンネリングを行い、トラフィックが感染したエンドポイントではなく正規のプロキシサーバーから出たように見せかけようとします。このアクションは、
選択中のhttpプロキシ検出ルール内の論理をトリガーし、プロトコルがSOCKS5と識別され、アクションが「許可」となるログを生成するために行われます。 -
回帰テストスクリプト:
# SOCKS5プロキシ経由のSparroWocky C2のシミュレーション # 注:シミュレーションをトリガーするためには、到達可能なプロキシまたはシミュレーションされたリスナーが必要です。 $ProxyServer = "127.0.0.1:1080" # シミュレーション目的でローカルリスナー/プロキシを想定 $TargetUrl = "http://example.com" Write-Host "[+] C2をシミュレートするためのSOCKS5プロキシ接続を確立しようとしています..." # PowerShellを使用してプロキシを介した接続を強制 $proxy = New-Object System.Net.WebProxy("http://$ProxyServer") $wc = New-Object System.Net.WebClient $wc.Proxy = $proxy try { $wc.DownloadString($TargetUrl) Write-Host "[+] 接続が試みられました。SOCKS5/HTTPプロキシ活動のためにファイアウォールログを確認してください。" } catch { Write-Host "[-] 接続に失敗しました(リスナーが存在しない場合は予想されます)が、ネットワークスタックによってテレメトリーが依然として生成されるはずです。" } -
クリーンアップコマンド:
# ラボのセットアップの一環として開始されたローカルプロキシリスナーを停止します Stop-Process -Name "nc" -ErrorAction SilentlyContinue Stop-Process -Name "python" -ErrorAction SilentlyContinue Write-Host "[+] クリーンアップ完了"