# ZBT: ba implant, một chuỗi cung ứng, và 392 thiết bị gọi về một tên miền bị bỏ quên

## Tóm tắt

VulnCheck mua một router giá **88 USD trên Amazon, từ một công ty nhỏ ở New York**. Nhãn ghi Deep Orange. Bên dưới lớp vỏ là ZBT-WE826-T2 của Shenzhen Zhibotong Electronics, và bên trong firmware là hai implant chưa từng được công bố.

Đây không phải lỗ hổng phần mềm. Đây là **mã được xuất xưởng có chủ đích**:

*   **DARKLANTERN** (service `infosrvd`) — backdoor lắng nghe trên UDP/9992, thực thi lệnh tùy ý với quyền root, **không cần xác thực**. Firewall mặc định của router **cho phép kết nối vào cổng này từ bất kỳ đâu trên internet**.
    
*   **SPEAKINGSTONE** (service `yunmgrd`) — implant phone-home beacon ra UDP/10000, hỗ trợ hijack DNS, đánh cắp thông tin đăng nhập PPPoE, và mở reverse SSH tunnel. Cả hai đều viết bằng **Nim**, giao tiếp qua UDP, và được khởi chạy bởi cùng một binary watchdog kết nối tên `inetdetect`.
    

VulnCheck phát hiện SPEAKINGSTONE có một tên miền C2 dự phòng **chưa ai đăng ký**. Họ đăng ký nó. Beacon đổ về ngay lập tức: **392 thiết bị, 390 trong số đó ở Trung Quốc, 83% trên mạng China Mobile**, và thiết bị chạy lâu nhất đã beacon liên tục gần hai năm.

**Hành động ưu tiên: kiểm tra xem tổ chức có thiết bị mạng nào mang địa chỉ MAC bắt đầu bằng** `78:A3:51` **hay không — đây là dải OUI cấp cho ZBT, và là cách nhanh nhất để nhận ra phần cứng ZBT dưới bất kỳ nhãn thương hiệu nào.**

* * *

## Bối cảnh và timeline

Đây là **implant thứ hai và thứ ba** được phát hiện trên cùng một nhà sản xuất, qua nhiều thế hệ firmware khác nhau.

| Thời điểm | Sự kiện |
| --- | --- |
| 05/08/2026 | VulnCheck công bố **ENDLESSDOORS** — implant phone-home đầu tiên tìm thấy trong firmware ZBT |
| 06/08/2026 | ZBT tuyên bố tạm dừng bán các model bị ảnh hưởng và gỡ firmware liên quan khỏi website chính thức |
| 18–21/08/2026 | VulnCheck quét internet bằng DARKLANTERN info probe, xác định **203 instance ở 22 quốc gia** |
| 21/08/2026 | Sinkhole SPEAKINGSTONE thu được **392 thiết bị** báo về |
| **27/08/2026** | VulnCheck công bố **DARKLANTERN** và **SPEAKINGSTONE**, kèm hai CVE |

Hai CVE được cấp, cả hai đều **CVSS 9.3 (Critical)** và đều đã vào **VulnCheck KEV**:

| CVE | Implant | Loại |
| --- | --- | --- |
| [CVE-2026-74233](https://console.vulncheck.com/cve/CVE-2026-74233) | DARKLANTERN (`infosrvd`) | CWE-321 Hard-coded Cryptographic Key + CWE-78 OS Command Injection |
| [CVE-2026-74232](https://console.vulncheck.com/cve/CVE-2026-74232) | SPEAKINGSTONE (`yunmgrd`) | CWE-506 Embedded Malicious Code + CWE-300 Channel Accessible by Non-Endpoint |

Đáng chú ý về mặt phân loại: CWE-506 nghĩa là **"Embedded Malicious Code"**. Đây không phải cách một tổ chức cấp CVE mô tả một lỗi lập trình.

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/c2000128-80d7-47d1-ae20-179b64cb36e8.png align="center")

*Quan hệ giữa SPEAKINGSTONE, DARKLANTERN và binary khởi chạy chung* `inetdetect` *(nguồn: VulnCheck).*

* * *

## DARKLANTERN: backdoor mở sẵn ra internet

DARKLANTERN chạy dưới dạng service `infosrvd`, lắng nghe trên UDP port 9992.

Điểm cần đọc kỹ nằm ở firewall mặc định của chính router:

```plaintext
/tmp # iptables -L udp_packets
Chain udp_packets (1 references)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9992
```

Quy tắc này cho phép kết nối vào cổng 9992 **từ bất kỳ đâu trên internet**. VulnCheck viết thẳng: theo thiết kế, nó có thể tiếp cận được từ thế giới bên ngoài.

Đây không phải cấu hình sai của người dùng. Đây là cấu hình xuất xưởng.

Giao thức, mà binary gọi nội bộ là `revProto`, đơn giản, không xác thực và không mã hóa. Có hai loại gói.

### Info probe: 19 byte để lộ toàn bộ thiết bị

Một info probe dài đúng 19 byte. Gửi tới UDP/9992, thiết bị trả lời về UDP/8897 kèm model, phiên bản firmware, địa chỉ MAC, uptime và các thông tin định danh khác.

```plaintext
0c 16 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
```

Không xác thực. Không challenge. Không session.

Đây là một response thật mà VulnCheck thu được **từ một thiết bị ở Ukraine** — model, MAC, SSID và IP công cộng đều ở dạng rõ:

```plaintext
\0c\16\1fWE826-T2;19.0617;78a35165f294;733752;;0;0;0;0;0;3835201070;2639069874;;;
295428312;5111713550;47586414082;2534543950;192.168.1.1;;_XPAM_;2;;10;;;;;;;
2018-11-12;ffff;27199800;45.156.37.159;27028260;0;0;0;0;0
```

### Command packet: một gói UDP là một root shell

Gói lệnh (type `0x17`) mang một chuỗi shell trong payload. Service truyền nó **thẳng vào** `system("/etc/exec/cmd " + payload)`.

Một dấu chấm phẩy trong payload là thoát khỏi prefix cố định và thực thi lệnh tùy ý. **Không giới hạn độ dài. Không lọc ký tự.**

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/5a8c58ee-a955-48d3-9bb5-3adcc2b505d0.png align="center")

