首页/安全/应急响应速查/IFEO Debugger 映像劫持排查

IFEO Debugger 映像劫持排查

攻击者给目标程序登记 Image File Execution Options Debugger,双击正常程序名却启动攻击者程序,也常被用于禁用任务管理器与安全软件。

应急响应速查安全更新于 2026-10-13

IFEO 劫持的原理

Image File Execution Options 允许给指定程序登记一个调试器:系统启动该程序时,实际运行的是 Debugger 值指向的程序。攻击者借此实现「双击正常程序名却运行木马」,也常用于让任务管理器与安全软件启动即退出。

判定要点

做法是枚举该键下所有子键,只挑出含 Debugger 值的逐个核对。正常系统里绝大多数子键没有 Debugger 值,出现即需要解释指向的程序是否为团队登记的调试工具。

基本信息

注册表位置HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<程序名>
利用点Debugger、SilentProcessExit、GlobalFlag
典型手法给 taskmgr.exe 或杀软进程挂 Debugger
32 位视图Wow6432Node 下可能存在第二份配置
常见误报开发机与调试工具留下的正常配置
权限要求读取普通用户可行,修改需管理员

典型使用场景

  • 排查安全软件或任务管理器启动后立即退出
  • 找出被劫持的系统工具与解释器
  • 确认这些程序启动时实际运行了什么
  • 与其他持久化项一起集中清理
  • 复盘时说明劫持影响了哪些程序

列出所有含 Debugger 的 IFEO 子键

列出所有含 Debugger 的 IFEO 子键
$p = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options'
Get-ChildItem $p | ForEach-Object { $d = Get-ItemProperty $_.PSPath; if ($d.Debugger) { '{0} -> {1}' -f $_.PSChildName, $d.Debugger } }
Get-ChildItem 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options' -ErrorAction SilentlyContinue | ForEach-Object { $d = Get-ItemProperty $_.PSPath; if ($d.Debugger) { '{0} -> {1}' -f $_.PSChildName, $d.Debugger } }
reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" C:\evidence\ifeo.reg /y

输出逐列读法

字段含义正常/异常
子键名被劫持的程序名覆盖系统工具与安全软件属高可疑
Debugger 值实际启动的程序路径指向临时目录或系统进程需立即追查
GlobalFlag 值调试与退出相关标志异常数值可用于实现静默退出
SilentProcessExit 项进程退出时的动作常与 GlobalFlag 配合使用
安全软件进程启动后秒退时优先查 IFEO:Debugger 指向自建目录或系统进程都属高可疑,先留档再动手清理。
开发与调试环境确实会存在合法的 Debugger 配置:先确认指向的调试器是否为团队工具、是否有登记用途,再决定清除。

留档、样本提取与清除

留档、样本提取与清除
Copy-Item 'C:\Users\Public\evil.exe' C:\evidence\ -ErrorAction SilentlyContinue   # 先提取指向的程序
Get-FileHash C:\evidence\evil.exe -Algorithm SHA256 | Format-List
Remove-ItemProperty -Path "$p\taskmgr.exe" -Name Debugger -ErrorAction SilentlyContinue
Start-Process taskmgr.exe        # 验证被劫持程序的启动行为是否恢复
Get-ChildItem $p | ForEach-Object { $d = Get-ItemProperty $_.PSPath; if ($d.Debugger) { $_.PSChildName } }

一并排查的同类项

  • Wow6432Node 下的第二份 IFEO 配置
  • GlobalFlag 与 SilentProcessExit 组合
  • AppInit_DLLs 与 AppCertDlls 等注入点
  • 被劫持程序对应的计划任务或服务

易错点

  • 只查主键不看 Wow6432Node:64 位系统的双视图下可能另挂一套配置
  • 把开发机调试配置当恶意:先确认 Debugger 指向的是否为团队工具
  • 只删 Debugger 不看 GlobalFlag:静默退出类行为仍可能生效
  • 不导出留档:后续无法对比原始配置,也无法回溯攻击者写入
  • 删完不验证:被劫持程序的启动行为是否恢复没有结论

数据来源与参考

  • Microsoft Learn:Image File Execution Options
  • MITRE ATT&CK T1546.012 Image File Execution Options Injection

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