# Từ Malspam đến .NET Loader fileless: lạm dụng Google DoubleClick và chuỗi 5 tầng né tránh

Một email "đơn đặt hàng" tiếng Đức với file HTML đính kèm là điểm khởi đầu của một chuỗi tấn công 5 tầng, trong đó liên kết độc hại đi xuyên qua `ad.doubleclick[.]net` — một domain Google uy tín mà hầu hết email gateway không hề chặn. Đội Huntress SOC ghi nhận ca lây nhiễm này vào tháng 5/2026 và phát hiện đích đến cuối cùng là một **.NET loader**, vô hiệu hóa telemetry của Windows rồi cắm rễ trên máy nạn nhân.
 
![Sơ đồ đường tấn công từ malspam đến loader](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2F6bef4143242042b7a61ac640a972470f)
 
## Tóm tắt
 
Chiến dịch malspam này không phải một ca lây nhiễm tầm thường. Trước khi nạn nhân chạm tới hạ tầng của kẻ tấn công, lure đi qua **Google DoubleClick** — một domain hợp lệ, điểm tin cậy cao, hiếm khi bị blocklist và thường được allowlist bởi email gateway và URL-reputation service. Từ đó nạn nhân bị đẩy vào một **malspam kit tự cá nhân hóa**: đọc địa chỉ email từ URL, dựng lại trang ngay tại runtime, kéo logo công ty về theo thời gian thực — không cần soạn lure riêng cho từng tổ chức.
 
Khi nạn nhân tương tác, chiến dịch chuyển sang staging malware nhiều lớp: **HTML → JScript → PowerShell → .NET loader → loader lõi**, dựa nặng vào in-memory execution và .NET reflection để ở dưới radar. Loader vá AMSI và ETW ở tầng native API để "làm mù" telemetry Windows, ẩn mình bên trong tiến trình hợp lệ có chữ ký Microsoft (`InstallUtil.exe`, `MSBuild.exe`), và liên lạc C2 qua domain DDNS trên cổng phi tiêu chuẩn để dễ xoay vòng hạ tầng. Mục tiêu cuối nhiều khả năng là đánh cắp dữ liệu, với khả năng crypto-mining như follow-on. Với tổ chức tại Việt Nam, đây là lời nhắc rằng **lọc email theo reputation của domain mặt tiền là không đủ** — chuỗi chỉ lộ diện ở các tầng phía sau.
 
## Timeline và đính chính attribution
 
| Thời điểm | Sự kiện |
|---|---|
| 05/2026 | Huntress SOC xử lý ca lây nhiễm .NET loader khởi đầu từ malspam |
| 03/06/2026 | Huntress công bố phân tích chuỗi giao payload |
| 05/06/2026 | Huntress **đính chính**: gỡ bỏ attribution "DesckVB RAT" sau review, xác định lại là **.NET loader chưa định danh** |
 
> **Lưu ý về tên gọi:** một số bản tin ban đầu (bao gồm tiêu đề của The Hacker News) gọi mã độc này là *DesckVB RAT*. Huntress đã rút lại attribution đó ngày 05/06/2026. Bài này dùng cách gọi trung lập "**.NET loader**" theo đánh giá mới nhất của nhóm nghiên cứu.
 
 
## Kill Chain

1. **Email malspam** — đính kèm `Bestellung_2026.html` (lure tiếng Đức)
   ↓
2. **meta-refresh 0 giây** → `ad.doubleclick[.]net` (URL click-tracking, được đánh giá uy tín Google)
   ↓
3. **Redirector** → `fostercareintheus.optimizationprime[.]com` (giải mã email base64)
   ↓
4. **Delivery kit** → `bth.startthewave[.]org/a/#<email>` (tự rebrand theo công ty nạn nhân)
   ↓
5. **POST email** → `pengajian.muliastudy[.]com/images/edu/u.php` → trả về file ZIP
   ↓
6. **JScript loader** — `A021185521S210008-11521.js` → self-copy `C:\Users\Public\ktncm.js`
   ↓
7. **PowerShell dropper** — `nlbzl.ps1` → builder dựng `shmvg_01.ps1` (reflective .NET load)
   ↓
8. **.NET loader** (`03.txt`) — anti-analysis + tắt Defender + persistence (NVIDIA-themed)
   ↓
9. **RunPE injector** (`01.txt`) — process hollowing → `InstallUtil.exe` / `MSBuild.exe`
   ↓
