# MoiClient: Backdoor Ẩn Trong SumatraPDF

## Tổng Quan

Ngày 02/09/2026, **AhnLab ASEC** (nhóm ATCP) công bố phân tích về **MoiClient** — một backdoor Windows mới được phát hiện, phân phối qua email giả hóa đơn và triển khai chuỗi kỹ thuật né tránh phòng thủ nhiều lớp đáng chú ý: **DLL side-loading vào SumatraPDF**, **injection vào explorer.exe** qua EP overwrite, **vượt UAC không cần exploit bằng RPC interface của AppInfo Service**, **BYOVD bằng driver Lenovo BootRepair.sys** để tắt AV/EDR ở cấp kernel, và **vô hiệu hóa Windows Defender** qua công cụ mã nguồn mở `defendnot` bằng cách đánh lừa chính Windows Security Center. Sau khi hạ hết rào cản bảo mật, backdoor tải về **MoiXD Stealer** — payload đánh cắp thông tin đăng nhập và mật khẩu trình duyệt qua ChromeElevator.

AhnLab đặt tên **MoiClient** dựa trên chuỗi đặc trưng `"moimoi"` xuất hiện khi backdoor thực thi kỹ thuật BYOVD — đây cũng là tên file `moimoi.sys` mà nó thả xuống đĩa. Đây là trường hợp thực tế đầu tiên được ghi nhận công khai khai thác lỗ hổng trong driver `BootRepair.sys` của Lenovo PC Manager — vốn đã bị nhà nghiên cứu **Jehad Abudagga** phân tích và công bố khả năng lạm dụng từ tháng 05/2026.

* * *

## Đôi Nét Về Threat Actor

AhnLab **không attribution** chiến dịch này cho một nhóm đã biết trong bài phân tích gốc. Dưới đây là những gì có thể xác định từ bản thân công cụ và chiến dịch:

| **Thuộc tính** | **Chi tiết** |
| --- | --- |
| **Tên backdoor** | MoiClient |
| **Tên payload** | MoiXD Stealer |
| **Kênh phân phối** | Email giả hóa đơn, đính kèm file `.vhdx` |
| **Nền tảng nhắm tới** | Windows (64-bit) |
| **Mục tiêu** | Đánh cắp thông tin đăng nhập và mật khẩu trình duyệt |
| **Đặc điểm nổi bật** | Kết hợp nhiều kỹ thuật né tránh tinh vi trong một chuỗi tấn công liền mạch; khai thác driver ký số hợp lệ của Lenovo và công cụ mã nguồn mở `defendnot` |
| **Attribution** | Chưa xác định — không có quy kết trong báo cáo gốc của AhnLab |

* * *

## Phân Tích Kĩ Thuật

### Tổng Quan Chuỗi Tấn Công

