后门及持久化访问1----辅助功能镜像劫持
1|0代码及原理介绍
为了使电脑更易于使用和访问,Windows添加了一些辅助功能。这些功能可以在用户登录之前以组合键启动。根据这个特征,一些恶意软件无需登录到系统,通过远程桌面协议就可以执行恶意代码。
一些常见的辅助功能如:
- C:\Windows\System32\sethc.exe 粘滞键 快捷键:按五次shift键
- C:\Windows\System32\utilman.exe 设置中心 快捷键:Windows+U键
在较早的Windows版本,只需要进行简单的二进制文件替换,比如,程序” C:\Windows\System32\utilman.exe”可以替换为“cmd.exe”。
对于在Windows Vista和Windows Server 2008及更高的版本中,替换的二进制文件受到了系统的保护,因此这里就需要另一项技术:映像劫持。
映像劫持,也被称为“IFEO”(Image File Execution Options)。当目标程序被映像劫持时,双击目标程序,系统会转而运行劫持程序,并不会运行目标程序。许多病毒会利用这一点来抑制杀毒软件的运行,并运行自己的程序。造成映像劫持的罪魁祸首就是参数“Debugger”,它是IFEO里第一个被处理的参数,系统如果发现某个程序文件在IFEO列表中,它就会首先来读取Debugger参数,如果该参数不为空,系统则会把Debugger参数里指定的程序文件名作为用户试图启动的程序执行请求来处理,而仅仅把用户试图启动的程序作为Debugger参数里指定的程序文件名的参数发送过去。参数“Debugger”本来是为了让程序员能够通过双击程序文件直接进入调试器里调试自己的程序。现在却成了病毒的攻击手段。简单操作就是修改注册表,在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option”中添加utilman.exe项,在此项中添加debugger键,键值为要启动的程序路径。
注意:Windows NT 和WindowsNT不一样!!!!
C++ 实现代码:
当然,我们自己的程序要放到相应的路径。
2|0复现过程
镜像劫持可由多种脚本进行完成,上面是利用C++的脚本,而下面则是reg注册表文件进行完成。另有其他方法,如:VBS等。
注册表代码如下:
这段代码就是截取windows+U快捷键来运行自己想要运行的程序。Utilman.exe可以替换为自己想要截取的软件,hello.exe则是自己想要运行的文件。
首先将代码保存为reg文件,然后将hello.exe放入C盘根目录,以管理员身份运行注册表文件。
运行完后会添加如下健和值
在锁屏状态下效果图如下:
本次复现在windows 7 sp1环境下进行,其他系统请自行测试。经测试,windows 10 1809已经不能实现。
2|1检查及清除方法
检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image
File Execution Option”注册表路径中的程序名称
其它适用于的辅助功能还有:
- 屏幕键盘:C:\Windows\System32\osk.exe
- 放大镜:C:\Windows\System32\Magnify.exe
- 旁白:C:\Windows\System32\Narrator.exe
- 显示开关:C:\Windows\System32\DisplaySwitch.exe
- 应用程序开关:C:\Windows\System32\AtBroker.exe
- 现在大部分的杀毒软件都会监视注册表项来防御这种恶意行为。
现在大部分的杀毒软件都会监视注册表项来防御这种恶意行为。
本文复现主要用来学习,请勿用于非法用途。
__EOF__

本文链接:https://www.cnblogs.com/qianxiao996/p/13574571.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端