Unit 42最近發現了一個針對葡語用戶的惡意軟件活動,旨在將加密貨幣從合法用戶的錢包中轉移到由攻擊者控制的錢包中,該活動使用了一種被稱為CryptoClippy(加密貨幣剪輯器)的惡意軟件,它可以監控受害者的剪貼板,尋找加密貨幣錢包地址被複製的踪跡,以此來發起攻擊並竊取加密貨幣。
攻擊時,CryptoClippy會將實際錢包地址替換為攻擊者自己的地址。為了將惡意軟件植入到用戶的計算機,該活動中的攻擊者使用谷歌廣告和流量分發系統(TDS)將受害者重定向到假冒WhatsApp Web應用程序的惡意域名。他們藉此來確保受害者是真正的用戶,而且他們是葡語使用者。對於被發送到惡意域的用戶,攻擊者試圖誘騙他們下載惡意文件,包括.zip或.exe文件,從而獲得最終的有效負載。
什麼是加密貨幣剪輯器? CryptoClippy旨在將加密貨幣資金從合法用戶的錢包轉移到由攻擊者控制的錢包。當計算機CryptoClippy時,惡意軟件會不斷檢查受害者的剪貼板,看看他們是否複製了加密貨幣錢包地址,其攻擊邏輯是,如果一個人將錢包地址複製到剪貼板,這表明他們可能正在將加密貨幣從一個錢包轉移到另一個錢包。
CryptoClippy使用正則表達式來識別地址屬於哪種類型的加密貨幣。然後,它將剪貼板條目替換為攻擊者的錢包地址。由於錢包地址通常很長,有時超過40個字符,粗心的用戶是不會注意到地址的變化。
CryptoClippy利用的是SEO攻擊,因此當一個人搜索“WhatsApp Web”時,搜索結果的前幾天就會顯示一個虛假結果。一旦進入該網頁,受害者就會被提示下載一個.zip文件,該文件包含一個由惡意腳本組成的.lnk文件。這些腳本引發了一系列安裝CryptoClippy的事件。各種CryptoClippy變體具有多種額外功能,可以幫助攻擊者完成他們的加密竊取活動。這包括能夠通過執行RC4加密的PowerShell腳本來建立遠程桌面協議(RDP)後門。
此腳本包含Windows Management Instrumentation(WMI)、終端服務註冊表操作、icacls、net命令和日誌清除的元素。這些漏洞使攻擊者能夠在內存有效負載之外進行訪問。
此外,該變體還具有針對以太坊和比特幣加密貨幣錢包的功能。鑑於數字貨幣在拉丁美洲越來越受歡迎,這並不奇怪。
撰寫本文時,攻擊者控制的比特幣地址顯示收到0.039954比特幣,大致相當於982.83美元,以太坊(ETH)地址也顯示了收到資金,其中0.110915556631181819 ETH(約等於186.32美元)是從三個不同的ETH地址發送的。
此活動中的攻擊者採用了多階段的方法,試圖繞過基於簽名和啟發式的安全防護。這種方法包括使用模糊化的PowerShell腳本和編碼的有效負載來逃避檢測,目前似乎只有少數安全程序可以在VirusTotal中檢測到這種惡意軟件。
攻擊流程攻擊會從傳播一個.zip文件開始,該文件包含一個模糊化的PowerShell命令行腳本組成的.lnk文件。受害者雙擊.lnk文件後,就會執行PowerShell腳本,該腳本將下載第二階段和幾個模糊/加密的有效負載。當執行第二階段PowerShell腳本時,它會對CryptoClippy加載程序進行解混淆/解密並執行它。然後加載程序會將其竊取程序組件注入svchost.exe中。
CryptoClippy將在剪貼板API中設置基於用戶模式事件的掛鉤和回調函數,在將受害者的以太坊/比特幣加密錢包複製到剪貼板時,將其替換為攻擊者的加密錢包。它還包含與C2服務器通信的功能。
CryptoClippy攻擊流程如下所示:
通過LNK文件攻擊
受害者最初下載的.zip文件中的.lnk文件包含一個截取的命令,如下圖所示。雙擊該文件將執行一個模糊命令,該命令位於快捷方式的目標字段中,負責檢查攻擊者控制的域。
LNK文件的目標字段包含要運行的命令
.lnk文件使用了幾種不同的字符填充方法進行混淆,其中包括以下字符集:
^
!
:~下圖顯示瞭如何在.lnk文件中使用這種方法。
LNK字符混淆
反混淆後,LNK得到以下PowerShell命令,該命令將通過HTTP協議將字符串uiPX上傳到攻擊者控制的域tunneldrive[.]com。
PowerShell命令將字符串上載到攻擊者域
需要注意的是,在目前觀察到的示例中,攻擊流程可以追溯到擴展名為.lnk的文件。這些文件通常包含在.zip中。然而在分析中,研究人員觀察到另一種變化,其中初始有效負載是一個.exe文件,該文件出自前面提到的域mydigitalreversion[.]com。
當WhatsApp Web的.exe文件一旦執行,它就會聯繫前面提到的tunneldrive[.]com域。然後,它將釋放並執行一個.bat文件來自我刪除。
這個.bat文件(如下圖所示)使用了一種模糊處理來構建其有效負載。
BAT文件在第一階段被釋放
第一階段第一個PowerShell腳本加載程序Ricoly.ps1由Ricoly.bat批處理文件啟動並執行。 Ricoly.ps1腳本的目的是解密同樣位於C:\Users\\AppData\Roaming\Ricoly中釋放的第二階段模糊/加密腳本ps。
Ricoly.ps1腳本使用的XOR密鑰大部分是靜態設置的硬編碼,而XOR密鑰的一部分是從計算機的處理器ID動態派生的。這將鎖定有效負載,如下圖所示。
第二階段研究人員使用以下CyberChef XOR秘鑰來解密第二階段的有效負載:
CyberChef用於解碼第二階段PowerShell腳本文件ps的內容
在第一階段下載時,會將名為sc的加密EXE文件寫入文件系統。這個EXE文件將成為第二階段ps腳本的目標。
第二階段PowerShell腳本ps的功能是充當反射PE加載程序。它使用.NET方法和D/invoke來處理.NET委託,以逃避檢測和動態解析。
ps腳本將確定操作系統是32位還是64位。它還將確定kernel32.dll作為反射加載程序所需的API功能,通過使用GetDelegateForFunctionPointer解析所需的API(如VirtualAlloc和CreateThread)來實現這一點。
然後,ps腳本將對有效負載進行XOR解密,並調用EXE文件sc。
使用D/invoke方法和XOR操作的第二階段PowerShell腳本
反射加載到內存中的EXE文件sc充當主加載程序,使用系統調用將代碼注入另一個新創建的進程。新創建的svchost.exe進程包含CryptoClippy。
文件夾名稱和互斥字符串生成器竊取程序的前幾個函數將首先映射出文件系統,以創建要使用的文件夾。這是通過使用API GetWindowsDirectoryA、GetVolumeInformationA和SHGetFolderPathA來實現的。
竊取程序包含一個函數,它將創建字母數字字符串。此字符串生成器用於主程序中的多個位置。它首先用於在AppData路徑下創建一個唯一的文件夾名稱。為此,使用一個常量值作為字符串生成器的參數。
在本示例中,常量是0x79FE6D,它將在字符串生成器函數中使用,並映射到格式字符串%08x-%08x。
常量引用和函數字母數字生成器的xref
字符串生成函數將使用提供給函數的常數值和從受害者係統查詢的捲序列號。它將創建以下字符串作為示例:079fe6d-de786dd1。
常量值和卷序列號連接成格式字符串
該算法將按每個字符拆分,以此來打亂字符串079fe6d-de786dd1。第一個操作將是由字符串的第一個字符執行的對FFFFFFFF值的異或。
然後,所得到的運算將被右移1,並被常數0x82F63B78異或。結果異或操作將遵循相同的操作集,在16個字符示例字符串079fe6d-de786dd1中,每個字符總共執行8次。
算法完成後,返回要添加到AppData目錄的文件夾名稱。本例中的文件夾名稱為55abf82d,完整路徑為C:\Users\xxx\AppData\Roaming\55abf82d。這將根據作為輸入提供的常量和卷序列號而變化,以創建唯一的字母加數字字符串。
使用的算法的結果,即要創建的文件夾名稱
互斥鎖攻擊者的互斥鎖的創建也使用字符串生成器函數,該函數作為參數提供了一個不同的常量值。在本例中,值為0x24F2D5。
用於創建帶有捲序列號的互斥鎖的常量值
用戶模式事件掛鉤設置為了便於竊取者剪切剪貼板的加密錢包地址,並將其替換為二進製文件中包含的硬編碼錢包,它將首先調用API SetWinEventHook來設置事件掛鉤,以便在觸發特定事件時調用負責與剪貼板數據交互的函數。
EVENT_OBJECT_FOCUS
EVENT_OBJECT_VALUECHANGE
EVENT_SYSTEM_FOREGROUND
事件掛鉤設置將具有一個從所有進程以及所有現有線程接收事件的進程範圍,然後跳過連接負責創建掛鉤的所屬進程。在設置事件掛鉤之後,創建一個Windows事件對象。它通過調用用於同步的Windows API CreateEventA來實現這一點,當特定事件發生並完成時,它將向線程發出信號。
windows事件鉤子和註冊類的反編譯視圖
創建Windows對象事件之後,竊取程序將使用API RegisterClassExA。此API提供了一個指向WNDCLASSEX結構的指針,該結構包含wcbClass和各種結構字段。
在此之後,調用CreateWindowExA,它將創建一個具有前面API所指向的結構的窗口。在這個結構中,我們分析的重要字段是lpfnWndProc字段,它指向惡意軟件開發者的剪貼板函數。
後門在CryptoClippy執行期間,此威脅將解密並寫入文件Tozzia.bat和Tozzia.ps1到文件系統,這些文件系統嵌入到文件系統中。執行批處理文件Tozzia.bat,然後執行Tozzia.ps1。
Tozzia.bat文件內容
下圖顯示了Tozzia.ps1被寫入文件系統並執行,從而進行持久性攻擊。
Tozzia.ps1內容
下圖顯示了Tozzia.ps1通過創建計劃任務來獲得持久性。
執行Tozzia.bat的計劃任務
在Tozzia腳本解密後,另外兩個腳本Giddia和Knowledgeprojects也被解密,但沒有被執行或寫入文件系統。從內存中提取Giddia和Knowledgeprojects這兩個腳本,可以看到幾百行額外的腳本代碼。
Giddia腳本包含執行與終端服務相關的註冊表屬性值的功能,目的是削弱它們。它還包含網絡命令和本地帳戶相關操作的功能。
PowerShell腳本名Giddia
Giddia功能
名為Knowledgeprojects的PowerShell腳本
Knowledgeprojects腳本包含使用PowerShell清除日誌的功能。
通過惡意廣告(Malvertising)傳播
研究人員觀察到這種利用谷歌廣告和TDS的惡意軟件活動。當用戶搜索“WhatsApp網絡”時,攻擊者使用了出現在搜索結果中的谷歌搜索廣告。這使他們能夠誘騙受害者打開並下載他們的惡意壓縮.zip文件。在2022年初收到這一攻擊的警報後,谷歌實施了額外的保護措施,並表示,其係統在檢測和防止再次攻擊方面有所改進。
此外,攻擊者使用TDS過濾惡意登錄頁面上的真正用戶和機器人。 TDS過濾器通過使用各種標準來確定客戶端設備是否是真實用戶以及葡語使用者,從而排除機器人和互聯網爬蟲。
首先,TDS檢查連接設備是否來自虛擬專用網絡(VPN)IP地址。使用VPN會使攻擊者難以確定受害者設備的位置和特徵,也會使其更難傳播惡意內容。
接下來,TDS進行用戶代理檢查。用戶代理是網絡瀏覽器發送到網站以識別其自身及其功能的文本字符串。通過檢查客戶端設備的用戶代理,TDS通過檢查接受語言(Accept-Language)標頭來確定首選瀏覽器語言是否為葡語。 TDS還可以檢查其他信息,如設備類型、操作系統、瀏覽器版本和地理位置。
最後,TDS遵循超文本傳輸協議(HTTP)GET標頭標準。 HTTP GET標頭是由web瀏覽器發送到服務器以檢索資源的請求消息。標頭可以包含各種信息,例如請求的URL、用戶代理、Accept-Language標頭和referer標頭。檢查HTTP GET標頭中的條件是TDS確定瀏覽器的首選語言是否為葡語的另一種方法。
如果TDS確定連接不符合上述標準,受害者將被重定向到另一個登錄頁(如下圖所示),並被提示點擊“繼續到WhatsApp Web”。這將重定向到合法的WhatsApp Web域,而不會有任何進一步的惡意活動,有效地逃避了受害者和安全軟件的檢測。
惡意域名的內容但是,如果TDS確定該連接滿足上述條件,受害者將被重定向到惡意登錄頁面,並提示他們下載惡意的.zip文件
受害者的瀏覽歷史這個網站偽裝成WhatsApp的官方網站,提供WhatsApp桌面。從mydigitalrevival[.]com下載此文件就會下載所謂的WhatsApp.zip。
mydigitalrevival[.]com網站研究人員發現的屬於本次活動的其他域名還有preflightdesign[.]com和pickconferences[.]com,它們的葡語版本也有同樣的內容。
當受害者成功加載惡意網頁並下載所提供的.zip文件時,其中包含一個.lnk文件,如下圖所示。
初始ZIP文件中包含LNK文件在執行.lnk文件後,研究人員觀察到下載到C:\Users\\AppData\Roaming\Ricoly中的以下文件:
Ricoly.bat;
Ricoly.ps1;
兩個混淆的加密文件(ps,sc);
一個混淆的加密輔助配置文件(pf);
第一個PowerShell腳本加載程序Ricoly.ps1由Ricoly.bat批處理文件啟動並執行。 Ricoly.ps1腳本的目的是解密第二階段的模糊化/加密的腳本ps。
第二階段PowerShell腳本ps的功能是充當反射PE載入程序。 ps文件將以寫入文件系統的名為sc的加密EXE文件為目標。 sc文件是反射加載的,最終用作CryptoClippy的載入程序。
主要可執行文件在執行.lnk文件和兩個後續的PowerShell腳本之後,CryptoClippy操作由一個可執行載入程序和主要可執行文件組成。 CryptoClippy的載入程序是一個64位的EXE文件,其中主竊取程序EXE文件嵌入在.data部分中。載入程序使用系統調用,在執行時似乎與SysWhispers2實現重疊。
SysWhispers2是一個更隱蔽的代碼執行實現,用於繞過對用戶模式API的檢查。這種繞過是可能的,因為用戶模式API通常由應用程序使用,包括AV/EDR產品通過用戶模式掛鉤進行內省。
CryptoClippy的主要可執行文件是用C編寫的,它是用傳輸層安全性(TLS)庫Mbed-TLS靜態編譯的。可執行文件的主要功能包括它自己的名稱生成算法即文件路徑、互斥對象和事件對象。主可執行文件還廣泛使用了一個名為pf的本地輔助文件,該文件包含一個加密的證書。 CryptoClippy使用它自己的算法從輔助文件中消除字符查找表的混淆,從而從查找表中指向值的指針構建明文證書。
該威脅還使用兩個不同的RC4密鑰進行各種字符串解密。字符串解密例程將使用內存中內置的結構,用於結構中的索引位置、字符串偏移量和字符串大小。這些字符串與對象名稱、域、加密錢包和持久性腳本有關。
RC4Key:1b43233d5a054808061c190336320e46
RC4Key:4646070B47445451604F291809444703竊取加密貨幣
Recommended Comments