# RemotePE — RAT chạy hoàn toàn trong bộ nhớ của Lazarus

## Tóm tắt
 
Một subgroup của Lazarus — nhóm APT gắn với Triều Tiên, nổi tiếng với các vụ trộm tiền mã hoá quy mô hàng trăm triệu USD — đã thay thế bộ công cụ cũ (ThemeForestRAT, PondRAT) bằng một chuỗi ba tầng **memory-only** được Fox-IT/NCC Group đặt tên **RemotePE**. Payload cuối cùng chạy hoàn toàn trong RAM, **không bao giờ ghi xuống đĩa**, nên một bản chụp forensic ổ cứng gần như không thu được gì.
 
Điểm khiến chiến dịch này nguy hiểm với doanh nghiệp không phải là một lỗ hổng cụ thể, mà là **khả năng tồn tại âm thầm dài hạn**: kẻ tấn công có thể giữ quyền truy cập nhiều tháng để quan sát, trước khi ra đòn cuối (đánh cắp dữ liệu hoặc một vụ trộm tài chính lớn). Nạn nhân được xác nhận là một **tổ chức DeFi (tài chính phi tập trung)**, truy cập ban đầu qua social engineering trên Telegram.
 
**Đối tượng cần chú ý nhất:** các sàn giao dịch crypto, quỹ DeFi, fintech, và bất kỳ tổ chức nào nắm giữ tài sản số hoặc khoá ví. **Một hành động ưu tiên:** săn lùng (threat hunt) các **blob mã hoá bằng DPAPI nằm ở thư mục bất thường** và các **DLL giả danh dịch vụ Windows hợp lệ** — đây là dấu vết host-based đáng tin cậy nhất, vì C2 trên mạng được nguỵ trang gần như y hệt traffic Microsoft.

## Attribution & bối cảnh
 
Fox-IT/NCC Group quy chiến dịch này cho một subgroup Lazarus với **mức tin cậy cao**, dựa trên sự chồng lấn (overlap) với các cụm hoạt động đã biết: AppleJeus, Citrine Sleet, UNC4736 và Gleaming Pisces. Đây cũng chính là nhóm trước đó dùng ThemeForestRAT và PondRAT — và RemotePE là bản thay thế "tinh vi hơn" cho hai họ mã độc đó trong một ca điều tra cụ thể.
 
Hai bằng chứng hành vi củng cố attribution: (1) **lệnh xoá file ghi đè 7 lần** trùng khớp với pattern của PondRAT và POOLRAT — hai họ mã độc trước đây gắn với chính actor này; và (2) **toàn bộ 6 lần giao payload thành công** đều rơi vào khung giờ ban ngày theo múi giờ Triều Tiên (KST, UTC+9), khớp với giờ làm việc của operator. Theo Security Affairs, truy cập ban đầu đi theo mô-típ quen thuộc của Lazarus: dụ nạn nhân qua Telegram, đóng vai nhân viên một công ty trading hợp pháp và đặt lịch họp giả qua các domain Calendly/Picktime nguỵ tạo.
## Luồng tấn công
 
Bộ công cụ tạo thành một **chuỗi ba tầng** nối tiếp nhau, mỗi tầng chỉ làm một việc và "khoá" tầng sau lại
 
