NSA新型APT框架曝光:DarkPulsar
前言
2017年3月,ShadowBrokers放出了一份震驚世界的機密文件,其中包括兩個框架:DanderSpritz和FuzzBunch。
DanderSpritz完全由外掛組成,用於收集情報、利用漏洞和操控已接管的裝置。它基於Java編寫,提供類似於殭屍網路管理面板的圖形介面以及類似Metasploit工具的控制面板。它還整合了用於非FuzzBunch受控裝置的後門和外掛。
DanderSprit介面
概述
Fuzzbunch為不同的實用程式提供了一個用於互動和協同工作的框架,包含各種型別的外掛,其目的是分析物件、利用漏洞、植入任務等。FuzzBunch框架外掛包中的檔案分為三種類型:
%pluginName%-version.fb
這是框架的實用程式檔案。它從XML複製標頭幷包含外掛的ID。
%pluginName%-version.exe
當FuZZbuNch收到執行命令時,執行此可執行檔案。
%pluginName%-version.xml
此配置檔案描述了外掛的輸入和輸出引數的名稱、型別和描述。這些資訊都可以通過FuzzBunch介面顯示。這種檔案型別劃分規範了預設引數的設定,從而提升了框架的可用性。
ImplantConfig是一個Fuzzbunch可呼叫的工具包,包含一個名為 DarkPulsar 的管理模組,用於管理受控裝置的外掛,用於控制名為“sipauth32.tsp”的遠端控制後門。
它支援以下命令:
Burn RawShellcode/">Shellcode EDFStagedUpload DisableSecurity EnableSecurity UpgradeImplant PingPong
Burn、RawShellcode、UpgradeImplant和PingPong支援移除/升級植入軟體、執行任意程式碼和檢查後門是否已安裝在遠端機器上,其他命令的目的暫不明確。
卡巴斯基實驗室在分析DarkPulsar時發現了幾個用於加密C&C和植入軟體之間流量的常量:
卡巴斯基認為這些常量可以作為進一步深入調查的抓手,所以構建了一個檢測器。幾個月後,神祕的DarkPulsar後門浮出水面,而且包含32位和64位版本。研究人員發現大約50個案例,分別位於俄羅斯、伊朗和埃及,常見感染Windows 2003/2008伺服器,涉及 核能 、 電信 、 IT 、 航空航天 和 研發 等領域。
DarkPulsar技術亮點
DarkPulsar植入的是一個動態庫檔案,從其工作負載匯出的函式來看可以實現以下幾類功能:
兩個匿名函式用於在系統中安裝後門。
名稱與TSPI(電話服務提供程式介面)操作相關的函式,用於確保後門存在於自動執行列表中並自動啟動。
名稱與SSPI(安全支援提供程式介面)操作相關的函式,主要用於執行惡意程式碼。
SSPI和TSPI介面的實現很簡單,使得DarkPulsar匯出的函式與介面函式的名稱相同即可,只不過用惡意程式碼替代了正確的電話服務。
這個動態庫通過匿名函式安裝在系統中,呼叫具有管理員許可權的 Secur32.AddSecurityPackage
以及引數中它自己庫的路徑來啟動後門,使得 lsass.exe
將DarkPulsar載入為SSP/AP並呼叫其匯出的函式 SpLsaModeInitialize
,由DarkPulsar初始化後門。其中AddSecurityPackage用於將程式碼注入到 lsass.exe
。它還在 HKLM\Software\Microsoft\Windows\CurrentVersion\Telephony\Providers
中添加了其庫檔名。
這樣一來Telephony API(TapiSrv)開始載入隨著遠端訪問連線管理器(RasMan)服務啟動開始載入,將該啟動型別設定為“自動”。載入電話服務提供商的庫時,TapiSrv呼叫 TSPI_lineNegotiateTSPIVersion
,其中包含AddSecurityPackage呼叫以將惡意程式碼注入到 lsass.exe
中。
DarkPulsar通過為 SpAcceptLsaModeContext
(負責身份驗證的函式)安裝鉤子來實現惡意功能。此類注入行為在程序 lsass.exe
中的多個系統身份驗證資料包中進行,並允許Darkpulsar根據以下協議控制身份驗證過程:
1、Msv1_0.dll – 用於NTLM協議, 2、Kerberos.dll – 用於Kerberos協議, 3、Schannel.dll – 用於TLS / SSL協議, 4、Wdigest.dll – 用於摘要協議, 5、Lsasrv.dll-用於談判協議。
在完成這個過程之後,Darkpulsar能夠將惡意軟體流量嵌入到系統協議中。由於此類網路活動是根據系統標準進行的,因此它只會反映在系統程序中,也就是說它使用了為上述協議保留的系統埠,而不會妨礙其正常執行。
成功連線到DarkPulsar植入軟體的網路流量
控制身份驗證過程的第二個優勢是可以繞過輸入使用者名稱和密碼保護,以獲取對需要身份驗證的物件的訪問許可權,例如程序列表、遠端登錄檔、SMB檔案系統。傳送Darkpulsar的DisableSecurity命令後,受控裝置的後門鉤子將呼叫 SpAcceptLsaModeContext
函式,使得該函式傳遞的憑據有效,然後系統將提供對客戶端的受保護物件的訪問許可權。
使用DarkPulsar
Darkpulsar-1.1.0.exe提供基於“一個命令+一次啟動”原則構建的管理介面。要執行的命令必須在配置檔案Darkpulsar-1.1.0.9.xml中指定,或者作為命令列引數指定,至少詳細說明:
目標機器是使用32位還是64位系統;
協議(支援SMB、NBT、SSL、RDP協議)以提供命令和埠號;
用於解密會話AES金鑰的私有RSA金鑰。
Darkpulsar-1.1.0是Fuzzbunch框架的外掛,可以管理引數和協調不同的元件。以下是Fuzzbunch中的DisableSecurity命令例項:
下面是執行DisableSecurity之後的程序表例項,允許執行任何沒有有效憑據的外掛,並通過常規系統功能(遠端登錄檔服務)進行操作:
DanderSpritz
DanderSpritz是用於控制受感染機器的框架,與FuZZbuNch不同,因為後者為具有特定功能的後期開發階段提供了部分工具包,例如DisableSecurity和DarkSeuls的EnableSecurity。
DanderSpritz適用於更大範圍的後門,在受控裝置中使用PeedleCheap來啟動攻擊者的惡意軟體。PeddleCheap是DanderSpritz的外掛,可用於配置植入軟體並連線到受感染的機器。建立連線後,所有DanderSpritz後期開發功能均可用。
這就是EDFStagedUpload模式中的DarkPulsar通過植入惡意軟體感染裝置的渠道:PCDllLauncher(Fuzzbunch的外掛)在受控裝置一側部署PeddleCheap植入軟體,DanderSpritz提供使用者友好的開發介面。所以,PCDllLauncher的全名是’PeddleCheap DLL Launcher’。
整合DanderSpritz方案、PeddleCheap外掛、DarkPulsar外掛和PCDllLauncher到一起實現惡意功能共包含四個步驟:
通過FuZZbuNch,執行命令EDFStagedUpload以啟動DarkPulsar。
在DanderSpritz中,執行命令pc_prep(PeedelCheap Preparation)以準備惡意程式碼和要啟動的庫檔案。
在DanderSpritz中,執行命令pc_old(這是命令pc_listen -reuse -nolisten -key預設的別名),這會將其設定為等待來自Pcdlllauncher的socket。
通過FuZZbuNch啟動Pcdlllauncher並指定使用ImplantFilename引數中的命令pc_prep準備的有效路徑。
DanderSpritz
檔案系統外掛
總結
FuzzBunch和DanderSpritz框架提供了很大的靈活性,包含諸多專為不同任務設計的外掛,比如說FuzzBunch外掛負責監控和攻擊裝置,DanderSpritz框架中的外掛則是為管理已感染的受害者而開發的。
DarkPulsar後門的發現有助於理解它作為兩個洩露框架之間的橋樑作用,以及它們如何成為同一攻擊平臺的一部分。這些平臺是為長期潛伏攻擊而設計的,從DarkPulsar的永續性和潛伏能力(例如將其流量封裝到合法協議中並繞過密碼保護以通過身份驗證)可以看出背後的開發者非常之專業。
檢測惡意網路活動
在受感染的計算機中執行EDFStagedUpload時,會建立永久連線,這是出現埠445流量的原因。 lsass.exe
中還出現了一對繫結的socket:
當DanderSpritz通過PcDllLauncher外掛部署PeddleCheap的惡意程式碼時,網路活動會急劇增加:
當終止與受感染計算機的連線時,網路活動將停止,並且只保留 lsass.exe
中兩個繫結socket: