Pikabot 是一款載入器恶意程式,在 2023 年第一季經常被我們列在「Water Curupira」入侵集合 (intrusion set) 底下持續追蹤的駭客集團用於垃圾邮件攻擊行動當中,不過在 6 月底沉寂了一段時間,一直到 2023 年 9 月初為止。先前就有曾经提到这个载入器与 Qakbot 非常相似,然而後者已經在 2023 年 8 月遭執法單位。2023 年最後一季,Pikabot 相關的网路钓鱼行動大增,而此時正值 Qakbot 被執法單位瓦解之際,似乎意味著 Pikabot 有可能是 Qakbot 的替代品 (DarkGate 同樣也是另一個臨時替代品)。
Pikabot 的幕後集團發動了一波波的网路钓鱼行動,使用兩個主要元件 (載入器与核心模組) 來攻擊受害者,在未經授權的情況下取得遠端存取權限,同時還會与幕後操縱 (CC) 伺服器建立連線讓駭客能執行任意指令。Pikabot 是一個精密的多重階段恶意程式,同一個檔案當中即包含了載入器和核心模組,此外還有一段解密後的 shellcode,負責從其資源區段解密出另一個 DLL 檔案 (也就是實際的惡意檔案)。
基本上,Water Curupira 的攻擊行動是為了在系統植入 Cobalt Strike 之類的後門程式,進而演變成 Black Basta 勒索病毒攻擊 (無獨有偶,Black Basta 也在 2023 年 9 月重新營運)。雖然駭客在 2023 年第 3 季的前幾個禮拜發動了好幾波 DarkGate 垃圾邮件攻击行动以及少量的 IcedID 攻擊行動,但之後便全都改為散播 Pikabot。
Pikabot 是經由垃圾邮件來突破防線進入受害系統,這些垃圾邮件內含一個壓縮檔或 PDF 附件檔案,這一點与 Qakbot 的行為和攻击手法相同。

经由电子邮件突破防线
骇客会透过的方式來散發垃圾邮件,這是一種駭客在既有的電子郵件討論串 (有可能是竊取自先前的受害者) 當中回覆訊息,讓收件人以為駭客的郵件是在回覆先前的討論,進而騙過收件人的一種技巧。這種技巧可提高收件人點選郵件內隨附惡意連結或附件檔案的機率。駭客在發送這類郵件時,會使用先前討論串中出現過的寄件人名稱,但其背後的郵件地址卻是新註冊的網域或是免費郵件服务的網域。郵件內容會包含原始討論串的大部分內容 (包含郵件主旨在內),但會在內容的最頂端加上一段簡短訊息,請收件人開啟隨附的檔案。
這個附件檔案有時是一個受密碼保護的 ZIP 壓縮檔 (裡面包含一個 IMG 檔案),有時則是一個 PDF 檔案。駭客會在郵件訊息當中提供解壓縮的密碼。請注意,附件檔案的名稱及密碼在每一封郵件都不同。


使用 PDF 附件檔案的電子郵件,會有一段簡短說明請收件人查看或檢視隨附的檔案。
第一阶段攻击
郵件隨附的壓縮檔內包含了一個重度加密編碼的 JavaScript (JS) 腳本,檔案大小超過 100 KB。受害者一旦執行了這個腳本,它就會視情況執行一系列指令。


脚本首先尝试使用 cmd.exe (命令提示字元) 來執行指令。如果不成功,就會繼續執行以下步驟:在命令視窗當中輸出一個預先指定的字串,接著嘗試使用該字串來 ping 一下某個特定目標。如果 ping 不成功,腳本接著使用 Curl.exe 從某個外部伺服器下载 Pikabot 惡意檔案,將檔案儲存到系統的暫存目錄。
接下來,腳本會再重新嘗試 ping 指令。如果重新嘗試還是不成功,那就使用 rundll32.exe 來執行前面下载的 Pikabot 惡意檔案 (一個 .dll 檔案) 並指定「Crash」作為輸出參數。在一列指令的之後,腳本就會結束並傳回指定的代碼:ciCf51U2FbrvK。
除了上述做法之外,我們還觀察到一些其他案例使用另一種攻擊程序,以更直接的方式來植入惡意檔案。和前面一樣,駭客先使用類似的网路钓鱼技巧來誘騙受害者下载並執行惡意附件。同樣地,附件是一個受密碼保護的壓縮檔,解壓縮密碼也隨附在郵件正文內。
但解壓縮出來的不是一個惡意腳本,而是一個 IMG 檔案。這個檔案內部又包含了兩個檔案:一個是偽裝成 Word 文件的捷徑 (LNK) 檔案,另一個是 DLL 檔案,後者就是 Pikabot 惡意檔案:

有別於前面看到的 JS 腳本,這種攻擊程序的作法直接了當,就連執行惡意檔案時也是很直接。
一旦受害者被騙執行了 LNK 檔案,它就會使用 rundll32.exe 來執行 Pikabot 的 DLL 惡意檔案並且指定「Limit」作為輸出參數。
前面提到,有時垃圾邮件會使用 PDF 檔案作為附件,此時它會偽裝成一個存放在 Microsoft OneDrive 上的檔案,讓收件人不會懷疑附件的正當性。這樣做的主要目的是要誘騙受害者點選 PDF 檔案下载按鈕,但實際上它是恶意程式的下载連結。

當使用者點選下载按鈕時,就會連上惡意網址去下载一個惡意的 JS 檔案 (可能跟前面的 JS 檔案類似)。
像這樣經由 PDF 附件檔案散播 Pikabot 的案例是比較近期的作法,2023 年第 4 季才開始出現。
我们也发现恶意下载器还出现过其他变种会使用阵列和阵列操作当障眼法:
巢状的函式使用了「辫耻蝉丑」和「蝉丑颈蹿迟」阵列操作让程式码结构看起来更复杂,藉此掩盖执行流程,增加分析的困难度。从前面的脚本可以看到,骇客运用了多个下载网址、使用 mkdir 指令动态随机建立目录,并且使用 Curl.exe 指令,这全部都包装在另一个阵列当中。
JavaScript 腳本會執行多道指令來嘗試用 Curl.exe 從不同的外部網站取得惡意檔案,然後儲存在 mkdir 建立的随机目录当中。

后面还会使用 rundll32.exe 档案来执行恶意档案匯出的函式。

Pikabot 惡意檔案
我們分析了圖 6 的壓縮檔中解出來的 DLL,發現它是一個 32 位元 DLL 檔案,共匯出 1,515 個函式。若呼叫其匯出的「Limit」函式,就會解密出一段 shellcode 來執行,這用來判斷它所在的處理程序是否在除錯環境內執行,它會呼叫 Windows API NtQueryInformationProcess 兩次,第一次呼叫會將旗標設為 0x7 (ProcessDebugPort),第二次會設為 0x1F (ProcessDebugFlags)。這段 shellcode 還會解密出另一個 DLL 檔案,並將它載入記憶體中,最後再將它執行。

解密後的 DLL 檔案會再執行一段反制分析的程序,藉由載入錯誤的函式庫和其他垃圾資料來偵測沙盒模擬環境。這段程序似乎是從。
資安防護/虛擬機器/沙盒模擬 DLL 檔案 | 真正 DLL 檔案 | 假的 DLL 檔案 |
---|---|---|
cmdvrt.32.dll | kernel32.dll | NetProjW.dll |
cmdvrt.64.dll | networkexplorer.dll | Ghofr.dll |
cuckoomon.dll | NlsData0000.dll | fg122.dll |
pstorec.dll | ? | ? |
avghookx.dll | ? | ? |
avghooka.dll | ? | ? |
snxhk.dll | ? | ? |
api_log.dll | ? | ? |
dir_watch.dll | ? | ? |
wpespy.dll | ? | ? |
表 1:載入 DLL 檔案來偵測沙盒模擬分析環境。
在執行完反制分析的程序之後,恶意程式接著從它的資源區段載入一組 PNG 圖片,這些圖片含有核心模組的一段加密過的程式碼,接著將它解密。核心模組解密之後,Pikabot 注入器會建立一個暫停狀態的處理程序 (%System%\SearchProtocolHost) 並且將核心模組注入其中。注入器使用間接的系統呼叫來隱藏注入程式碼的動作。

接下來,恶意程式首先要解析出必要 API 的位址,由於每個 API 都有對應的雜湊碼 (0xF4ACDD8、0x03A5AF65E 和 0xB1D50DE4),Pikabot 會透過兩個函式來解析出以下三個必要的 API 位址:GetProcAddress、LoadLibraryA 和 HeapFree。这个流程是藉由查看 kernel32.dll 匯出的函式來達成。其餘用到的 API 則是透過 GetProcAddress 并搭配解密字串来解析位址。其餘相关字串也会在执行时期用到之前解密。

Pikabot 的核心模組會檢查系統使用的語言,如果是以下任何一個語言就終止執行:
- 俄羅斯文 (俄羅斯)
- 烏克蘭文 (烏克蘭)
- ??
接下來,它會建立一個名稱寫死的 mutex:{A77FC435-31B6-4687-902D-24153579C738} 来确认自己只有一个执行个体正在系统上执行。
核心模組的下一階段是取得有關受害系統的詳細資料並傳送到 CC 伺服器。蒐集到的資料採用 JSON 格式來儲存,每個資料項目都使用?wsprintfW 函式來將其位置填滿。竊取到的資料長得像圖 14 中的樣子,只不過圖中的資料尚未加密:

Pikabot 似乎有一個二進位版本,還有一個攻擊行動識別碼 (ID)。JSON 資料中有兩個鍵值 (key):0fwlm4g 和 v2HLF5WIO,后者似乎是攻击行动识别码。
恶意程式會建立一個具名管路 (named pipe) 並用它來暫時儲存下列處理程序蒐集到的額外資訊:?
- whoami.exe /all
- ipconfig.exe /all
- netstat.exe -aon
回传的每一项资讯在处理程序执行之前都会先加密。
此外,也会蒐集一份系统上正在执行的处理程序清单,并且将清单加密,其做法是先呼叫 CreateToolHelp32Snapshot 然后再透过 Process32First 与 Process32Next 来建立清单。
當所有資訊都蒐集完成後,資訊就會被傳送至下列其中一個 IP 位址,位址後面會再加上一段網址:肠别谤惫颈肠辞产谤补肠丑颈补濒/辞滨笔7虫贬86顿窜6丑产?惫别谤尘颈虫鲍苍颈苍迟别谤尘颈虫别诲=产别补迟别谤蝉痴别谤诲颈驳谤颈蝉测&补尘辫;产补肠办辞蹿蹿=9锄贵笔厂谤:?。
- 70[.]34[.]209[.]101:13720
- 137[.]220[.]55[.]190:2223
- 139[.]180[.]216[.]25:2967
- 154[.]61[.]75[.]156:2078
- 154[.]92[.]19[.]139:2222
- 158[.]247[.]253[.]155:2225
- 172[.]233[.]156[.]100:13721
不过,在本文撰写当下,这些网站已经都无法存取。
CC 伺服器与衝擊
正如前面提到,Water Curupira 會在攻擊行動中植入 Cobalt Strike 之類的後門程式,進而演變成 Black Basta 勒索病毒攻擊。正因為它可能散播 Black Basta 這類精密的勒索病毒,所以 Pikabot 攻擊行動才顯得格外危險。
雖然駭客在 2023 年第 3 季的前幾個禮拜也曾發動了好幾波 DarkGate 垃圾邮件攻击行动以及少量的 IcedID 攻擊行動,但之後便全都改為散播 Pikabot。
最後,我們有觀察到多個不同的 Cobalt Strike 信標叢集,全部共有超過 70 個 CC 網域指向 Black Basta 勒索病毒,而這就是該駭客集團一直透過攻擊行動散播的恶意程式。
资安建议
為了避免掉入网路钓鱼、恶意程式、詐騙等各種網路威脅的陷阱,使用者在收到電子郵件時應該保持警戒。以下是使用者可遵循的一些電子郵件安全最佳實務原則:
- 务必将滑鼠游标移到邮件内的连结上方停留一下,看看它背后到底指向哪裡。
- 檢驗寄件人的身分。不熟悉的電子郵件地址、地址与寄件人名稱不符的郵件,以及假冒知名公司的郵件,這些都是意圖不良寄件人的特徵。
- 如果電子郵件宣稱來自某家合法公司,那您在下载附件或點選隨附連結之前,請先檢驗一下寄件人和郵件的內容。
- 讓電腦作業系統与所有軟體隨時保持更新,並且套用最新修補程式。
- 定期將重要資料備份到外部及安全地點。如此可確保萬一您掉入网路钓鱼詐騙陷阱,也可以復原寶貴的的資料。
一套多層式的方法有助於公司防範各種駭客可能入侵系統的途徑,包括端點、電子郵件、網站以及網路。資安解决方案可偵測惡意元件与可疑行為來保護公司。
- Trend Vision One? 提供了多層式防護与行為偵測來攔截可疑行為和工具,不讓勒索病毒有機會造成破壞。?
- Trend Cloud One? – Workload Security 可保护系统,防范已知和未知的漏洞攻击。这项防护採用的是像虚拟修补和机器学习这样的技巧。
- live casino online? Deep Discovery? Email Inspector 採用客製化沙盒模擬分析与進階分析技巧來有效攔截勒索病毒用來突破公司防線的惡意郵件 (包括网路钓鱼郵件)。??
- live casino online Apex One?? 可進一步提供自動化威脅偵測及回應,防範無檔案式威脅与勒索病毒等進階攻擊,保障端點安全。
?
入侵指標 (IoC)
如需本文当中提到的入侵指标,请参阅此处。
?