Windows—映像劫持之debugger劫持

admin 2023年11月21日12:08:34评论20 views字数 2966阅读9分53秒阅读模式

 

关于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,说明我们劫持成功了。

Windows—映像劫持之debugger劫持

接下来我们去看下注册表debugger值,里面的内容则是我们替换下来的calc.exe

Windows—映像劫持之debugger劫持

 

实战示例

1、shift 后门(粘滞键后门)

在Windows系统登录界面状态下,粘滞键可以以连续按5下SHIFT键运行,并且此时应用程序会以WINDOWS的最高权限-SYSTEM权限运行,其进程名为Sethc.exe,应用程序在Windowssystem32下。如下图所示:

Windows—映像劫持之debugger劫持

利用这种特性,我们使用镜像劫持的手法,将其替换成cmd

REG ADD "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe" /v Debugger /t REG_SZ /d "C:windowssystem32cmd.exe"

Windows—映像劫持之debugger劫持

当我们再次按五次shift时,弹出来的则是我们想要的cmd程序了。

Windows—映像劫持之debugger劫持

此时,我们通过添加用户或者激活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 加到管理员组

Windows—映像劫持之debugger劫持
Windows—映像劫持之debugger劫持

通过查看注册表可以发现debugger 值为cmd.exe

Windows—映像劫持之debugger劫持

2、基于辅助功能实现镜像劫持

原理:

修改注册表,在“HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Image File Execution Option”中添加Utilman.exe项,在此项中添加debugger键,键值为启动cmd的命令C:WINDOWSSystem32cmd.exe。

当攻击者通过远程桌面协议连接到受害者电脑上时,只需使用组合键win+u,本应该打开的设置中心,最终却打开了cmd命令行,通过命令行可以添加用户、打开注册表、运行恶意软件、添加隐蔽后门等等一些列攻击手段,严重性不言而喻。

Windows—映像劫持之debugger劫持

当我们在没登陆的情况下,按win+u 成功执行cmd程序。接下来的操作同上。

Windows—映像劫持之debugger劫持

Windows—映像劫持之debugger劫持

删除debugger值后,则正常展示辅助功能,如下图:

Windows—映像劫持之debugger劫持

3、其他攻击手法

基于映像劫持的原理的攻击手段还有多种,我们可以通过如下辅助功能进行劫持。操作上大同小异。

Windows—映像劫持之debugger劫持

何如排查

1、查看注册表

镜像劫持需要在注册表中添加辅助功能的表项,所以检查“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Option”注册表路径下的程序名称,一些常用的辅助功能表项如:Utilman.exe,stch.exe,osk.exe等等

排查Image File Execution Option下的debugger值是否正常

Windows—映像劫持之debugger劫持

2、查看轻松使用设置中心或者使用辅助键测试

进入控制面板->轻松使用设置中心->使键盘更易于使用,取消粘滞键功能

Windows—映像劫持之debugger劫持

 

安全防御

1、对于这种后门正常的杀软都会拦截,不过都到权限维持这一步了。那肯定是用处不大了。也可通过修改image file exeution 名称绕过。

Windows—映像劫持之debugger劫持

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劫持

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月21日12:08:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows—映像劫持之debugger劫持http://cn-sec.com/archives/2225015.html

发表评论

匿名网友 填写信息