今天小編分享的互聯網經驗:CryptoClippy 惡意軟體竊取葡語用戶的加密貨币,歡迎閱讀。
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\AppDataRoamingRicoly 中釋放的第二階段模糊 / 加密腳本 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:UsersxxxAppDataRoaming55abf82d。這将根據作為輸入提供的常量和卷序列号而變化,以創建唯一的字母加數字字元串。
使用的算法的結果,即要創建的檔案夾名稱
互斥鎖
攻擊者的互斥鎖的創建也使用字元串生成器函數,該函數作為參數提供了一個不同的常量值。在本例中,值為 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\AppDataRoamingRicoly 中的以下檔案:
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 密鑰進行各種字元串解密。字元串解密例程将使用内存中内置的結構,用于結構中的索引位置、字元串偏移量和字元串大小。這些字元串與對象名稱、網域、加密錢包和持久性腳本有關。
RC4 Key: 1b43233d5a054808061c190336320e46 RC4 Key: 4646070B47445451604F291809444703
竊取加密貨币
CryptoClippy 的主要目标是識别正在復制到剪貼板中的加密錢包字元串。CryptoClippy 設定用戶模式事件挂鉤,并使用回調函數執行将復制到 Windows 剪貼板中的以太坊或基于比特币的錢包替換為攻擊者擁有的硬編碼錢包值。下圖顯示了捕獲剪貼板輸入的視窗。根據載入程式的執行流程,這個特定的應用程式通常是不可見的。
竊取剪貼板裡的内容
CryptoClippy 剪貼板函數的反編譯視圖(如下圖所示)顯示,攻擊者使用的錢包地址将被 RC4 解密,以便稍後在任何加密錢包的替換中使用。
CryptoClippy 将對被填入剪貼板的數據執行字元串檢查。它将檢查與以太坊或比特币相關錢包相關的常見前導字元。復制到剪貼板中的字元串将循環确定字元數。在下圖的第 27 行,從總字元數中減去 25 并進行比較,看看它是否小于或等于 9。
CryptoClippy 剪貼板函數的反編譯視圖
此字元串檢查操作适用于以 1 開頭的比特币地址。否則,代碼路徑将被跳過,下圖所示的調試視圖顯示了 API GetClipboardData 和 API 的返回值,其中包含復制的以太坊錢包地址。
以太坊錢包地址 0xdB055877e6c13b6A6B25aBcAA29B393777dD0a73
一旦獲得剪貼板數據,将執行上面反編譯視圖中指出的字元串檢查,查找使用的特定加密錢包類字元。下圖就是一個以太坊錢包,随後檢查起始字元值 0x。
使用的以太坊錢包 0xB49eae711FBa241f657dA46A998833A6591848b
負責操作剪貼板的函數将使用 API SetClipboardData 将用戶以太坊錢包地址替換為 0xB49aeae711FBa241f657dA46A998833A6591848b。
上圖是錢包地址的一小部分。下表包含用戶提供的值,這些值被之後就會被攻擊者發現并被替換。
復制錢包和替換錢包的示例
為了保持對受害者計算機的訪問,CryptoClippy 将 Ricoly.link 添加到 Startup 檔案夾(AppDataRoamingMicrosoftWindowsStart MenuProgramsStartupRicoly.lnk)來獲得持久性。Ricoly.nk 将在用戶登錄時啟動,它将執行 Ricoly.bat 腳本,然後執行 Ricoly.ps1。
維護訪問權限的其他工作包含在 rc4 加密的 PowerShell 腳本 Tozzia.ps1 中,注入 svchost.exe 的 CryptoClippy 有效負載提取 Tozzia.bat 和 Tozzia.ps1 檔案。Tozzia.ps1 腳本包含與終端服務的系統資料庫修改、本地帳戶創建、網絡命令和事件日志清除相關的各種功能。
總結
過去幾年,竊取加密貨币的攻擊越來越多。大概的攻擊手段有:
· 使用 TDS;
· 針對特定目标範圍;
· 将有效負載與環境相匹配;
· 采用更復雜和更隐蔽的技術來隐藏加載程式和剪輯功能;
· 創建操作所需的自定義算法;
我們經常看到傳播這種威脅的兩種特殊方法,一是使用僵屍網絡(如 Laplas Clipper 和 Smokeloader),二是可能存在底層惡意軟體即服務(MaaS)功能(如 Eternity Clipper)。