*Định dạng gói lệnh của DARKLANTERN (nguồn: VulnCheck).*

Hai trường quyết định gói có được chấp nhận hay không — và cả hai đều bị vô hiệu một cách dễ dàng.

**Token.** Gói lệnh yêu cầu một checksum bốn byte có khóa, tính bằng bốn ký tự hex cuối của `md5("mqonu.com" + payload)`. Khóa `"mqonu.com"` được **hardcode trong backdoor và không thể thay đổi**. Ai cũng tính được checksum hợp lệ cho bất kỳ payload nào:

```python
import hashlib
token = hashlib.md5(b"mqonu.com" + payload).hexdigest()[-4:].encode()
```

Chuỗi `mqonu.com` không phải URL được liên hệ — nó chỉ là salt tĩnh. Nhưng nó tham chiếu **MoreQuick, OEM Trung Quốc phát triển firmware cho ZBT-WE826-T2**, và do đó nối trực tiếp việc phát triển implant với MoreQuick.

**MAC filter — và bypass được viết sẵn.** Gói lệnh mang một trường MAC sáu byte, được đối chiếu với MAC của chính thiết bị trong `/tmp/mac.txt`. Không khớp thì gói bị bỏ. Về lý thuyết, đây ít nhất là một nỗ lực hợp lý nhằm chặn kẻ tấn công tùy ý — bỏ qua chuyện chính info probe đã trả về MAC của thiết bị.

Trừ một vấn đề: **code chứa một bypass hardcode. Nếu trường MAC toàn số 0, kiểm tra được coi là đạt và gói được đưa vào hàng đợi xử lý.**

Đây là chi tiết tôi cho là quan trọng nhất trong toàn bộ phân tích DARKLANTERN. Một lỗi logic trong kiểm tra MAC có thể là sơ suất lập trình. Một nhánh xử lý riêng cho giá trị toàn số 0, viết sẵn trong code, thì không.

### Quy mô trên internet

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/a7769a73-1a91-41a7-be68-afd667e8671b.png align="center")

*Phân bố các instance DARKLANTERN tiếp cận được từ internet (nguồn: VulnCheck).*

Trong khoảng **18–21/08/2026**, VulnCheck xác định **203 instance DARKLANTERN tiếp cận được từ internet, trải trên 22 quốc gia**.

Mỗi thiết bị trong số đó cung cấp một root shell không cần xác thực, tiếp cận được từ internet công cộng, được "bảo vệ" bởi một checksum ai cũng giả được và một MAC filter có bypass cố ý.

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/257e9cee-8da8-46b2-9777-6cf580141124.png align="center")

*16 model tự khai báo trong dữ liệu quét (nguồn: VulnCheck).*

Dữ liệu quét cũng cho thấy DARKLANTERN **không giới hạn ở ZBT-WE826-T2**: các thiết bị phản hồi tự khai báo **16 model khác nhau**. Đây không phải một sản phẩm có vấn đề, mà là một backdoor ở tầng firmware được xuất xưởng cùng nhiều dòng sản phẩm.

VulnCheck lưu ý thêm rằng đây là các model cũ và firmware trên thiết bị thử nghiệm được build năm 2019 — nhiều khả năng họ đang bắt được phần đuôi của quá trình triển khai DARKLANTERN, và **quy mô lắp đặt thực tế gần như chắc chắn từng lớn hơn**.

* * *

## SPEAKINGSTONE: implant phone-home mạnh hơn nhiều

SPEAKINGSTONE khác DARKLANTERN ở điểm căn bản: **nó không lắng nghe, nó chủ động kết nối ra.**

VulnCheck giải thích rõ vì sao đây là thiết kế tốt hơn nhiều cho một operator từ xa. Một listener như DARKLANTERN phụ thuộc vào việc router phải tiếp cận được trực tiếp từ internet — đặt thiết bị sau firewall, sau NAT, sau gateway doanh nghiệp là listener trở nên vô dụng. Implant phone-home không quan tâm: nó kết nối ra ngoài như mọi lưu lượng internet khác. Sau năm lớp firewall, sau carrier-grade NAT, trên mạng riêng — nó vẫn hoạt động.

