攻撃者がカメラ管理ソフトウェアを悪用して初期アクセスを取得
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
攻撃者は、企業環境への初期アクセスを得るためにカメラ管理ソフトウェアを侵害しています。アクセスを確立した後、逆シェルを展開し、正規のWindowsバイナリを通じたDLLサイドローディングを使用して持続性を維持し、コマンドアンドコントロールビーコンを確立します。この手法により、信頼されたシステムプロセスと並行して悪意のあるコードを実行することができ、攻撃者は検出を回避します。
調査
Huntressアナリストは、あるキャンペーンを特定しました。 CMS.exe が初期のエントリーポイントとして使われました。調査では、 rs.win32.exe がユーザー書き込み可能なディレクトリに展開され、その後 WpcMon.exe を悪用して改ざんされたzlib DLLをサイドロードしていることが判明しました。ネットワーク分析でも、特定の外部IPアドレスとの通信ビーコン活動が確認されました。
緩和策
組織はカメラ管理プラットフォームのインベントリを作成し、アクセスを制限し、これらのシステムをクリティカルな攻撃面の一部として扱うべきです。 AppData などのユーザー書き込み可能な場所から実行可能ファイルやDLLが起動するのを防ぐためにアプリケーション制御を実施することが強く推奨されます。また、防衛者は、正規のWindowsバイナリを含む異常なプロセスチェーンを監視するべきです。
対応
この活動が検出された場合、セキュリティチームは、さらなる横移動やC2通信を防ぐために、影響を受けたエンドポイントを隔離するべきです。 CMS.exe or rs.win32.exe 非標準のディレクトリから起動されるインスタンスの WpcMon.exe プロセスツリーを確認してください。特定された悪意のあるDLLや関連するC2 IPアドレスの環境全体のハントを実施してください。
攻撃の流れ
検出
可能な持続性ポイント[ASEPs – Software/NTUSER Hive](レジストリエベントを介して)
Iphlpapi ライブラリサイドローディングの可能性(image_load経由)
IOC(HashSha256)を検出:監視者の監視?
IOC(SourceIP)を検出:監視者の監視?
IOC(DestinationIP)を検出:監視者の監視?
外部コマンドアンドコントロール(C2)サーバーのビーコン[Windowsネットワーク接続]
侵害されたカメラ管理ソフトウェアの初期アクセスとDLLサイドローディング[Windowsプロセス作成]
シミュレーション実行
-
攻撃の流れとコマンド: 敵はフィッシング添付ファイルを通じて初期アクセスを成功させました。持続性とコマンドアンドコントロールを確立するために、「Living off the Land」(LotL) 手法を使用しようとしています。彼らは
rundll32.exeを使用して既知のC2サーバー144.172.116.37へのネットワークリクエストを実行します。これは正規のWindowsシステムプロセスと馴染むため、基本的なプロセス名ベースの検出が悪意のある活動を特定することを難しくします。ターゲットは、ブラックリストに登録されたIPへの接続を生成してファイアウォールルールをトリガーすることです。 -
回帰テストスクリプト:
# C2 IP 検出ルールをトリガーするシミュレーションスクリプト # 目標IPへの接続を開始するためにrundll32を使用します # 注:このIPはDLLの有効なエントリーポイントではないため、 # コンソールにエラーが表示される可能性がありますが、ネットワーク接続の試みは # OS/ファイアウォールによって記録されます。 $C2_IP = "144.172.116.37" Write-Host "rundll32.exeを通じて$C2_IPへのC2接続をシミュレート中..." Start-Process "rundll32.exe" -ArgumentList "javascript:alert('C2_SIM');$C2_IP" -WindowStyle Hidden # 接続試行を保証するためのPowerShellを使用する代替メソッド Write-Host "$C2_IPのポート443へのTCP接続を試み中..." $tcpClient = New-Object System.Net.Sockets.TcpClient try { $tcpClient.Connect($C2_IP, 443) } catch { Write-Host "予想通り接続は失敗しました(IPは到達不能の可能性があります)が、テレメトリは生成されるはずです。" } finally { $tcpClient.Close() } -
クリーンアップコマンド:
# この特定のシミュレーションによっては永続的なアーティファクトが作成されません Write-Host "シミュレーションのクリーンアップが完了しました。ファイルやレジストリキーは変更されませんでした。"