安全技术谈:实例讲述映像劫持IFEO技术

大家对于映像劫持(IFEO)应该都不陌生,从2007年开始,众多病毒木马就利用映像劫持关闭杀毒软件,传播自身。

所谓的映像劫持IFEO就是Image File Execution Options(其实应该称为 Image Hijack)。它位于注册表的

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options

IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和Local system有权读写修改。

当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而WindowsNT架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。出于简化原因,IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,所以程序无论放在哪个路径,只要名字没有变化,它就运行出问题。

映像劫持IFEO实例演示

这里我们用一个实际例子,来演示一下映像劫持。

点击"开始"-"运行"输入"regedit"命令,打开注册表编辑器,展开到:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options

然后选择Image File Execution Options,右键点击新建一个项,把这个项(默认在最后面)命名为QQ.exe。

望文知意,这次是要用QQ来做试验。选中QQ.exe这个项,此时右边默认是空白的。点击鼠标右键,新建一个"字串符",然后改名为"Debugger"最后一步,双击该键,修改数据数值(其实就是路径),这里是修改为Windows系统"记事本"程序的路径

C:WINNTsystem32
otepad.exe

注:"C:"是系统盘,如果你的系统安装在D盘则改为"D:"(不包括双引号)。这里使用的操作系统是Windows2000,如果你的系统不是Windows2000或WindowsNT的话,把WINNT改成Windows,类似情况同理处理。

好了,实验下,看看效果。点击QQ.exe,看出现了什么

 QQ主程序QQ.exe被记事本"劫持"了,记事本直接按照.txt文档格式打开了QQ.exe程序。

回到注册表,删除相应键,一切又恢复了正常,熟悉的QQ界面回来了。

同理,病毒等也可以利用这样的方法,把杀毒软件、安全工具等名字再进行重定向,指向病毒路径。所以,如果你把病毒清理掉后,重定向项没有清理的话,由于IFEO的作用,没被损坏的程序一样运行不了!

映像劫持终极利用–让病毒迷失自我  

同上面的道理一样,如果我们把病毒程序给重定向了,病毒也就变得"找不到北"无法正常运行了。

WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptionssppoolsv.exe]
Debugger=123.exe
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptionslogo_1.exe]
Debugger=123.exe

 将上面的代码保存为后缀.reg的文件,双击执行(这里以金猪病毒和威金病毒为例),这样即使这些病毒在系统启动项里面,即使随系统运行了,但是由于映象劫持的重定向作用,还是会被系统提示无法找到病毒文件(这里是logo_1.exe和sppoolsv.exe)。

现在病毒木马更多的是在利用各类移动设施(U盘等)、通过网页挂马进行传播,通过模拟用户操作关闭杀毒软件。但我们仍然可以通过这个映像劫持的实例进行深入思考:如何利用病毒自身的技术来抵御病毒木马的入侵。