該黑客組織發(fā)起的攻擊事件的獨特之處在于如何安裝CARBANAK后門進(jìn)行權(quán)限維持。Mandiant(美國麥迪安網(wǎng)絡(luò)安全公司)分析發(fā)現(xiàn)該組織利用shim數(shù)據(jù)庫在不同的系統(tǒng)環(huán)境下實現(xiàn)權(quán)限維持。shim將惡意的內(nèi)存補(bǔ)丁注入到服務(wù)控制管理器(“services.exe”)進(jìn)程中,然后產(chǎn)生一個CARBANAK后門進(jìn)程。
Mandiant(美國麥迪安網(wǎng)絡(luò)安全公司)分析指出,F(xiàn)IN7還使用這種技術(shù)來安裝payment card采集工具用于權(quán)限維持。這是FIN7黑客組織以前的方法,為了注入惡意進(jìn)程維持權(quán)限會先安裝一個惡意的Windows服務(wù)。
Shim功能概要(解決古老的程序兼容問題)
引用Microsoft的官方說明,程序兼容Shim(application compatibility shim)是一個可以通過hook透明攔截API的小型函數(shù)庫,可以篡改傳輸函數(shù)的參數(shù)值,可以處理一些自己的操作,也可以執(zhí)行其他的操作(例如存儲在當(dāng)前系統(tǒng)中的其他位置的代碼)。
現(xiàn)如今,Shim的存在主要解決的問題是處理一些古老應(yīng)用程序的兼容性問題(譯者注:部分古老的應(yīng)用程序采用一些過時或已被棄用的API,都過Shim可以hook這些API替換為較流行的函數(shù),進(jìn)而解決程序的兼容性問題)。可以看到,Shim是一個合法的功能,出于一個善意的目的,去解決系統(tǒng)迭代產(chǎn)生的問題,由于技術(shù)的兩面性,其功能有可能被濫用執(zhí)行一些惡意的操作。Mandiant(美國麥迪安網(wǎng)絡(luò)安全公司)的安全顧問曾經(jīng)在BruCon和BlackHat討論過Shim數(shù)據(jù)庫被濫用可能產(chǎn)生的安全問題。
Shim數(shù)據(jù)庫注冊表
在當(dāng)前操作系統(tǒng)上注冊shim數(shù)據(jù)庫有多種方式,其中一種方法就是使用系統(tǒng)內(nèi)置的“sdbinst.exe”命令行工具。圖1展示的就是使用“sdbinst.exe”命令行工具注冊shim時創(chuàng)建的兩個注冊表鍵。

圖1:Shim數(shù)據(jù)庫注冊表鍵
一旦shim數(shù)據(jù)庫在系統(tǒng)上成功注冊,shim數(shù)據(jù)庫文件(后綴名為“.sdb”)將被復(fù)制到"C:\Windows\AppPatch\Custom"(32位shim)目錄下(64位shim將被復(fù)制到"C:\Windows\AppPatch\Custom\Custom64"目錄下)。
惡意Shim數(shù)據(jù)庫安裝
在操作系統(tǒng)上安裝和注冊惡意shim數(shù)據(jù)庫,F(xiàn)IN7使用自定義經(jīng)過Base64編碼的PowerShell腳本,該腳本的功能是運行“sdbinst.exe”命令行工具注冊一個經(jīng)過修改插入惡意代碼的shim數(shù)據(jù)庫,圖2為經(jīng)過還原的FIN7 PowerShell腳本中解碼的部分截圖,列出了執(zhí)行的命令及參數(shù)。

圖2:FIN7 PowerShell腳本安裝自定義Shim數(shù)據(jù)庫文件的部分截圖
FIN7黑客組織使用“sdbinst.exe”命令行工具在目標(biāo)操作系統(tǒng)上創(chuàng)建和注冊不同命名規(guī)則的shim數(shù)據(jù)庫文件。但有一個共同點是,都會創(chuàng)建一個后綴名為“.tmp”的Shim數(shù)據(jù)庫文件(如圖3所示)。

圖3:惡意Shim數(shù)據(jù)庫文件示例
當(dāng)前的惡意shim數(shù)據(jù)庫文件再操作系統(tǒng)上注冊后,一個后綴名為“.sdb”,文件名為隨機(jī)GUID值的shim數(shù)據(jù)庫文件(惡意文件)將在其64位的默認(rèn)目錄("C:\Windows\AppPatch\Custom\Custom64")下創(chuàng)建,如圖4所示。該shim數(shù)據(jù)庫文件具有與最初在“C:\Windows\Temp”目錄下創(chuàng)建的文件具有相同的MD5 hash值。