![Sơ đồ chuỗi ba tầng DPAPILoader → RemotePELoader → RemotePE](https://blog.fox-it.com/wp-content/uploads/2026/05/remotepe_diagram-4.png)
*Figure 1 — Chuỗi ba tầng: DPAPILoader giải mã & nạp RemotePELoader từ đĩa, RemotePELoader lấy & thực thi RemotePE trong bộ nhớ. Nguồn / Source: Fox-IT International blog.*
## Phân tích kỹ thuật chi tiết
 
### Tầng 1 — DPAPILoader: loader gắn chặt với môi trường nạn nhân
 
DPAPILoader là một DLL có nhiệm vụ duy nhất: giải mã một payload mã hoá nằm trên đĩa và nạp nó vào bộ nhớ. Trong ca điều tra, nó nằm tại `C:\Windows\System32\Iassvc.dll`, cài dưới dịch vụ tên **"Internet Authentication Service"** — chạy tự động lúc khởi động, tạo persistence. Tên file và tên dịch vụ cố ý bắt chước IAS hợp lệ của Windows Server (DLL thật là `iassvcs.dll` — chú ý chữ 's' thừa).
 
Mẫu này trước tiên kiểm tra xem nó có đang chạy dưới `svchost.exe` không, sau đó quét mọi file khớp `C:\ProgramData\Microsoft\Windows\DeviceMetadataStore\en-US*.*`. Thư mục này bình thường chứa file Microsoft Cabinet. DPAPILoader **bỏ qua mọi file bắt đầu bằng magic bytes Cabinet** (`MSCF` / `4D 53 43 46`) để loại file hợp lệ, rồi giải mã (DPAPI) bất kỳ file nào lớn hơn 50 KiB và reflective-load bằng [libpeconv](https://github.com/hasherezade/libpeconv).
 
**Vì sao DPAPI là lựa chọn "đắt giá" cho kẻ tấn công?** DPAPI gắn khoá giải mã vào **đúng tài khoản người dùng trên đúng máy** đó. Hệ quả:
 
- Payload trên đĩa **không bao giờ ở dạng plaintext**; tải mẫu lên VirusTotal là **vô dụng** nếu không có khoá DPAPI của nạn nhân → static analysis bất khả thi.
- Mỗi lần triển khai sinh ra một blob mã hoá **khác nhau** → **hash thay đổi giữa các nạn nhân**, đánh bại detection theo signature/hash.
Sau khi giải mã DPAPI, payload còn bị XOR thêm với `0x8D`. Đây là một dạng [environmental keying](https://attack.mitre.org/techniques/T1480/001/) (`T1480.001`).
 
**Ba mẫu DPAPILoader quan sát được (trải dài ~9 tháng):**
 
| PE timestamp | DLL | Export | Cơ chế che giấu |
|---|---|---|---|
| 2023-11-14 | `Iassvc.dll` | `ServiceMain` | XOR `0x8D` |
| 2024-02-21 | `sspicli.dll` | `InitSecurityInterfaceW` | XOR `0x8D` |
| 2024-08-21 | `wmiclnt.dll` | `WmiOpenBlock` | DPAPI + XOR `0x8D` |
 
Mẫu `sspicli.dll` được **DLL side-loading** qua `edp.exe` của ESET; mẫu `wmiclnt.dll` **nhúng thẳng** payload mã hoá vào DLL, loại bỏ phụ thuộc vào file rời trên đĩa.
 
### Tầng 2 — RemotePELoader: loader do operator điều khiển
 
RemotePELoader được giải mã ra từ payload DPAPI. Nó **không có chức năng RAT**; nhiệm vụ duy nhất là lấy module lõi từ C2 và nạp vào bộ nhớ. Trước khi làm bất cứ gì khác, nó áp dụng hai kỹ thuật né tránh:
 
1. **HellsGate (biến thể [TartarusGate](https://github.com/trickster0/TartarusGate))** — phân giải số syscall của Windows tại runtime bằng cách quét stub trong `ntdll.dll` (lấy `NtOpenSection`, `NtMapViewOfSection`, `NtUnmapViewOfSection`, `NtProtectVirtualMemory`, `NtClose`). Dùng direct syscall, nó **remap từng DLL từ section `\KnownDlls`** sạch, **gỡ bỏ mọi hook userland** mà sản phẩm bảo mật đặt vào.
2. **Patch ETW** — ghi đè `EtwEventWrite()` trong tiến trình hiện tại bằng:
```asm
48 33 c0          ; XOR  RAX, RAX
c3                ; RET
```
 
Khiến `EtwEventWrite` trả về 0 ngay lập tức, **dập tắt toàn bộ telemetry ETW** mà nhiều EDR phụ thuộc.
 
**Cấu hình** đọc từ cùng thư mục `DeviceMetadataStore`, phân biệt với payload PE bằng **kích thước** (config < 20 KiB), giải mã DPAPI rồi XOR `0x8D`. Struct config chứa: thời gian ngủ giữa các lần poll, tối đa 3 C2 URL, proxy tuỳ chọn, và User-Agent có thể cấu hình.
 
**C2 qua HTTP POST.** Thông tin host nhét vào header `Cookie`; request check-in nhận diện bằng `at_check=true`. Server trả JSON với khoá `odata.metadata` chứa session ID; sau đó cookie `at_check` được thay bằng `ai_session`. Payload (PE) trả về dưới dạng **AES-GCM + Base64**. Mọi message (trừ check-in đầu) đều mã hoá AES, khoá/nonce sinh từ SplitMix64 seed bởi Mersenne Twister.
 
> Trong thử nghiệm emulate C2 của Fox-IT, server **không trả payload ngay** — gợi ý mô hình **actor-in-the-loop**: operator quyết định thủ công thời điểm giao payload.
 
### Tầng 3 — RemotePE: RAT chạy hoàn toàn trong bộ nhớ
 
RemotePE là RAT đầy đủ tính năng, viết bằng **C++ hướng đối tượng**, đa luồng, dùng chung codebase với RemotePELoader (chung struct `C2Message`, chung file config trên đĩa). Cả hai stage **xác minh chuỗi** bằng cách kiểm tra `lpReserved == 0x1000` trong `DllMain` — nếu không được nạp bởi stage trước thì không chạy.
 
Hai luồng chính: `IChannelController` (giao tiếp C2) và `IMiddleController` (xử lý lệnh). Khi đang ngủ, RemotePE còn kiểm tra sự tồn tại của một **Windows event tên `554D5C1F-AABE-49E4-AB57-994D22ECED28`** — nếu có, nó tỉnh dậy ngay. Không thành phần nào trong bộ công cụ tạo event này → đây là cơ chế "đánh thức" ngoài luồng (out-of-band) do operator kích hoạt.
 
**Sáu nhóm lệnh** (định danh bằng tên class RTTI của C++):
 
| Class (ID) | Func ID | Chức năng |
|---|---|---|
| `IConfigProfile` (0) | 0–1 | Lấy / đặt cấu hình C2 |
| `IConsole` (1) | 0–6 | Lấy/đổi CWD; thực thi lệnh; liệt kê/nạp/gọi/gỡ module (plugin DLL) |
| `IFileExplorer` (2) | 0–6 | Liệt kê ổ đĩa & thư mục; xoá/đổi tên/đọc/ghi file; ZIP file/thư mục để trả về |
| `IProcess` (3) | 0–4 | Liệt kê/kill tiến trình; tìm file theo biến môi trường; tạo process (có cả create-as-user) |
| `ITimer` (4) | 0–2 | Ngủ X phút (tạm thời hoặc ghi vào config); thoát RemotePE |
| `IPing` (5) | — | No-op |
 
Hai chi tiết đáng chú ý:
- **Xoá file an toàn:** lệnh delete ghi đè mỗi file bằng **byte hằng số 7 lần** rồi đổi tên và xoá — pattern trùng PondRAT/POOLRAT (anti-forensics).
- **Hệ thống plugin:** operator nạp động DLL ở runtime. Payload phải vừa là DLL Windows hợp lệ vừa là reflective shellcode — đặc trưng của [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode/releases/tag/v1.2) ("shellcodified DLL").
**Giao thức C2** giống RemotePELoader, chỉ khác: RemotePE dùng cookie `MUID` thay cho `MS0`. Output lệnh được nén bằng **MSZIP** (qua `cabinet.dll`), AES-GCM hoá, Base64, rồi gửi về trong khoá JSON `armAuthorization`. Các tên khoá JSON/cookie (`armAuthorization`, `odata.metadata`, `MSFPC`...) **cố ý trùng với hệ sinh thái Microsoft** để traffic trông như hợp lệ.
 
### Hạ tầng C2
 
Hạ tầng đặt trên **shared hosting của Namecheap** — giống các chiến dịch ThemeForestRAT/PondRAT trước đó. Việc dùng shared hosting khiến **chặn theo IP gần như vô dụng**, vì cùng server còn host các domain hợp pháp. Fox-IT mở rộng phát hiện thêm domain/server qua fingerprinting đặc trưng C2 (xem mục IOC).
## Timeline phát triển & giao payload
 
**Bốn mẫu RemotePE** cho thấy phát triển liên tục từ giữa 2023 → giữa 2024 (chủ yếu ở cơ chế nạp config & cách định danh bot):
 
| PE timestamp | Cơ chế nạp config | Bot ID |
|---|---|---|
| 2023-07-04 | Tìm config DPAPI trên đĩa | `SOFTWARE\Microsoft\SQMClient\MachineId` |
| 2023-10-17 | C2 URL truyền qua `lpThreadParameter` | `SOFTWARE\Microsoft\SQMClient\MachineId` |
| 2024-04-18 | Tìm config DPAPI trên đĩa | `SOFTWARE\Microsoft\SQMClient\MachineId` |
| 2024-05-11 | Đường dẫn config truyền qua `lpThreadParameter` | `Software\Microsoft\Cryptography\MachineGuid` |
 
**Thời điểm C2 giao payload** (6 phiên thành công) — toàn bộ rơi vào ban ngày KST (08:00–19:00):
 
| C2 session (UTC) | Payload trả (UTC) | Delta | Payload trả (KST) |
|---|---|---|---|
| 2024-02-07 00:21 | 2024-02-07 01:09 | 48 phút | 2024-02-07 10:09 |
| 2024-12-09 08:48 | 2024-12-09 09:08 | 20 phút | 2024-12-09 18:08 |
| 2024-12-10 23:57 | 2024-12-11 00:46 | 49 phút | 2024-12-11 09:46 |
| 2025-01-10 08:21 | 2025-01-10 08:21 | 0 phút | 2025-01-10 17:21 |
| 2025-02-10 21:56 | 2025-02-10 23:03 | 67 phút | 2025-02-11 08:03 |
| 2025-07-09 11:57 | 2025-07-10 07:50 | 20 giờ | 2025-07-10 16:50 |
 
---
 
## IOC & Artifacts
 
> Các domain để ở dạng defanged. Nguồn / Source: Fox-IT / NCC Group.
 
**Domains (C2)**
 
```text
livedrivefiles[.]com          (2023-07-17 → 2025-07-27)
aes-secure[.]net              (2023-09-18 → còn hoạt động / active)
azureglobalaccelerator[.]com  (2023-09-18 → còn hoạt động / active)
msdeliverycontent[.]com       (2024-02-19 → 2026-05-09)
akamaicloud[.]com             (2024-02-19 → 2025-02-14)
intelcloudinsights[.]com      (2024-04-13 → 2026-04-23)
devicelinkintel[.]com         (2024-08-16 → còn hoạt động / active)
```
 
**Host-based**
 
```text
file.name   : Iassvc.dll                              (DPAPILoader)
event.name  : 554D5C1F-AABE-49E4-AB57-994D22ECED28    (RemotePE wake event)
service     : "Internet Authentication Service" (Ias) chạy servicedll Iassvc.dll
path         : C:\ProgramData\Microsoft\Windows\DeviceMetadataStore\en-US*.*  (DPAPI blobs / config)
```
 
**SHA-256 (samples)**
 
```text
4f6ae0110cf652264293df571d66955f7109e3424a070423b5e50edc3eb43874  DPAPILoader (Iassvc.dll)
aa4a2d1215f864481994234f13ab485b95150161b4566c180419d93dda7ac039  DPAPILoader (wmiclnt.dll)
159471e1abc9adf6733af9d24781fbf27a776b81d182901c2e04e28f3fe2e6f3  DPAPILoader (sspicli.dll)
7a05188ab0129b0b4f38e2e7599c5c52149ce0131140db33feb251d926428d68  RemotePELoader (decrypted from disk)
37f5afb9ed3761e73feb95daceb7a1fdbb13c8b5fc1a2ba22e0ef7994c7920ef  RemotePE (2023-07-04)
6b33d20196267b0d64bca815ca863558d26b17cee77caf62a6cce8eae555ac8d  RemotePE (2023-10-17)
62e040a32aac2d2faa8d2bffa2cf7ab662228cebf9bb78eaa0a633c0b729d119  RemotePE (2024-04-18)
710f15302859c7af1c1e25219d704841b3fdbc48f16a5a574d5ab6cf4f4842e8  RemotePE (2024-05-11)
```
 
> **Lưu ý DFIR:** hash của DPAPILoader thay đổi giữa các nạn nhân (do environmental keying), nên **giá trị hash của loader có độ tin cậy thấp** để phát hiện trên diện rộng. Ưu tiên dấu vết hành vi & host-based.
 
---
 
## MITRE ATT&CK Mapping
 
| Tactic | Technique | ID | Áp dụng trong chiến dịch |
|---|---|---|---|
| Initial Access | Phishing: Spearphishing via Service | T1566.003 | Social engineering qua Telegram, lịch họp giả |
| Execution | Native API | T1106 | Direct syscall (HellsGate/TartarusGate) |
| Execution | User Execution | T1204 | Nạn nhân chạy file qua "cuộc họp" giả |
| Persistence | Create/Modify System Process: Windows Service | T1543.003 | Dịch vụ "Internet Authentication Service" |
| Defense Evasion | Execution Guardrails: Environmental Keying | T1480.001 | DPAPI + XOR `0x8D` gắn chặt nạn nhân |
| Defense Evasion | Reflective Code Loading | T1620 | libpeconv; RAT chạy in-memory |
| Defense Evasion | Masquerading: Match Legitimate Name/Location | T1036.005 | `Iassvc.dll`, traffic giả Microsoft |
| Defense Evasion | Hijack Execution Flow: DLL Side-Loading | T1574.002 | `sspicli.dll` qua ESET `edp.exe` |
| Defense Evasion | Impair Defenses: Disable/Modify Tools | T1562.001 | Unhook EDR qua `\KnownDlls` |
| Defense Evasion | Impair Defenses: Indicator Blocking | T1562.006 | Patch `EtwEventWrite` |
| Defense Evasion | Obfuscated Files or Information | T1027 | DPAPI/XOR/AES-GCM payload |
| Defense Evasion | Indicator Removal: File Deletion | T1070.004 | Secure delete 7-pass |
| Discovery | Process Discovery | T1057 | `IProcess` |
| Discovery | File and Directory Discovery | T1083 | `IFileExplorer` |
| Collection | Archive Collected Data | T1560 | Lệnh ZIP file/thư mục |
| Collection | Data from Local System | T1005 | Đọc/ghi file |
| Command and Control | Application Layer Protocol: Web Protocols | T1071.001 | C2 HTTP POST |
| Command and Control | Encrypted Channel: Symmetric Cryptography | T1573.001 | AES-GCM |
| Command and Control | Data Encoding: Standard Encoding | T1132.001 | Base64 |
| Command and Control | Proxy | T1090 | Proxy cấu hình trong config |
| Exfiltration | Exfiltration Over C2 Channel | T1041 | Output trả qua C2 |
 
---
 
## Phát hiện
 
### YARA
 
> Quy tắc YARA dưới đây do Fox-IT/NCC Group công bố cho mục đích phòng thủ. Trích dẫn nguyên trạng để triển khai.
 
```yara
rule Lazarus_DPAPILoader_Hunting {
  meta:
    description = "Hunting rule to detect DPAPILoader, a loader used to load RemotePE."
    author      = "Fox-IT / NCC Group"
  strings:
    $msg_1 = "[!] Could not allocate memory at the desired base!\n"
    $msg_2 = "[!] Virtual section size is out ouf bounds: "
    $msg_3 = "[!] Invalid relocDir pointer\n"
    $msg_4 = "[-] Not supported relocations format at %d: %d\n"
    $msg_5 = "[!] Cannot fill imports into 32 bit PE via 64 bit loader!\n"
  condition:
    any of them and pe.imports("Crypt32.dll", "CryptUnprotectData")
}
 
rule Lazarus_RemotePE_C2_strings {
  meta:
    description = "RemotePE strings used for C2."
    author      = "Fox-IT / NCC Group"
  strings:
    $a = "MicrosoftApplicationsTelemetryDeviceId" wide ascii xor
    $b = "armAuthorization" wide ascii xor
    $c = "ai_session" wide ascii xor
  condition:
    uint16(0) == 0x5A4D and all of them
}
 
rule Lazarus_RemotePE_class_strings {
  meta:
    description = "RemotePE class strings."
    author      = "Fox-IT / NCC Group"
  strings:
    $a = "IMiddleController" ascii wide xor
    $b = "IChannelController" ascii wide xor
    $c = "IConfigProfile" ascii wide xor
    $d = "IKernelModule" ascii wide xor
  condition:
    all of them
}
```
 
### Sigma (nguyên bản, dựa trên IOC/TTP)
 
```yaml
title: Lazarus DPAPILoader - Suspicious Internet Authentication Service DLL
id: 9b2c1f6e-4a3d-4e21-bf10-remotepe000001
status: experimental
description: Phát hiện dịch vụ giả danh IAS chạy Iassvc.dll thay vì iassvcs.dll hợp lệ
references:
  - https://blog.fox-it.com/2026/05/22/remotepe-the-lazarus-rat-that-lives-in-memory/
author: FPT IS Threat Intel
logsource:
  product: windows
  service: system
detection:
  selection_service:
    EventID: 7045
    ServiceName: 'Ias'
    ImagePath|contains: 'Iassvc.dll'
  filter_legit:
    ImagePath|contains: 'iassvcs.dll'
  condition: selection_service and not filter_legit
falsepositives:
  - Không có; DLL hợp lệ của IAS là iassvcs.dll
level: high
```
 
```yaml
title: Lazarus RemotePE C2 - Known Domain Beaconing
id: 9b2c1f6e-4a3d-4e21-bf10-remotepe000002
status: experimental
description: DNS/HTTP tới các domain C2 RemotePE đã biết
references:
  - https://blog.fox-it.com/2026/05/22/remotepe-the-lazarus-rat-that-lives-in-memory/
author: FPT IS Threat Intel
logsource:
  category: dns
detection:
  selection:
    QueryName:
      - 'livedrivefiles.com'
      - 'aes-secure.net'
      - 'azureglobalaccelerator.com'
      - 'msdeliverycontent.com'
      - 'akamaicloud.com'
      - 'intelcloudinsights.com'
      - 'devicelinkintel.com'
  condition: selection
falsepositives:
  - Rất thấp; đây là domain do actor kiểm soát
level: critical
```
 
### KQL — Microsoft Sentinel / Defender XDR
 
**1) Beaconing tới C2 domains**
 
```kql
let c2Domains = dynamic([
  "livedrivefiles.com","aes-secure.net","azureglobalaccelerator.com",
  "msdeliverycontent.com","akamaicloud.com","intelcloudinsights.com",
  "devicelinkintel.com"
]);
union isfuzzy=true
( DeviceNetworkEvents
  | where RemoteUrl has_any (c2Domains) or RemoteIPType == "Public" and RemoteUrl has_any (c2Domains)
  | project Timestamp, DeviceName, InitiatingProcessFileName, RemoteUrl, RemoteIP ),
( DeviceDnsEvents
  | where DnsQuery has_any (c2Domains)
  | project Timestamp, DeviceName, InitiatingProcessFileName, DnsQuery )
| sort by Timestamp desc
```
 
**2) DPAPILoader: dịch vụ giả danh IAS**
 
```kql
DeviceEvents
| where ActionType == "ServiceInstalled"
| extend p = parse_json(AdditionalFields)
| where tostring(p.ServiceName) =~ "Ias"
       and tostring(p.ImagePath) has "Iassvc.dll"
       and tostring(p.ImagePath) !has "iassvcs.dll"
| project Timestamp, DeviceName, ServiceName=tostring(p.ServiceName), ImagePath=tostring(p.ImagePath)
```
 
**3) DLL side-loading qua edp.exe (ESET) — DLL ở vị trí bất thường**
 
```kql
DeviceImageLoadEvents
| where InitiatingProcessFileName =~ "edp.exe"
| where FileName in~ ("sspicli.dll")
| where FolderPath !startswith @"C:\Windows\System32"
| project Timestamp, DeviceName, InitiatingProcessFolderPath, FileName, FolderPath, SHA256
```
 
**4) Hunt: file lạ (không phải CAB) trong DeviceMetadataStore — ứng viên blob DPAPI**
 
```kql
DeviceFileEvents
| where FolderPath has @"\Microsoft\Windows\DeviceMetadataStore\"
| where FileName startswith "en-US"
| where ActionType in ("FileCreated","FileModified")
// Ưu tiên điều tra file >50KiB do tiến trình không phải dịch vụ metadata hợp lệ tạo ra
| where InitiatingProcessFileName !in~ ("svchost.exe","TiWorker.exe","DeviceCensus.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, FolderPath, FileName, FileSize
```
 
> **Caveat:** query (4) cần tinh chỉnh theo môi trường — `DeviceMetadataStore` chứa file hợp lệ; trọng tâm là **tiến trình tạo file bất thường** và **kích thước**. Việc unhook EDR và patch ETW gần như không để lại telemetry KQL trực tiếp, nên ưu tiên dùng (1)–(3) cộng với săn DPAPI blob.
 
---
 
## Nhận định chuyên gia
 
Bộ công cụ này là một bước tiến về **operational security (OPSEC)** hơn là về sức công phá. Đội ngũ phân tích của chúng tôi nhìn nhận RemotePE như một sự dịch chuyển có chủ đích của Lazarus: từ "xâm nhập ồn ào" sang **giám sát dài hạn, ít dấu vết**. Ba yếu tố kết hợp tạo nên một bài toán DFIR thực sự khó:
 
1. **Environmental keying bằng DPAPI** — biến việc thu thập mẫu thành vô nghĩa nếu thiếu khoá nạn nhân. Trong điều tra, chỉ vì có **forensic image đầy đủ** (kèm khoá DPAPI của user), Fox-IT mới giải mã được payload.
2. **Memory-only ở stage cuối** — disk imaging không thu được RemotePE. DFIR buộc phải chuyển trọng tâm sang **memory forensics** và bắt artefact **trước khi máy reboot**.
3. **Actor-in-the-loop** — payload chỉ được giao thủ công, trong giờ làm việc KST. Điều này vừa là tín hiệu attribution, vừa nghĩa là bộ công cụ "xịn" được dành cho **mục tiêu giá trị cao**, hạn chế phơi nhiễm.
**Mức độ tinh vi:** cao. Không phải vì kỹ thuật nào hoàn toàn mới (HellsGate, ETW patching, DPAPI, reflective loading đều đã biết), mà vì **cách ghép chúng lại** để tối thiểu hoá dấu vết forensic ở mọi tầng.
 
**Liên hệ với Việt Nam.** Hệ sinh thái crypto/Web3/DeFi tại VN và khu vực Đông Nam Á từ lâu nằm trong tầm ngắm của các nhóm tài chính Triều Tiên. Mô-típ social engineering "giả nhân viên công ty trading + lịch họp giả" rất hợp với các nhóm phát triển crypto, quỹ đầu tư, và cả lập trình viên freelance — nơi việc nhận file/làm "bài test" từ "nhà tuyển dụng" là bình thường. Với SOC tại VN, rủi ro thực tế nhất không phải malware "lọt" qua EDR, mà là **giai đoạn initial access qua kênh ngoài luồng (Telegram, lịch họp)** — vùng mà telemetry doanh nghiệp thường mỏng nhất.
## Khuyến nghị
 
**Ngay lập tức (0–24h)**
- Săn lùng host: DLL `Iassvc.dll`; dịch vụ `Ias` chạy `Iassvc.dll` (thay vì `iassvcs.dll`); event `554D5C1F-AABE-49E4-AB57-994D22ECED28`; blob lạ trong `DeviceMetadataStore`.
- Chặn/đặt cảnh báo DNS & proxy cho 7 domain C2 ở mục IOC.
- Trên host nghi nhiễm: **không reboot**; thu memory image trước khi triage.
**Ngắn hạn (1–7 ngày)**
- Triển khai YARA của Fox-IT lên kho mẫu & file server; triển khai Sigma/KQL ở trên vào SIEM.
- Audit DLL side-loading với các binary AV/EDR (ví dụ `edp.exe`) — kiểm soát thư mục tải DLL.
- Đào tạo đội crypto/dev về lure "nhà tuyển dụng/đối tác trading" trên Telegram; thiết lập quy trình xác minh trước khi mở file/đặt lịch họp lạ.
**Dài hạn**
- Giám sát hành vi tampering ETW & unhooking thay vì chỉ dựa vào hook userland; ưu tiên EDR có kernel telemetry.
- Đưa **memory forensics** vào playbook DFIR chuẩn cho mọi nghi vấn fileless.
- Pivot theo hạ tầng (Namecheap shared hosting + đặc trưng cookie/JSON) thay vì chặn IP đơn lẻ.
---
 
## Tài liệu tham khảo
 
- [RemotePE: The Lazarus RAT that lives in memory — Fox-IT International blog (22/05/2026)](https://blog.fox-it.com/2026/05/22/remotepe-the-lazarus-rat-that-lives-in-memory/) — báo cáo kỹ thuật gốc, IOC & YARA.
- [Lazarus APT unveils fileless RAT designed to evade detection — Security Affairs (26/05/2026)](https://securityaffairs.com/192666/apt/lazarus-apt-unveils-fileless-remote-access-trojan-designed-to-evade-detection.html) — bản tin & context initial access.
- [Three Lazarus RATs coming for your cheese — Fox-IT (2025)](https://blog.fox-it.com/2025/09/01/three-lazarus-rats-coming-for-your-cheese/) — nghiên cứu tiền nhiệm (ThemeForestRAT, PondRAT).
- [MITRE ATT&CK — T1480.001 Environmental Keying](https://attack.mitre.org/techniques/T1480/001/)
- [libpeconv — hasherezade](https://github.com/hasherezade/libpeconv) · [TartarusGate](https://github.com/trickster0/TartarusGate) · [HellsGate](https://github.com/am0nsec/HellsGate) · [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode/releases/tag/v1.2)