**C2 chính** trên thiết bị thử nghiệm là `ac-link[.]com`, phân giải về `47.107.224[.]89` — một địa chỉ **Alibaba Cloud tại Thâm Quyến**. Đây là domain của chính ZBT, và cũng chính là domain đã xuất hiện trong nghiên cứu ENDLESSDOORS, với cùng địa chỉ IP hardcode trong một init script của ENDLESSDOORS.

### Giao thức zbtProtocol

Implant beacon tới C2 trên UDP port 10000. Beacon chứa **fingerprint thiết bị đầy đủ**: model, phiên bản firmware, MAC, SSID, LAN IP, uptime, **tọa độ GPS**, và toàn bộ nội dung `/tmp/info.txt`.

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/3d36feb2-b1ec-4756-aae9-87c5c10003fd.png align="center")

*Định dạng gói beacon của SPEAKINGSTONE (nguồn: VulnCheck).*

Về bảo vệ: trên WE826-T2, thông điệp đi ra được obfuscate bằng **XOR một byte (**`0x1f`**)** — nhưng **không phải thiết bị nào cũng làm vậy**, cho thấy việc obfuscate là tùy chọn hoặc được thêm vào về sau. Còn lệnh từ C2 gửi xuống **luôn ở dạng plaintext**.

Không mã hóa. Không xác thực. Thiết bị **không có cách nào xác minh nó đang nói chuyện với một server hợp lệ**. Bất kỳ ai trên đường truyền đều có thể chiếm quyền các implant này.

### Bộ lệnh

| msgType | Tên | Tác dụng |
| --- | --- | --- |
| `0x1001` | reg | Beacon fingerprint thiết bị |
| `0x2507` | cmdRun | **Thực thi lệnh tùy ý** |
| `0x2502` | pppoe | **Đánh cắp username và password PPPoE của kết nối WAN** |
| `0x230b` | dnsSet | **Ghi danh sách hijack DNS, kích hoạt qua** `/usr/sbin/dns.sh` |
| `0x2306` | dnsGet | Trả về danh sách hijack DNS hiện tại |
| `0x2405` | onoff | **Mở hoặc đóng reverse SSH tunnel** |
| `0x2406` | sshport | Trả về port SSH ngược hiện tại |
| `0x2602` | setBackup | Cập nhật địa chỉ C2 dự phòng |

Trong phản hồi với ENDLESSDOORS, ZBT tuyên bố implant đó là "công cụ hỗ trợ kỹ thuật sau bán hàng". Nhận xét của VulnCheck về SPEAKINGSTONE rất thẳng: công cụ hỗ trợ khách hàng không đánh cắp thông tin đăng nhập ISP, và không hijack DNS.

* * *

## Sinkhole: 392 thiết bị và một model duy nhất

SPEAKINGSTONE có một domain C2 dự phòng hardcode: `www.findmyipaddr[.]com`. Đây **không phải cơ chế failover** — nếu `ac-link[.]com` được cấu hình nhưng không tiếp cận được, implant không chuyển sang backup, nó chỉ chờ. Thiết bị nào tìm tới backup domain nghĩa là **chưa bao giờ được cấu hình C2 chính**.

Domain được obfuscate trong binary `yunmgrd` bằng cách nối chuỗi: `"ww"+"w.f"+"indmy"+"ipadd"+"r.co"+"m"` — một nỗ lực cơ bản nhằm tránh bị tìm thấy bằng lệnh strings.

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/ecf8c2ef-75dc-4704-82c7-4756b6698b5d.png align="center")

*Chuỗi domain bị chia nhỏ trong binary (nguồn: VulnCheck).*

Tại thời điểm phân tích, `findmyipaddr[.]com` **chưa ai đăng ký**. VulnCheck đăng ký nó và dựng một server chạy bản cài đặt zbtProtocol được reverse-engineer.

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/6c8575a0-6277-40ba-ac9e-a911bd03c124.png align="center")

*Quy trình sinkhole SPEAKINGSTONE (nguồn: VulnCheck).*

Beacon bắt đầu đổ về ngay lập tức. Tính tới **21/08/2026**:

| Chỉ số | Giá trị |
| --- | --- |
| Thiết bị báo về | **392** (vẫn đang tiếp tục) |
| Ở Trung Quốc | **390 / 392** |
| Trên mạng China Mobile | **83%** |
| Phát SSID bắt đầu bằng "CMCC" | **304** |
| Là model L3\_V2\_8, firmware 3.0.0.4.528 | **363 / 392** |
| Thiết bị beacon lâu nhất | **gần hai năm liên tục** |

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/2fb50cfc-491e-4aa5-8f41-7caff9f7b351.png align="center")

*Phân bố theo nhà mạng của các thiết bị báo về sinkhole (nguồn: VulnCheck).*

VulnCheck đánh giá L3\_V2\_8 **không phải một router bán lẻ trên kệ**, mà là một thiết bị CPE của nhà mạng, triển khai trên mạng China Mobile. Cùng model, cùng firmware, cùng nhà mạng, cùng quốc gia.

