Jump to content

隨著技術的發展,世界之間的聯繫變得更加緊密,攻擊者使用的技術也在不斷發展。攻擊者通過不斷地利用供應鍊和代碼庫中復雜的相互依賴關係,對組織、個人和社區造成重大風險。

近年來最令人擔憂的攻擊趨勢之一是供應鏈攻擊的增加,尤其是那些對代碼庫的攻擊,這是全球網絡安全領域的一個難題。根據歐盟網絡安全機構(ENSA)發布的一份報告,62%的組織受到第三方網絡事件的影響,只有40%的受訪組織表示他們了解第三方網絡和隱私風險。更令人擔憂的是,38%的受訪組織表示,他們不知道哪些網絡問題是由第三方組件引起的,最近涉及供應鏈的網絡攻擊包括Apache Log4j, SolarWinds Orion和3CX的3CXDesktopApp。

在現代軟件開發中,開發人員依賴第三方組件來簡化開發過程,這使開發人員能夠創建成本效益高、效率高且功能豐富的應用程序。但是,當這些受信任的組件受到攻擊時會發生什麼?

攻擊者可以通過組織供應鏈中不太安全的元素,如第三方供應商或軟件存儲庫間接滲透系統,甚至允許他們破壞受信任的組件,從而在更大、更安全的環境中獲得立足點。惡意代碼經常嵌入看似合法的軟件庫中,當開發人員集成這些組件,就會不知不覺地將漏洞和其他網絡安全風險引入他們的核心系統。

本文深入研究了攻擊者在看似合法的應用程序和代碼庫中植入惡意有效負載的複雜方法,並以最近示例作為研究對象。

技術分析攻擊者復制合法GitHub存儲庫的示例研究,然後用惡意代碼進行木馬化和攻擊,策略性地用關鍵字填充其存儲庫描述部分,以最大限度地提高其在GitHub搜索中的可見性。

通過此分析,我們可以深入了解攻擊者攻擊第三方組件的攻擊過程和技術,以下部分將使用活動命令與控制(CC)服務器研究其中一個被木馬化的項目,了解其內部工作原理。

通過exec smugglingweb請求發起攻擊1.png

Discord-Boost-Tool的存儲庫名稱和存儲庫的所有者

在所舉示例中,攻擊的第一階段採用了一種我們稱之為exec smuggling的新技術。該技術在一長串空白字符之後放置一個有效負載,將惡意內容從屏幕上推送出去。使用這種技術,下一階段通過惡意請求調用檢索,≠≠使用Python內置方法exec()執行。接下來,我們將根據示例概述exec smuggling 的具體實現步驟。

導入必要的依賴項在導入request和fernet之前,惡意軟件使用以下命令在Python中安裝必要的依賴項,通過該命令安裝依賴項包:

2.png

惡意軟件安裝並導入必要的依賴項

將惡意代碼對象移出白名單攻擊者會添加一長串空白字符(在本例中是521個空格),將惡意代碼移出白名單,從而隱藏代碼對象,不被人發現。

3.png

使用exec()執行惡意負載

最後,通過調用Python的exec方法來執行代碼對象。以下是解密後的惡意代碼片段:

4.png

此代碼對象向攻擊者的命令和控制(CC)服務器發出web請求,該服務器包含惡意負載,然後導致第二階段的攻擊。

5.png

執行走私後攻擊進入第二階段

攻擊的第二階段據分析,攻擊的第二階段側重於為進一步開發準備攻擊環境。

設置環境第二階段包括準備環境的滴管,最初,它安裝一系列Python包,如requests、httpx、pyperclip、pyotp、winregistry、psutil、pycryptodomex和asyncio等。然後,它識別用戶系統上安裝的所有Python版本,並檢查每個版本的site-packages中是否存在Cryptodome目錄。如果找到,它將此目錄複製為Crypto,可能是為了確保與原有庫的向後兼容性。隨後,腳本創建一個解密有效負載,將其寫入用戶APPDATA目錄中的一個名為pl.py的文件,在執行它而不顯示窗口。

6.png

第二階段使用Python的子進程模塊進一步準備環境

攻擊的第三階段環境準備好後,惡意軟件進入攻擊過程的第三階段。

BlackCap-Grabber第三階段包含一個修改版的開源信息竊取項目,名為BlackCap-Grabber。它具有以下功能:

提取瀏覽器密碼、cookie和瀏覽歷史記錄;

檢索系統信息;

從應用程序和工具(如Steam, MetaMask和Exodus)竊取登錄憑據;

繞過TokenProtector;

劫持Windows剪貼板以更改加密貨幣地址,將其內容替換為攻擊者的錢包地址以及其他功能。

重要的是,原來的BlackCap-Grabber包括雙鉤(dual hook)技術,使用這種技術,代碼的開發者也將收到由攻擊者(BlackCap-Grabber用戶)竊取的信息的副本。像BlackCap-Grabber-NoDualHook這樣的項目會從源代碼中移除植入的DualHook。

