0x01 前言

“映像劫持”,也被称为“IFEO”(Image File Execution Options),在WindowsNT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而WindowsN T架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。出于简化原因,IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,所以程序无论放在哪个路径,只要名字没有变化,它就运行出问题。

下面呢,我们聊一聊如何打造不一样“映像劫持”后门。

0x02 实验环境

  • 目标机-Windows 7(192.168.43.94)

  • 攻击机-Kali Linux  (192.168.43.9)

0x03 传统“映像劫持”Shift后门

传统“映像劫持”,当用户双击对应的程序后,操作系统就会给外壳程序(例如”explorer.exe”)发布相应的指令,其中包含有执行程序的路径和文件名,然后由外壳程序来执行该程序。事实上在该过程中,Windows还会在注册表的上述路径中查询所有的映像劫持子键,如果存在和该程序名称完全相同的子键,就查询对应子健中包含的”dubugger”键值名,并用其指定的程序路径来代替原始的程序,之后执行的是遭到”劫持”的虚假程序。简单点说,当你打开的是程序A,而运行的却是程序B

大家一定都知道映像劫持后门,在以下注册表中的sethc.exe项添加一个Debugger字符值(REG_SZ),并且赋值为cmd.exe的执行路径为C:\windows\system32\cmd.exe,如图:

IFEO注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\

执行命令添加:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"

如上文所述,修改IFEO中的“debugger”键值,用来替换原有程序的执行,键入五下Shift执行sethc.exe程序时会执行cmd.exe程序。

0x04 如何打造不一样的“映像劫持”后门呢?

与上文对比,不一样的“映像劫持”后门是怎样的呢?0x03中所讲述的传统“映像劫持”后门是修改IFEO中的“debugger”键值,用来替换原有程序的执行。而不一样的“映像劫持”后门,实现的效果是:程序A静默退出结束后,会执行程序B

怀揣着0x04的目标我们开始筹备。在网上收集资料时发现, Image File Execution Options下可以设置以下值项,其中GlobalFlag是本次测试的关键点:

Debugger
DisableHeapLookaside
ShutdownFlags
MinimumStackCommitInBytes
ExecuteOptions
GlobalFlag
DebugProcessHeapOnly
......

在MSDN的博客上进一步发现GlobalFlag由gflags.exe控制,文章地址:

https://blogs.msdn.microsoft.com/junfeng/2004/04/28/image-file-execution-options/

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

填写如上图配置后点击应用,开始测试。使用Process Explorer进行检测进程的变化发现键入五下Shift执行时,先执行sethc.exe程序,当sethc.exe程序静默退出时,执行cmd.exe程序,运行效果如下:

0x05 来看一看它的原理

进一步分析,发现其实是工具帮我们添加并修改了IFEO目录下sethc.exe的GlobalFlag值,如图:

以及SilentProcessExit下ReportingMode和MonitorProcess两个项值,如图:

那么,我们只需要需改对应的注册表即可:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v GlobalFlag /t REG_DWORD /d 512reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\sethc.exe" /v ReportingMode /t REG_DWORD /d 1reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\sethc.exe" /v MonitorProcess /t REG_SZ /d "C:\windows\system32\cmd.exe"

0x06 接下来,看下最终效果

那么,我们可以修改上文中MonitorProcess值来放我们的后门,例如Python反弹shell,配合五下Shift就可以神不知鬼不觉的进行反连。键入五下Shift后正常弹粘滞键,关闭之后执行我们的Python代码,如图:

我们来看下GIF动图效果:

0x07 如何“破”这种权限维持手法

(1) 流量方面:

服务器主动请求攻击机,如图:

随后,三次握手建立连接,因此当我们看到异常请求或连接时可进行防御措施。

(2) 系统配置方面:

微软windows远程桌面服务为我们提供了两个配置(SecurityLayer、UserAuthentication),如下:

其中UserAuthentication参数可指定在建立远程桌面连接之前如何对用户进行身份验证,如下:

翻译:

用户鉴权即UserAuthentication这个参数的作用,官方文档说明如下:

0:说明是进行远程桌面前不需要用户身份验证。
1:说明是进行远程桌面前需要进行用户身份验证。

那么,当我们将该参数设置为1时则可防止黑客利用远程桌面界面键入Shift从而达到防御效果,可以直接执行以下命令修改UserAuthentication注册表值,我们看下效果:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f

发现我们必须密码输入正确才能弹出远程桌面。

最后,大家可以明白一个道理“不知攻焉知防”,攻击者通过改变UserAuthentication参数方便控制,我们也可以通过它提高防御。

0x08 参考文章

https://blogs.msdn.microsoft.com/junfeng/2004/04/28/image-file-execution-options/

https://blog.csdn.net/johnsonblog/article/details/8165861

http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi

https://oddvar.moe/2018/04/10/persistence-using-globalflags-in-image-file-execution-options-hidden-from-autoruns-exe/

扫描下方二维码加入星球学习