Kết luận của họ: đây là công nghệ giám sát nội địa Trung Quốc, được triển khai bên trong Trung Quốc, trên mạng Trung Quốc, ở quy mô lớn — **và cùng implant đó đang chạy trên router bán cho người Mỹ qua Amazon**.

**Một lưu ý quan trọng về phạm vi con số này:** 392 thiết bị chỉ là những thiết bị tìm tới backup domain, tức những thiết bị chưa từng được cấu hình C2 chính. `ac-link[.]com` vẫn đang hoạt động. Tổng số thiết bị có SPEAKINGSTONE **chưa xác định được và gần như chắc chắn lớn hơn nhiều**.

* * *

## Chuỗi cung ứng: phần cứng đi tới đâu, firmware theo tới đó

Toàn bộ những gì mô tả ở trên được tìm thấy trên **một chiếc router 88 USD**, bán bởi một công ty nhỏ ở New York. Deep Orange không sản xuất nó — họ dán nhãn lại.

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/9537c14d-018b-4e31-95c6-a98e88d4e0fd.png align="center")

*Nhãn dưới đáy ghi WE826, khớp với FCC filing của ZBT (nguồn: VulnCheck).*

Ba bằng chứng độc lập nối thiết bị này với ZBT: nhãn dưới đáy ghi model **WE826**, khớp với một FCC filing của Shenzhen Zhibotong Electronics; hình dáng router giống hệt; và địa chỉ MAC bắt đầu bằng `78:A3:51`, dải OUI được cấp cho ZBT.

Shenzhen Zhibotong Electronics không được biết đến như một thương hiệu tiêu dùng. Chủ yếu họ sản xuất thiết bị để công ty khác bán dưới tên khác. VulnCheck truy vết qua FCC filing, hồ sơ sáng chế và trang web lưu trữ, và tìm thấy phần cứng ZBT dưới các thương hiệu tại **Mỹ, Canada, Úc, Philippines, Đức và Nga**.

Một số ví dụ tiêu biểu:

| Thương hiệu | Thị trường | Bằng chứng liên hệ ZBT |
| --- | --- | --- |
| **Deep Orange** | Mỹ (Amazon) | FCC filing WE826-T; MAC OUI `78:A3:51` |
| **WiFlyer** | Mỹ (Amazon, Newegg) | **ZBT sở hữu trademark theo hồ sơ USPTO** — đây không phải sản phẩm phái sinh từ ZBT, nó *là* ZBT |
| **WORDFI** | Philippines (Shopee) | ZBT đăng ký trademark với USPTO |
| **Cioswi** | Nga (AliExpress), Mỹ (Amazon) | Trang hỗ trợ cũ trỏ tới `sales03@zbt-china.com` |
| **MOFI4500-4GXeLTE** | Canada | FCC filing chứa schematic tên "ZBT-WE826"; MAC OUI trùng |
| **Digineo AC1200 Pro / ALLNET** | Đức | Nền tảng WG3526 và WG2626 (OpenWrt xác định) |
| **Lippert WiFi On-The-Go / Wave WiFi MBR** | Mỹ | Nền tảng WE826, dùng cho RV và tàu thuyền |
| **OneX RV WIFI Route** | Úc | Rebrand WE826 |