在執行時,惡意軟件將受攻擊系統的ComputerName發送到其CC服務器。然後安裝必要的Python包以確保惡意軟件的功能。請注意,此代碼不是原始BlackCap-Grabber的一部分,而是由攻擊者添加的。

7.png

惡意軟件發送帶有受害者計算機名的POST請求,並安裝額外的依賴項

下圖展示了由惡意軟件及其處理受害者信標的請求處理程序生成的初始網絡流量的示例。

8.png

向包含受害者用戶名的/downloadhandler發出POST請求

攻擊者添加的另一個功能是出口注入(exodus-injection),這在原始的BlackCap-Grabber源代碼中不存在。出口注入允許攻擊者使用攻擊技術從Exodus Crypto Wallet(一種受新加密貨幣用戶歡迎的加密貨幣錢包)竊取憑證和其他敏感信息。攻擊者在其攻擊鏈中使用多個開源的Exodus-Injection項目(https://github.com/loTus04/Exodus-Injection和https://github.com/dropout1337/exodus-injection)。

9.png

BlackCap-Grabber配置

BlackCap-Grabber的主要功能是劫持Windows剪貼板以更改加密貨幣地址,從受攻擊的系統中檢索敏感信息,並從各種web瀏覽器將其保存到文件中以供洩露。

10.png

BlackCap-Grabber準備敏感信息,如瀏覽器cookie、加密貨幣地址和剪貼板信息

11.png

BlackCap-Grabber使用upload()方法處理敏感信息數據,以便上傳到攻擊者的基礎設施

12.png

BlackCap-Grabber使用LoadRequests方法從受害者發送POST請求以進行數據提取

使用上圖中的邏輯,攻擊者向基礎結構發送包含洩露的密碼、cookie和加密貨幣地址的POST請求。

13.png

攻擊者通過POST請求將洩露的數據發送到/handler終端

在此示例中,惡意軟件將包含瀏覽器cookie等內容的惡意包從受攻擊系統中洩漏到攻擊者控制的主機。攻擊者使用web請求處理程序來處理從受害設備上成功竊取的包。

14.png

另外一個密碼示例通過POST請求發送到/handler終端

以上是我們發現的附加POST請求,其中包含由攻擊者從受攻擊的受害者向處理程序/句柄洩露的敏感信息。

探索Exodus和ElectronJS組件經過調查,我們確定Exodus桌面錢包是使用ElectronJS框架構建的,基於本地Exodus安裝的資源目錄中存在的app.asar文件,該框架用於捆綁和打包應用程序的資源。 Asar壓縮文件類似於.zip或.tar文件,但專門為ElectronJS應用程序設計。

攻擊鏈第三階段的一個主要組成部分涉及通過操作底層的ElectronJS應用程序在受攻擊用戶的設備上植入惡意的Exodus桌面錢包應用程序,這使得攻擊者可以竊取與Exodus錢包相關的憑證,從而實施攻擊,並最終竊取屬於受害者的加密貨幣和不可替代代幣(nft)。

ElectronJS和Exodus這兩個漏洞是由關聯的。早在2018年,基於遠程代碼執行漏洞CVE-2018-1000006(CVSS 8.8)的Electron就可以被利用。研究人員很快指出,攻擊者可以通過濫用電子協議處理程序來利用這個漏洞。

如前所述,ElectronJS應用程序被打包為app.asar壓縮文件,其中包含應用程序的源代碼和各種應用程序資產。 Asar壓縮文件類似於.zip或.tar文件,是專門為ElectronJS應用程序設計。

什麼是Exodus?Exodus是一個數字資產平台,允許用戶存儲、管理和交換加密貨幣和NFT。

Exodus提供各種錢包,如Web3錢包、移動錢包、桌面錢包、Trezor硬件錢包,以及與加密貨幣應用程序的集成。

Exodus桌面錢包應用程序Exodus桌面錢包(Exodus Desktop Wallet)是Exodus的桌面應用程序。 Exodus桌面錢包支持所有主要的操作系統,如微軟、MacOS和Linux,通過用戶友好的圖形用戶界面(GUI),可以存儲和交易主要的加密貨幣和NFT。

通過web GUI訪問Exodus桌面錢包Exodus桌面錢包提供了一個直觀的界面來訪問加密貨幣錢包。解鎖加密貨幣錢包需要密碼,如Exodus桌面錢包應用程序GUI所示。

在設置用於備份錢包的助記符秘密短語時,Exodus會讓用戶打印助記符密鑰作為安全設備。

15.png

使用物理助記鍵恢復Exodus錢包

當用戶試圖恢復錢包時,Exodus可能會要求他們參考助記秘鑰的打印副本,並根據提供的數字選擇正確的單詞。出於安全考慮,Exodus被設計成一個使用密碼和助記短語組合的自我保管錢包。

探索Exodus ElectronJS應用程序的主要組件Exodus桌面錢包的app.asar文件可以解壓縮到目標目錄。在這個目錄中,我們看到了應用程序的根目錄,其中包括node_modules、src和應用程序的package.json。

16.png

Exodus桌面錢包的NodeJS後端

17.png

關鍵後端文件相關的Exodus桌面錢包

Exodus ElectronJS應用程序的主要組件包括應用程序的主邏輯(包含在src/app/main/index.js中)、錢包組件(包含在src/app/wallet/index.js中)和表示邏輯(包含在src/app/static/中),後者將NodeJS後端文件導入到應用程序的前端表示中。

正在攻擊Exodus桌面錢包的ElectronJS應用程序通過使用注入技術,攻擊者可以通過替換app.asar壓縮,將Exodus桌面錢包的ElectronJS應用程序替換為惡意的ElectronJS應用程序,該壓縮文件由Exodus桌面錢包讀取。這個應用程序是一個全功能的複製品Exodus桌面錢包,攻擊者將其功能改變,以竊取錢包信息,包括密碼和助記符信息。

18.png

inject()函數負責注入惡意的Exodus桌面錢包

在上圖所示的代碼中,攻擊者執行一系列檢查,以確定受攻擊的設備是否安裝了Exodus Desktop Wallet。

下面的代碼片段是在Windows安裝中Exodus應用程序使用的app.asar文件的位置。

Exodus錢包桌面Windowsapp.asar路徑:

19.png

同時,下面的代碼片段是Linux安裝中Exodus應用程序使用的app.asar文件的位置:

Exodus錢包桌面Linuxapp.asar路徑:

20.png

如果發現Exodus,惡意代碼將繼續如下操作:

1.從攻擊者控制的基礎設施下載並讀取惡意修復的app.asar文件。

2.終止現有的Exodus進程。

3.將惡意的app.asar寫入Exodus應用程序資源目錄中的Exodus app.asar文件中。

如果在設備上找不到Exodus桌面錢包的行為如果在目標設備上沒有找到Exodus,惡意代碼將繼續下載文件stromrechung.py到\Microsoft\Windows\Start Menu\Programs\Startup。該文件將在系統啟動時執行。

21.png

如果沒有找到Exodus,“miner.exe”將從另一個攻擊者域下載並安裝

22.png

Python用於執行惡意批處理文件,其中包含“miner.exe”的下載和運行邏輯。

惡意文件stromrechnung.py是一個python文件,包含以下邏輯:

1.為Windows批處理文件創建一個Python函數;

2.使用陸地驅動程序(LoLDrivers)編寫邏輯以繞過UAC;

3.編寫PowerShell命令將加密貨幣挖礦器(miner.exe)下載到受害者的設備上;

4.運行Python函數,該函數使用subprocess.popen 方法執行批處理文件。

在Exodus桌面錢包的ElectronJS應用程序中註入代碼在示例中,有三個不同的文件被攻擊者改變了,具體將在後面介紹。

惡意注入後端unlock()函數(src/app/wallet/index.js)主要注入發生在src/wallet/index.js中,攻擊者在解鎖函數中註入惡意POST請求。 POST請求包含錢包密碼、助記密鑰和錢包目錄。

23.png

文件src/app/wallet/index.js被攻擊,洩露密碼、助記符和錢包信息給攻擊者

允許打開錢包域(4.9.1.2. src/app/main/index.js)即使在乾淨的Exodus應用程序將錢包域限制為Exodus的位置,攻擊者也可以修改主index.js文件以允許所有錢包域。

24.png

文件src/app/main/index.js修改域名列表以允許所有錢包域名

4.9.1.3. src/static/wallet.html:禁用內容安全策略(CSP)內容安全策略(CSP)作為一個額外的安全層,用於識別和抵禦特定形式的攻擊,例如跨站點腳本(XSS)和數據注入攻擊。 connect-src指令限制了可以通過腳本接口加載的url。

25.png

文件src/app/main/index.js被修改為禁用應用程序的CSP

我們發現,攻擊者有效地禁用了CSP,以允許從所有url到Exodus wallet.js組件的數據連接。

Discord-Boost-Tool GitHub存儲庫接下來,我們將探討Discord-Boost-Tool的特性及其一些有趣的組件。

discord-boost-tool的起源在本文所列舉的示例中,受攻擊的Discord-Boost-Tool源自2022年底的原始Discord-Boost-Tool存儲庫。這個工具允許用戶使用NitroBot帳戶來提升他們的Discord服務器,它被GitHub用戶PatrickPagoda迅速分叉(fork)並修改,通過惡意PyPi包攻擊不知情的用戶,該用戶多次將惡意Python包上傳到PyPi註冊表中。值得一提的是,與PatrickPagoda相關的原始GitHub帳戶在7月底至8月的某個時候

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...