![](https://cdn.hashnode.com/uploads/covers/669e2578c18c3baa1b4fc070/5803c8e8-56bf-463a-9749-443d20b7ad41.png align="center")

```plaintext
Email hóa đơn giả (.vhdx)
└─► User mở Invoice.Pdf.Exe (thực ra là SumatraPDF)
 └─► DLL side-loading: uxtheme.dll (MoiClient) được nạp
  └─► Giai đoạn 1: Tạo explorer.exe treo + EP overwrite + inject shellcode
   └─► Giai đoạn 2: Payload cuối chạy trong bộ nhớ
    └─► RPC UAC Bypass (AppInfo Service)
     └─► BYOVD (BootRepair.sys) → tắt AV/EDR
      └─► defendnot → vô hiệu hóa Windows Defender
       └─► Persistence (Task Scheduler, mỗi 30 phút)
        └─► Tải MoiXD Stealer từ C2
         └─► Đánh cắp thông tin đăng nhập trình duyệt
```

* * *

### 1\. Vector Lây Nhiễm Ban Đầu — File .VHDX Giả Hóa Đơn

Tấn công bắt đầu bằng một email giả hóa đơn, đính kèm một file **.VHDX** (Virtual Hard Disk — định dạng ổ cứng ảo của Windows). Khi user mount file này, họ thấy bên trong chứa:

*   `Invoice.Pdf.Exe` — file trông như tài liệu PDF (tên và icon đánh lừa), nhưng thực chất là **SumatraPDF** — một trình đọc PDF hợp pháp và phổ biến.
    
*   `uxtheme.dll` — DLL độc hại, là MoiClient. Được đánh dấu **ẩn (hidden)** cùng với mọi file khác trong archive, khiến người dùng thông thường không nhìn thấy.
    
*   `data.dat` — file chứa shellcode dùng trong giai đoạn injection tiếp theo (cũng ẩn).
    

**Tại sao dùng .VHDX thay vì file nén thông thường?** Khi Windows mount một .VHDX, nội dung bên trong được trình bày như một ổ đĩa thông thường — tất cả file trong cùng một thư mục (ổ đĩa ảo đó). Đây chính là điều kiện cần thiết để DLL side-loading hoạt động: `uxtheme.dll` độc hại phải nằm **trong cùng thư mục** với `Invoice.Pdf.Exe`.

* * *

### 2\. DLL Side-Loading — SumatraPDF Bị Lợi Dụng

Khi user nhấp đúp vào `Invoice.Pdf.Exe` (tin rằng đó là file PDF để xem), Windows tìm kiếm `uxtheme.dll` theo thứ tự tìm kiếm DLL mặc định — và tìm thấy bản độc hại nằm sẵn trong cùng thư mục (ổ .VHDX được mount), nạp nó vào tiến trình SumatraPDF.

![](https://cdn.hashnode.com/uploads/covers/669e2578c18c3baa1b4fc070/de74a965-0dab-4c94-9862-f4cd4f100873.png align="center")

`uxtheme.dll` là tên của một DLL thật của Windows (Windows Theme API) — việc giả tên này giúp file không bị nghi ngờ ngay lập tức nếu người dùng tình cờ nhìn thấy.

* * *

### 3\. Giai Đoạn Tiêm Mã (Multi-Stage Process Injection)

Sau khi được nạp vào SumatraPDF, MoiClient thực hiện một chuỗi injection nhiều giai đoạn để chuyển môi trường thực thi sang một tiến trình Windows hợp pháp:

**Bước 1:** Tạo một tiến trình `explorer.exe` ở trạng thái **"Suspended"** (treo — tiến trình được tạo nhưng chưa chạy lệnh nào).

**Bước 2:** Đọc shellcode từ file `data.dat` và ghi đè vào **Entry Point (EP)** của tiến trình `explorer.exe` đang treo — kỹ thuật này đôi khi được gọi là "EP hijacking" hay "early process injection." Toàn bộ mã khởi động ban đầu của explorer.exe bị thay thế bằng shellcode của kẻ tấn công.

**Bước 3:** Tiếp tục (resume) tiến trình `explorer.exe` — khi tiến trình khởi động, thay vì chạy code bình thường của explorer.exe, nó chạy shellcode đã được nhúng sẵn.

**Bước 4:** Shellcode thực hiện một **routine injection bổ sung**, rồi nạp và thực thi **payload cuối cùng hoàn toàn trong bộ nhớ (in-memory)** — không ghi tệp thực thi ra đĩa.

Kết quả: mã độc đang chạy dưới danh nghĩa `explorer.exe` — một trong những tiến trình "an toàn" và phổ biến nhất của Windows, ít bị nghi ngờ nhất bởi các công cụ giám sát.

* * *

### 4\. Vượt UAC Không Cần Exploit — Kỹ Thuật RPC AppInfo

Sau khi có chỗ đứng trong `explorer.exe`, MoiClient cần quyền cao hơn để tắt phần mềm bảo mật. Thay vì dùng một exploit, nó dùng một kỹ thuật **UAC bypass không khai thác lỗ hổng thật sự** — lợi dụng cách thiết kế của Windows theo cách hoàn toàn hợp pháp về mặt kỹ thuật.

Kỹ thuật này **tương tự** kỹ thuật khai thác AppInfo local RPC interface được **Google Project Zero** mô tả và công bố (mục liên kết trong bài gốc của AhnLab).

**Chuỗi kỹ thuật chi tiết:**

1.  **Kết nối tới RPC interface của AppInfo Service** qua giao thức `ncalrpc` — đây là cơ chế IPC cục bộ của Windows, dùng để giao tiếp với service quản lý leo quyền tự động của hệ điều hành.
    
2.  **Thực thi** `winver.exe` **làm debug target** và lấy được **debug object handle** — một handle cho phép nhận các sự kiện debug từ tiến trình mục tiêu.
    
3.  **Thực thi** `ComputerDefaults.exe` — một system binary của Windows được thiết kế để **tự động leo quyền** (auto-elevates) mà không cần xác nhận UAC — thông qua **cùng con đường AppInfo RPC**. Nhận các sự kiện debug liên quan. Trong quá trình này, lấy được và **nhân bản (clone) process handle** của `ComputerDefaults.exe`.
    
4.  **Đặt handle đã nhân bản làm tiến trình cha (parent process)** cho cả `sc.exe` và PowerShell. Do Windows kế thừa token bảo mật từ tiến trình cha, cả hai tiến trình này **thừa hưởng quyền leo thang (elevated privileges)** của `ComputerDefaults.exe` — vốn đã đang chạy với quyền cao — và do đó **vượt qua UAC** mà không cần bất kỳ lời nhắc xác nhận nào từ người dùng.
    

**Tại sao kỹ thuật này hiệu quả?** Windows thiết kế `ComputerDefaults.exe` để auto-elevate nhằm phục vụ các tác vụ hệ thống hợp pháp. Kỹ thuật này không khai thác bug nào trong `ComputerDefaults.exe` hay AppInfo Service — nó lợi dụng **cách thiết kế hoàn toàn có chủ đích** của Windows để làm điều mà Windows lẽ ra không muốn một tiến trình bên thứ ba làm.

* * *

### 5\. BYOVD — Driver Lenovo BootRepair.sys Giết Tiến Trình AV/EDR Ở Cấp Kernel

Sau khi có đặc quyền cao, MoiClient triển khai kỹ thuật **BYOVD (Bring Your Own Vulnerable Driver)** để vô hiệu hóa các sản phẩm bảo mật ở cấp kernel — nơi mà malware user-mode thông thường không thể chạm tới.

**Driver bị lạm dụng:** `BootRepair.sys` — phiên bản **2.5.30.11281** của Lenovo PC Manager, một driver kernel **được ký số hợp lệ bởi Lenovo** (ký bởi Symantec Class 3 SHA256 Code Signing CA).

```plaintext
SHA-256 của driver gốc: 5ab36c116767eaae53a466fbc2dae7cfd608ed77721f65e83312037fbd57c946
Ngày biên dịch: 2018-01-03
```

**Lỗ hổng trong driver (công bố bởi Jehad Abudagga, 05/2026):** Driver tạo một device object tên `\\Device\\::BootRepair` **không được bảo vệ bởi DACL an toàn**, đồng thời tạo symbolic link `\\DosDevices\\BootRepair` để tiến trình user-mode giao tiếp. Driver xử lý IOCTL control code `0x222014` — nhận một Process ID và truyền thẳng vào Windows kernel API `ZwTerminateProcess` **mà không kiểm tra quyền truy cập**. Điều này có nghĩa bất kỳ tiến trình nào trên hệ thống — kể cả không có đặc quyền — đều có thể giao tiếp với driver và chỉ định PID cần giết ở cấp ring-0. *(Lưu ý: MoiClient dùng driver này với quyền cao đã leo thang qua UAC bypass ở bước 4.)*

**Chuỗi BYOVD của MoiClient:**

1.  Thả `BootRepair.sys` vào thư mục `%Public%` dưới tên `moimoi.sys`.
    
2.  Dùng `sc.exe` đã được leo quyền (từ bước 4) để **đăng ký và khởi động kernel driver service**.
    
3.  Liệt kê danh sách tiến trình đang chạy, tìm các tiến trình thuộc phần mềm bảo mật.
    
4.  Gửi PID của từng tiến trình bảo mật tới thiết bị `\\.\BootRepair` qua IOCTL `0x222014`.
    
5.  Driver gọi `ZwTerminateProcess` ở cấp kernel — tiến trình bảo mật bị tắt **ngay cả khi nó có cơ chế tự bảo vệ (protected process)**.
    

**Danh sách AV/EDR bị nhắm mục tiêu (từ danh sách dispatch routine của driver):**

Bao gồm các tiến trình thuộc: **Windows Defender** (toàn bộ họ tiến trình), **Malwarebytes**, **Bitdefender**, **Kaspersky**, **Avast**, **AVG**, và **McAfee**.

* * *

### 6\. Vô Hiệu Hóa Windows Defender Theo Cách Khác — defendnot Và WSC API

Ngoài việc tắt tiến trình Defender qua BYOVD, MoiClient còn triển khai **một cơ chế riêng, tinh vi hơn** để vô hiệu hóa Defender một cách bền vững hơn: tải về và thực thi `defendnot.dll` và `defendnot-loader.exe` từ C2 server qua PowerShell có quyền cao.

**defendnot là gì?** Một công cụ mã nguồn mở được đăng trên GitHub bởi tác giả `es3n1n`, tự mô tả là *"một cách vui vẻ hơn để tắt Windows Defender."* Thay vì kill tiến trình hoặc chỉnh sửa registry (những thao tác ồn ào, dễ bị EDR gắn cờ), defendnot lợi dụng một cơ chế ít được biết đến của Windows:

**Windows Security Center (WSC) API** — một giao diện không có tài liệu công khai, thậm chí yêu cầu ký NDA với Microsoft để nhận tài liệu — được các phần mềm diệt virus sử dụng để **thông báo cho Windows rằng có một phần mềm bảo mật khác đang hoạt động**, qua đó khiến Windows Defender tự động chuyển sang trạng thái thụ động.

defendnot khai thác chính cơ chế này: **đăng ký bản thân như một phần mềm diệt virus giả** thông qua WSC API → Windows tự nguyện tắt Defender vì "đã có AV khác đảm nhiệm việc bảo vệ." Đây là kỹ thuật **stealthier** hơn nhiều so với kill tiến trình hay xóa registry key — không có cảnh báo ồn ào, không có anomalous API call nổi bật, chỉ là Windows hoạt động đúng theo thiết kế của mình.

**Defender phát hiện và gắn cờ defendnot** (detection name: `VirTool:Win64/Defnot.A`) — đây chính là lý do MoiClient dùng BYOVD để tắt Defender **trước tiên**, sau đó mới tải và chạy defendnot để vô hiệu hóa Defender một cách bền vững qua WSC.

* * *

### 7\. Persistence — Cứ 30 Phút Lại Tái Xuất

Sau khi dọn đường bảo mật, MoiClient đăng ký một **Scheduled Task** để đảm bảo nó tiếp tục hoạt động ngay cả sau khi bị phát hiện và gỡ bỏ một phần:

**Tên task được tạo theo logic sau:**

*   Nếu **chưa có task nào** từ trước: tên = `MicrosoftWindowsUpdateTask` + **4 chữ số ngẫu nhiên** (ví dụ: `MicrosoftWindowsUpdateTask1234`)
    
*   Nếu **đã có task từ trước**: tên = tên task cũ + thêm dấu chấm `.` ở cuối (ví dụ: `MicrosoftWindowsUpdateTask1234.`)
    

Logic thêm dấu chấm này có nghĩa: nếu đội IR phát hiện và xóa task, nhưng backdoor vẫn còn chạy được một lần, nó sẽ tạo ra một task mới với tên khác — làm chậm quá trình dọn dẹp.

**Task được cấu hình chạy mỗi 30 phút**, thực thi lệnh:

```plaintext
%LOCALAPPDATA%\demo.exe -print-to-default -silent file.pdf
```

Trong đó `demo.exe` là một bản copy của **SumatraPDF** (đổi tên), và `uxtheme.dll` — bản MoiClient — nằm cùng thư mục, sẵn sàng được side-load lại mỗi lần task chạy. Toàn bộ vòng lặp DLL side-loading ban đầu **được lặp lại tự động qua Task Scheduler** mỗi nửa giờ.

* * *

### 8\. Payload Cuối — MoiXD Stealer Đánh Cắp Thông Tin Đăng Nhập Trình Duyệt

Sau khi đã vô hiệu hóa bảo mật và thiết lập persistence, MoiClient tải về payload cuối từ C2 server dưới dạng file tên `c.txt` (dùng phần mở rộng `.txt` để né lọc theo kiểu file). Payload được thực thi **hoàn toàn trong bộ nhớ** qua `CreateThread()` — không ghi tệp thực thi ra đĩa.

Tại thời điểm AhnLab phân tích, `c.txt` được xác định là **MoiXD Stealer** — sử dụng **ChromeElevator** để thực hiện đánh cắp thông tin từ trình duyệt:

*   **ChromeElevator** là một thành phần hợp pháp của trình duyệt Chrome (một COM-based elevation service), thường bị lạm dụng bởi infostealers để truy cập dữ liệu được bảo vệ mà Chrome lưu trữ (cookie, password, token xác thực) mà không cần SYSTEM privilege trực tiếp.
    
*   Dữ liệu bị đánh cắp bao gồm: **mật khẩu đã lưu trong trình duyệt, cookie phiên (session cookies), và thông tin form tự động điền** — đủ để chiếm quyền tài khoản mà không cần biết mật khẩu thật.
    

* * *

## Tại Sao Chuỗi Tấn Công Này Đáng Chú Ý

Điểm đáng lưu ý không phải là bất kỳ kỹ thuật đơn lẻ nào — BYOVD, UAC bypass RPC, hay DLL side-loading đều đã từng được ghi nhận riêng lẻ. Điều đáng chú ý là **cách chúng được sắp xếp thành một chuỗi liền mạch, mỗi bước mở đường cho bước tiếp theo**:

1.  `.VHDX` đặt tất cả file cùng thư mục → kích hoạt điều kiện side-loading.
    
2.  Side-loading vào SumatraPDF (ký số hợp lệ) → giảm đáng kể khả năng bị AV chặn ngay từ đầu.
    
3.  EP overwrite vào `explorer.exe` treo → chạy dưới tiến trình tin cậy nhất của Windows.
    
4.  RPC AppInfo bypass → có quyền cao mà không kích hoạt UAC prompt.
    
5.  BYOVD tắt AV trước → mở đường cho defendnot chạy mà không bị phát hiện.
    
6.  defendnot tắt Defender qua WSC → Defender tự nguyện tắt, không phải bị kill ồn ào.
    
7.  Task Scheduler mỗi 30 phút → đảm bảo tái xuất ngay cả khi một phần bị gỡ.
    
8.  MoiXD Stealer trong bộ nhớ → không dấu vết tệp thực thi trên đĩa.
    

**Kết hợp BYOVD + defendnot để vô hiệu hóa Defender** là điểm kỹ thuật tinh tế nhất: BYOVD tắt tiến trình Defender trước (vì defendnot cần Tamper Protection bị vô hiệu hóa để hoạt động), sau đó defendnot "đăng ký" mình là AV giả qua WSC để Defender không tự khởi động lại sau reboot — hai cơ chế bổ sung cho nhau, che phủ cả trạng thái ngay lập tức và tính bền vững lâu dài.

* * *

## Tóm Tắt Rủi Ro

| **Chiều Rủi ro** | **Mức độ** | **Lý do** |
| --- | --- | --- |
| **Khả năng vượt qua bảo mật (Defense Evasion)** | Rất cao | Kết hợp BYOVD kernel-level + defendnot WSC API → vô hiệu hóa AV/EDR trước khi payload chính chạy |
| **Khả năng leo quyền** | Cao | UAC bypass qua RPC AppInfo không cần exploit, không cần user confirm |
| **Khả năng ẩn mình** | Cao | Side-load vào binary ký số, injection vào explorer.exe, payload in-memory, file tên `.txt` |
| **Tính bền vững (Persistence)** | Cao | Task Scheduler chạy mỗi 30 phút, tên task thay đổi linh hoạt để né dọn dẹp |
| **Thiệt hại tài chính tiềm tàng** | Cao | MoiXD Stealer đánh cắp mật khẩu và cookie trình duyệt — đủ để chiếm tài khoản ngân hàng, mạng xã hội, email doanh nghiệp |
| **Vector phân phối** | Trung bình-Cao | Email hóa đơn giả — vector rất phổ biến trong môi trường doanh nghiệp, người dùng thường xuyên nhận và mở hóa đơn qua email |

* * *

## IOC & Artifacts

### File Artifacts

| **Đường dẫn / Tên file** | **Mô tả** |
| --- | --- |
| `%Public%\moimoi.sys` | Driver BootRepair.sys của Lenovo bị thả xuống, đổi tên |
| `%LOCALAPPDATA%\uxtheme.dll` | MoiClient DLL (giả mạo Windows Theme API) |
| `%LOCALAPPDATA%\data.dat` | Shellcode dùng để EP overwrite vào explorer.exe |
| `%LOCALAPPDATA%\defendnot-loader.exe` | Công cụ vô hiệu hóa Defender qua WSC API (tải từ C2) |
| `%LOCALAPPDATA%\defendnot.dll` | Component DLL của defendnot (tải từ C2) |
| `%LOCALAPPDATA%\demo.exe` | SumatraPDF đổi tên, dùng để kích hoạt side-loading lại qua Task Scheduler |

### Driver Hash

```plaintext
SHA-256 (BootRepair.sys gốc): 5ab36c116767eaae53a466fbc2dae7cfd608ed77721f65e83312037fbd57c946
Phiên bản bị lạm dụng: 2.5.30.11281
IOCTL control code: 0x222014
```

### Scheduled Task

*   **Tên task:** `MicrosoftWindowsUpdateTask` + 4 chữ số ngẫu nhiên (ví dụ: `MicrosoftWindowsUpdateTask1234`); nếu task đã tồn tại, thêm dấu `.` vào cuối tên.
    
*   **Lịch chạy:** Mỗi **30 phút**
    
*   **Lệnh thực thi:** `%LOCALAPPDATA%\demo.exe -print-to-default -silent file.pdf`
    

### Dấu hiệu hành vi (Behavioral Indicators)

*   Tiến trình `explorer.exe` **bổ sung, bất thường** chạy song song (không phải tiến trình explorer.exe chính của desktop).
    
*   `sc.exe` hoặc PowerShell được spawn bởi một tiến trình không phải `services.exe` hoặc `cmd.exe` bình thường.
    
*   Driver `BootRepair.sys` (hoặc bất kỳ file `.sys` mới) được nạp từ thư mục `%Public%`.
    
*   `defendnot-loader.exe` hoặc `defendnot.dll` xuất hiện trong `%LOCALAPPDATA%`.
    
*   Windows Security Center ghi nhận **AV mới không rõ nguồn gốc đăng ký** thay thế Windows Defender.
    
*   Windows Defender chuyển sang trạng thái **thụ động** mà không có sản phẩm AV hợp lệ nào được cài đặt chính thức.
    

* * *

## MITRE ATT&CK Mapping

| **Tactic** | **Technique ID** | **Technique Name** | **Mô tả trong chiến dịch** |
| --- | --- | --- | --- |
| **Initial Access** | T1566.001 | Phishing: Spearphishing Attachment | Email hóa đơn giả, đính kèm file .VHDX |
| **Execution** | T1204.002 | User Execution: Malicious File | User tự mở `Invoice.Pdf.Exe` tin rằng đó là PDF |
| **Persistence** | T1574.002 | Hijack Execution Flow: DLL Side-Loading | `uxtheme.dll` độc hại được SumatraPDF nạp từ cùng thư mục |
| **Persistence** | T1053.005 | Scheduled Task/Job: Scheduled Task | Task `MicrosoftWindowsUpdateTask[4 chữ số]`, chạy mỗi 30 phút |
| **Defense Evasion** | T1055 | Process Injection | Injection shellcode vào `explorer.exe` qua EP overwrite |
| **Defense Evasion** | T1036.005 | Masquerading: Match Legitimate Name | `uxtheme.dll` giả tên DLL Windows thật; `demo.exe` là SumatraPDF đổi tên |
| **Defense Evasion** | T1620 | Reflective Code Loading | Payload cuối (MoiXD Stealer từ `c.txt`) thực thi hoàn toàn in-memory qua `CreateThread()` |
| **Privilege Escalation** | T1548.002 | Abuse Elevation Control Mechanism: Bypass UAC | RPC AppInfo technique khai thác `ComputerDefaults.exe` auto-elevate và parent process handle cloning |
| **Defense Evasion** | T1562.001 | Impair Defenses: Disable or Modify Tools | BYOVD tắt tiến trình AV/EDR; defendnot vô hiệu hóa Windows Defender qua WSC API |
| **Defense Evasion** | T1543.003 | Create or Modify System Process: Windows Service | Đăng ký `moimoi.sys` làm kernel driver service qua `sc.exe` leo quyền |
| **Command and Control** | T1105 | Ingress Tool Transfer | Tải `c.txt` (MoiXD Stealer), `defendnot.dll`, `defendnot-loader.exe` từ C2 server |
| **Credential Access** | T1555.003 | Credentials from Web Browsers | MoiXD Stealer dùng ChromeElevator đánh cắp mật khẩu, cookie từ trình duyệt |

* * *

## Nhận Định

MoiClient là ví dụ điển hình cho xu hướng ngày càng rõ trong các chiến dịch tấn công có động cơ tài chính hiện nay: **xây dựng chuỗi kỹ thuật từ các thành phần đã có sẵn trong hệ sinh thái Windows, kết hợp với công cụ mã nguồn mở**, thay vì phát triển từ đầu một framework tấn công hoàn toàn mới. SumatraPDF hợp pháp và có ký số, `BootRepair.sys` được Lenovo ký hợp lệ, AppInfo RPC là thiết kế của chính Windows, `defendnot` là mã nguồn mở trên GitHub, `ChromeElevator` là thành phần của Chrome — không một thành phần nào trong chuỗi này là mã độc theo nghĩa truyền thống, nhưng kết hợp lại tạo thành một chuỗi tấn công có khả năng hạ gục nhiều lớp bảo mật.

**Cặp BYOVD + defendnot là điểm kỹ thuật đáng học hỏi nhất** cho đội phòng thủ: kẻ tấn công không chỉ nghĩ đến việc **tắt AV ngay lập tức** (BYOVD), mà còn nghĩ đến việc **đảm bảo AV không tự bật lại sau reboot** (defendnot qua WSC). Đây là dấu hiệu của tư duy tấn công có tính hệ thống: hiểu rõ từng cơ chế tự phục hồi của hệ điều hành và đặt sẵn biện pháp đối phó trước khi nó kịp kích hoạt.

Việc lạm dụng `BootRepair.sys` là **lần đầu tiên lỗ hổng này được ghi nhận khai thác trong thực tế** sau khi nhà nghiên cứu Jehad Abudagga công bố PoC vào tháng 05/2026 — một khoảng thời gian chưa đầy 4 tháng từ disclosure đến exploitation trong tự nhiên. Điều này nhắc lại một nguyên tắc đã được chứng minh nhiều lần: **thời gian từ khi driver được đưa vào danh sách LOLDrivers / driver blocklist đến khi threat actor khai thác thực sự là rất ngắn**, và danh sách chặn driver (driver blocklist) cần được cập nhật liên tục để có tác dụng.

**Đối với các tổ chức tại Việt Nam**, vector phân phối qua **email hóa đơn giả** là điều đáng quan tâm đặc biệt — đây là một trong những lure phổ biến và hiệu quả nhất trong môi trường doanh nghiệp khu vực, đặc biệt với nhân viên kế toán, tài chính, và thu mua — những người thường xuyên nhận và xử lý hóa đơn từ đối tác không quen biết. Việc phân phối qua **file .VHDX** (thay vì .zip hay .rar thông thường) là một chi tiết đáng lưu ý: định dạng này ít được nhân viên cảnh giác và ít bị các giải pháp email security chặn hơn so với các định dạng archive truyền thống — trong khi Windows tự động hỗ trợ mount .VHDX mà không cần cài thêm phần mềm.

* * *

## Khuyến Nghị

### Kiểm Tra Khẩn Cấp Nếu Nghi Ngờ Nhiễm MoiClient

1.  **Kiểm tra tiến trình** `explorer.exe` **bất thường:** Xem có tiến trình `explorer.exe` bổ sung nào đang chạy không — nếu có, kết thúc ngay lập tức.
    
2.  **Kiểm tra Task Scheduler:** Tìm các task đáng ngờ, đặc biệt các task chạy lệnh `demo.exe` theo mẫu: `%LOCALAPPDATA%\demo.exe -print-to-default -silent file.pdf`. Xóa bất kỳ task nào tìm thấy.
    
3.  **Kiểm tra sự tồn tại của các file sau** — nếu tìm thấy, đây là bằng chứng mạnh của nhiễm MoiClient và cần xóa ngay:
    
    *   `%Public%\moimoi.sys`
        
    *   `%LOCALAPPDATA%\uxtheme.dll`
        
    *   `%LOCALAPPDATA%\data.dat`
        
    *   `%LOCALAPPDATA%\defendnot-loader.exe`
        
    *   `%LOCALAPPDATA%\defendnot.dll`
        

### Phòng Ngừa Và Phát Hiện

1.  **Thêm** `BootRepair.sys` **vào driver blocklist:** Hash SHA-256 `5ab36c116767eaae53a466fbc2dae7cfd608ed77721f65e83312037fbd57c946` nên được thêm vào chính sách chặn driver của tổ chức (Microsoft WDAC hoặc tương đương). Lưu ý: Lenovo **chưa phát hành bản vá** cho driver này tại thời điểm công bố.
    
2.  **Phát hiện BYOVD:** Cảnh báo khi `BootRepair.sys` (hoặc `moimoi.sys`) được nạp từ đường dẫn ngoài thư mục cài đặt Lenovo PC Manager chính thức; giám sát Service Control Manager tạo kernel service từ `%Public%` hoặc `%TEMP%`.
    
3.  **Phát hiện defendnot:** Cảnh báo khi Windows Security Center ghi nhận AV mới không có tên thương hiệu quen biết; giám sát file `defendnot-loader.exe` và `defendnot.dll` xuất hiện trong thư mục user.
    
4.  **Xây dựng luật phát hiện trên EDR/SIEM:**
    
    *   `explorer.exe` được spawn với tham số `CREATE_SUSPENDED` từ tiến trình không phải user session
        
    *   `sc.exe` hoặc PowerShell được spawn với parent process không phải `services.exe`/`cmd.exe`/shell tiêu chuẩn — dấu hiệu của parent process spoofing
        
    *   File `.vhdx` được mở từ thư mục tải xuống email hoặc attachment
        
5.  **Đào tạo nhận thức nhân viên:** Đặc biệt với nhân viên kế toán/tài chính/thu mua — **cảnh giác với hóa đơn đính kèm dạng** `.vhdx` (không phải định dạng tài liệu thông thường); không bao giờ mở file `.exe` trong một archive/disk image dù tên file trông như PDF hay tài liệu Word.
    
6.  **Bật Tamper Protection của Windows Defender** và đảm bảo nó không thể bị tắt bởi tiến trình user-mode — điều này sẽ làm phức tạp đáng kể việc defendnot cài đặt được.
    

* * *

## Tham Khảo

*   ["Evasive" Malware Attack Tactics: Hiding, Bypassing, and Reappearing — AhnLab ASEC (ATCP, 02/09/2026)](https://asec.ahnlab.com/en/95211/)
    
*   [Phantom Killer: Reverse Engineering and Weaponizing a Lenovo Driver to Terminate EDR Processes — Jehad Abudagga, Medium (05/2026)](https://medium.com/@jehadbudagga/phantom-killer-reverse-engineering-and-weaponizing-a-lenovo-driver-to-terminate-edr-processes-9191cd06374f)
    
*   [defendnot — es3n1n, GitHub](https://github.com/es3n1n/defendnot)
    
*   [Calling Local Windows RPC Servers from .NET — James Forshaw, Google Project Zero (12/2019)](https://projectzero.google/2019/12/calling-local-windows-rpc-servers-from.html)
    

* * *
