0x01 引言
一般情況下,網絡犯罪分子通常都會以產品套裝的形式來出售其攻擊軟件,其中包括:
惡意有效載荷:惡意軟件的前端,用于感染用戶。
C&C面板:惡意軟件的后端部分,通常為LAMP環(huán)境下的一個Web應用程序。
生成器:一個應用程序,用來打包有效載荷,并嵌入特定發(fā)布者所感興趣的信息,比如C&C地址、配置信息等。
這些惡意軟件套裝通常都是在黑市上銷售的,盡管如此,有時還是會流入主流媒體的手上。這就給研究人員提供了一個寶貴的機會,來深入考察它們所使用的各種技術。
最近,我手頭上就得到了這樣的一個軟件套裝,其中就包括Neutrino僵尸網絡的生成器。盡管這不是最新的版本,但是依舊能夠提供有用的信息,來幫助我們與當今廣泛傳播的樣本進行對比分析。
0x02 相關組成部分
Neutrino Builder:32位PE程序,使用VS2013編寫,利用Safengine Shielden v2.3.6.0加殼(md5=80660973563d13dfa57748bacc4f7758)。
panel(利用PHP編寫的)。
stub(有效載荷):32位PE程序,是用MS Visual C++編寫的(md5=55612860c7bf1425c939815a9867b560, section .text md5=07d78519904f1e2806dda92b7c046d71)。
0x03 功能
Neutrino Builder v3.9.4
這個生成器是利用Visual Studio 2013編寫的,因此需要合適的可再發(fā)行組件包(Redistributable Package)才能夠正常運行。這個生成器是一個破解版,因為從標頭部分可以看到“Cracked and coded by 0x22”等字樣。
這個工具的功能非常簡單:向用戶詢問C&C的地址,然后將其寫入有效荷載。
比較兩個有效荷載:一個是原始的有效荷載,一個是由該生成器編輯過的有效荷載。我們發(fā)現,實際上這個生成器所做的修改非常小,它只是對提供的URL進行加密處理,然后將其保存到指定的地方。
下面的圖中,左圖(stub)是原始的有效荷載,右圖(test_stub.exe)是經過編輯之后的有效荷載。
Panel
這個軟件套裝含有完整的使用說明(readme.txt),不過使用俄語編寫的,其中可以發(fā)現許多功能細節(jié)。
安裝面板所需的軟件:
PHP
MySQL,版本號不得低于5.6。
面板的默認登錄名和口令:admin,admin。
被感染的客戶端可以根據要求而執(zhí)行的任務:
各種類型的DDoS攻擊。
鍵盤記錄(啟用/禁用)功能,包括指定窗口內的軌跡文本。
查找指定類型的文件。
更新bot。
刪除bot。
DNS欺騙(將地址X重定向到地址Y)。
Form表單截取,竊取FTP證書。
下載并執(zhí)行下列類型的文件(EXE、DLL、、bat 、vbs)。
向Windows注冊表添加指定內容。
發(fā)送給bot的完整命令列表:
functions.php
C&C對非法請求非常敏感,并且會根據源IP黑名單作出相應的反應:
functions.php
通過觀察install.php,我們還可以發(fā)現Form表單所截取的目標。這里的列表中包括了最流行的電子郵件和社交網絡網站(facebook、linkedin、twitter等)。
install.php
用于實現跟bot通信的主文件是tasks.php,它只接收一種POST請求。
將bot發(fā)送的信息添加到數據庫:
tasks.php
打開index.php會導致客戶端的IP被加入黑名單(無條件):
index.php
Stub
在后端可以找到的所有命令在前端都有所反映,這一點可以清楚看出來,因為有效荷載根本就沒有經過混淆處理!
硬編碼的驗證密鑰,對于bot發(fā)送的每一個請求,C&C都會檢查其中的驗證密鑰:
Bot自己會登錄到C&C,報告期版本和運行環(huán)境:
下面是C&C請求的部分命令的實現:
從C&C下載指定的有效載荷:
鍵盤記錄器的部分代碼:
Frame截取器的代碼片段:
竊取剪貼板中的內容(部分代碼):
將竊取的內容(如登錄密碼)保存到一個文件中(logs.rar)。然后,讀取這個文件,并將其上傳到C&C:
講這個文件封裝到POST請求中:
此外,無論C&C請求的任務是成功或失敗,bot都要提供相應的報告:
這個惡意軟件所帶來的威脅,不僅僅局限于本地計算機,此外,它還會掃描LAN,尋找共享資源,并竊取之:
竊取共享資源(部分代碼):
防御技術
除了上面介紹的攻擊性功能之外,這個有效載荷含有大量的防御功能。
除明顯的isDebuggerPresent之類檢查外,我們還發(fā)現了一些更加高級或者說非常怪異的東西,例如檢查用戶名是否含有下列字符串:maltest、tequilaboomboom、sandbox、virus、malware。完整的防御功能說明如下:
確定調用進程是否為調試器,這需要借助于:
IsDebuggerPresent
確定調用進程是否為遠程調試器,這需要借助于:
CheckRemoteDebuggerPresent(GetCurrentProcess(), pDebuggerPresent)
檢測是否運行在Wine下面,這需要借助于:
GetProcAddress(GetModuleHandleW(“kernel32.dll”), “wine_get_unix_file_name”)
檢查是否含有黑名單中的子串(忽略大小寫):
是否含有用戶名,這需要借助于:
GetUserNameW vs {“MALTEST“, “TEQUILABOOMBOOM“, “SANDBOX“, “VIRUS“,”MALWARE“}
是否含有當前模塊名稱,這需要借助于:
GetModuleNameW vs {“SAMPLE“, “VIRUS“, “SANDBOX” }
是否含有BIOS版本號,這需要借助于注冊表:
“HARDWAREDescriptionSystem“, value “SystemBiosVersion” against: {“VBOX“, “QEMU“, “BOCHS“}
是否含有BIOS版本號,這需要借助于注冊表:
“HARDWAREDescriptionSystem“, value “VideoBiosVersion” against: “VIRTUALBOX“
是否含有SCSI信息,這需要借助于注冊表:
“HARDWAREDEVICEMAPScsiScsi Port 0Scsi Bus 0Target Id“, value “Identifier“), against {“VMWARE“, “VBOX“, “QEMU“}
檢查是否存在:
VMWareTools,這需要借助于注冊表:SOFTWAREVMware, Inc.VMware Tools。
VBoxGuestAdditions,這需要借助于注冊表:SOFTWAREOracleVirtualBox Guest Additions。
0x04 小結
通常情況下,惡意軟件分析人員只跟其中的一部分即惡意有效載荷打交道。通過像本文這樣考察整個套裝,能夠幫我們對惡意軟件了解地更加全面。
此外,它還能夠很好地幫我們了解分布式惡意軟件的各種活動是如何組織協(xié)調的。如本文所示,網絡犯罪分子可以非常輕松的組配自己的惡意C&C。一個人,根本無需任何高深的技巧,照樣可以變身成為一個僵尸網絡的主人。我們如今生活的時代,是惡意軟件武器化的時代,是大眾也能取之即用的時代,所以,每個人都必須采取堅固和多層的安全防護措施,這一點非常關鍵。