# FishMonger Mở Rộng Chiến Dịch Gián Điệp: SprySOCKS Chính Thức Tấn Công Windows

## Tóm tắt chiến dịch

Gần đây, các nhà nghiên cứu bảo mật đã phát hiện chiến dịch tấn công quy mô lớn nhắm vào các tổ chức chính phủ tại khu vực Châu Á (Đài Loan, Thái Lan, Pakistan) và Trung Mỹ (Honduras), được cho là do nhóm APT FishMonger (thuộc hệ sinh thái Winnti Group - Trung Quốc) thực hiện. Nhóm này đã chuyển đổi mã độc SprySOCKS backdoor từ Linux sang Windows, gia tăng đáng kể mức độ kiên trì (persistence) và khả năng ẩn mình. Biến thể mới nhất sử dụng kernel driver để hoạt động như một rootkit, lạm dụng Print Spooler, ẩn mọi hoạt động mạng và thiết lập một "passive TCP backdoor". Đặc biệt, có bằng chứng cho thấy chúng đã bắt đầu khai thác UEFI bootkit (CVE-2023-24932) để duy trì quyền kiểm soát vĩnh viễn trên hệ thống mục tiêu. Lỗ hổng đầu vào chủ yếu là các ứng dụng public-facing chưa được vá lỗi. Khuyến nghị các tổ chức rà soát ngay lập tức dịch vụ Print Spooler và cập nhật các bản vá bảo mật mới nhất cho các máy chủ công khai.

## **Phân tích nhóm APT FishMonger (I-SOON)**

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/6cdf9a3c-9fd1-42ef-9aba-c03168dc47d3.png align="center")

### **FishMonger là ai?**

FishMonger là một nhóm Advanced Persistent Threat (APT) được đánh giá có liên hệ với Trung Quốc, chuyên thực hiện các chiến dịch gián điệp mạng nhằm vào các tổ chức chính phủ, ngoại giao, viễn thông và công nghệ. Nhóm này được biết đến dưới nhiều định danh khác nhau như Earth Lusca, TAG-22, Aquatic Panda và Red Dev 10.

Mục tiêu chính của FishMonger là thu thập thông tin tình báo chiến lược, giám sát hoạt động của các tổ chức mục tiêu và duy trì quyền truy cập dài hạn trong hệ thống bị xâm nhập. Nhóm được đánh giá có trình độ kỹ thuật cao, liên tục phát triển công cụ mới và áp dụng các kỹ thuật né tránh phát hiện ngày càng tinh vi.

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/7157b887-c029-445b-9ccc-6d0994cbff0f.png align="center")

### Lịch sử hoạt động

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/670174c0-c97e-45ea-ba70-f90041cd4f2f.png align="center")

1.  **Giai đoạn 2012–2018**  
    FishMonger được ghi nhận tham gia nhiều chiến dịch gián điệp mạng tại khu vực châu Á - Thái Bình Dương. Các hoạt động ban đầu chủ yếu tập trung vào:
    
    *   Cơ quan chính phủ.
        
    *   Bộ ngoại giao.
        
    *   Tổ chức nghiên cứu chính sách.
        
    *   Nhà cung cấp viễn thông.
        
    
    Trong giai đoạn này, nhóm chủ yếu sử dụng web shell, backdoor tùy chỉnh và các công cụ mã nguồn mở được chỉnh sửa.
    
2.  **Giai đoạn 2019–2023**  
    Nhóm mở rộng phạm vi hoạt động sang: Đông Nam Á, Nam Á và cả khu vực Mỹ Latinh.
    
    Các chiến dịch bắt đầu sử dụng nhiều malware tự phát triển hơn nhằm giảm khả năng bị phát hiện và tăng cường tính bền vững trong môi trường nạn nhân.
    
    Đây cũng là giai đoạn xuất hiện các công cụ như: FishProxy, ShadowPad (trong một số chiến dịch), SprySOCKS Linux.
    
3.  **Giai đoạn 2024–2026**  
    Các nghiên cứu mới của ESET cho thấy FishMonger đã phát triển thành công các biến thể Windows của SprySOCKS.
    
    Hai biến thể đáng chú ý gồm:
    
    *   WIN\_PLUS
        
    *   WIN\_DRV
        
    
    Đặc biệt, WIN\_DRV tích hợp driver kernel nhằm triển khai các chức năng rootkit, cho phép ẩn tiến trình, kết nối mạng, tệp tin và khóa Registry.
    
    Đây là dấu hiệu cho thấy FishMonger đang chuyển sang các kỹ thuật stealth ở mức kernel tương tự nhiều nhóm APT cấp quốc gia khác.
    