圖4:注冊后的shim數(shù)據(jù)庫文件
除此之外,與之相關(guān)的注冊表鍵也將在shim數(shù)據(jù)庫注冊表中創(chuàng)建。圖5展示了與此shim安裝相關(guān)的注冊表鍵值關(guān)系。

圖5:注冊表鍵值關(guān)系
用于shim數(shù)據(jù)庫注冊表的數(shù)據(jù)庫描述(DatabaseDescription)“Microsoft KB2832077”是很有意思的,因為這個KB編號不是一個Microsoft官方發(fā)布的更新補(bǔ)丁編號。如圖6所示,該描述出現(xiàn)在受影響的操作系統(tǒng)中的Windows控制面板的已安裝程序列表中。

圖6:作為已安裝應(yīng)用程序的Shim數(shù)據(jù)庫
惡意Shim數(shù)據(jù)庫細(xì)節(jié)分析
經(jīng)過研究分析,Mandiant(美國麥迪安網(wǎng)絡(luò)安全公司)分析出FIN7黑客組織向全版本操作系統(tǒng)
(32位、64位)中的“services.exe”中注入自定義的Shim數(shù)據(jù)庫(將原生Shim數(shù)據(jù)庫文件植入CARBANAK后門payload)。當(dāng)操作系統(tǒng)啟動“services.exe”進(jìn)程執(zhí)行時,CARBANAK后門payload將會執(zhí)行。shim數(shù)據(jù)庫文件包含第一階段加載的shellcode,其余的shellcode payload存儲在注冊表鍵中。圖7列出了FIN7黑客組織利用的解析shim數(shù)據(jù)庫文件。

圖7:解析shim數(shù)據(jù)庫
對于第一階段加載的程序,F(xiàn)IN7黑客組織改寫了services.exe進(jìn)程中相對虛擬地址 (RVA)“0x0001407c”對應(yīng)“ScRegisterTCPEndpoint” 函數(shù)的代碼,執(zhí)行帶有惡意shellcode的shim數(shù)據(jù)庫。新的“ScRegisterTCPEndpoint”函數(shù)(shellcode)包含了對“\REGISTRY\MACHINE\SOFTWARE\Microsoft\DRM”路徑的引用。該路徑下的內(nèi)容為存貯在操作系統(tǒng)中其余的惡意shellcode和CARBANAK DLL(FIN7黑客組織使用的后門程序)payload。
圖8展示了在恢復(fù)的shim數(shù)據(jù)庫文件中解析補(bǔ)丁結(jié)構(gòu)的部分截圖

圖8:從shim數(shù)據(jù)庫文件中解析補(bǔ)丁結(jié)構(gòu)
存儲在注冊表“HKLM\SOFTWARE\Microsoft\DRM”中的shellcode可以利用ntdll中的API函數(shù)“RtlDecompressBuffer”進(jìn)行解壓縮出payload。該程序在執(zhí)行CARBANAK DLL(FIN7黑客組織使用的后門程序)payload的入口函數(shù)之前會休眠4分鐘。一旦payload加載進(jìn)內(nèi)存,就會創(chuàng)建一個包含CARBANAK DLL名為“svchost.exe”的新進(jìn)程。
總結(jié)一下完整的攻擊過程
圖9是一個完整的行為流程圖,利用shim數(shù)據(jù)庫向64位的“services.exe”進(jìn)程中注入shellcode最終實現(xiàn)權(quán)限維持。

圖9:Shim數(shù)據(jù)庫代碼注入過程
如何檢測電腦是否被該惡意代碼感染?
Mandiant(美國麥迪安網(wǎng)絡(luò)安全公司)推薦了以下幾種方式檢測操作系統(tǒng)是否受到這種惡意Shim數(shù)據(jù)庫的感染。
1.監(jiān)控默認(rèn)shim數(shù)據(jù)庫下新創(chuàng)建的shim數(shù)據(jù)庫文件:“C:\Windows\AppPatch\Custom”(32位),“C:\Windows\AppPatch\Custom\Custom64”(64位)
2.監(jiān)控以下注冊表鍵的創(chuàng)建或修改事件:“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Custom”和“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\InstalledSDB”
3.監(jiān)控進(jìn)程執(zhí)行事件和惡意使用“sdbinst.exe”命令行工具執(zhí)行的參數(shù)的異常行為。
|