共有アーセナル:RATs間の共通TTPを識別する
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Splunkの投稿は、多くのリモートアクセス型トロイの木馬とスティーラーのファミリーが、どのようにして同じMITRE ATT&CKテクニックのベースラインに収束しているかをレビューしています。進入ツールの転送、ホストおよびネットワークの発見、レジストリとスケジュールタスクの永続性、回避、クレデンシャルの窃取といった繰り返しの行動を指摘しています。一方で、ファミリーをトリアージ中に分離するのに役立つ小さな実装の違いにも注目です。このアプローチは、ファミリー間のより一貫したハンティングをサポートします。
調査
チームは約18のマルウェア・ファミリーをATT&CKにマッピングし、重複するTTPを要約し、永続性、トークン操作、Webサービスの使用に関する実用的なコードスニペットを含めました。例はWMIクエリ、Runキーの書き込み、schtasksの作成、Windows Defenderの除外を追加するPowerShellコマンドまで幅広く及びます。
緩和策
ガイダンスは、ファミリー名よりも技術中心の検出を優先します:一般的なユーティリティ(schtasks、reg、WMI)の悪用を監視し、アウトバウンドWebサービスのトラフィックを制限し、クレデンシャルアクセスコントロールを強化します。また、Windows Defenderの除外ポリシーを厳しくし、トークン権限の変更を警告することを推奨しています。
対応
これらの技術が検出された場合、エンドポイントを隔離し、キーアーティファクト(レジストリハイブ、スケジュールタスクの定義、コマンドラインログ)を収集し、エステート全体で関連するIOCを検出します。持続性を除去し、既知のドメインとハッシュに対してインジケーターに基づいたブロックを適用し、共有された行動をカバーするよう検出を拡大します。
攻撃フロー
この部分はまだ更新中です。通知を受け取るためにサインアップしてください
通知する検出
可能なIPルックアップドメイン通信が試みられた(dns経由)
表示
Schtasksが疑わしいディレクトリ/バイナリ/スクリプトを指している(cmdline経由)
表示
Windows Defenderの保護を無効にする(registry_event経由)
表示
サードパーティサービス/ツールを経由した可能なデータ浸透/流出/コマンド&コントロール(proxy経由)
表示
サードパーティサービス/ツールを経由した可能なデータ浸透/流出/コマンド&コントロール(dns経由)
表示
Windows Defenderの設定の疑わしい変更(powershell経由)
表示
可能な持続ポイント [ASEPs – software/NTUSER Hive] (registry_event経由)
表示
Schtasks.exeを使用したスケジュールタスクの作成 [Windowsプロセス作成]
表示
永続性用レジストリRunキーを検出 [Windowsレジストリエベント]
表示
シミュレーション実行
前提条件: テレメトリー&ベースライン事前検査が合格していること。
論拠: このセクションでは、検出ルールを発生させるよう設計された対策技術(TTP)の正確な実行について詳述します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリーを生成することを目的としています。
-
攻撃の説明&コマンド:
- 偵察: 攻撃者はOSバージョンを列挙し、ターゲットがRunキーを使用できるWindowsマシンであることを確認します。
- ペイロード準備: 実際の悪意のある影響を避けつつも典型的な持続ペイロードを表すために無害なテスト実行可能ファイル(
notepad.exe)が選択されます。 - 永続性のインプラント: 攻撃者は
reg.exeを使用して、ProvingMalwareという名前の新しい文字列値をHKCUSoftwareMicrosoftWindowsCurrentVersionRunに書き込み、C:WindowsSystem32notepad.exeを指します。これにより、Runキーのパスを持つEventID 4657が生成され、検出ルールを満たします。 - 検証: 攻撃者はレジストリを照会して値が存在することを確認します。
-
回帰テストスクリプト:
# ------------------------------------------------- # Proving – レジストリRunキー持続シミュレーション # ------------------------------------------------- try { # 1. OSがWindowsであることを確認 if (-not $IsWindows) { throw "スクリプトはWindowsでのみ実行可能です。" } # 2. Runキーのパスと悪意のあるペイロードを定義 $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $valueName = "ProvingMalware" $payloadPath = "$env:SystemRootSystem32notepad.exe" # 3. 悪意のあるRunキーを書く(これがEventID 4657をトリガーする) New-ItemProperty -Path $runKey -Name $valueName -Value $payloadPath -PropertyType String -Force | Out-Null Write-Host "[+] Runキー $valueName が $runKey に追加され、$payloadPath を指しています" } catch { Write-Error "[!] $($_.Exception.Message)" } -
クリーンアップコマンド:
# シミュレーションした持続値を削除 $runKey = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $valueName = "ProvingMalware" if (Test-Path "$runKey") { Remove-ItemProperty -Path $runKey -Name $valueName -ErrorAction SilentlyContinue Write-Host "[+] Runキー $valueName をクリーンアップしました" }