### Mục tiêu tấn công

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/8c9134f0-ed08-41df-b32c-8c6da0e9550b.png align="center")

FishMonger thường nhắm vào các quốc gia như: Đài Loan, Thái Lan, Pakistan, Philippines, Malaysia, Honduras, Các quốc gia Mỹ Latinh và đặc biệt trong đó có cả Việt Nam.

Bên cạnh đó mục tiêu của FishMonger cũng nhắm đến rất nhiều lĩnh vực khác nhau từ cơ quan chính phủ: Bộ ngoại giao, Bộ quốc phòng, Cơ quan quản lý nhà nước đến Viễn thông, công nghệ, nghiên cứu và học thuật: Nhà mạng, ISP, Nhà cung cấp hạ tầng mạng.

### Kỹ thuật sử dụng

FishMonger thường sử dụng:

*   Spear-phishing email.
    
*   Watering Hole Attack.
    
*   Khai thác lỗ hổng trên máy chủ Internet-facing.
    
*   Tài khoản bị đánh cắp.
    

## **Timeline sự kiện**

1.  **Tháng 9/2023:** Trend Micro công bố báo cáo đầu tiên về việc Earth Lusca (FishMonger) sử dụng một backdoor mới trên Linux, được đặt tên là SprySOCKS.
    
2.  **Năm 2023 – Đầu 2024:** FishMonger âm thầm triển khai biến thể SprySOCKS trên môi trường Windows để tấn công các tổ chức chính phủ ở nhiều quốc gia.
    
3.  **Tháng 4/2024:** Một tệp nén chứa mã độc có tên [`klelam00007.zip`](http://klelam00007.zip) được tải lên VirusTotal, mở đường cho việc phân tích chuyên sâu.
    
4.  **Tháng 6/2026:** ESET Research công bố phân tích chi tiết về 2 biến thể SprySOCKS dành cho Windows (`WIN_PLUS` và `WIN_DRV`).
    

## **Kill Chain & Phân tích kỹ thuật chi tiết**

### Truy cập ban đầu

Chiến thuật quen thuộc của FishMonger là nhắm vào các máy chủ không được bảo vệ tốt (public-facing servers). Dù vector ban đầu của chiến dịch này chưa được khẳng định 100%, tuy nhiên ESET telemetry cho thấy việc xâm nhập diễn ra thông qua khai thác lỗ hổng N-day trên các ứng dụng máy chủ.

Sau khi xâm nhập thành công, mã độc sử dụng một kịch bản script (`.bat`) để sao chép tất cả các tệp thực thi vào thư mục hệ thống `%SystemRoot%\Fonts` nhằm duy trì hoạt động và chuẩn bị cho quá trình sideloading.

### **Duy trì quyền truy cập**

FishMonger áp dụng nhiều kỹ thuật kiên trì (persistence) khác nhau tùy theo phiên bản:

*   **Tạo Scheduled Task:** Tạo tác vụ giả mạo tên là `ApphostRagistreationVerifier` để chạy một tệp nhị phân hợp lệ bị đổi tên.
    
*   **Lạm dụng Print Spooler (T1543):** Mã độc sao chép payload dưới dạng thư viện in ấn (port monitor) và buộc `spoolsv.exe` (tiến trình Print Spooler hợp lệ của Windows) nạp thư viện chứa mã độc khi khởi động.
    
*   **UEFI Bootkit (T1542.003):** ESET ghi nhận dấu hiệu FishMonger khai thác lỗ hổng CVE-2023-24932 (Windows Secure Boot bypass) để triển khai bootkit ở tầng UEFI, đảm bảo backdoor có thể sống sót sau khi cài lại hệ điều hành hoặc định dạng ổ cứng.
    

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/444b08ea-300e-4867-9870-f6d045c3a134.png align="center")

Như ở đây chúng ta có thể thấy kẻ tấn công đã thiết lập quyền duy trì truy cập thông qua file`.bat`. Payload sẽ được chạy mỗi lần boot với quyền SYSTEM. Điểm đặc biệt là chúng sử dụng thư mục `"C:\Windows\Fonts"`, nhiều loại malware cũng sử dụng các thư mục hệ thống như này để có thể ẩn Payload do người dùng thường ít kiểm tra tới.