10. **Loader lõi** (`bl.txt`) — patch AMSI/ETW (native), giải mã nhiều lớp
   ↓
11. **C2** — raw TCP + AES/RSA → `xtadts.ddns[.]net`, `afxwd.ddns[.]net`
 
## Phân tích kỹ thuật
 
### Lạm dụng DoubleClick + malspam kit động
 
Initial access đến từ email malspam đính kèm file HTML độc hại `Bestellung_2026.html` ("Bestellung" = "đơn đặt hàng" trong tiếng Đức). File này chỉ chứa một **meta-refresh redirect 0 giây** trỏ tới URL click-tracking của Google DoubleClick Campaign Manager (`ad.doubleclick[.]net/ddm/trackclk/...`), kèm các định danh campaign/creative. Điểm đến tiếp theo được nối sau dấu `?`, với email người nhận được base64-encode trong URL fragment.
 
Lý do định tuyến qua DoubleClick là **né lọc và mượn uy tín**: `ad.doubleclick[.]net` là domain Google reputation cao, hiếm khi bị chặn — nên domain duy nhất lộ ra ở phần đầu chuỗi lại là thứ phòng thủ ít nghi ngờ nhất.
 
![File HTML đính kèm độc hại](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2Fb1b9cf21f6ae4833adca0ad95e8303eb)
 
DoubleClick chuyển tiếp tới `fostercareintheus.optimizationprime[.]com/b#<base64-email>` — một tầng **redirector** (không phục vụ kit), giải mã email rồi đẩy sang kit host `bth.startthewave[.]org/a/#<email>`. Khi nạn nhân bấm "**PDF herunterladen**" ("Tải PDF"), hàm `downloadFile()` dựng một form ẩn và POST `email=<address>` tới `pengajian.muliastudy[.]com/images/edu/u.php`; server trả về một file ZIP (`A021185521S210008-11521.zip`).
 
Điểm "thông minh" của kit: trang lure là một file HTML tự chứa. Hàm `setupEmailAndUI()` đọc email từ `window.location.hash`, trích domain, rồi viết lại tiêu đề trang, logo header và footer để **mạo danh chính công ty của nạn nhân**. Logo được kéo về live qua chuỗi fallback (Clearbit → logo.dev → Google favicons → favicone → DuckDuckGo → `/favicon.ico` của công ty). Kit **không hardcode nội dung riêng cho tổ chức nào** — chỉ cần đổi email là rebrand tức thì. Hàm `fetchLocationAndTime()` gọi `ipapi[.]co/json/` để in ra thành phố/khu vực/quốc gia/giờ địa phương, tăng cảm giác "trang được cá nhân hóa và an toàn".
 
### JScript loader: né phân tích và self-relocate
 
ZIP chứa `A021185521S210008-11521.js` — không phải mã độc cuối mà là loader đa tầng, độn nặng junk (hàng trăm hàm chết lặp lại, chuỗi Unicode rác, filler `;;;;;` và comment **tiếng Bồ Đào Nha**).
 
![Nội dung file JScript loader](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2F24e70096089f4706b25c7e3ba79d9bf4)
 
Khi chạy, script kiểm tra đường dẫn của chính nó qua `WScript.ScriptFullName`. Nếu đang chạy từ Temp/Downloads (tức vừa được giải nén), nó tự copy sang `C:\Users\Public\ktncm.js`, relaunch bản copy bằng `wscript.exe //nologo` rồi thoát. Lần chạy thứ hai (từ vị trí ổn định, world-writable) mới rơi vào logic staging payload. Hàm `vjwNvhDoHz()` sửa một blob base64 bị "bẻ" bằng ký tự `A` và token `9999` (chống static detection), giải mã thành PowerShell, ghi ra `C:\Users\Public\nlbzl.ps1` và chạy ẩn với `-ExecutionPolicy Bypass`.
 
### Các tầng PowerShell
 
`nlbzl.ps1` thực hiện tuần tự: **connectivity check** (`Test-Connection www.google.com`) — nếu offline thì *không thoát đơn thuần* mà gọi `Restart-Computer -Force` để reboot máy; **anti-analysis sweep** đối chiếu tiến trình đang chạy với blocklist (`Dbgview`, `tcpvcon`, `tcpview`, `OLLYDBG`, `ImmunityDebugger`, `Wireshark`, `apateDNS`, và các chuỗi `any.run`, `sandbox`, `analyze`) — phát hiện là reboot; và **tải payload** qua `WebClient`.
 
