本文作者:xiaoYan(贝塔安全实验室-核心成员)
实验环境:
目标机:windows7
攻击机:Kali Linux
演示过程:
最近研究留后门姿势发现一个比较有意思的跟大家分享一下,大佬勿喷!
0x00 大家一定都知道映像劫持后门,修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options下sethc.exe,添加一个Debugger字符值(REG_SZ),并且赋值为cmd.exe的执行路径为C:\Windows\system32\cmd.exe,如图:
0x01如上文所述,修改IFEO中的“debugger”键值,用来替换原有程序的执行。如:键入五下Shift执行sethc.exe程序时会执行cmd.exe程序。
0x02与上文对比,不一样的Shift后门是怎样的呢?实现效果:键入五下Shift执行时,先执行sethc.exe程序,当sethc.exe程序静默退出时,执行cmd.exe程序。
0x03 怀揣着0x02的目标我们开始复现,在网上收集资料时发现,注册表Image File Execution Options下有一个GlobalFlag项值,在MSDN的博客上,发现GlobalFlag由gflags.exe控制。
文章地址:
https://blogs.msdn.microsoft.com/junfeng/2004/04/28/image-file-execution-options/
0x04 下载gflags.exe开始研究,在Silent Process Exit这个选项卡中发现了挺有趣的东西。根据微软官方介绍,从Windows7开始,可以在Silent Process Exit选项卡中,可以启用和配置对进程静默退出的监视操作。在此选项卡中设定的配置都将保存在注册表中。
0x05 填入如上配置后点击应用,开始测试。使用Process Explorer进行检测进程的变化发现键入五下Shift执行时,先执行sethc.exe程序,当sethc.exe程序静默退出时,执行cmd.exe程序。
0x06进一步研究,发现其实是工具帮我们添加并修改了IFEO目录下sethc.exe的GlobalFlag值,如图:
以及SilentProcessExit下ReportingMode和MonitorProcess两个项值,如图:
0x07那么,接下来我们可以修改上文中MonitorProcess值来放我们的后门,例如Powershell反弹shell,配合五下Shift就可以神不知鬼不觉的进行反连。如:键入五下Shift后正常弹粘滞键,关闭之后执行我们的powershell代码,如图:
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
文由贝塔安全实验室