趨勢科技研究人員發現了一種新型惡意軟件,將其命名為 "OpcJacker"(取其opc配置設計“opc”和加密貨幣劫持“hijack”能力英文前后綴opc-jack而成),該惡意軟件自2022年下半年以來一直傳播。OpcJacker是一個有趣的惡意軟件,因為它的配置文件使用一個自定義的文件格式來定義竊取者的行為。具體來說,該文件格式類似于自定義的虛擬機代碼,配置文件中存在的十六進制數字標識符使得竊密器可運行所需的功能。使用這種設計的目的可能是為了使研究人員更難理解和分析惡意軟件的代碼流。
惡意軟件OpcJacker的主要功能包括鍵盤記錄、屏幕截圖、從瀏覽器中竊取敏感數據、加載附加模塊,以及替換剪貼板中的加密貨幣地址以達到劫持目的。

圖1. OpcJacker的感染鏈
研究人員觀察到OpcJacker通過不同的活動進行傳播,包括偽裝成加密貨幣相關的應用和其他合法軟件,然后攻擊者通過虛假網站進行傳播。在最近一次(2023年2月)涉及OpcJacker的活動中,感染鏈始于惡意廣告,惡意廣告對伊朗用戶進行地理定位。這些惡意廣告被偽裝成合法的VPN服務,欺騙受害者下載一個包含OpcJacker的文檔。
該惡意軟件是通過在已安裝得應用更新一個合法的DLL庫時加載的,該應用也會加載另一個惡意DLL庫。然后,惡意DLL庫匯編并運行shellcode,shellcode是另一個惡意可執行文件的loader和runner,可執行文件是文件數據塊里存儲OpcJacker的各種格式的數據文件,如WAV和CHM。該loader自命名為”Babadeda” crypter以來,已經使用了一年多。這些活動背后的攻擊者對加密器本身進行了一些改變,然后增加了一個全新的payload(一個竊密器/剪切器/記鍵器)。
OpcJacker通常是釋放(或下載)和運行額外的模塊,這些模塊是遠程訪問工具,不是NetSupport RAT就是一個隱藏虛擬網絡計算(hVNC)的變體。我們還發現一份報告分享了一個名為 "Phobos Crypter"(實際上與OpcJacker是同一個惡意軟件)的loader被用來加載Phobos勒索軟件的信息。
傳播
正如介紹中提到的,OpcJacker是通過不同的活動傳播的,包括以虛假網站宣傳看似合法的軟件和加密貨幣相關的應用,但實際都是托管惡意軟件。由于這些活動除了OpcJacker之外,還會傳播一些其他不同的惡意軟件,因此它們很可能是OpcJacker的控制者所使用的不同類型的按次安裝服務。
在最近一次(2023年2月)涉及OpcJacker的活動中,研究人員注意到OpcJacker是通過針對伊朗惡意廣告的地理定位傳播的。這些惡意廣告鏈接到一個惡意網站,這個惡意網站偽裝成合法VPN軟件的網站。網站的內容是從一個合法的商業VPN服務的網站上復制的,然而鏈接被修改為指向到一個內嵌惡意內容被黑網站。
惡意網站檢查客戶的IP地址以確定受害者是否使用VPN服務。如果IP地址沒有使用VPN服務,它就將受害者重定向到第二個被黑網站,誘使他們下載一個包含OpcJacker的文檔。如果受害者正在使用VPN服務,就不會發生上述攻擊行為。

圖2. 一個用于提供OpcJacker的惡意廣告的例子
此外,研究人員還發現了一些ISO鏡像和RAR/ZIP檔案,其中包含各種軟件被修改過的安裝程序,其導致OpcJacker加載。這些安裝程序以前被其他活動使用過,被托管在各種被黑的WordPress框架的網站或軟件開發平臺,如GitHub。攻擊者喜歡使用ISO文件的一個可能的原因是為了繞過IE瀏覽器的 Mark-of-the-Web 警告。
以下是我們發現的一些文件名例子:
- CLF_security.iso
- Cloudflare_security_setup.iso
- GoldenDict-1.5.0-RC2-372-gc3ff15f-Install.zip
- MSI_Afterburner.iso
- tigervnc64-winvnc-1.12.0.rar
- TradingViewDesktop.zip
- XDag.x64.rar
Babadeda 加密器
在安裝程序釋放所有必要的文件后,它就會加載主可執行文件(RawDigger.exe),這是一個干凈的合法文件。

圖3. 安裝程序釋放的文件列表;雖然大多數是安全文件,但有些是補丁或惡意文件
可執行文件加載了一個DLL庫,其中包括打了補丁的導入(librawf.dll)

圖4. 導入的DLL庫列表;高亮顯示的庫為修補后可加載另外惡意DLL的庫
修補后的DLL(librawf.dll,與合法應用RawDigger(一個原始鏡像分析器)相關)的導入地址表被進一步修補,修補包括了兩個額外的DLL庫。在下圖中,請注意FirstThunk地址(新添加的庫)是如何以001Dxxxx開始的,而不是原始庫的FirstThunk地址中使用的0012xxxx。

圖5. 一個經過修補的導入地址表
圖5中高亮顯示的庫(libpushpp.dll)隨后被加載和執行。它的主要任務是打開其中一個數據文件(hm)并加載存儲在其中的第一階段的shellcode。

