映像劫持,注册表Image File Execution Options作用及使用办法

分类: 软件教程 阅读: 137

映像劫持(Image File Execution Options,IFEO)技术的利用,存在已久。大都是修改“Debugger“项值,替换执行程序,加以利用。歪果仁最近在研究IFEO的相关项值时,发现了GlobalFlag这个特殊的项值,在进一步测试时,发现了一种基于IFEO的新后门利用方式。本着求知探索的科学精神。本文对此技术进行分析总结。

映像劫持(Image File Execution Options),简单的说法,就是当你打开的是程序A,而运行的确是程序B。

映像劫持其实是Windows内设的用来调试程序的功能,但是现在却往往被病毒恶意利用。当用户双击对应的程序后,操作系统就会给外壳程序(例如“explorer.exe”)发布相应的指令,其中包含有执行程序的路径和文件名,然后由外壳程序来执行该程序。事实上在该过程中,Windows还会在注册表的上述路径中查询所有的映像劫持子键,如果存在和该程序名称完全相同的子键,就查询对应子健中包含的“dubugger”键值名,并用其指定的程序路径来代替原始的程序,之后执行的是遭到“劫持”的虚假程序

IEEO位于注册表项中

“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options”

注意的是,Win7后的系统,需要管理员权限才能够对一项做出修改。之前的病毒,喜欢修改这个注册表项,达到劫持系统程序的作用。

Windows7映像劫持

Windows7映像劫持

下面,做的是一个简单的测试:管理员权限,打开CMD,执行下列修改注表的命令。

reg add “hklmSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe” /v debugger /t REG_SZ /d “c:windowssystem32calc.exe”。

可以看到:打开notepad.exe,而运行起来的是计算器。

0x03 映像劫持新玩法

如上文中所讲述,修改IFEO中的“debugger”键值,用来替换原有程序的执行。而新的利用方法,实现的效果是:程序A静默退出结束后,会执行程序B。

在网上收集资料整理后发现, Image File Execution Options下可以设置以下值项(值只是部分,只能感慨,微软没告诉我们的东西还真多啊)。其中GlobalFlag是本次测试的关键点:

Debugger,DisableHeapLookaside, ShutdownFlags,MinimumStackCommitInBytes,ExecuteOptions,GlobalFlag,DebugProcessHeapOnly,ApplicationGoo,RpcThreadPoolThrottle,PageHeapFlags,DisableHeapLookAside,DebugProcessHeapOnly,PageHeapSizeRangeStart,PageHeapSizeRangeEnd,PageHeapRandomProbability,PageHeapDllRangeStart,PageHeapDllRangeEnd,……

歪果仁本是想弄清楚ApplicationGoo这个项值的作用,无奈却毫无头绪。但是在MSDN的博客上,发现热心人士对GlobalFlag的这个项值的发表的一些看法。爱实践的歪果仁下载安装了GFlages.exe 开始分析。真是山重水复疑无路,柳暗花明又一村。这便是突破口。

Windows7项值

Windows7项值

0x04 GFlages.exe进行测试

按照MSDN博客的说法,笔者也尝试安装GFlages.exe进行测试。中间遇到一些小坑,GFlages.exe是包含在 Debugging Tools for Windows(WinDbg)下的。网上现有都是通过安装完整的Windows SDK。很折腾,经过一番搜索,找到一下dbg的单独安装包,感谢作者分享。

Windows7利用

Windows7利用

在Silent Process Exit这个选项卡中发现了挺有趣的东西。根据微软官方介绍,从Windows7开始,可以在Silent Process Exit选项卡中,可以启用和配置对进程静默退出的监视操作。在此选项卡中设定的配置都将保存在注册表中。

Windows7程序

Windows7程序

填入如上配置,点击应用、确定,开始测试。使用Process Explorer进行检测进程的变化。注意,在进行此次测试之前,请先把IFEO中notepad.exe项删除。

打开notepad.exe,关闭后,随之计算器弹出。在Process Explorer上可以看到计算器已经被系统调起。

Windows7的是

Windows7的是

0x05 原理分析

根据微软的官方文档描述,在Silent Process Exit选项卡中的配置,都保存在注册表中。经过分析,等值,主要修改了以下两个表项。

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exeHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExitnotepad.exe

这么一来,可以直接在命令行中对注册表进行设置,需要管理员权限。

reg add “HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe” /v GlobalFlag /t REG_DWORD /d 512reg add “HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExitnotepad.exe” /v ReportingMode /t REG_DWORD /d 1reg add “HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExitnotepad.exe” /v MonitorProcess /t REG_SZ /d “c:windowssystem32taskmgr.exe”

​ 简单解释一下ReportingMode和MonitorProcess 这两个项值的作用。MonitorProcess的值表示监视器进程。Reporting Mode可以设置为三个值 。

0x06 检测及查杀

排查HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options 以及HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSilentProcessExit项值是否存在关联。分析系统日志,日志ID为3000和3001,即有可能存在后门威胁。直接删除IFEO项或者设置管理员不可修改

0x07 总结

本文分析总结了关于映像劫持的的一种新型后门技术:当一个程序关闭时会允许执行其他的二进制文件。且Autorun暂时检测不到。该技巧需要管理员权限,普通用户没有执行权限。可以结合ADS技术(alternate data streams,NTFS交换数据流)执行,更加的隐蔽。感兴趣的同学可以自己测试一下。本文由网络上转载。

电脑提示缺少xxxx.dll如何解决

Windows7下载

Windows7下载

这种由于缺失DLL导致的软件无法打开的问题一般是因为缺少系统运行库或者安装包里缺少特定的DLL文件,那么如何解决此类问题呢?小编来告诉你。方法一:工具Windows 7 64位操作系统操作流程1.打开电脑的控制面板,点击系统和安全

Windows7运行库修复

Windows7运行库修复

2.点击系统查看计算机的Windows版本和系统类型

Windows7缺少

Windows7缺少

Windows7点击

Windows7点击

3.打开浏览器,搜索缺少的DLL,下载对应版本的DLL

Windows7版本

Windows7版本

4.如果你的计算机是32位系统,则把下载的DLL放到C:WINDOWSSystem32文件夹内,如果你的计算机是64位系统,则把下载的DLL放到C:WINDOWSSysWOW64文件夹内

5.点击桌面左下角运行,输入“regsvr32+下载的DLL名称”回车运行即可

工具Windows 7 64位操作系统操作流程1.查看计算机基本信息的步骤和方法一相同2.下载缺少的DLL文件3.鼠标右键桌面报错软件的桌面快捷方式,点击打开文件位置

4.将下载的DLL文件放到打开的文件夹内,然后重启软件即可

方法三:

工具Windows 7 64位操作系统快快运行库修复助手(下载地址:快快运行库修复助手)操作流程1.下载并安装快快运行库修复助手之后,点击运行库修复功能的一键扫描2.扫描完成后点击理解修复即可,快快运行库可以自动判断用户电脑的版本信息并进行修复

3.部分缺失的DLL类型需要用到DirectX修复和系统DLL修复功能

通过上面的方法,我们就完成了各种DLL文件丢失的修复,大家学会了吗。

相关推荐

File not found什么意思

Win7系统要求的函数不受支持的解决方法

Win7安装CAD错误1308解决方法

电脑屏幕一会黑屏一会亮的解决方案(显示器黑一下又亮又黑屏)

serialversionuid如何生成?serialversionuid生成方法及作用解析