![PowerShell mã hóa và obfuscate](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2Fbd52c97d9195433096f077e1c5a66f8f)
 
`nlbzl.ps1` đóng vai builder: ráp thêm một script PowerShell dạng chuỗi, ghi ra `C:\Users\Public\shmvg_01.ps1` rồi chạy. Chính script này thực hiện **reflective .NET load** (`[Reflection.Assembly]::Load`), resolve type `ClassLibrary3.Class1`, gọi method `prFVI`. Binary Microsoft có chữ ký `InstallUtil.exe` được truyền làm tham số cho `prFVI` để **signed-binary proxy execution**.
 
### .NET loader (03.txt)
 
Payload `03.txt` là một stager: xác minh không bị phân tích, tắt phòng thủ, tải/ráp các tầng tiếp, cắm persistence, rồi chạy payload cuối.
 
![Cấu hình hardcode trong .NET loader](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2Fc65a4aac1b6f4c68a654fe42590d006e)
 
- **Anti-analysis:** dò VM/sandbox (VirtualBox, VMware, Hyper-V, Parallels, QEMU, Sandboxie — gồm `SbieDll.dll`, `vmhgfs.dll`…), service triage (`mksSandbox`, `joeboxserver`, `triage`), chỉ dấu cloud/RDP, giá trị BIOS chứa "virtual"/"Hyper-V", debugger, và tooling theo tên tiến trình/tiêu đề cửa sổ. Khi trúng, loader ghi **marker file** (`vm.txt`, `Debugger.txt`, `01_detect_analisse_process.txt`) rồi thoát.
- **Staging directory:** tạo thư mục lồng sâu dưới `%UserProfile%\AppData\LocalLow\` với tên **chủ đề NVIDIA** (`LocalLow Windows`, `Program Rules`, `Program Rules NVIDEO`) để giả dạng đường cài driver hợp lệ.
- **Tamper Defender:** nếu không thấy Avast/AVG/Malwarebytes đang chạy, loader chạy PowerShell tắt real-time monitoring, IPS, MAPS, sample submission và **add cả ổ hệ thống vào exclusion**; đồng thời kill `QHActiveDefense` (Qihoo 360).
- **Tải payload:** dùng **User-Agent IE8** hardcode để kéo `bl.txt`, `01.txt`, `02.txt`.
- **Persistence:** khóa Run + RunOnce dưới `HKCU\...\CurrentVersion\` tên `Update Drivers NVIDEO_<random>`, chạy ẩn qua `powershell.exe -WindowStyle Hidden`; cộng thêm một bản copy trong **Startup folder**.
### Injector (01.txt) + template (02.txt)
 
`02.txt` là **template PowerShell** chứa token placeholder; sau khi loader điền giá trị, nó reflectively load `01.txt` (`ClassLibrary1.dll`) và gọi method `Run`. `01.txt` là DLL .NET thực hiện **process hollowing** bằng chuỗi RunPE API chuẩn: `CreateProcessA` (tạo tiến trình suspended) → `ZwUnmapViewOfSection` → `VirtualAllocEx` → `WriteProcessMemory` → `GetThreadContext`/`SetThreadContext` → `ResumeThread` (kèm biến thể Wow64 cho cross-architecture). Mọi tên API bị mangle; đáng chú ý wrapper `CreateProcessA` còn giữ từ tiếng Bồ Đào Nha **"criando"** ("đang tạo").
 
![DllImport VirtualAllocEx với tham số bị obfuscate](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2F7644349a10f74e9ca0f88bacd761eb95)
 
**Target inject là tùy cấu hình operator:** trong sample phân tích tĩnh là `InstallUtil.exe`, nhưng trong telemetry thực địa Huntress quan sát thấy dùng `MSBuild.exe`.
 
### Loader lõi (bl.txt) và C2
 
`bl.txt` (inject vào `InstallUtil.exe`) chưa phải loader cuối mà là thêm một lớp packing: static constructor đọc embedded resource, giải mã bằng **stream cipher tùy biến** (key 32-byte + IV 16-byte, mix bằng multiply-accumulate với hằng số magic 9495/10476/22014, shift-XOR), tùy chọn LZX-decompress rồi `Assembly.Load`. Một lớp nữa qua **TripleDES-CBC (PKCS7) + GZip**. Toàn bộ cấu hình được đóng gói thành một message **protobuf**, base64-encode, lưu dưới một string literal.
 
![Cấu hình loader](https://cdn.builder.io/api/v1/image/assets%2F3eb6f92aedf74f109c7b4b0897ec39a8%2F176bfc90099f4198ae29471266baea5b)
 
Loader liên lạc C2 qua **raw TCP socket**, message **protobuf mã hóa AES**; khóa AES dẫn xuất từ mật khẩu `P@55w0rd!` bằng `Rfc2898DeriveBytes` (PBKDF2); **RSA** dùng cho key exchange ban đầu; và loader **pin danh tính server bằng 5 hash SHA-256 chứng chỉ** nhúng sẵn. Trên beacon đầu, loader thu thập fingerprint phần cứng (WMI: `Win32_Processor`, `Win32_DiskDrive`, `Win32_BaseBoard`, `Win32_VideoController`, `Win32_OperatingSystem`), enumerate AV qua `SecurityCenter2`, và **đặc biệt dò GPU NVIDIA (GTX/RTX) và AMD (Radeon)** qua cả WMI lẫn registry — mức quan tâm GPU này *có thể* gợi ý crypto-mining như follow-on, hoặc dùng để masquerade.
 
### Patch AMSI và ETW ở tầng native
 
Loader vá **AMSI** và **ETW** ở mức native API để làm mù telemetry trước cả khi cắm persistence:
 
- Đọc build number; nếu **≥ 26100 (Windows 11 24H2)**, resolve `NtManageHotPatch` từ `ntdll.dll` và ghi đè prologue bằng stub trả `STATUS_NOT_SUPPORTED` (`0xC00000BB`) — nhắm vào cơ chế nạp AMSI dựa trên hot-patch mới trong 24H2.
- Trên 64-bit, pattern-scan `ntdll.dll` tìm `EtwEventWrite` và ghi đè entry point bằng `xor rax, rax; ret`, biến mọi ETW event logging thành no-op.
- Cả hai dùng `VirtualProtectEx` → `WriteProcessMemory` → `FlushInstructionCache`.
Loader có thể nhận payload bổ sung từ C2 theo **3 chế độ**: in-memory injection (RunPE vào `MSBuild.exe`/`InstallUtil.exe`, không chạm đĩa), PowerShell (`.ps1` qua scheduled task one-shot), hoặc file-drop (giải mã AES, ghi đĩa, scheduled task).
 
## Indicators of Compromise (IOC)
 
> IOC giữ ở dạng defanged. Huntress công bố IOC đầy đủ trên [GitHub threat-intel](https://github.com/huntresslabs/threat-intel/blob/main/2026/2026-06/20260603_fileless-loader-rat.csv).
 
| Indicator | Mô tả |
|---|---|
| `Bestellung_2026.html` | HTML đính kèm độc hại |
| `fostercareintheus.optimizationprime[.]com` | Tầng redirector |
| `bth.startthewave[.]org` | Delivery kit |
| `pengajian.muliastudy[.]com/images/edu/u.php` | Phục vụ ZIP payload |
| `A021185521S210008-11521.zip` | ZIP giao bởi kit (u.php) |
| `A021185521S210008-11521.js`, `ktncm.js` | JScript loader |
| `nlbzl.ps1` | PowerShell dropper |
| `shmvg_01.ps1` | PowerShell stager |
| `zkrbx.txt`, `gglhn.txt` | File staging |
| `andrefelipedonascime1778799406970.2241107.meusitehostgator[.]com[.]br` | Phục vụ `01/02/03.txt` |
| `catalogo.castrouria[.]com` | Phục vụ `bl.txt` (loader đóng gói) |
| `%USERPROFILE%\AppData\LocalLow\LocalLow Windows\Program Rules\Program Rules NVIDEO\...` | Staging dir chủ đề NVIDIA |
| `xtadts.ddns[.]net`, `afxwd.ddns[.]net` | C2 server (DDNS) |
| `P@55w0rd!` | Mật khẩu AES (PBKDF2) cho C2 |
| IE8 UA (`Mozilla/4.0 ... MSIE 8.0 ... Trident/4.0 ...`) | User-Agent hardcode khi tải payload |
| SHA-256 cert pin (×5) | `D5B7247C...59B5`, `C61B1941...01A6`, `C356AFF1...8C18`, `F1C3EBE7...5348`, `E91FB249...74DD` |
 
## MITRE ATT&CK Mapping
 
| Tactic | Technique | ID |
|---|---|---|
| Initial Access | Phishing: Spearphishing Attachment | [T1566.001](https://attack.mitre.org/techniques/T1566/001/) |
| Execution | User Execution: Malicious File/Link | [T1204.002](https://attack.mitre.org/techniques/T1204/002/) / [.001](https://attack.mitre.org/techniques/T1204/001/) |
| Execution | Command & Scripting: PowerShell / JavaScript | [T1059.001](https://attack.mitre.org/techniques/T1059/001/) / [.007](https://attack.mitre.org/techniques/T1059/007/) |
| Defense Evasion | Obfuscated Files or Information | [T1027](https://attack.mitre.org/techniques/T1027/) |
| Defense Evasion | Deobfuscate/Decode Files | [T1140](https://attack.mitre.org/techniques/T1140/) |
| Defense Evasion | System Binary Proxy Exec: InstallUtil | [T1218.004](https://attack.mitre.org/techniques/T1218/004/) |
| Defense Evasion | Trusted Developer Utilities: MSBuild | [T1127.001](https://attack.mitre.org/techniques/T1127/001/) |
| Defense Evasion | Process Injection: Process Hollowing | [T1055.012](https://attack.mitre.org/techniques/T1055/012/) |
| Defense Evasion | Reflective Code Loading | [T1620](https://attack.mitre.org/techniques/T1620/) |
| Defense Evasion | Impair Defenses: Disable/Modify Tools (AMSI/ETW/Defender) | [T1562.001](https://attack.mitre.org/techniques/T1562/001/) |
| Defense Evasion | Virtualization/Sandbox Evasion | [T1497](https://attack.mitre.org/techniques/T1497/) |
| Persistence | Registry Run Keys / Startup Folder | [T1547.001](https://attack.mitre.org/techniques/T1547/001/) |
| Persistence | Scheduled Task | [T1053.005](https://attack.mitre.org/techniques/T1053/005/) |
| Discovery | System Information Discovery | [T1082](https://attack.mitre.org/techniques/T1082/) |
| Discovery | Security Software Discovery | [T1518.001](https://attack.mitre.org/techniques/T1518/001/) |
| C2 | Non-Application Layer Protocol (raw TCP) | [T1095](https://attack.mitre.org/techniques/T1095/) |
| C2 | Encrypted Channel (AES/RSA) | [T1573](https://attack.mitre.org/techniques/T1573/) |
 
## Detection
 
Hướng phát hiện nên thiên về **behavior/telemetry**, không trông vào signature của payload (vì chuỗi fileless + signed-binary proxy + AMSI/ETW blinding). Hai giả thuyết hunting cốt lõi của Huntress: cảnh báo khi `.js/.vbs/.hta` là tiến trình con của `explorer.exe`; và khi `wscript.exe` chạy từ `C:\Users\Public\` rồi spawn PowerShell mã hóa/obfuscate.
 
KQL gợi ý cho **Microsoft Sentinel / Defender XDR** (`DeviceProcessEvents`, `DeviceRegistryEvents`, `DeviceNetworkEvents`):
 
```kql
// 1) Script engine chạy từ thư mục world-writable rồi spawn PowerShell ẩn
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("wscript.exe","cscript.exe")
| where InitiatingProcessCommandLine has @"C:\Users\Public\"
| where FileName =~ "powershell.exe"
| where ProcessCommandLine has_any ("-ExecutionPolicy Bypass","-WindowStyle Hidden","-File","FromBase64String")
| project Timestamp, DeviceName, InitiatingProcessCommandLine, ProcessCommandLine
```
 
```kql
// 2) Signed-binary proxy: InstallUtil/MSBuild được khởi chạy bởi PowerShell (host inject)
DeviceProcessEvents
| where FileName in~ ("installutil.exe","msbuild.exe")
| where InitiatingProcessFileName =~ "powershell.exe"
| project Timestamp, DeviceName, FileName, FolderPath, InitiatingProcessCommandLine
```
 
```kql
// 3) Persistence: Run/RunOnce key tên chủ đề NVIDIA
DeviceRegistryEvents
| where RegistryKey has_any (@"\CurrentVersion\Run", @"\CurrentVersion\RunOnce")
| where RegistryValueName startswith "Update Drivers NVIDEO"
| project Timestamp, DeviceName, RegistryKey, RegistryValueName, RegistryValueData
```
 
```kql
// 4) Beacon tới C2 DDNS đã biết
DeviceNetworkEvents
| where RemoteUrl has_any ("xtadts.ddns.net","afxwd.ddns.net")
   or RemoteIPType == "Public" and InitiatingProcessFileName in~ ("installutil.exe","msbuild.exe")