### **Defense Evasion & DLL Side-Loading**

Các tệp hợp lệ bị lợi dụng (như `AppHostRegistrationVerifier.exe` hoặc `lexprsrv.exe`) sẽ sideload thư viện `libsprysocks.dll` – nơi chứa lõi của SprySOCKS backdoor (được tùy biến từ mã nguồn mở Trochilus RAT).

### **Kernel-level Stealth: WIN\_DRV và Passive TCP Backdoor**

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/61fd57cc-360b-46d9-a590-2e7d2595d624.png align="center")

Điểm đột phá nhất trong chiến dịch này là việc FishMonger phát triển phiên bản `WIN_DRV`. Phiên bản này đi kèm một kernel driver có tên `RawWNPF`, hoạt động như một rootkit với hai tính năng cốt lõi:

1.  **Rootkit che giấu:** Driver móc sâu vào hệ thống để tàng hình các tiến trình, tệp tin, registry keys và các kết nối mạng liên quan đến backdoor.
    
2.  **Passive TCP Backdoor:** Thay vì kết nối ra ngoài (reverse shell) hoặc mở một port lắng nghe lộ liễu, `WIN_DRV` biến bất kỳ port TCP hợp lệ nào đang mở trên máy chủ (ví dụ port 80, 443) thành port giao tiếp của nó. Khi driver phát hiện cấu trúc dữ liệu đặc biệt (magic packet) trong TCP header của luồng traffic đi vào, nó sẽ bí mật "nắn dòng" (divert) gói tin đó sang một local port ngẫu nhiên mà backdoor đang thực sự lắng nghe. Điều này giúp mã độc qua mặt hoàn toàn các firewall và hệ thống giám sát kết nối thông thường.
    

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/494b28d4-b030-4e01-b476-f9cfe013e26e.png align="center")

### **Process Injection: Process Doppelgänging**

Chuỗi thực thi của SprySOCKS sử dụng kỹ thuật **Process Doppelgänging** (T1055.013) — một phương pháp injection tinh vi lạm dụng NTFS Transactions. SprySOCKS loader giải mã backdoor từ container được mã hóa AES-128 ECB (key: `uXQLESMXGaRMs6BL`), sau đó inject vào tiến trình `svchost.exe` mới được tạo thông qua Process Doppelgänging. Kỹ thuật này khiến payload không bao giờ tồn tại dưới dạng file thông thường trên đĩa, qua mặt phần lớn các giải pháp EDR dựa trên file scanning.

## **C2 Communication — Kiến trúc đa giao thức**

SprySOCKS backdoor (DLL gốc: `PrcsServer.dll`, export function: `Stop`) xây dựng hạ tầng C&C trên nền tảng thư viện mạng mã nguồn mở HP-Socket và sử dụng thư viện Crypto++ cho các hàm mật mã. Backdoor hỗ trợ **cả hai vai trò client và server** trên cả ba giao thức: TCP, UDP, và WebSocket.

#### **Cấu hình C&C nhúng (Hardcoded)**

Cấu hình C&C được nhúng trực tiếp trong binary, bao gồm:

*   Tối đa **3 địa chỉ IP + port** cho kết nối outbound (TCP, UDP, WebSocket client).
    
*   Tối đa **3 port lắng nghe** cho kết nối inbound (TCP, UDP, WebSocket server).
    

Ví dụ cấu hình từ biến thể `WIN_PLUS`

`TCP Client → 207.148.78[.]36:443`

`UDP Client → 207.148.78[.]36:53`

`WebSocket → 207.148.78[.]36:80`

`TCP Server → Listening port: 53781`

Đáng chú ý, cả TCP port 443 và UDP port 53 đều là các port phổ biến (HTTPS và DNS), cho phép traffic C&C hòa lẫn vào lưu lượng mạng bình thường.

#### **Định dạng giao thức C&C**

Mỗi giao thức sử dụng một **magic value** riêng biệt trong header để nhận diện traffic hợp lệ:

| **Giao thức** | **Magic Value** | **Vị trí trong Header** | **Kích thước Header** |
| --- | --- | --- | --- |
| TCP | `0xACACBCBC` | Offset 0x04 | 12 bytes |
| UDP | `0xACACBFBC` | Offset 0x1C | 36 bytes |
| WebSocket | `0x1BDCCBAA` | Masking-Key (RFC 6455) | Theo chuẩn WS |