圖6. 惡意庫打開一個數據文件
第一階段shellcode的偏移量和大小被硬編碼到DLL庫中。

圖7. 惡意庫從偏移量0x37D50復制第一階段的shellcode;shellcode的大小為0x75A字節
在較新版本的Babadeda加密器中,另一個DLL庫(mdb.dll,來自虛假VPN的安裝程序)被加載到內存中,然后第一階段shellcode覆蓋寫入到一個硬編碼隨機選擇的內存塊。請注意,這種變化只是一個小細節,對第一階段shellcode的整體功能沒有影響。

圖8. 內存加載合法庫(mdb.dll),然后第一階段shellcode(0x7B5字節)被復制到庫的內存空間中
在第一階段shellcode的末尾有一個配置表,包含了加密塊的偏移量和它們各自的大小。然后,第一階段shellcode解密并整合所有的塊,形成第二階段的shellcode(一個加載器)和主要的惡意軟件(OpcJacker能加載其他惡意模塊)。

圖9. 第一階段shellcode的配置表
配置表以至少八個相同的字符開始(圖9中紅色的 "*",但在其他樣本中可能使用不同的字符),然后是數據文件的總長度(綠色字體;hm的長度=0x1775e0=1537504字節),加密密鑰(黃色字體;0x18),shellcode第二階段塊數(棕色字體;0x07),最后,由主惡意軟件的塊數(白色字體;0x08)。0x07(紅線框)和0x08(藍線框)的列表相當于每個塊的15個地址和大小。
在數據文件(hm)的開頭,我們可以看到(WAV)文件頭,因為它試圖模仿WAVE文件格式。請注意,數據文件可以是不同的文件格式,CHM格式能被模仿篡改。

圖10. 以WAV頭開始的數據文件
主要的竊密器組件(OpcJacker)
主要的惡意軟件組件(OpcJacker)是一個有趣的竊密器,首先解密并加載其配置文件。配置文件的格式類似于用自定義機器語言編寫的字節碼,其中每條指令都被解析,獲得單獨的操作碼,然后執行具體的處理程序。
在分析自定義字節碼時,我們注意到以下模式:
ASCII字符串被編碼為01 xx xx xx <string bytes>;其中xx xx xx xx是字符串的長度。

圖11. 配置文件內編碼的ASCII字符串
同樣地,寬的字符串從第02字節開始,而二進制數組從第03字節開始。

圖12. 配置文件內編碼的UNICODE字符串

圖13. 配置文件內的編碼二進制陣列
配置文件的格式是一個指令序列,其中指令以三個4字節的小端(DWORD)數字開始。第一個數字是虛擬程序計數器,第二個可能是父指令的虛擬程序計數器,而第三個是處理程序ID(將在虛擬機中執行的代碼),后面是數據字節或附加處理程序ID。
基于這些觀察,研究人員寫了一個指令解析器,從中得到了以下輸出。盡管對虛擬機內部實現的觀察和理解是不完整的,但解析器讓研究人員很好地理解了配置文件中定義的行為是什么。
解密和解碼后的配置文件從某些系統變量的初始化開始,其中 "test "和 "rik "很可能是活動ID。由SHA256 c5b499e886d8e86d0d85d0f73bc760516e7476442d3def2feeade417926f04a5釋放的配置文件包含不同的關鍵詞 "test "和 "ilk "作為活動ID。同時,2023年2月的最新活動所釋放的配置文件(SHA256 565EA7469F9769DD05C925A3F3EF9A2F9756FF1F35FD154107786BFC63703B52)包含關鍵詞 "test_installs "和 "yorik"。

圖14. 初始化命令
然后初始化剪貼板替換功能(剪切)。

圖15. 剪貼板替換器(clipper)的初始化
然后,變量 "exe "被初始化為可執行文件字節(見4d 5a 90 = MZ標記)。這個可執行文件是一個遠程訪問工具。

圖16. 嵌入式模塊(PE EXE格式)
惡意軟件通過注冊表運行和任務調度器方法設置了持久性。請注意用于保存當前進程文件名的$itself_exe變量。

圖17. 設置持久性的方法
然后,該惡意軟件啟動剪切功能,即監控剪報板上的加密貨幣地址,并將其替換為由攻擊者自己的加密貨幣地址。

圖18. 剪切器功能
最后,virtual_launch_exe函數運行先前嵌入的可執行文件,這些文件是RAT,要么是NetSupport RAT、NetSupport RAT下載器,要么是hVNC。

圖19. 運行嵌入式可執行文件的功能
自定義虛擬機中的處理程序ID
從前面幾張截圖中的第三列(或解碼后的 "命令 "變量)可以看出,虛擬機實現了許多內部處理程序。其中大部分都與各種數據操作有關。我們在表1中列出了幾個值得注意的處理程序,它們具有特定的高級功能。偷竊器實現的功能包括:剪貼(剪貼板內容替換)、鍵盤記錄、文件執行和列出、殺死進程、竊取Chrome證書、檢測空閑和檢測虛擬機。然而,在我們的測試場景中,我們觀察到竊密器大多只是設置持久性和提供額外的模塊(遠程訪問工具)。
Handler ID |
嘶吼專業版
看雪學苑
一顆小胡椒
FreeBuf
安全圈
黑白之道
數世咨詢
LemonSec
信息安全與通信保密雜志社
安全牛
黑白之道
看雪學苑