相信大家对各种流氓软件,流氓行为都不陌生,这其中有一种通过注册表项【image File Execution options】进行劫持的办法,或许一些朋友对image File Execution options不太知道,下面主编容易的和大家共享一下映像劫持,注册表image File Execution options作用及使用方法。
映像劫持(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”
注意的是,win10后的系统,需要管理员权限才能够对一项做出修改。之前的病毒,喜爱修改这个注册表项,达到劫持系统程序的作用。

下面,做的是一个容易的尝试:管理员权限,打开CMd,执行下列修改注表的命令。
reg add "hklmsoFTwAREMicrosoftwindows nTCurrentVersionimage File Execution optionsnotepad.exe" /v debugger /t REG_sZ /d "c:windowssystem32calc.exe"。
可以看到:打开notepad.exe,而运行起来的是计算器。
如上文中所讲述,修改iFEo中的“debugger”键值,用来替换原有程序的执行。而新的利用办法,实现的效果是:程序A静默退出结束后,会执行程序B。
在网上收集资料整理后发现, image File Execution options下可以配置以下值项(值只是部分,只能感慨,微软没告诉你们的东西还真多啊)。其中GlobalFlag是本次尝试的关键点:
歪果仁本是想弄清楚ApplicationGoo这个项值的作用,无奈却毫无头绪。但是在Msdn的博客上,发现热心人士对GlobalFlag的这个项值的发表的一些看法。爱实践的歪果仁下载安装了GFlages.exe 开始分析。真是山重水复疑无路,柳暗花明又一村。这就是突破口。

按照Msdn博客的说法,笔者也测试安装GFlages.exe进行尝试。中间遇到一些小坑,GFlages.exe是包含在 debugging Tools for windows(windbg)下的。网上现有都是通过安装全能的windows sdK。很折腾,经过一番搜索,找到一下dbg的单独安装包,感谢作者共享。

在silent process Exit这个选项卡中发现了挺有趣的东西。根据微软绿色教程,从windows10开始,可以在silent process Exit选项卡中,可以启用和设置对进程静默退出的监视操作。在此选项卡中设定的设置都将保存在注册表中。

填入如上设置,点击应用、确定,开始尝试。使用process Explorer进行检测进程的变化。注意,在进行此次尝试之前,请先把iFEo中notepad.exe项删除。
打开notepad.exe,关上后,随之计算器弹出。在process Explorer上可以看到计算器已经被系统调起。

根据微软的绿色文档描述,在silent process Exit选项卡中的设置,都保存在注册表中。经过分析,等值,主要修改了以下两个表项。


这么一来,可以直接在命令行中对注册表进行配置,需要管理员权限。
? 容易解释一下ReportingMode和Monitorprocess 这两个项值的作用。Monitorprocess的值表示监视器进程。Reporting Mode可以配置为三个值 。
| Flag | Value | 解释 |
|---|---|---|
| LAUnCH_MoniToRpRoCEss | 0x1 | 检测到进程静默退出时,将会启动监视器进程(在GFLAGs.exe中,silent process Exit这个选项卡所填写的值,即Monitorprocess的项值) |
| LoCAL_dUMp | 0x2 | 检测到进程静默退出时,将会为受监视的进程创建转储文件 |
| noTiFiCATion | 0x4 | 检查到进程静默退出时,将会弹出一个通知 |