关于IFEO
IFEO 是“Image File Execution Options”的缩写,是Windows操作系统中的一项特性,直译过来就是映像劫持。它又被称为“重定向劫持”(Redirection Hijack),它和“映像劫持”(Image Hijack,或IFEO Hijack)只是称呼不同,实际上都是一样的技术手段。在Windows NT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而Windows NT架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。大概微软考虑到加入路径控制会造成判断麻烦与操作不灵活的后果,也容易导致注册表冗余,于是IFEO使用忽略路径的方式来匹配它所要控制的程序文件名。
简单来讲就是通过修改某些注册表常用项的键值把正常执行的程序替换为我们需要运行程序(比如木马、cmd等),当我们想运行A程序时,结果运行的却是B程序,从而达到劫持的效果。
IFEO 主要通过Windows注册表进行配置。具体来说,IFEO的注册表路径是:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
在这个路径下,可以为每个可执行文件设置子键,其中子键的名称是可执行文件的名称(比如notepad.exe)。在每个子键中,可以设置不同的数值项来配置行为。
最常见的 IFEO 配置是设置 Debugger 项,其值是调试器的路径。当系统执行指定的可执行文件时,会自动启动相应的调试器。
实现原理
当我们双击运行程序时,系统会查询该IFEO注册表,如果发现存在和该程序名称完全相同的子键,就会查询对应子健中包含的“debugger”键值名,如果该参数不为空,系统则会把 Debugger 参数里指定的程序文件名作为用户试图启动的程序执行请求来处理。这样成功执行的是遭到“劫持”的虚假程序。
常见劫持程序
屏幕键盘: C:WindowsSystem32osk.exe
放大镜: C:WindowsSystem32Magnify.exe
旁白: C:WindowsSystem32Narrator.exe
显示切换器 C:WindowsSystem32DisplaySwitch.exe
应用切换器: C:WindowsSystem32AtBroker.exe
利用示例:
我们将debugger值指向恶意程序(这里我们使用calc.exe,实战中懂的都懂)就能劫持。执行该命令后,我们双击IE浏览器,执行的则是 calc.exe,说明我们劫持成功了。
接下来我们去看下注册表debugger值,里面的内容则是我们替换下来的calc.exe
实战示例
1、shift 后门(粘滞键后门)
在Windows系统登录界面状态下,粘滞键可以以连续按5下SHIFT键运行,并且此时应用程序会以WINDOWS的最高权限-SYSTEM权限运行,其进程名为Sethc.exe,应用程序在Windowssystem32下。如下图所示:
利用这种特性,我们使用镜像劫持的手法,将其替换成cmd
REG ADD "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe" /v Debugger /t REG_SZ /d "C:windowssystem32cmd.exe"
当我们再次按五次shift时,弹出来的则是我们想要的cmd程序了。
此时,我们通过添加用户或者激活guest账户即可登录系统
添加用户
net user test 123456 /add
net localgroup administrators test /add
启用guest用户
net user guest /active:yes 启用guest用户
net user guest 123 设置密码为123
net localgroup administrators guest /add 加到管理员组
通过查看注册表可以发现debugger 值为cmd.exe
2、基于辅助功能实现镜像劫持
原理:
修改注册表,在“HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Image File Execution Option”中添加Utilman.exe项,在此项中添加debugger键,键值为启动cmd的命令C:WINDOWSSystem32cmd.exe。
当攻击者通过远程桌面协议连接到受害者电脑上时,只需使用组合键win+u,本应该打开的设置中心,最终却打开了cmd命令行,通过命令行可以添加用户、打开注册表、运行恶意软件、添加隐蔽后门等等一些列攻击手段,严重性不言而喻。
当我们在没登陆的情况下,按win+u 成功执行cmd程序。接下来的操作同上。
删除debugger值后,则正常展示辅助功能,如下图:
3、其他攻击手法
基于映像劫持的原理的攻击手段还有多种,我们可以通过如下辅助功能进行劫持。操作上大同小异。
何如排查
1、查看注册表
镜像劫持需要在注册表中添加辅助功能的表项,所以检查“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Option”注册表路径下的程序名称,一些常用的辅助功能表项如:Utilman.exe,stch.exe,osk.exe等等
排查Image File Execution Option下的debugger值是否正常
2、查看轻松使用设置中心或者使用辅助键测试
进入控制面板->轻松使用设置中心->使键盘更易于使用,取消粘滞键功能
安全防御
1、对于这种后门正常的杀软都会拦截,不过都到权限维持这一步了。那肯定是用处不大了。也可通过修改image file exeution 名称绕过。
2、由于此类攻击的恶意代码要修改Image File Execution Options,首先要有权限才可读写,于是,我们可以通过限制用户对该注册表的读写权限,来阻止镜像劫持。打开注册表编辑器,定位到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptions,选中该项,右键→权限→高级,取消administrator和system用户的写权限即可。
3、对于有可能有安全隐患的不必要表项可以选择删除,直接禁用辅助功能即可。打开注册表编辑器,定位到HKEY_LOCAL_MACHINE SOFTWARE Microsoft WindowsNT CurrentVersion ,把“ImageFileExecutionOptions”项删除。
参考链接:https://mp.weixin.qq.com/s/APY41vztO4pnJSDhzHSUKg
原文始发于微信公众号(贝雷帽SEC):Windows—映像劫持之debugger劫持
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论