超百萬終端感染“幽靈插件”,黑客可操控搜索結果
背景
奇安信威脅情報中心在終端側運營過程中發現了一個規模巨大并且能夠劫持受害者Google 搜索內容和劫持電商鏈接等惡意行為的境外黑客團伙,基于 PDNS 數據發現該團伙從 2021 年開始活躍,并且惡意域名在 OPENDNS 的 top 1m 列表中,全球受影響的終端至少百萬級別。
|
URL |
活躍時間 |
|
overbridgenet.com/jsv2/offer_combo_v6 |
2021-05-10至2023-04-15 |
|
overbridgenet.com/jsv8/offer |
2023-05-24至今 |
相關域名在國內的訪問量也很大:
我們在瀏覽器中找到了一個惡意插件,并將其命名為“幽靈插件”。
攻擊者繞過了 Google CSP 機制,當使用Google 搜索時會向頁面中注入 js,注入前截圖如下:
注入后結果如下:
Google 搜索頁面加載了額外的 js,額外在頂部展示出攻擊者推送的結果,除了控制搜索結果外,受害者訪問任意頁面時都會注入另一段 js,用來追蹤受害者訪問習慣和軌跡,當受害者訪問電商類型的網站時惡意 js 會從 overbridgenet.com/jsv8/offer 獲取到一個新的域名用來劫持當前頁面中的跳轉鏈接。
overbridgenet.com 解析的IP為 5.223.52.27,該 IP 下存在多個可疑域名,訪問量都很大。
基于 VT 數據可以看到大量 URL,URL 的字段與上述拼接的字段一致,只是順序有所不同,所以這些 URL 是惡意 js 拼接后的劫持鏈接,觀察到被劫持的 URL 存在一些 web 登錄頁面。
目前劫持鏈接只有跳轉功能,劫持邏輯由攻擊者在云端控制,理論上可以定制化劫持特定的網站,甚至可以進行中間人劫持獲取登錄頁面的賬密。
影響范圍
基于 PDNS 數據,我們對受到到惡意插件影響的國內受害者進行了統計:
當 Google 搜索結果被劫持時會訪問 svdred.com 和 xerogala.com,那么可以統計實際被成功劫持的國內受害情況:
技術細節
如此大規模的受害程度,攻擊路徑可能不止一個,基于終端數據我們觀察到該惡意插件隱藏在破解安裝包中,如下:
攻擊者將類似這種偽造的安裝包上傳到一些破解軟件的下載站,等待受害者下載,受害者點擊后會在 C:\Users\Public\data 下釋放一系列惡意組件。
其中的一部分組件首先會被釋放到 C:\Windows\System32 文件夾下。
之后由 mdwslp 完成這些組件從 Windows\System32 到 Users\Public\data 的過渡。
釋放完畢后會執行 sc create XblGame binPath="C:\Users\Public\data\mdwslp.exe" start= auto 命令,將 mdwslp 組件注冊為服務,然后啟動該服務。
mdwslp.exe
該組件負責整個惡意 web 插件的初始化,首先會判斷相關組件是否存在來確定是否已初始化完成。
將 Windows\System32\data1.zip 解壓到 Public\data\ext。
該部分為惡意 web 插件的 js 代碼。
之后會循環檢測是否存在 Public\data\uptimecrx.exe,不存在就從 Windows\System32\uptimecrx.dat 拷貝。
拷貝之后會使用 微軟官方簽名工具 signtool.exe 對其進行簽名。
具體的簽名攻擊者自己創建的。
最后將 uptimecrx.exe 注冊為另一個服務 XblGame2 并啟動。
uptimecrx.exe 的簽名每 10 小時更新一次。
檢測標志文件 Public\data\up1.dat 是否存在,如果存在則表示自身需要更新,退出循環,該組件的更新由 uptimecrx.exe 完成。
除此之外,該組件還會循環檢測惡意 DLL 是否注入到目標進程。
如果沒檢測到就會調用注入工具進行注入。
該工具為之前釋放的 Windows\System32\datax.dat,調用時會為其隨機設置一個新文件名并拷貝到 AppData\Local\Temp\xtdbf 文件夾下。
之后以 --install/--uploaddll 等參數啟動該工具。
uptimecrx.exe
該組件用于更新和持久化 mdwslp.exe,循環檢測 mdwslp.exe 是否存在,如果不存在則從 Windows\System32\mi_nt_svc.dat 拷貝,并重新注冊服務并啟動。
檢測 mdwslp.exe 注冊的服務 XblGame 是否已停止,如果停止則重新啟動。
通過標志文件 Public\data\up1.dat 檢測 mdwslp.exe 是否需要更新,仍然通過拷貝 Windows\System32\mi_nt_svc.dat 進行更新并對其重新簽名,更新完畢后注冊并啟動服務。
datax.dat
該組件為 DLL 注入工具,其主要功能為將惡意的 ntdb.dll 注入到目標進程中。
根據參數的不同,注入的目標進程如下所示:
--install:注入到 explorer 進程;
--browser_chrome:注入到 chrome 進程;
--browser_msedge:注入到 msedge 進程;
--uploaddll:從 Windows\System32\ntdb.dat 處獲取新的載荷 DLL,并重新簽名。
ntdb.dll
該組件用于加載惡意 web 插件,首先判斷自身是否在 explorer.exe、chrome.exe、msedge.exe進程中,如果不是則結束運行。
如果其在 chrome.exe 或 msedge.exe 中,hook 相關 dll 中的 ChromeMain 函數。
以及 hook 相關事件函數。
如果在 explorer.exe 進程中,則會以 --load-extension 等參數啟動瀏覽器,用于加載惡意 web 插件。
惡意插件路徑指定為 Users\Public\data\ext。
啟動完畢后會將自身注入到瀏覽器進程。
Ext(瀏覽器插件)
如果惡意插件加載成功,瀏覽器擴展欄會顯示一個空白頁面。
詳細信息如下:
manifest.json
定義相關 js 的作用范圍,service_worker.js 為后臺服務工作進程:
content_script.js 會在 url 匹配到搜索引擎相關時被加載:
disabled-trusted-types.js 在任何時候被加載;
之后定義了一些雜項,包括版本信息,更新鏈接等。
content_script.js
獲取當前 uuid 傳遞給 web_accessible_resource.js 并加載。
web_accessible_resource.js
首先進行簡單 url 檢測,檢測成功后會向 calnor.info 請求 js 并注入到當前頁面。
根據 manifest.json 中的規則,訪問 Google 搜索時會加載該 js,可以看到 calnor.info 返回的 js 已經出現在網頁源碼中。
disabled-trusted-types.js
關閉瀏覽器的 XSS 防御策略。
service_worker.js
該 js 為后臺服務進程,在擴展被啟動時運行,首先會注冊一個安裝事件監聽器,當該擴展被首次安裝時執行。
首先從 klymos.info 獲取一個 uuid:trackInstall。
注冊客戶端 ID,向 dash.zintrack.com 發送該事件的消息:sendApiRequest。該域名是 Google Analytics 的輕量級替代,攻擊者注冊了自己的 api key 用來統計受害者。
設置該擴展被卸載時接收消息的域名 dash.zintrack.com:setUninstallURL。之后會設置一個定時器,每過一段時間進行規則更新。
規則仍然從 klymos.info 獲取,并將獲取到的規則應用到該擴展的網絡請求攔截中。
獲取到的規則如下,其功能是對部分搜索網站的網絡請求中移除掉 content-security-policy、X-Xss-Protection 等安全策略。
注冊定時器 update-rc 用于獲取遠程代碼。
fetchRemoteCode 用于從 infird.com 獲取 js 代碼。
注冊選項卡更新事件,每當用戶創建了新的瀏覽器選項卡時,將獲取到的遠程 js 代碼加載到當前頁面,如果當前頁面 url 在 blacklist 中則不加載。
當用戶訪問任何不在 blacklist 中的網頁時,該 js 被加載到網頁源碼中。
最后會生成一個 page_view 事件,用于指示受害者已經加載了 service_worker.js。
這些信息會被發送到 Google 的網絡分析服務網站 www.google-analytics.com,攻擊者在該網站注冊了自己的 API,可能是用于統計受害者。
remote code.js
該 js 是從 infird.com 獲取的遠程 js 文件,會在用戶打開新網頁(新增選項卡)時加載,其惡意邏輯通過攻擊者設置的幾個限時 cookie 進行控制。
首先會對當前頁面 url 進行嚴格過濾,對于大部分的色情網站、社交媒體、搜索引擎等會停止執行。
url 中如果存在以下字段也會停止執行,可以看出攻擊者在避免高訪問量的場景,可能是用于隱藏自身。
如果通過了過濾,會設置一個定時器,每 20000 ms 執行相應操作。
進行初始化階段,檢測相應 cookie 項是否存在,如果存在則停止執行并清除定時器。
其中 Lda_aKUr6BGRn 是用于攻擊者進行重定向的網址,當他為空時,會從 overbridgenet.com 獲取一個新網址進行填充。
overbridgenet.com 會返回一個 json 文件,其中 at 項用來填充 Lda_aKUr6BGRn,在實際調試中該頁面僅返回 {"s":1,"n":1} 格式的 json 文件,攻擊者可能會篩選目標后才會在特定時間填充 at 項進行攻擊。
如果 n = 1,perf_dv6Tr4n 項會被創建并填充為 1,json 中的 c 項為 cookie 過期時間,用于控制該 js 文件是否繼續執行 (在初始化階段時 perf_dv6Tr4n = 1 就返回)。
由于實際調試時 json 文件沒有 c 項,該 cookie 不會過期。
如果 Lda_aKUr6BGRn 項被填充,則進入下一階段過濾:
1、當前 url 為指定電商網站且 Ac_aqK8DtrDL 為空。
執行鏈接替換操作。
首先會創建一個點擊事件監聽器,當用戶在該頁面點擊了帶有指定標簽的元素時,劫持用戶跳轉并將用戶重定向到攻擊者指定的鏈接。
新鏈接由 Lda_aKUr6BGRn 拼接得來,新鏈接可能用于攻擊者進行釣魚。
2、當前 url 不是電商網站且 Lda_aKUr6BGRn 不為空以及 Ac_aqK8DtrDL 為空。
將整個頁面劫持到攻擊者的鏈接,設置 Ac_aqK8DtrDL 為 1,Ac_aqK8DtrDS 用于計數。
3、Ac_aqK8DtrDL 不為空 Fm_kZf8ZQvmX 為空
創建一個新 iframe,將 src 項設置為攻擊者的鏈接,設置其樣式并將其插入到當前頁面內容中,最后設置 Fm_kZf8ZQvmX 為 1。
calnor.js
該 js 是從 calnor.info 處獲取的 js 代碼,用于攻擊者攔截相關 manifest.json 規則中的網頁并將其注入。
其主要針對 Google 等搜索引擎,攻擊者可以替換用戶搜索頁面的內容,首先會檢測當前頁面是否存在攻擊者設置過的標簽 mdorkirgneorpowtn。
如果存在則向 svdred.com 發送相關標簽數據,不存在則發送 global。
同樣的,檢測頁面是否包含另一些元素,并向 svdred.com 發送元素對應數據,這些元素在正常的 Google 搜索頁面上并不存在,是由攻擊者進行設置的,對其進行檢測用于去除重復執行。
對于該 js,執行后會在當前頁面插入元素 mdorkirgneorpowtn。
對于以上所有元素,檢測到之后會終止執行,用于避免不同的組件互相影響。
通過檢測之后,首先設置 mdorkirgneorpowtn 值為 a=4001&u=0106-20250304-ORG。
攻擊者會避免在一些搜索模式中執行該組件,如用戶搜索圖片和購物等,僅根據搜索內容區分并向 xerogala.com 發送不同類型的信息,然后終止執行。
之后會向頁面 head 中添加一個名為 referrer 的 meta 元素。
之后進入替換邏輯,首先獲取搜索內容,創建一個新 style 元素并設置樣式。
根據獲取的搜索內容拼接 url 請求,發送到 xerogala.com 并獲取返回數據。
將返回數據處理后,填充到元素 sadsfs 中,插入到當前頁面。
其功能是在搜索頁面的開頭處插入攻擊者替換的搜索結果,如下是受害者進行搜索后的效果,可以看到最開頭的幾個搜索結果被替換。
正常用戶的搜索結果中不包含最開始的內容。
通過調試頁面可以看到攻擊者插入的內容正是 sadsfs 元素,其大多數情況下是廣告內容。
總結
目前,基于奇安信威脅情報中心的威脅情報數據的全線產品,包括奇安信威脅情報平臺(TIP)、天擎、天眼高級威脅檢測系統、奇安信NGSOC、奇安信態勢感知等,都已經支持對此類攻擊的精確檢測。
IOC
C2:
calnor.info
klymos.info
infird.com
overbridgenet.com
infirc.com
xerogala.com
svdred.com
cachedclr.com
MD5:
40210f065e82d06b364f56c9ab4efdcd
a4aa475e2309f05ac83d8289b4604cbd
1c6271c9bd6281b06965ca780b292e65
ebee140bdb9f1f80597cdea66860e1b6






