SOC Prime Bias:

13 1月 2026 16:41

EDRStartupHinder: EDRスタートアッププロセスブロッカー

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon フォローする
EDRStartupHinder: EDRスタートアッププロセスブロッカー
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

この記事は、EDRStartupHinderというリサーチツールについて説明しています。このツールはWindowsのBindlinkメカニズムを悪用し、重要なSystem32 DLLのロードをリダイレクトすることで、起動時に保護されたEDRプロセスをクラッシュさせます。優先度の高いサービスをインストールし、署名されていない代替DLLを提供することで、EDRコンポーネントの初期化を防ぎ、起動時にエンドポイントの保護を奪う手法です。

調査

著者は、Microsoft Defenderが起動時にmsvcp_win.dllをロードし、TDIグループに関連するサービスがDefenderより早く開始されることを確認しました。このツールは正規のDLLをコピーし、PEヘッダーを変更して改ざん版を作成し、DusmSVC-01というサービスを登録し、Defenderプロセス(MsMpEng.exe)を監視します。そして、Bindlinkを使用してDLL解決をリダイレクトし、Defenderが署名されていないDLLをロードしようとするようにします。プロセスがPPL保護下で実行されるため、署名されていないモジュールのロードがDefenderプロセスの終了を引き起こします。

軽減策

疑わしいまたは予期しないサービス作成イベントやbindlink.dllの使用を示すテレメトリーを監視してください。System32 DLLの整合性検証を強制し、予期しない重複、変更、またはロードパスリダイレクションについて警告します。DLLリダイレクションを可能にする書き込み権限を制限し、KnownDLLs周辺の制御を強化し、運用可能な場合にはコード署名ポリシーを強制することで攻撃の実現可能性を低減します。

対応策

DusmSVC-01という新しいサービスや異常なBindlink動作が検出された場合は、エンドポイントを隔離し、主要なSystem32 DLLの整合性を検証します。信頼できるソースやバックアップから変更されたファイルを復元し、悪意のあるサービスと関連するアーティファクトを削除します。フォレンジックレビューを完了し、スタートアップ時の保護バイパスに関連する追加の持続性、特権昇格、または後続の活動を特定します。

“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 %% Nodes step_create_service[“<b>アクション</b> – <b>T1542 Pre-OS Boot</b><br/>ターゲットEDRサービスより前に開始するように設定された悪意のあるWindowsサービス(EDRStartupHinder)を作成する。”] class step_create_service action step_modify_registry[“<b>アクション</b> – <b>T1484 ドメインまたはテナントポリシーの変更</b><br/>レジストリでサービスグループの順序とBindlinkの設定を変更して、悪意のあるサービスを優先し、DLLのリダイレクトを可能にします。”] class step_modify_registry action step_hijack_dll[“<b>アクション</b> – <b>T1574.001 DLL 検索順序ハイジャッキング</b> & <b>T1055.001 動的リンクライブラリ注入</b><br/>Bindlinkを介して主要なDLL(例:msvcp_win.dll)をリダイレクトし、EDRプロセスが悪意のあるコピーをロードするようにします。”] class step_hijack_dll action step_corrupt_dll[“<b>アクション</b> – <b>T1574.001 DLL リダイレクト – PE ヘッダーの改ざん</b><br/>コピーされたDLLのPEヘッダーを変更して署名を無効にし、保護されたEDRプロセスがライブラリを拒否するようにします。”] class step_corrupt_dll action step_dos[“<b>アクション</b> – <b>T1499.004 エンドポイントサービス拒否</b><br/>EDRサービスが必要なDLLをロードできずに終了し、セキュリティコンポーネントに対するサービス拒否を達成します。”] class step_dos action %% Edges step_create_service u002du002d>|leads_to| step_modify_registry step_modify_registry u002du002d>|enables| step_hijack_dll step_hijack_dll u002du002d>|causes| step_corrupt_dll step_corrupt_dll u002du002d>|results_in| step_dos “

攻撃フロー

シミュレーション実行

前提条件:テレメトリーおよびベースラインの事前チェックが合格していること。

攻撃の流れとコマンド

攻撃者は、改ざんされたコピーを配布することでエンドポイント検出プラットフォームを無力化しようとしています。 msvcp_win.dll。手順は次の通りです。

  1. 信頼できるDLLを見つける in C:WindowsSystem32.
  2. コピー 攻撃者が制御する隠しディレクトリ(例: C:ProgramDataFakeLib).
  3. 署名の改ざん ファイル末尾に任意のバイトを追加することで、バイナリハッシュが変更され、オーセンティコード署名が無効になります。
  4. EDRのロードパスをトリガーする (ここではシミュレーションされていません)– 不正なDLLの存在により、EDRが初期化時に失敗します。

回帰テストスクリプト

# ---------------------------------------------------------------
# EDRStartupHinder シミュレーション – msvcp_win.dll のコピーと破損
# ---------------------------------------------------------------

# 1. ソースと悪意のある宛先を定義
$src  = "$env:SystemRootSystem32msvcp_win.dll"
$dstDir = "C:ProgramDataFakeLib"
$dst  = Join-Path $dstDir "msvcp_win.dll"

# 2. 宛先フォルダーを作成(非表示)
if (-not (Test-Path $dstDir)) {
    New-Item -Path $dstDir -ItemType Directory | Out-Null
    # ステルスを模倣するためにフォルダを隠す
    (Get-Item $dstDir).Attributes += 'Hidden'
}

# 3. 正規のDLLをコピー
Copy-Item -Path $src -Destination $dst -Force

# 4. DLLを破損 – ランダムな4バイトを追加
$rand = -join ((65..90) + (97..122) | Get-Random -Count 4 | % {[char]$_})
[IO.File]::OpenWrite($dst).Seek(0, [IO.SeekOrigin]::End) | Out-Null
[IO.File]::WriteAllBytes($dst, [byte[]]($rand.ToCharArray() | ForEach-Object {[byte][char]$_}))

Write-Host "EDRStartupHinderのシミュレーション完了。DLLを$dstにコピーし、破損させました。"

クリーンアップコマンド

# 悪意のあるコピーを削除し、必要に応じて隠しフォルダーも削除
$dstDir = "C:ProgramDataFakeLib"
if (Test-Path $dstDir) {
    Remove-Item -Path $dstDir -Recurse -Force
    Write-Host "FakeLibディレクトリをクリーンアップしました。"
}

レポート終了