![](https://cdn.hashnode.com/uploads/covers/676511773cdd3c06f7b226ee/d8bc9413-0ee6-4ec0-9917-73689157d1b5.png align="center")

*Cùng một phần cứng ZBT xuất hiện dưới ba tên thương hiệu khác nhau (nguồn: VulnCheck).*

**Cần giữ một điểm quan trọng để công bằng:** VulnCheck nói rõ **không phải tất cả thiết bị này đều chứa implant**. MOFI phát triển firmware riêng, và firmware MOFI mà họ kiểm tra **không chứa implant nào**.

Phần cứng ZBT không đồng nghĩa với implant. **Firmware mới là thứ quyết định.** Nhưng vấn đề là người mua thường không có cách nào biết firmware trên thiết bị của mình đến từ đâu.

Luận điểm mà VulnCheck rút ra, và tôi cho là đúng trọng tâm: chỉ vì bạn chưa bao giờ nghe tới Shenzhen Zhibotong Electronics hay ZBT-WE826 không có nghĩa là bạn chưa từng dùng một chiếc.

* * *

## Phản hồi của ZBT, và phản bác của VulnCheck

Sau công bố ENDLESSDOORS, ZBT đăng **tuyên bố chính thức** trên website. Nội dung chính:

*   Component quản lý từ xa được nêu trong báo cáo **chỉ là công cụ hỗ trợ kỹ thuật sau bán hàng**, nhằm hỗ trợ khách hàng khắc phục sự cố và cấu hình thiết bị, **chỉ khi khách hàng yêu cầu và ủy quyền rõ ràng**.
    
*   Component này **chưa từng được sử dụng cho mục đích truy cập trái phép**.
    
*   Biện pháp đã thực hiện: **tạm dừng bán ngay lập tức các model bị ảnh hưởng**, **gỡ firmware liên quan khỏi website chính thức**, và đang phát triển bản cập nhật firmware. Phản bác của VulnCheck gồm ba luận điểm, và tôi cho là chặt chẽ:
    

**Không tìm thấy cơ chế yêu cầu hay ủy quyền.** VulnCheck nói rõ họ không tìm thấy bất kỳ cơ chế nào để khách hàng yêu cầu hoặc ủy quyền truy cập. ENDLESSDOORS được thiết kế như một implant, và một số biến thể dựa vào các nhà cung cấp dynamic DNS — hạ tầng thường gắn với mã độc hơn là với hỗ trợ khách hàng.

**Tuyên bố "chưa từng bị dùng trái phép" là vô nghĩa về mặt logic.** Không implant nào trong ba implant hỗ trợ giao tiếp an toàn. Bất kỳ ai trên đường truyền đều có thể chiếm quyền ENDLESSDOORS hoặc SPEAKINGSTONE. **ZBT không thể biết** các implant này đã từng bị dùng cho truy cập trái phép hay chưa, vì quyền truy cập vào chúng không nằm trong tầm kiểm soát của ZBT.

**Và VulnCheck đã chứng minh điều đó.** Họ đăng ký một backup domain của SPEAKINGSTONE, và hàng trăm thiết bị báo về. Với DARKLANTERN, chỉ cần tìm ra một khóa tĩnh.

* * *

## IOC

> IOC lấy từ báo cáo VulnCheck ngày 27/08/2026. Domain đã defang.

**Hash file (SHA-256)**

```plaintext
b77811db4d218c65670a6c9a5b33c30ff81c6d779e15d658643138771178a818    yunmgrd     (SPEAKINGSTONE)
7e2e036fec2fe7ab4bbd43978d9296563894c92a112f5ac2f39957f12108e245    infosrvd    (DARKLANTERN)
ae6c356f1f09260b859f84d994ef8423540a6c0bdf98510d86b85834283e4926    inetdetect  (binary khởi chạy)
```

**Domain C2**

```plaintext
www.ac-link[.]com          # C2 chính của SPEAKINGSTONE → 47.107.224[.]89 (Alibaba Cloud, Thâm Quyến)
www.findmyipaddr[.]com     # C2 dự phòng của SPEAKINGSTONE (hiện do VulnCheck sinkhole)
```

**Cổng và giao thức**

```plaintext
UDP/9992     DARKLANTERN — listener, mở sẵn từ internet theo firewall mặc định
UDP/8897     DARKLANTERN — cổng đích cho response của info probe
UDP/10000    SPEAKINGSTONE — beacon đi ra tới C2
```

**Artifact nhận diện thiết bị ZBT**

```plaintext
# MAC OUI
78:A3:51                                    Dải cấp cho Shenzhen Zhibotong Electronics
 
# Telnet banner
0;0HWelcome to MQWrt@
 
# Web interface (body)
wk-login-html
 
# SSH host key fingerprint (SHA-256)
e0ac6c083497d19e5ab3d28f9354e7d84b30793eba720c7f793aeb1ca9be9a41
 
# SSH banner đi kèm
SSH-2.0-dropbear_2014.63
 
# Salt hardcode trong DARKLANTERN
mqonu.com                                   Tham chiếu MoreQuick, OEM firmware
```

**Đường dẫn trên thiết bị**

```plaintext
/usr/bin/yunmgrd          SPEAKINGSTONE
/usr/bin/infosrvd         DARKLANTERN
/etc/exec/cmd             Điểm thực thi lệnh của cả hai implant
/etc/exec/sysinfo
/tmp/yunclient.conf       Cấu hình SPEAKINGSTONE
/tmp/info.txt             Fingerprint thiết bị
/tmp/mac.txt              Dùng cho MAC filter của DARKLANTERN
/tmp/cmd.log
/usr/sbin/dns.sh          Script kích hoạt hijack DNS
```

**Model bị ảnh hưởng — DARKLANTERN (CVE-2026-74233)**

```plaintext
ZBT     WE1326           18.1218, 19.0717, 19.1101
ZBT     WE2426-C         19.0412, 19.0626, 19.0829, 19.1101, 19.1112
ZBT     WE357            19.1101
ZBT     WE5926           18.0904, 19.0617, 19.1101
ZBT     WE5926-EC_QP     20.0516
ZBT     WE5926-WD        19.1009, 19.1101
ZBT     WE826-Q          19.1101
ZBT     WE826-T2         19.0226, 19.0617, 19.0809, 19.1101
ZBT     WE826-WD         19.0426, 19.0625, 19.0809, 19.1023, 19.1101
ZBT     WF3526-P         19.051
ZBT     WG108            19.0809, 19.1101
ZBT     WG3526           19.0809, 19.1101
—       CTN720-W1        19.0522, 19.1101
—       LF-1541          19.1101
—       MT7620N          19.0412, 19.0809, 19.1101
—       WRC1             20.0622
```

**Model bị ảnh hưởng — SPEAKINGSTONE (CVE-2026-74232)**

```plaintext
ZBT         WE826-T2       19.1101
ZBT         L3_V2_8        3.0.0.4.528      ← 363/392 thiết bị trong sinkhole
ZBT         ZBT-7628       1.0.0.2.007
ZBT         ZBT-ZBT7621    1.0.0.3.001
MoreQuick   MQAC-7620      1.0.0.2.000
MoreQuick   MQAC-7620A     1.0.0.2.000
MoreQuick   MQAP-7620      1.0.0.2.000
MoreQuick   MQAP-7620A     1.0.0.2.000
MoreQuick   MQAP-7628      1.0.0.2.000
—           AP522          1.0.0.2.014
—           AP7628         3.0.0.4.380
—           APG721B        19.0809
—           HC5661A        3.0.0.4.380
—           HK300          1.0.0.2.032
—           MAP-N10        1.0.0.2.044
```

* * *

## Detection rule

> VulnCheck công bố sẵn bộ rule dưới đây trong phụ lục báo cáo. Chúng dùng được ngay, không cần chỉnh sửa.

### Suricata

```plaintext
alert udp any any -> any 9992 ( \
    msg:"VULNCHECK Zbt/MoreQuick DARKLANTERN Wildcard-MAC Root Command Execution"; \
    dsize:>27; content:"|0c 17 1f 12 34 56 00 00 00 00 00 00|"; offset:0; depth:12; \
    pcre:"/^\x0c\x17\x1f\x12\x34\x56\x00{6}[0-9a-f]{4}.{2}[\x20-\x7e]{10}/s"; \
    xbits:set,darklantern.cmd_injected,track ip_pair,expire 120; \
    classtype:attempted-admin; sid:12800030; rev:1; \
    metadata: deployment Datacenter, impact compromised;)
 
alert udp any any -> any 9992 ( \
    msg:"VULNCHECK Zbt/MoreQuick DARKLANTERN Info Probe"; \
    dsize:19; content:"|0c 16 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 78|"; offset:0; depth:19; \
    classtype:attempted-recon; sid:12800031; rev:1; \
    metadata: deployment Datacenter;)
 
alert udp any 9992 -> any 8897 ( \
    msg:"VULNCHECK Zbt/MoreQuick DARKLANTERN Command Output Exfil"; \
    content:"|0c 17 1f|"; offset:0; depth:3; \
    xbits:isset,darklantern.cmd_injected,track ip_pair; \
    classtype:successful-admin; sid:12800032; rev:2; \
    metadata: deployment Datacenter, impact compromised;)
 
alert dns any any -> any any ( \
    msg:"VULNCHECK Zbtlink Router SPEAKINGSTONE C2 Domain Lookup (www.ac-link.com)"; \
    dns.query; content:"www.ac-link.com"; nocase; \
    pcre:"/^www\.ac-link\.com$/i"; \
    classtype:trojan-activity; sid:12800020; rev:1; \
    metadata: deployment Datacenter, impact compromised;)
 
alert dns any any -> any any ( \
    msg:"VULNCHECK Zbtlink Router SPEAKINGSTONE C2 Domain Lookup (www.findmyipaddr.com)"; \
    dns.query; content:"www.findmyipaddr.com"; nocase; \
    pcre:"/^www\.findmyipaddr\.com$/i"; \
    classtype:trojan-activity; sid:12800021; rev:1; \
    metadata: deployment Datacenter, impact compromised;)
 
alert udp $HOME_NET any -> any 10000 ( \
    msg:"VULNCHECK Zbtlink Router SPEAKINGSTONE zbtProtocol reg Beacon"; \
    dsize:>60; \
    content:"|00 00 00 00|"; offset:9; depth:4; \
    content:"|10 01|"; distance:4; within:2; \
    byte_jump:2,0,big,from_beginning,post_offset 2; \
    isdataat:!1,relative; \
    classtype:trojan-activity; sid:12800022; rev:2; \
    metadata: deployment Datacenter, impact compromised;)
 
alert udp any 10000 -> $HOME_NET any ( \
    msg:"VULNCHECK Zbtlink Router SPEAKINGSTONE zbtProtocol Command Injection"; \
    dsize:>21; \
    content:"|78 22 3b|"; fast_pattern; \
    content:"|00 00 00 00|"; offset:9; depth:4; \
    content:"|25 07|"; distance:4; within:2; \
    content:"|78 22 3b|"; distance:0; within:3; \
    byte_jump:2,0,big,from_beginning,post_offset 2; \
    isdataat:!1,relative; \
    classtype:trojan-activity; sid:12800023; rev:2; \
    metadata: deployment Datacenter, impact compromised;)
 
alert udp any 10000 -> $HOME_NET any ( \
    msg:"VULNCHECK Zbtlink Router SPEAKINGSTONE zbtProtocol Credential/Hijack Op"; \
    dsize:>18; \
    content:"|00 00 00 00|"; offset:9; depth:4; \
    pcre:"/^.{9}\x00{4}.{4}(\x25\x02|\x23\x0b)/s"; \
    byte_jump:2,0,big,from_beginning,post_offset 2; \
    isdataat:!1,relative; \
    classtype:trojan-activity; sid:12800024; rev:2; \
    metadata: deployment Datacenter, impact compromised;)
```

### YARA

```plaintext
rule Zbtlink_Router_SPEAKINGSTONE_Implant
{
  meta:
    description = "MoreQuick/Zbtlink yunmgrd cloud-C2 implant (SPEAKINGSTONE)"
    author = "vulncheck"
 
  strings:
    $proto = "zbtProtocol.c" ascii
    $run   = "zbt protocol running" ascii
    $conf  = "/tmp/yunclient.conf" ascii
    $cmcc  = "cmcc_server" ascii
    $dns   = "dnshack" ascii
    $cmd   = "/etc/exec/cmd" ascii
    $back  = "setBackServer" ascii
    $reg   = "regMsg" ascii
 
  condition:
    uint32(0) == 0x464C457F and 4 of them
}
 
rule Zbtlink_Router_DARKLANTERN_Implant
{
  meta:
    description = "MoreQuick/Zbtlink infosrvd backdoor (DARKLANTERN)"
    author = "vulncheck"
 
  strings:
    $cmd      = "/etc/exec/cmd " ascii
    $sysinfo  = "/etc/exec/sysinfo" ascii
    $cmdlog   = "/tmp/cmd.log" ascii
    $infotxt  = "/tmp/info.txt" ascii
    $local    = "startlocalserve" ascii
    $salt     = "Salt_171006_808290505" ascii
    $allmac   = "Allmac_171007_808290505" ascii
    $validpkt = "invalid request pkt" ascii
    $shell    = "nosexecShellCmd" ascii
 
  condition:
    uint32(0) == 0x464C457F and 2 of ($salt, $allmac, $local, $validpkt)
      and 3 of ($cmd, $sysinfo, $cmdlog, $infotxt, $shell)
}
```

Ngoài ra VulnCheck còn công bố một **scanner DARKLANTERN tối giản viết bằng Python** trong phụ lục báo cáo gốc — gửi info probe 19 byte và parse response để lấy model, firmware và MAC. Đây là công cụ hữu ích để kiểm tra nhanh một dải IP nội bộ; xem trực tiếp trong [bài viết của VulnCheck](https://www.vulncheck.com/blog/zbt-darklantern-speakingstone).

* * *

## Nhận định

**Đây không phải bài toán vá lỗi, mà là bài toán tin cậy chuỗi cung ứng.**

Một CVE có thể vá. Nhưng ba implant qua nhiều thế hệ firmware, trên một nhà sản xuất, với một tuyên bố chính thức mô tả chúng là công cụ hỗ trợ khách hàng — đó không còn là vấn đề kỹ thuật để xử lý bằng bản cập nhật.

**Chi tiết đắt nhất về mặt phân tích là MAC filter có bypass all-zeros hardcode.** Nếu chỉ có checksum với salt tĩnh, người ta có thể lập luận đó là thiết kế bảo mật kém. Nhưng một nhánh xử lý riêng cho giá trị MAC toàn số 0, viết sẵn trong code, cho phép bất kỳ ai gửi lệnh — đó là một quyết định, không phải một sơ suất. Việc VulnCheck yêu cầu CWE-506 (Embedded Malicious Code) cho SPEAKINGSTONE phản ánh cùng đánh giá.

**Về mặt thiết kế implant, SPEAKINGSTONE là bài học đáng ghi nhớ hơn DARKLANTERN.** DARKLANTERN là backdoor kiểu cũ: mở cổng, chờ kết nối. Nó chỉ hoạt động khi thiết bị tiếp cận được từ internet — nghĩa là đặt sau NAT hoặc firewall là vô hiệu hóa được. SPEAKINGSTONE thì không quan tâm tới điều đó. Nó kết nối ra ngoài như mọi lưu lượng bình thường, và hoạt động sau bao nhiêu lớp firewall cũng được.

Với đội phòng thủ, hệ quả là: **kiểm soát chiều vào không đủ.** Điều duy nhất bắt được SPEAKINGSTONE là giám sát chiều ra — cụ thể là truy vấn DNS tới hai domain trong danh sách IOC, và lưu lượng UDP đi ra cổng 10000 từ thiết bị mạng.

**Về sự trung thực của con số 392.** Cần đọc con số này đúng cách: nó không phải tổng số thiết bị nhiễm SPEAKINGSTONE, mà chỉ là số thiết bị **chưa từng được cấu hình C2 chính**. Đây là một tập con, và VulnCheck nói rõ tổng số thật gần như chắc chắn lớn hơn nhiều. Trong báo cáo nội bộ, nên trình bày 392 như một sàn dưới có thể chứng minh được, không phải một ước lượng.

### Liên hệ Việt Nam

**Cần ghi rõ trước:** VulnCheck nêu 22 quốc gia có instance DARKLANTERN nhưng không công bố danh sách đầy đủ; các quốc gia họ nhắc tên gồm Israel, Ukraine, Trung Quốc, Hong Kong, Thổ Nhĩ Kỳ và Đài Loan. **Việt Nam không được nêu tên trong báo cáo.**

Tuy nhiên, liên hệ với thị trường trong nước rất trực tiếp, và không phụ thuộc vào việc VN có trong danh sách hay không.

**Mô hình phân phối trùng khớp hoàn toàn.** Thị trường Việt Nam có rất nhiều router 4G/LTE giá rẻ nguồn Trung Quốc, bán qua Shopee, Lazada, TikTok Shop và các cửa hàng thiết bị mạng nhỏ. Phần lớn được bán dưới thương hiệu mà người mua chưa từng nghe tới, hoặc không có thương hiệu rõ ràng. Đây chính là mô hình white-label mà VulnCheck truy vết — và người mua gần như không có cách nào biết ai thực sự sản xuất thiết bị.

**Use case cũng trùng khớp.** VulnCheck chỉ ra sức hấp dẫn của WE826 nằm ở kết nối di động: cắm SIM là có internet ở gần như mọi nơi — đường ống dẫn dầu, biển quảng cáo ven đường, tàu hỏa, xe RV, hoặc làm đường dự phòng khi kết nối chính hỏng. Trong nước, đây đúng là các tình huống mà router 4G được dùng: xe khách và xe du lịch, camera giám sát ngoài trời, POS di động, backup WAN cho cửa hàng và chi nhánh, công trường xây dựng.

Điểm chung của tất cả các tình huống đó: **thiết bị được lắp một lần rồi không ai đụng tới nữa**. Không có ai kiểm tra firmware, không có ai xem thiết bị đang mở cổng gì.

**Một hạng mục kiểm tra làm được ngay, không cần công cụ:** đọc địa chỉ MAC trên nhãn thiết bị hoặc trong trang quản trị. Nếu bắt đầu bằng `78:A3:51`, đó là phần cứng ZBT, bất kể trên vỏ ghi thương hiệu gì. Việc này mất vài phút và không đòi hỏi năng lực kỹ thuật nào.

Cuối cùng, nếu tổ chức bạn có thiết bị như vậy làm đường dự phòng WAN, cần nhớ rằng SPEAKINGSTONE hỗ trợ **đánh cắp credential PPPoE và hijack DNS**. Một thiết bị đứng ở vị trí đó không chỉ là một endpoint bị nhiễm — nó là điểm mà toàn bộ lưu lượng của chi nhánh đi qua.

* * *

## Khuyến nghị

*   **Kiểm kê thiết bị theo MAC OUI** `78:A3:51` trên toàn bộ hạ tầng mạng, kể cả các thiết bị mang thương hiệu không liên quan tới ZBT — đây là cách nhận diện nhanh nhất và không cần công cụ.
    
*   **Chặn UDP/9992 chiều vào tại biên** và kiểm tra xem có thiết bị nào trong tổ chức đang mở cổng này ra internet hay không; đây là hành vi không bao giờ hợp lệ.
    
*   **Giám sát chiều ra:** cảnh báo trên truy vấn DNS tới `ac-link[.]com` và `findmyipaddr[.]com`, và trên lưu lượng UDP đi ra cổng 10000 từ thiết bị mạng — kiểm soát chiều vào không bắt được SPEAKINGSTONE.
    
*   **Triển khai bộ Suricata rule của VulnCheck** trên IDS/IPS ở biên và trước phân đoạn thiết bị mạng; chúng dùng được ngay và bao phủ cả hai implant.
    
*   **Đối chiếu model và phiên bản firmware với hai bảng trong mục IOC**; nếu khớp, coi thiết bị là đã bị xâm phạm và **thay thế thay vì cập nhật** — ZBT đã gỡ firmware khỏi website và bản vá vẫn đang được phát triển tại thời điểm viết bài.
    
*   **Đưa yêu cầu về nguồn gốc phần cứng vào quy trình mua sắm:** với thiết bị mạng, yêu cầu nhà cung cấp cung cấp thông tin OEM thực tế và nguồn firmware, thay vì chỉ dựa vào tên thương hiệu trên vỏ hộp.
    

* * *

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

*   VulnCheck — [Chinese Implants in the Supply Chain](https://www.vulncheck.com/blog/zbt-darklantern-speakingstone), Jacob Baines (27/08/2026) — báo cáo gốc, kèm phụ lục Suricata, YARA và scanner Python
    
*   VulnCheck — [ENDLESSDOORS Is Phoning Home. Pick up](https://www.vulncheck.com/blog/zbt-endlessdoors) — nghiên cứu về implant đầu tiên
    
*   VulnCheck Advisory — [Zbtlink MQWrt infosrvd Command Injection (CVE-2026-74233)](https://www.vulncheck.com/advisories/zbtlink-mqwrt-infosrvd-command-injection)
    
*   VulnCheck Advisory — [Zbtlink MQWrt yunmgrd Cloud C2 Implant (CVE-2026-74232)](https://www.vulncheck.com/advisories/zbtlink-mqwrt-yunmgrd-cloud-c2-implant)
    
*   Shenzhen Zbtlink Electronics — [Official Statement](https://www.zbtlink.com/pages/zbt-router-firmware-download-announcement) — tuyên bố chính thức của hãng
    
*   The Hacker News — [China-Made ZBT Routers Ship With Two Undocumented Implants](https://thehackernews.com/2026/08/china-made-zbt-routers-ship-with-two.html)
    
*   Reuters — [China's Zbtlink suspends sales of routers found to contain backdoor](https://www.reuters.com/world/asia-pacific/chinas-zbtlink-suspends-sales-routers-found-contain-backdoor-2026-08-06/)
