必須ユーザープロファイルの永続性
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
脅威アクターは、必須ユーザープロファイルを悪用してWindowsエンドポイントに持続性を確立できます。ユーザープロファイルディレクトリ内に NTUSER.MAN ファイルを作成または置換することで、悪意のあるレジストリ変更は、標準のレジストリAPIを利用せずにログオン時にレジストリハイブに読み込まれます。この技術により、ユーザーがサインインするたびにコマンドまたはバイナリがステルス的に実行されます。
調査
このレポートは、Windowsレジストリハイブを操作して必須ユーザープロファイルを作成する概念実証技術について説明しています。SwarmerやHiveSwarmingなどのツールが、エクスポートされたレジストリデータを .MAN 形式に変換する方法を示し、レジストリAPIアクティビティに焦点を当てたEDRモニタリングを回避します。
緩和策
組織は、通常使われない必須プロファイルがユーザープロファイルディレクトリ内で作成または変更されることを監視するべきです。強力なファイルシステムのテレメトリとWindowsユーザープロファイルサービスのイベントの相関は、この持続性技術を検出するのに役立ちます。 NTUSER.MAN files within user profile directories, particularly where mandatory profiles are not normally used. Strong file system telemetry combined with correlation of Windows User Profile Service events can help detect this persistence technique.
応答
もし予期せぬ形で NTUSER.MAN ファイルが作成されるか、または疑わしい Offreg.dll の読み込みが観察された場合、調査者は許可されていないレジストリ変更について関連するユーザープロファイルを調べるべきです。ファイル作成に関するSysmonイベントID 11をWindowsユーザープロファイルサービスのイベントID 5と67と相関させ、必須プロファイルがロードされたことを確認してください。
攻撃フロー
検出
持続性の可能性のあるポイント [ASEPs – Software/NTUSER Hive] (via registry_event)
Swarmerユーティリティ実行試行の可能性 (via cmdline)
Swarmerユーティリティ実行試行の可能性 (via powershell)
ユーザープロファイルディレクトリでのNTUSER.MANファイル作成 [Windowsファイルイベント]
シミュレーション実行
前提条件: テレメトリ&ベースラインのプリフライトチェックが通過していること。
理由: このセクションでは、検出ルールを発動させるために設計された敵対者技術(TTP)の正確な実行について詳述します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は、誤診に繋がります。
-
攻撃の物語とコマンド: 敵対者はユーザーログオン間で持続性を維持しようとしています。EDRによって監視される可能性がある現在のレジストリを修正する代わりに、攻撃者はユーザープロファイルディレクトリに「必須プロファイル」をドロップすることで作成します。次のログイン時に、Windowsはこのファイルを使用してユーザーレジストリハイブを構築します。この方法はステルス的で、「悪意のある」レジストリ構成は技術的にはプロファイル初期化プロセスの一部であり、標準のレジストリ変更イベントではありません。このシミュレーションはダミーの
NTUSER.MANファイルをユーザープロファイルのサブフォルダに作成し、NTUSER.MANを引き起こすためにendswith: 'NTUSER.MAN'andcontains: 'Users'ロジック。 -
回帰テストスクリプト:
# 持続性テストのためのNTUSER.MAN作成のシミュレーション $targetDir = Join-Path $env:USERPROFILE "AppDataLocalTempSimulatedProfile" # 存在しない場合、ディレクトリを作成 if (!(Test-Path $targetDir)) { New-Item -Path $targetDir -ItemType Directory -Force } # NTUSER.MANファイルを作成して検出ルールをトリガーする $filePath = Join-Path $targetDir "NTUSER.MAN" Set-Content -Path $filePath -Value "Simulated Mandatory Profile Content" Write-Host "[+] シミュレーション完了。ファイルが作成されました: $filePath" -ForegroundColor Green -
クリーンアップコマンド:
# シミュレーションアーティファクトのクリーンアップ $targetDir = Join-Path $env:USERPROFILE "AppDataLocalTempSimulatedProfile" if (Test-Path $targetDir) { Remove-Item -Path $targetDir -Recurse -Force Write-Host "[+] クリーンアップ成功。アーティファクトが削除されました。" -ForegroundColor Yellow } else { Write-Host "[-] クリーンアップ失敗: ディレクトリが見つかりません。" -ForegroundColor Red }