Cấu trúc TCP header (12 bytes): `[CRC32 (4B)] [Magic 0xACACBCBC (4B)] [Data Size (4B)]`

Sau header là phần payload được xử lý qua pipeline: **Base64 encode → AES-128 ECB encrypt** (key: `QFTHEYjzX3RBOMgZ`), kèm một WORD `0x0003` chỉ định phương thức mã hóa. Quy trình này đảm bảo dữ liệu C&C luôn được mã hóa trên đường truyền.

#### **Cơ chế tự bảo vệ kết nối**

Biến thể `WIN_DRV` gọi hai IOCTL của driver RawWNPF trước khi thiết lập bất kỳ kết nối nào:

*   **IOCTL** `0x220340`**:** Ẩn các kết nối tới/từ các địa chỉ và port trong cấu hình khỏi output của `netstat.exe` và các công cụ tương tự.
    
*   **IOCTL** `0x220200`**:** Kích hoạt tính năng TCP diversion — cho phép backdoor nhận lệnh thông qua bất kỳ port TCP đang mở nào.
    

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/97a98716-9385-46b4-b6a7-aeb7ffeb8e0f.png align="center")

Backdoor còn thao tác firewall bằng cách xóa rồi tạo lại rule giả mạo tên `"Core Networking - Packet Too Big(ICMPv6 - In)"` để mở port lắng nghe:

`netsh advfirewall firewall delete rule name="Core Networking - Packet Too Big(ICMPv6 - In)"`

`netsh advfirewall firewall add rule name="Core Networking - Packet Too Big(ICMPv6 - In)" dir=in action=allow protocol=tcp localport=53781`

#### **Bảng lệnh C&C (30+ Commands)**

Backdoor nhận lệnh thông qua trường `__msgid` trong message JSON đã giải mã. Bảng dưới đây liệt kê đầy đủ các lệnh được hỗ trợ:

| **Message ID** | **Chức năng** | **Nhóm** |
| --- | --- | --- |
| `0x09` | Thu thập thông tin hệ thống (hostname, OS, CPU, RAM, network adapters, privileges, ngôn ngữ, thời gian, phiên bản backdoor `WIN_DRV`/`WIN_PLUS`) | **Reconnaissance** |
| `0x0A` | Khởi chạy interactive console (`cmd.exe`) | **Execution** |
| `0x0B` | Ghi dữ liệu vào interactive console | **Execution** |
| `0x0D` | Dừng interactive console | **Execution** |
| `0x0E` | Thiết lập kênh C&C dự phòng (backup channel) | **C2 Management** |
| `0x0F` | Chuyển tiếp C&C message tới target khác | **C2 Management** |
| `0x11` | Liệt kê toàn bộ tiến trình đang chạy | **Discovery** |
| `0x12` | Liệt kê modules của một tiến trình (theo PID) | **Discovery** |
| `0x13` | Kết thúc (kill) tiến trình theo PID | **Impact** |
| `0x14` | Đóng toàn bộ kết nối | **C2 Management** |
| `0x16` | Lấy thông tin kênh C&C hiện tại | **C2 Management** |
| `0x17` | Khởi tạo và bật thêm kênh C&C mới (TCP/UDP/WebSocket) | **C2 Management** |
| `0x19` | **Tự gỡ cài đặt (uninstall) backdoor và thoát** | **Anti-Forensics** |
| `0x1E` | Liệt kê toàn bộ Windows Services | **Discovery** |
| `0x1F` | Cấu hình `StartType` cho một service | **Persistence** |
| `0x20` | Khởi chạy service theo tên | **Execution** |
| `0x21` | Gọi `ControlService` với tham số tùy chỉnh | **Execution** |
| `0x22` | Xóa service khỏi Service Manager | **Defense Evasion** |
| `0x23` | Khởi tạo **SOCKS proxy** | **Lateral Movement** |
| `0x24` | Dừng SOCKS proxy | **Lateral Movement** |
| `0x25` | Gửi dữ liệu qua SOCKS proxy | **Lateral Movement** |
| `0x26` | Lệnh liên quan SOCKS proxy (quản lý) | **Lateral Movement** |
| `0x2A` | Upload tệp từ máy nạn nhân lên C&C | **Exfiltration** |
| `0x2B` | Lệnh hỗ trợ truyền tệp | **Exfiltration** |
| `0x2C` | Download tệp từ C&C xuống máy nạn nhân | **Ingress Tool Transfer** |
| `0x2D` | Lệnh hỗ trợ truyền tệp | **Ingress Tool Transfer** |
| `0x3C` | Liệt kê dung lượng ổ đĩa trống | **Discovery** |
| `0x3D` | Liệt kê tệp trong thư mục chỉ định | **Discovery** |
| `0x3E` | Xóa tệp | **Impact** |
| `0x3F` | Tạo thư mục | **File Management** |
| `0x40` | Đổi tên tệp | **File Management** |
| `0x41` | Thực thi một tệp có sẵn trên hệ thống | **Execution** |
| `0x42` | Sao chép tệp | **File Management** |
| `0x43` | Liệt kê tệp trong thư mục `Recent` của Windows (`%APPDATA%\Microsoft\Windows\Recent\` và `%APPDATA%\Microsoft\Office\Recent\`) | **Collection** |

#### **Keylogger tích hợp**

Backdoor tích hợp module keylogger, được kích hoạt khi tệp INI `%appdata%\Microsoft\Vault\lgf.dat` tồn tại với cấu hình `[config] key=1`. Khi hoạt động, keylogger:

*   Tạo mutex `Global\{DCAA7ED8-521B-4EAB-BE21-65254CF59239}`
    
*   Ghi lại keystrokes, dữ liệu clipboard, và tiêu đề cửa sổ đang active
    
*   Lưu vào tệp `%appdata%\Microsoft\Vault\lg.dat`, được mã hóa XOR đơn byte (key `0x44`)
    

#### **SOCKS Proxy**

Các lệnh `0x23`–`0x26` cho phép thiết lập SOCKS proxy trực tiếp trên máy nạn nhân. Tính năng này cho phép kẻ tấn công sử dụng máy nạn nhân làm "bàn đạp" (pivot point) để di chuyển ngang (lateral movement) trong mạng nội bộ, mở rộng phạm vi xâm nhập mà không cần triển khai thêm công cụ trên các máy mục tiêu tiếp theo.

![](https://cdn.hashnode.com/uploads/covers/6777abffdb647396c7d71de4/16b1de1c-aaf1-4602-ac98-c868344a9309.png align="center")

## **IOC & Artifacts**

### **File Indicators**

| **SHA-1** | **Filename** | **Detection** | **Mô tả** |
| --- | --- | --- | --- |
| `E7484C24B88A1A2407A8F09D734F9A993670285B` | [`klelam00007.zip`](http://klelam00007.zip) | Win64/Agent.CXZ, Win64/SprySOCKS.A | Archive chứa biến thể `WIN_DRV` đầy đủ |
| `6490B8E4AADE25A3EE2DA9A47F312DB2122470BC` | `X1B5206BDC1743DD.dat` | Win64/SprySOCKS.A | Container mã hóa chứa backdoor `WIN_DRV` |
| `955BFC3DCC867256F9F46A606DEB0779FA3416D8` | `KX1B5206BDC1743DD.dat` | Win64/SprySOCKS.A | SprySOCKS DriverLoader driver (encrypted) |
| `AB87B29B6F79487C75CA08D102E79001E536F083` | `KW1B5206BDC1743FP.dat` | Win64/SprySOCKS.A | RawWNPF driver (encrypted) |
| `44DC4A08C5EB0972C8E18B0E01284E06F09006BB` | `bthcam.sys` | Win64/Agent.ESB | DriverLoader driver (decrypted) |
| `621D1952839BE4B0A1B0E66E87BCE5062CA368ED` | `tpsvcloc.dll` | Win64/Agent.CXZ | SprySOCKS loader (`WIN_DRV`) |
| `2457EED2AB28E37741F10914EF929DAD2C8079D4` | `VSPMsg.dll` | Win64/Agent.CXZ | First-stage loader (`WIN_PLUS`) |
| `C793CA31E3F6628B5C8986146953BF66232E9A30` | `config.dat` | Win64/SprySOCKS.A | Container mã hóa (`WIN_PLUS` backdoor + loader) |
| `D2C706B1EAF662BF0CE124B5032F73ED84BDA24A` | N/A | Win64/SprySOCKS.A | Backdoor `WIN_PLUS` (decrypted) |
| `5F3B87CEF56683D9A9E19186E0FD0D8019B559C4` | N/A | Win64/Agent.CXZ | SprySOCKS loader (`WIN_PLUS`) |
| `037DB2445F3D72388CB2CF8510563148E5A184BE` | N/A | BAT/Runner.KS | Batch script persistence (`WIN_DRV`) |

### **Network Indicators**

207.148.78\[.\]36 (Vultr cloud hosting, IP range 207.148.64.0/20)

*   TCP port: 443
    
*   UDP port: 53
    
*   WebSocket port: 80
    

207.148.75\[.\]122 (cùng IP range, sử dụng tháng 6/2023)

### **Host-based Indicators**

**File Paths (WIN\_DRV)**

%SystemRoot%\\Fonts\\ApphostRagistreationVerifier.exe %SystemRoot%\\Fonts\\tpsvc.dll %SystemRoot%\\Fonts\\tpsvcloc.dll %SystemRoot%\\Fonts\\X1B5206BDC1743DD.dat %SystemRoot%\\Fonts\\KX1B5206BDC1743DD.dat %SystemRoot%\\Fonts\\KW1B5206BDC1743FP.dat

**File Paths (WIN\_PLUS)**

C:\\Windows\\System32\\spool\\drivers\\color\\config.dat C:\\Windows\\System32\\spool\\prtprocs\\x64\\VSPMsg.dll C:\\ProgramData\\Microsoft Event\\PFs\\VSPMsg.dll

**Registry Keys**

HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\vds.exe HKLM\\SYSTEM\\ControlSet001\\Control\\Print\\Environments\\Windows x64\\Print Processors\\VSPMsg

**Scheduled Tasks**

ApphostRagistreationVerifier

**Mutexes**

prcs-server-run fqwhi2d1qaz2 Global{DCAA7ED8-521B-4EAB-BE21-65254CF59239}

**Keylogger artifacts**

%appdata%\\Microsoft\\Vault\\lgf.dat (config file) %appdata%\\Microsoft\\Vault\\lg.dat (captured keystrokes, XOR key 0x44)

**Firewall rule giả mạo**

"Core Networking - Packet Too Big(ICMPv6 - In)" (cho phép inbound TCP tới port backdoor)

## **MITRE ATT&CK Mapping**

| **Tactic** | **ID** | **Technique** | **Mô tả trong chiến dịch** |
| --- | --- | --- | --- |
| **Reconnaissance** | [T1592.004](https://attack.mitre.org/techniques/T1592/004) | Gather Victim Host Information: Client Configurations | Thu thập hostname, OS, CPU, RAM, privileges, ngôn ngữ hệ thống |
|  | [T1590.005](https://attack.mitre.org/techniques/T1590/005) | Gather Victim Network Information: IP Addresses | Thu thập thông tin network adapters và IP |
| **Resource Development** | [T1587.001](https://attack.mitre.org/techniques/T1587/001) | Develop Capabilities: Malware | FishMonger phát triển SprySOCKS backdoor tùy chỉnh |
| **Execution** | [T1059.003](https://attack.mitre.org/techniques/T1059/003) | Command and Scripting Interpreter: Windows Command Shell | Interactive `cmd.exe` shell (lệnh `0x0A`) |
|  | [T1053.005](https://attack.mitre.org/techniques/T1053/005) | Scheduled Task/Job: Scheduled Task | Tạo scheduled task `ApphostRagistreationVerifier` |
|  | [T1569.002](https://attack.mitre.org/techniques/T1569/002) | System Services: Service Execution | Lạm dụng system services cho execution |
|  | [T1106](https://attack.mitre.org/techniques/T1106) | Native API | Sử dụng Windows API trực tiếp |
| **Persistence** | [T1547.012](https://attack.mitre.org/techniques/T1547/012) | Boot or Logon Autostart Execution: Print Processors | Cài đặt loader dưới dạng print processor (`VSPMsg`) |
| **Privilege Escalation** | [T1546.012](https://attack.mitre.org/techniques/T1546/012) | Event Triggered Execution: Image File Execution Options Injection | Đăng ký debugger cho `vds.exe` qua IFEO registry key |
| **Defense Evasion** | [T1205.002](https://attack.mitre.org/techniques/T1205/002) | Traffic Signaling: Socket Filters | RawWNPF driver cài packet filter, redirect traffic khi phát hiện magic value |
|  | [T1134.002](https://attack.mitre.org/techniques/T1134/002) | Access Token Manipulation: Create Process with Token | `CreateProcessAsUser` với token từ Print Spooler |
|  | [T1622](https://attack.mitre.org/techniques/T1622) | Debugger Evasion | RawWNPF gọi `KdDisableDebugger` để vô hiệu hóa kernel debugger |
|  | [T1140](https://attack.mitre.org/techniques/T1140) | Deobfuscate/Decode Files or Information | Giải mã backdoor từ container AES-encrypted |
|  | [T1070.004](https://attack.mitre.org/techniques/T1070/004) | Indicator Removal: File Deletion | Xóa file gốc sau khi copy và cài persistence |
|  | [T1070.009](https://attack.mitre.org/techniques/T1070/009) | Indicator Removal: Clear Persistence | Xóa registry value của minifilter driver sau khi load |
|  | [T1027.007](https://attack.mitre.org/techniques/T1027/007) | Obfuscated Files or Information: Dynamic API Resolution | Dynamic API resolution trong tất cả components |
|  | [T1027.013](https://attack.mitre.org/techniques/T1027/013) | Obfuscated Files or Information: Encrypted/Encoded File | Components lưu trữ dưới dạng AES-encrypted trên đĩa |
|  | [T1055.013](https://attack.mitre.org/techniques/T1055/013) | Process Injection: Process Doppelgänging | Inject backdoor vào `svchost.exe` qua Process Doppelgänging |
|  | [T1014](https://attack.mitre.org/techniques/T1014) | Rootkit | RawWNPF driver ẩn processes, files, registry, network connections |
|  | [T1497](https://attack.mitre.org/techniques/T1497) | Virtualization/Sandbox Evasion | Anti-emulation: kiểm tra `snxhk.dll`, `SbieDll.dll`, `cmdvrt32.dll` |
|  | [T1574.002](https://attack.mitre.org/techniques/T1574/002) | Hijack Execution Flow: DLL Side-Loading | Side-load SprySOCKS qua legitimate executables |
| **Defense Impairment** | [T1562.004](https://attack.mitre.org/techniques/T1562/004) | Disable or Modify System Firewall | Thêm firewall rule cho phép inbound traffic tới port backdoor |
| **Discovery** | [T1010](https://attack.mitre.org/techniques/T1010) | Application Window Discovery | Lấy tên foreground window (phục vụ keylogger) |
|  | [T1083](https://attack.mitre.org/techniques/T1083) | File and Directory Discovery | Liệt kê file/directory (lệnh `0x3D`) |
|  | [T1518.001](https://attack.mitre.org/techniques/T1518/001) | Software Discovery: Security Software Discovery | Kiểm tra DLL của security products |
|  | [T1082](https://attack.mitre.org/techniques/T1082) | System Information Discovery | Thu thập toàn diện thông tin hệ thống |
|  | [T1614.001](https://attack.mitre.org/techniques/T1614/001) | System Location Discovery: System Language Discovery | Thu thập ngôn ngữ hệ thống |
|  | [T1007](https://attack.mitre.org/techniques/T1007) | System Service Discovery | Liệt kê services (lệnh `0x1E`) |
|  | [T1124](https://attack.mitre.org/techniques/T1124) | System Time Discovery | Thu thập thời gian hệ thống |
| **Collection** | [T1056.001](https://attack.mitre.org/techniques/T1056/001) | Input Capture: Keylogging | Keylogger ghi keystrokes vào `lg.dat` |
|  | [T1115](https://attack.mitre.org/techniques/T1115) | Clipboard Data | Thu thập clipboard data cùng keylogger |
| **Command and Control** | [T1132.001](https://attack.mitre.org/techniques/T1132/001) | Data Encoding: Standard Encoding | Base64 encoding trong C&C protocol |
|  | [T1573.001](https://attack.mitre.org/techniques/T1573/001) | Encrypted Channel: Symmetric Cryptography | AES-128 ECB mã hóa C&C data |
|  | [T1008](https://attack.mitre.org/techniques/T1008) | Fallback Channels | Hỗ trợ TCP, UDP, WebSocket song song |
|  | [T1665](https://attack.mitre.org/techniques/T1665) | Hide Infrastructure | RawWNPF ẩn connections khỏi `netstat.exe` |
|  | [T1571](https://attack.mitre.org/techniques/T1571) | Non-Standard Port | Sử dụng non-standard ports cho C&C |
|  | [T1095](https://attack.mitre.org/techniques/T1095) | Non-Application Layer Protocol | Custom protocol trên TCP/UDP |
| **Exfiltration** | [T1041](https://attack.mitre.org/techniques/T1041) | Exfiltration Over C2 Channel | Upload files qua kênh C&C (lệnh `0x2A`) |

## **Nhận định chuyên gia**

Sự chuyển dịch của SprySOCKS từ môi trường Linux sang Windows đi kèm với việc áp dụng kernel rootkit và UEFI bootkit cho thấy sự trưởng thành đáng sợ trong năng lực phát triển vũ khí mạng của FishMonger nói riêng và hệ sinh thái APT Trung Quốc nói chung.

Việc vận dụng kỹ thuật "passive TCP backdoor" thông qua kernel driver `RawWNPF` là một bước đi cực kỳ tinh vi. Trên thực tế, đối với phần lớn các giải pháp Firewall hay Network Security truyền thống, lưu lượng đi vào các port đang mở hợp lệ (như 443 hay 80) được đánh giá là an toàn ở tầng Transport (L4). Kỹ thuật nắn dòng traffic ở mức kernel giúp kẻ tấn công bypass hoàn toàn việc quét port (port scanning) và đánh lừa các quy tắc tường lửa thông thường. Dựa trên kinh nghiệm triển khai SOC tại các tổ chức lớn, chúng tôi nhận thấy các giải pháp không phân tích sâu ở tầng 7 (L7 Deep Packet Inspection) hoặc thiếu tích hợp luồng dữ liệu mạng với dữ liệu host (NDR kết hợp EDR) sẽ "mù hoàn toàn" trước phương thức này.

Ngoài ra, việc khai thác Print Spooler làm phương tiện persistence là một lời nhắc nhở rõ ràng: Print Spooler là một rủi ro kiến trúc muôn thuở của Windows. Hầu hết các máy chủ public-facing không hề có nhu cầu sử dụng dịch vụ in ấn, nhưng nó vẫn được bật theo mặc định.

## **Khuyến nghị**

### **Immediate (0-24h)**

*   Tiến hành rà soát hệ thống để phát hiện sự tồn tại của thư mục/tệp khả nghi: `%SystemRoot%\Fonts\libsprysocks.dll` hoặc scheduled task `ApphostRagistreationVerifier`.
    
*   Khẩn trương vô hiệu hóa dịch vụ **Print Spooler** trên toàn bộ các máy chủ Windows public-facing (như Web Server, Exchange Server, Domain Controller) nếu không có nhu cầu in ấn thực sự.
    
*   Cập nhật ngay bản vá cho các lỗ hổng N-day trên các ứng dụng exposed ra Internet.
    

### **Short-term (1-7 ngày)**

*   Tìm kiếm (Threat Hunting) các dấu hiệu DLL side-loading bằng cách kiểm tra mối liên hệ bất thường giữa các tiến trình hợp lệ của Windows và thư viện DLL không chữ ký số (unsigned DLLs).
    
*   Cập nhật chữ ký nhận diện IOCs vào hệ thống SIEM/EDR, đặc biệt giám sát các hành vi hook vào tầng mạng ở kernel space.
    

### **Long-term**

*   Kích hoạt và quản lý chặt chẽ cấu hình **Secure Boot** trên tất cả các máy chủ vật lý và ảo hóa để ngăn chặn rủi ro từ UEFI Bootkits, đồng thời áp dụng bản vá cho lỗ hổng CVE-2023-24932.
    
*   Triển khai mô hình kết hợp EDR và NDR để tương quan hóa các điểm mù giữa Network và Host. Đặc biệt, năng lực DPI (Deep Packet Inspection) của NDR là yêu cầu bắt buộc để giải mã các kỹ thuật passive backdoor như biến thể `WIN_DRV`.
    

## **Tài liệu tham khảo**

[Windows version of SprySOCKS Linux malware used to attack govt orgs](https://www.bleepingcomputer.com/news/security/windows-version-of-sprysocks-linux-malware-used-to-attack-govt-orgs/)

[FishMonger’s arsenal upgraded: SprySOCKS for Windows](https://www.welivesecurity.com/en/eset-research/fishmongers-arsenal-upgraded-sprysocks-windows/#iocs)

[China-Linked FishMonger Ports SprySOCKS to Windows With Kernel-Level Stealth and UEFI Bootkit Hints - Security Affairs](https://securityaffairs.com/193728/apt/china-linked-fishmonger-ports-sprysocks-to-windows-with-kernel-level-stealth-and-uefi-bootkit-hints.html)
