KillSuitKillSuit (KiSu)是一個不尋常的插件,一旦部署在受害設備上,它的整個任務就是運行其他插件,為持久性和規避提供框架。一些DanderSpritz 插件可以單獨運行,也可以通過KillSuit 調用。它的設計使得在受害者端運行的每個KillSuit 實例都可以託管一個工具(例如下面的MistyVeal);因此,很容易發生受害者設備上安裝了多個KillSuit 實例,每個實例都託管不同的post-exploitation工具。每個KillSuit 實例的數據,包括其所有模塊,都在註冊表項中保持加密。這是KillSuit 獨有的功能,通常不是DanderSpritz 插件的功能。
DoubleFeature 記錄了大量與KillSuit 相關的數據。實際上,DoubleFeature 內部也有一些死代碼,允許刪除、升級和推送模塊更新到運行的KillSuit 實例中。雖然“KillSuit”是在DoubleFeature 內部和攻擊者實際調用的外層DanderSpritz CLI 中使用的名稱,但實際上內部使用的Plugin 文件夾名稱是DecibalMinute(簡稱DeMi)。 Python UI 邏輯主要可以在3 個腳本中找到,不出所料,它們位於在插件的pyscripts 目錄中。
“Mcl_Cmd_DiBa_Tasking.py”:處理KiSu 安裝、卸載和升級。作為參數,此腳本接受要使用的持久性機制的類型;有4 種類型的持久性,命名為“Default”, “Launcher”, “SoTi” 和“JuVi”。我們將在下面進一步詳細說明它們的內部工作原理。在底層,Python UI通過RPC調用(RPC_INFO_INSTALL)實現這一點。
“Mcl_Cmd_KisuComms_Tasking.py”:用於與受害者端正在運行的KillSuit實例建立連接,並提供動態加載和卸載模塊/驅動程序的功能。
“_KiSu_BH_enable.py”:KillSuit 的一個內部驅動程序稱為“BroughtHotShot”,簡稱BH。此腳本不會啟用它,但會檢查它是否已被啟用(通過DanderSpritz 命令可用-command kisu_install -isloaded 和可用-command kisu_install -load)。如果要啟用驅動程序,則需要執行KiSu_BH_enable.py on,禁用則是KiSu_BH_enable.py off。
“Mcl_Cmd_KiSuFullList_Tasking.py”:生成目標設備上當前KiSu 安裝的列表。在後台,這是通過調用kisu_list DanderSpritz 命令完成的,然後對於每個返回的安裝,通過DanderSpritz 命令kisu_config -instance id -checksum 來獲取它的配置。此配置包含各種技術細節,例如KillSuit 版本、安裝的註冊表項和值、內核和用戶模塊的加載程序、用於保存託管插件模塊的加密虛擬文件系統的目錄、已被安裝的合法驅動程序通過將託管插件注入其中,以及在受害者上啟動KillSuit 時內部使用的標誌而受害。
每個KillSuit 實例都有一個內部記錄,其中包含該實例中託管的工具的“ID”,每個工具的ID 都是相同的。我們發現DoubleFeature 內部引用了以下可能的實例:
PC (PeddleCheap) –0x7A43E1FA:提供一個交互式shell和一些長期持久性的功能。本身也可用作post-exploitation工具,並且可以在受感染的主機上安裝其他KillSuit 實例。
UR (UnitedRake) :0x91FD378(同上);
STLA (StrangeLand)/GROK –0x1A0F5582,這些都是鍵盤記錄器,他們的加密日誌存儲在名稱格式為tm154*.da 的文件中;
SNUN (SnuffleUnicorn) –0x23A4732A;
WRWA (WraithWrath) –0x502BB710;
SLSH (SleepySheriff) –0x32A7032D;
WORA (WoozyRamble) –0x68A40E49;
TTSU (TiltTsunami) -0x8F1D6511;
SOKN (SoberKnave) -0x8F1D6510:該工具具有通過未使用/禁用的WiFi卡進行數據溢出的功能,它被用於氣隙系統(airgapped)目標。
MAGR (MagicGrain) -0x437e528e8;
DODA (DoubleDare) -0x1C9D4A8A;
SAAN (SavageAngel) –0x9D801C63;
MOAN (MorbidAngel) –0x9D801C62;
DEWH (DementiaWheel)–0xAE37690B:黑客工具也稱為“Fanny”;
CHMU (ChinMusic) –0x39B2DA17;
MAMO (MagicMonkey) –0x2D473AB3;
MABE (MagicBean) -0x8675309 :用於中間人的WiFi
DiveBarDiveBar(DiBa)是DoubleFeature對負責持久化方法(例如“KSLA”(KillSuit loader)、“SolarTime”、“JustVisiting”和“DoctorOcopus”)部分的命名。
我們上面提到的不同持久化方法有:
KSLA (Launcher):只需在受害系統上安裝一個新的驅動程序並將其用於持久性。這種情況一直持續到微軟引入驅動程序簽名強制執行(DSE),它不允許未簽名的驅動程序運行。 Windows Vista及以後版本不支持此方法。
JustVisiting (JuVi):為了繞過DSE,這種持久性機制濫用了簽名驅動程序ElbyCDIO.sys 中的一個已知漏洞,該漏洞是RedFox 軟件“CloneCD”的一部分。在系統啟動時加載和利用易受攻擊的驅動程序。以這種方式獲得的提升權限會用於將DiveBar 的持久化驅動程序添加到LSAExtensionConfig/interfaces,此方法僅適用於Windows 8操作系統。
SolarTime (SoTi):一種高級的持久性機制,通過修改一個受害者係統的VBR 來工作。僅與具有FVEBOOT 和特定引導扇區格式的NTFS 文件系統兼容。 SoTi 將引導扇區的哈希與下面列出的“已知良好”哈希列表進行比較。
如上所述,KillSuit 在受害者註冊表中保存了一個叫做“模塊存儲”的內容。根據註冊表的合法目的,惡意軟件使用註冊表來存儲簡單的配置數據;但隨著時間的流逝,越來越多的惡意軟件開始使用註冊表來存儲任意數據。這樣,註冊表就會包含模塊存儲的整個虛擬文件系統,該模塊存儲是通過連接兩個硬編碼字典中偽隨機選擇的兩個單詞生成的。第一個單詞的可能值列示如下:
第二個單詞的可能值:
卡巴斯基報導過的“GrayFish”的架構和KillSuit一樣:
GrayFish 的架構
圖中資源與DiveBar資源一一對應:
102 – fvexpy.sys – F7F382A0C610177431B27B93C4C87AC1;
103 – mpdkg32.dll – 0182DBF3E594581A87992F80C762C099;
104 – BroughtHotShot driver – drmkflt.sys – 9C6D1ED1F5E22BF609BCF5CA6E587DEC/D3DF8781249F2C404C4935CA9FFB1155;
107 – New VBR (for SolarTime);
110 – mpdkg64.dll – F01525C9EF763C49E28CEC6C2F6F6C60;
114 – Elby loader – fhsvcapi.dll – 6156E50571571B233019C4EBB472899D;
115 – Elby driver – AAA8999A169E39FB8B48AE49CD6AC30A;
DiveBar並不局限於濫用ElbyCDIO.sys,它還會搜索受害者設備上已經存在的易受攻擊的良性驅動程序,以用作託管插件代碼的“啟動器”。在內部,這種被DiveBar 選擇來啟動KillSuit 實例的良性驅動程序被稱為“thunk”。對於每個KillSuit 實例,DoubleFeature 都會報告用於加載其內核模式模塊的thunk 漏洞利用dll,簡稱KML(內核模塊啟動器)。
FlewAvenueFlewAvenue(FlAv)是一個IPv4驅動程序,為其他工具提供隱蔽的網絡訪問。它提供了不同的網絡功能,如DNS查詢和ICMP 回顯(“ping”)。
FlewAvenue 的指標如下:
“ntevt.sys”——此工具驅動程序的名稱
DuneMessiahDoubleFeature 診斷僅提供有關此工具的非常少的信息。對於此工具,DoubleFeature 報告了受害設備上的實例在內部使用的偽隨機生成的“事件名稱”,以及一些註冊的KillSuit 實例。
CritterFrenzyDoubleFeature 也僅報告有關此插件的最少信息,從DoubleFeature收集到的關於這個工具的信息來看,它似乎是KillSuit的另一個實例,可能是過去使用過,ID為333。
CritterFrenzy 指標如下:
“MPDKH32”——此工具的名稱
MistyVealMistyVeal (MV) 是一種“驗證器”植入程序,這意味著它用於驗證目標系統確實是真正的受害者,而不是檢測環境。它作為Internet Explorer 瀏覽器助手對象實現(這些通常用於擴展IE 功能;例如,Adobe 的IE 的Acrobat 插件就是一個瀏覽器助手對象)。 MistyVeal 也是Equation Group 最初的“Double Fantasy”植入程序的一部分,它是UnitedRake 的前身“netdlr.sys”——該工具驅動程序的名稱
MistyVeal指標如下所示:
{B812789D-6FDF-97AB-834B-9F4376B2C8E1} ——用於GUID和版本的MV CLSID
DiceDealerDiceDealer (DD) 是DiveBar 執行的所有安裝和卸載所產生的日誌數據的解析工具(這與UnitedRake有關,因為通常使用DiveBar來安裝它)。如果你想手動解析DiceDealer 日誌文件,最簡單的方法是將日誌文件複製到DiceDealerReader 工具所在的同一目錄中。讀取器依賴於該目錄中的幾個文件,如果它們不存在,將無法解析日誌。
PeddleCheapPeddleCheap ****(PC) 是最先在受害設備上運行的工具之一,可用於引導一次完整的DanderSpritz 安裝。 PeddleCheap 包含的功能非常少,允許攻擊者連接到受害設備並遠程安裝和配置允許進一步post-exploitation功能的植入程序,包括一個完整安裝DanderSpritz 框架。 PeddleCheap 通常通過多種方法注入到lsass.exe中,包括DOUBLEPULSAR 後門。
PeddleCheap 用戶界面
PeddleCheap 指標如下:
{A682FEC0-333F-B16A-4EE6-24CC2BAF1185}——用於GUID和版本的PC CLSID
DoubleFeature 的Rootkit 控制流程
DoubleFeature (hidsvc.sys) 使用的rootkit 在加載時執行以下操作:
1.它創建了一個未命名的設備對象,但註冊了IRP 調度功能。
2.它分派IOCTL 請求。
3.它專門從事Windows 內核代碼的運行時修復。
4.它為用戶模式模塊運行內核API。
Rootkit 在加載到內存之前由用戶模式DLL 修復,這樣做是為了插入用戶模式進程的PID,以便rootkit 知道要隱藏哪個進程。然後,rootkit 通過KeAttachProcess 附加到這個相同用戶模式進程中。
Rootkit 使用HalAllocateCommonBuffer 或MmIsAddressValid 查找API 函數的動態地址(這些函數的地址是之前通過調用MmGetSystemRoutineAddress 獲得的)。它使用加密的堆棧字符串,這些字符串在需要使用的基礎上解密,並在使用後再次立即加密,類似於我們之前描述的DoubleFeature 用戶模式組件中使用的方法。
為了避免被檢測到,rootkit 還會盡可能隱秘地創建自己的驅動程序對象。首先,rootkit 不是直接創建對象,而是先創建Device\\NULL 的句柄,然後通過插入自己的名稱為driver\\msvss 的設備對象來劫持其FileHandle。最後,它使用此FileObject 發送IRP_MJ_Create 請求以獲得新創建的驅動程序對象的句柄。其次,rootkit 調用ObMakeTemporaryObject 並從其父對像管理器目錄中刪除對象的名稱,有效地將其與操作系統內部用於跟踪加載的驅動程序的結構斷開鏈接。由於Windows 操作系統處理驅動程序的方式,這會導致驅動程序在後台運行,而診斷工具和研究人員將無法找到驅動程序。
新設備的IRP_MJ_DEVICE_CONTROL 處理程序函數包含可以從用戶模式DLL 發送的不同IoControl 代碼(例如0x8589240c 用於截斷文件,0x85892408 用於在內核模式下執行API 調用並將輸出發送回用戶模式進程)。