SOC Prime Bias:

26 3月 2026 16:24

MITRE ATT&CK における T1547.004: Winlogon ヘルパーの説明

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
MITRE ATT&CK における T1547.004: Winlogon ヘルパーの説明
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

この記事では、T1547.004として追跡されるWinlogon Helper DLLの持続手法を説明し、敵対者がWinlogonのレジストリキーを改ざんしてユーザーのログオン中に悪意のあるコードを読み込む方法を示しています。これは、ToyBrakerキャンペーン、KamiKakaBotマルウェア、およびMandela.exeとして知られるサンプルに関連する実例を引用しています。システムの起動時やユーザーのサインイン時に悪意のあるDLLや実行可能ファイルが自動的に実行されるようにトリガーするレジストリ変更に重点が置かれています。

調査

研究者たちは、攻撃者が不正なユーザーアカウントを作成し、LegalNoticeText、DefaultUserName、AutoLogonCount、ShellなどのWinlogonのレジストリ値を変更してアクセスを維持する様子を文書化しました。マルウェアのサンプルと侵入ケースでは、ログインプロセス中に悪意のある設定を注入し、PowerShellペイロードを起動するためにnet userおよびreg addのコマンドラインツールを使用することも示されています。

緩和

防御者は、Winlogonのレジストリキーへの変更を慎重に監視し制限し、アカウント作成に対して最低限の特権制御を適用し、信頼されていないまたは署名されていないDLLをブロックするためにアプリケーション制御を使用すべきです。定期的なスケジュールされたタスク、サービス、スタートアップの場所のレビューは、不正な持続変更の特定にさらに役立ちます。

対応

疑わしいWinlogonレジストリアクティビティが検出された場合、影響を受けたエンドポイントを隔離し、揮発性の証拠を取得し、変更されたレジストリ値を既知の正常な状態に復元します。法医学調査では、追加の持続メカニズムを探し、関連するマルウェアコンポーネントをホストでスキャンする必要があります。

"graph TB %% クラス定義セクション classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef persistence fill:#c2f0c2 classDef technique fill:#ffd699 classDef malware fill:#f4a6a6 %% ノード定義 action_create_account["<b>アクション</b> – ローカルアカウントの作成<br/><b>手法</b>: T1136.001 アカウント作成: ローカルアカウント<br/><b>説明</b>: net userコマンドを使用して新しいローカルユーザーを追加."] class action_create_account action tool_net_user["<b>ツール</b> – net userコマンド<br/><b>目的</b>: ローカルWindowsアカウントの作成または変更."] class tool_net_user tool action_modify_registry["<b>アクション</b> – Winlogonレジストリの変更<br/><b>手法</b>: T1112 レジストリの変更<br/><b>説明</b>: reg addを使用してWinlogonキー(Notify、Userinit、Shell、DefaultUserName、AutoLogonCount)を変更."] class action_modify_registry action tool_reg_add["<b>ツール</b> – reg addコマンド<br/><b>目的</b>: Windowsレジストリ値の追加または変更."] class tool_reg_add tool persistence_winlogon_helper["<b>持続</b> – Winlogon Helper DLL<br/><b>手法</b>: T1547.004 Winlogon Helper DLL<br/><b>説明</b>: ユーザーのログオン中に悪意のあるDLLまたは実行可能ファイルをロードし、特権実行を提供."] class persistence_winlogon_helper persistence technique_T1547_004["<b>手法</b> – T1547.004<br/><b>名前</b>: Winlogon Helper DLL<br/><b>説明</b>: WinlogonによってロードされるようにDLLを登録し、持続性と特権の昇格を付与."] class technique_T1547_004 technique malware_kamkaka["<b>マルウェア</b> – KamiKakaBot<br/><b>使用例</b>: Winlogon Helper DLLの持続."] class malware_kamkaka malware malware_mandela["<b>マルウェア</b> – Mandela.exe<br/><b>使用例</b>: Winlogon Helper DLLの持続."] class malware_mandela malware %% フローを示す接続 action_create_account –>|使用| tool_net_user action_modify_registry –>|使用| tool_reg_add action_create_account –>|有効化| persistence_winlogon_helper action_modify_registry –>|有効化| persistence_winlogon_helper persistence_winlogon_helper –>|実装| technique_T1547_004 technique_T1547_004 –>|観察される| malware_kamkaka technique_T1547_004 –>|観察される| malware_mandela "

攻撃フロー

シミュレーション実行

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

理由: このセクションでは、検出ルールをトリガーするために設計された敵の手法(T1547.004)の正確な実行を詳述しています。コマンドと記述は直接、検出ロジックによって期待されるテレメトリーを生成します。

  • 攻撃の説明 & コマンド:
    ローカル管理者権限を取得した攻撃者は、再起動後も持続性を維持したいと考えています。彼らは、ユーザーデスクトップが読み込まれる前に実行され、多くのエンドポイントAV製品を回避するクラシックなWinlogon「Shell」ハイジャックを選択します。手順は以下です:

    1. 悪意のあるペイロードを作成する (例: C:Tempevil.exe).
    2. 新しい値を追加する HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell ペイロードを指す。
    3. 変更が反映されたことを確認し、ログオフ/オンを実行して実行を達成する。
  • リグレッションテストスクリプト:

    #-------------------------------------------------
    # リグレッションテスト – Winlogonシェルハイジャック (T1547.004)
    #-------------------------------------------------
    param(
        [string]$PayloadPath = "C:Tempevil.exe",
        [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt"
    )
    
    # 1. ダミーペイロードをデプロイする (デモ用に単純なcalc.exeコピー)
    if (-not (Test-Path $PayloadPath)) {
        Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force
    }
    
    # 2. 現在のシェル値をバックアップする (ある場合)
    $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
    $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell
    Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8
    
    # 3. 悪意のあるシェル値を設定する
    Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force
    
    Write-Host "[+] 悪意のあるWinlogonシェルが$PayloadPathに設定されました"
    Write-Host "[+] 元の値が$BackupPathに保存されました"
  • クリーンアップコマンド:

    #---------------------------------
    # クリーンアップ – Winlogonシェルの復元
    #---------------------------------
    $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
    $backupFile = "$env:Tempwinlogon_shell_backup.txt"
    
    if (Test-Path $backupFile) {
        $original = Get-Content -Path $backupFile -Raw
        if ([string]::IsNullOrWhiteSpace($original)) {
            # 元の値が空だった – プロパティを削除する
            Remove-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue
        } else {
            Set-ItemProperty -Path $regPath -Name Shell -Value $original -Force
        }
        Remove-Item $backupFile -Force
        Write-Host "[+] Winlogonシェルが元の状態に復元されました."
    } else {
        Write-Warning "バックアップファイルが見つかりません – 手動による検査が必要です."