加入后会邀请你进入内部微信群,内部微信群永久有效!

目前25000+人已关注加入我们

权限维持之打造不一样的映像劫持后门相关推荐

  1. Shfit映像劫持后门新玩法

    映像劫持简介 映像劫持(Image File Execution Options),简单的说法,就是当你打开的是程序A,而运行的确是程序B. 映像劫持其实是Windows内设的用来调试程序的功能,但是 ...

  2. C语言,后门程序,C++映像劫持后门实例分析

    // freeheart.cpp : Defines the entry point for the console application. //学习交流使用,违法使用后果自负. // by:cnb ...

  3. 【权限维持】Windows自启动映像劫持粘滞键辅助屏保后门WinLogon

    文章目录 权限维持-域环境&单机版-自启动 权限维持-域环境&单机版-粘滞键 权限维持-域环境&单机版-映像劫持 权限维持-域环境&单机版-屏保&登录 权限维持 ...

  4. Windows权限维持之php不死马、映像劫持、策略组脚本

    文中主要讲解Windows权限维持中的小技巧,通过了解掌握php不死马.映像劫持.策略组脚本等方式,更快知晓权限维持作用.本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若 ...

  5. 防范映像劫持(IFEO HIJACK)

    由于最近病毒都采用了IFEO映像劫持技术,导致杀软无法运行或提示无法打开文件,最近此类病毒非常流行,病毒清除操作起来相对复杂一些,所以今天特意发帖强调大家注意. 关于IFEO的介绍网络上有非常多,本文 ...

  6. 实例讲解映像劫持的使用技巧——通过映像劫持实现Notepad2替换记事本

    所谓"映像劫持",就是Image File Execution Options,是CreateProcess函数中的一个功能,即在可执行程序运行时,Windows会先检测对应IFE ...

  7. 解除映像劫持工具与源码,可解决因映像劫持导致的程序不能运行问题

    显示在红色列表框中为被劫持导致无法运行的程序名(同名程序不能在本机器上正常运行,可通过加号增加对其它程序文件的屏蔽) 显示在绿色列表框中为本软件解除了劫持的程序(可使用重新屏蔽按钮恢复到被劫持状态) ...

  8. 防范IFEO映像劫持

    由于最近病毒都采用了IFEO映像劫持技术,导致杀软无法运行或提示无法打开文件,最近此类病毒非常流行,病毒清除操作起来相对复杂一些,所以今天特意发帖强调大家注意. 关于IFEO的介绍网络上有非常多,本文 ...

  9. 映像劫持病毒有什么现象及清除步骤

    现象 一媒体朋友的笔记本染毒,杀毒软件起不来.开机就弹出若干个窗口,总也关不掉,直到系统内存耗尽死机,安全模式也是同样的现象.无奈之下,尝试重装系统,不过,因为不少人都知道的原因,她只是格式化了C分区 ...

最新文章

  1. 语义分割--Large Kernel Matters--Improve Semantic Segmentation by Global Convolutional Network
  2. 输变电设备物联网节点设备无线组网协议_SmartModule物联网智能测控组件
  3. 大陆居民身份证验证方法(java)
  4. C++一天一个程序(四)
  5. 洛谷P3958 奶酪
  6. Mybatis实现高级映射一对一、一对多查询
  7. C中取得数组的地址,赋值给数组结构的字段
  8. php 延迟输出,PHP循环;如何打印每个结果并将其延迟一秒钟,然后再回显另一个结果?...
  9. [JNI] 开发基础(3)指针操作
  10. Wonderware-InTouch安装 Intouch 2014 R2 SP1
  11. 移动硬盘连接计算机接口类型,移动硬盘数据线接口类型有哪几种-单usb接口
  12. 完全支持双层PDF 开源的PDF分离与合并软件 C 版本 转自codeproject
  13. ASCII、GB2312、GBK、GB18030、Unicode、UTF-8、BIG5 编码分析
  14. vc word bookmark
  15. 牛客刷题<19>使用3-8译码器实现逻辑函数
  16. 基恩士KV8000程序 基恩士KV8000,威伦通触摸屏,搭载KV-XH16EC总线模块进行分布式总线控制
  17. 深入浅出CChart 每日一课——第五课 回到折线图,苦逼屌丝之万丈高楼平地起
  18. mysql:insert ignore、insert和replace区别
  19. ssm项目整合与功能开发(注解开发)
  20. Python数据分析步骤(入门学习)

热门文章

  1. 如何高效的开展游戏陪玩系统的性能测试?
  2. 解决联想电脑右键文件卡顿问题
  3. 电脑开关机的正确操作。
  4. 【工作单位】转正申请
  5. Python 新手常犯错误
  6. 如何在微信小程序中加载自己的地图数据
  7. mc 服务器设置自动重启,服务器自动重启脚本
  8. JavaScript对象深拷贝
  9. js事件循环机制和优先级
  10. 对JavaScript事件循环机制的理解