| project Timestamp, DeviceName, RemoteUrl, RemoteIP, RemotePort, InitiatingProcessFileName
```
 
## Nhận định chuyên gia
 
Điểm đáng chú ý nhất của chiến dịch không nằm ở loader — vốn dùng các kỹ thuật đã biết (process hollowing, AMSI/ETW patch, signed-binary proxy) — mà ở **chiến lược "mượn lòng tin của domain mặt tiền"**. Dùng `ad.doubleclick[.]net` làm bước đầu chuỗi là một nước đi nhắm thẳng vào điểm yếu vận hành của phần lớn SOC: chính sách lọc URL/email dựa trên reputation domain. Khi domain đầu chuỗi là tài sản Google, gateway gần như chắc chắn cho qua, và toàn bộ phần độc hại nằm ở các tầng phía sau mà chỉ kiểm tra time-of-delivery sẽ bỏ lỡ.
 
Với môi trường khách hàng tại Việt Nam — nơi nhiều tổ chức dựa vào email gateway và proxy reputation-based làm tuyến phòng thủ chính — mô hình này đặc biệt nguy hiểm. Kết hợp fileless + reflective loading + blinding AMSI/ETW khiến EDR thuần signature rất dễ "mù". Theo quan điểm của đội ngũ phân tích, ba lớp kiểm soát có giá trị thực tế nhất ở đây là: chặn khả năng *thực thi* của script attachment ngay từ đầu (GPO), kiểm tra attachment/URL **time-of-click chứ không phải time-of-delivery**, và detection dựa trên **chuỗi hành vi tiến trình** (script engine → PowerShell mã hóa → InstallUtil/MSBuild làm host inject) thay vì IOC tĩnh — vì C2 dùng DDNS xoay vòng nhanh, chặn IP gần như vô nghĩa.
 
Lure tiếng Đức và comment tiếng Bồ Đào Nha trong code gợi ý đây là một kit thương mại hóa, tái sử dụng xuyên khu vực — phù hợp xu hướng malspam ngày càng *scalable* mà vẫn *thuyết phục* nhờ cá nhân hóa runtime. Việc Huntress phải rút lại attribution "DesckVB RAT" cũng là lời nhắc tốt: **gắn tên họ mã độc quá sớm dễ sai**, và một báo cáo TI tốt nên ưu tiên TTP/IOC có thể kiểm chứng hơn là một cái nhãn bắt mắt.
 
## Khuyến nghị
 
- **Ép script mở bằng Notepad.** Cấu hình GPO buộc `.js`, `.vbs`, `.hta` mở mặc định bằng Notepad/Notepad++ — vô hiệu hóa khả năng tự thực thi ngay ở tầng đầu tiên.
- **Kiểm tra time-of-click.** Triển khai email gateway có sandbox attachment/URL; bật Safe Links/Safe Attachments (hoặc tương đương) để quét tại thời điểm click, không chỉ lúc nhận.
- **Chặn script attachment ở mail layer.** Quarantine hoặc block file script và Office macro-enabled ngay tại gateway — kiểm soát ít công, lợi nhiều.
- **Củng cố vành đai email.** Triển khai SPF, DKIM, DMARC để giảm spoofing/impersonation.
- **Detection theo hành vi, không theo IP.** Cảnh báo theo chuỗi hành vi (script engine → PowerShell mã hóa từ `C:\Users\Public\` → `InstallUtil`/`MSBuild` làm host inject) và đào tạo nhận thức phishing định kỳ — C2 DDNS xoay vòng quá nhanh để chặn theo IP.
## Tài liệu tham khảo
 
- Huntress — [From Malspam to Fileless .NET Loader](https://www.huntress.com/blog/malspam-to-loader-delivery-chain-analysis)
- Huntress — [IOC trên GitHub (threat-intel)](https://github.com/huntresslabs/threat-intel/blob/main/2026/2026-06/20260603_fileless-loader-rat.csv)
- The Hacker News — [Google DoubleClick Abused in New Malspam Campaign to Deliver .NET Loader](https://thehackernews.com/2026/06/google-doubleclick-abused-in-new.html)
- MITRE ATT&CK — [Process Hollowing (T1055.012)](https://attack.mitre.org/techniques/T1055/012/) · [Reflective Code Loading (T1620)](https://attack.mitre.org/techniques/T1620/) · [Impair Defenses (T1562.001)](https://attack.mitre.org/techniques/T1562/001/)
