惡意檔案分析
1.惡意檔案描述
2022年8月19日,深信服深盾終端實驗室在運營工作中捕獲到一款功能複雜的新型資訊竊取病毒,該病毒由 C++ 語言編寫,套用了開源軟體 ZLMediaKit 的部分程式碼並在其基礎上開發惡意模組。該程式的釋放的檔案包含具有數字簽名的正常的庫檔案,以及沒有數字簽名但偽裝成正常系統檔案的 exe 程式。
該軟體疑似為 Gitee 上的一個私人的名稱為 Aps 的專案,其所釋放的自行開發或二次開發的檔案中,仍然存在部分除錯資訊。攻擊者在開發時採用強連結的方式,將庫函式的程式碼儘可能多的連結到程式中,增加程式的相容性。
惡意軟體開發者的專案路徑如下“D:\Work\Code\gitee\APS\ApsBuild\”。同時,該惡意軟體還疑似存在未開發完全的遠控功能。
自8月19日深盾實驗室《揭開新型竊密軟體的面紗:偽裝成CDR畫圖應用安裝包》首次披露該病毒,經過一段時間的運營,發現目前已有萬餘臺裝置被感染(資料來源於CNCERT)。
2.惡意檔案分析
惡意軟體存在針對安全軟體的對抗手段。下圖為惡意軟體釋放、執行的程式——SearchIndexerService.exe 的主函式程式碼。該段程式碼的主要功能為,將識別到的安全軟體的程式的 TCP 表項清空,斷開對應程式的 TCP 連線。此行為的目的為,防止安全軟體將惡意樣本上傳至雲端,防止 EDR 與雲端聯動查殺該惡意軟體。
在函式 SearchTcpTableForImageName 中,透過 API 獲取到 TCP 表的表項後,獲取程式的 PID 並利用該 PID 查詢程式的名稱,將獲取到的程式名稱儲存在 This 指標的結構體中。此迴圈遍歷 TCP 表的所有表項。
獲取到的結構體如下圖所示,TCPIP_OWNING_MODULE_SIZE 在 32 位作業系統中為 0x10,因此結構體總大小為 0x28。上圖的 for 迴圈中即遍歷獲取到的每一個結構體。
如下圖所示,dwState 設定為 0xC 即代表刪除對應的 TCP 表項。
一、程式執行流程
程式啟動後,會正常顯示安裝程式結束後的介面。同時,程式會執行 cmd 命令,結束系統安全服務。
同時,程式開始釋放大量的檔案,路徑分別為:C:\Users\Sangfor\AppData\Roaming\Microsoft\Network、C:\Windows\SysWOW64\security 。其中包含眾多有數字簽名正常檔案,以及用於進行惡意行為的 NetworkService.exe 、SearchIndexerService.exe。
plugin 目錄下為病毒要載入的重要 DLL 檔案。
DreamApslop.dll 主要功能為蒐集主機資訊、反除錯以及向攻擊者伺服器傳送竊取到的主機資訊。
libssl-3.dll 、 libcrypto-3.dll 為通訊過程中對資料加密時所需要呼叫的匯出函式的庫檔案。
mk_api.dll 為開源軟體 ZLMediaKit 所提供的匯出函式庫檔案,攻擊者基於此開源庫再開發,增加了惡意程式碼模組。
使用釋放的 NetworkService.exe 啟動程式。
二、釋放的程式的執行流程
建立互斥量,防止程式重複執行。
使用不同的命令列再次啟動,第二個引數為當前程式的視窗控制程式碼,用於接收視窗訊息,後續將用此接收訊息並迴圈執行:
如果 Network 目錄下不存在 para.ini 檔案,則建立一個該名稱的配置檔案。
拼接字串,呼叫開源軟體的匯出函式,並第一次傳送網路請求給攻擊者伺服器,此處的 mk_http_requester_call 為攻擊者自行編寫。
在此函式執行過程中,將會建立諸多執行緒,大多數執行緒為程式的輔助執行緒或 TPPworker,其中一個特殊的執行緒會呼叫 CreateProcess 函式,再次執行一個 NetworkService.exe,引數與本程式相同但傳入的 CreationFlags 中含有 Suspend 屬性。也就意味著,每次呼叫該函式都會向攻擊者傳送蒐集的資訊。
隨後向伺服器傳送一個網路請求,並將接收到的資料儲存到同目錄下的 index.ini 檔案下。
查詢 plugin 目錄下的檔案,並將查詢到的檔案路徑儲存在結構體中。
載入 plugin 目錄下所有的 DLL 檔案,並嘗試呼叫每一個 DLL 檔案的匯出函式 Plugin_Create,並呼叫目標 DLL 的其它匯出函式。
該匯出函式會嘗試載入四個 DLL 檔案,分別為:plugin\\libcrypto-3.dll、plugin\\sqlite3.dll、plugin\\mk_api.dll、plugin\\libssl-3.dll。
隨後獲取磁碟序列號,加密並將資料轉為 base64 後,傳送給目標伺服器。
=
伺服器返回的資料解碼後得到:
同時還蒐集如下資訊:
1. 透過 "cmd.exe /c ipconfig /all" 蒐集所有的網路卡資訊。
2. 透過 "Process32Next"、"GetNativeSystemInfo"獲取當前系統執行的所有程式。
3. 透過 "cmd.exe /c whoami" 獲取當前登入的使用者名稱稱。
4. 透過 "cmd.exe /c netsh wlan show profiles" 獲取無線網路卡配置資訊。
向伺服器傳送的資料包如下:
處置建議
1.避免開啟來歷不明的郵件、連結和附件等,如一定要開啟未知檔案,請先使用防毒軟體進行掃描;
2.定期使用防毒軟體進行全盤掃描。