Antino: backdoor không cần server C2, vì Outlook và OneDrive đã đủ

Tóm tắt
Cisco Talos công bố phân tích về UAT-11587, nhóm mà họ đánh giá là China-nexus với mức high confidence, nhắm cơ quan chính phủ và tổ chức chính sách khắp châu Á. Tính đến tháng 7/2026: khoảng 350 endpoint bị xâm nhập ở 8 quốc gia, với 10 môi trường được xác nhận và 5 môi trường nghi ngờ.
Công cụ chủ lực là Antino, backdoor viết bằng Rust. Điểm đáng chú ý nhất: kênh C2 gốc của nó chạy hoàn toàn qua Microsoft 365 thông qua Microsoft Graph. Outlook làm kênh nhận lệnh, OneDrive làm kênh truyền file và heartbeat. Không có server C2 riêng, không có domain lạ, không có IP nào để đưa vào blocklist.
Hành động ưu tiên:
Kiểm tra DMARC policy của các domain tổ chức bạn sở hữu. Chiến dịch này lợi dụng chính việc các tổ chức bị giả mạo đặt
p=none.Xây dựng khả năng giám sát traffic Microsoft Graph theo tiến trình nguồn, vì chặn theo domain hoàn toàn không có tác dụng với Antino.
Nạn nhân và động cơ
Talos ghi nhận mục tiêu tại Đài Loan, Ấn Độ, Philippines, Campuchia, Pakistan, Thái Lan, Myanmar và Syria (mức moderate-to-high confidence).
Nhóm ngành bị nhắm:
Quốc phòng và an ninh quốc gia
Cơ quan hành pháp và ngoại giao
Tư pháp và thực thi pháp luật
Cơ quan lập pháp
IT của chính phủ
Viện nghiên cứu chính sách và đại học
Tổ chức xã hội dân sự và chính sách công Talos đánh giá ở mức moderate confidence rằng nhóm này hoạt động nhằm thu thập tình báo. Danh sách nạn nhân phù hợp với nhận định đó: đây là những nơi nắm thông tin về quan điểm chính sách, đàm phán và an ninh khu vực.
Mốc thời gian
| Giai đoạn | Diễn biến |
|---|---|
| 09–11/2025 | Mồi nhử chủ đề Philippines, phát tán bằng đính kèm trực tiếp |
| 01/2026 | Thêm hai chiến dịch HTA nhắm Philippines, mở rộng chủ đề chính sách, xuất hiện nhánh fake installer |
| 03 đến đầu 06/2026 | Tăng tốc, Philippines và Đài Loan trước, rồi Campuchia, Myanmar, Syria, Pakistan, Thái Lan |
| 08–09/06/2026 | Đợt lớn nhất, khoảng 57 endpoint mới liên quan Ấn Độ |
| 07/2026 | Hoạt động cuối cùng trong tập dữ liệu Talos xem xét |
Về phía công cụ, Antino có hai thế hệ: Gen1 build tháng 10/2025, Gen2 từ tháng 12/2025 đến tháng 01/2026.
Đường vào: spear-phishing ba lớp
Lớp 1 — giả mạo người gửi mà vẫn qua được bộ lọc. Email được gửi qua Migadu với envelope sender là osc-cdn[.]com, domain do kẻ tấn công kiểm soát, trong khi header From hiển thị tổ chức đáng tin. Kết quả là SPF pass cho envelope domain, nhưng DMARC fail cho domain hiển thị. Email vẫn được giao, vì policy DMARC của domain bị giả mạo là p=none.
Đây là chi tiết quan trọng nhất của toàn bộ phần phát tán, và cũng là nơi một số bản tin đưa lại chưa chính xác. Email không "vượt qua" DMARC, nó fail DMARC nhưng không bị chặn vì chính tổ chức bị giả mạo chưa đặt policy thực thi.
Lớp 2 — dựng lại widget đính kèm của Gmail. Kẻ tấn công tái tạo thẻ đính kèm quen thuộc của Gmail bằng ảnh PNG nhúng Base64 ngay trong HTML, bọc trong một liên kết. Người nhận thấy thứ trông như file đính kèm thật, nhưng thực chất đang bấm vào một link ra ngoài.
Lớp 3 — link dạng protocol-relative. Liên kết có dạng //my-<project>.pages.dev/File_download?m=<mã-mục-tiêu>, trỏ tới Cloudflare Pages. Talos lưu ý định dạng thiếu https: này có thể lọt qua các công cụ chỉ bóc tách URL dạng http hoặc https đầy đủ. Tham số ?m= cho phép theo dõi từng người nhận riêng biệt.
Mồi nhử được làm rất kỹ: agenda hội thảo về chiến tranh thông tin và một văn bản thuế sao từ phán quyết của Bộ Tài chính Đài Loan, các sự kiện Indo-Pacific của CSIS, vấn đề hàng hải Philippines, một bản tin về Venezuela và Ukraine viết lại gần nguyên văn từ AP, cùng nhiều chủ đề liên quan chính phủ Ấn Độ.
Chuỗi lây nhiễm
Talos mô tả 5 tầng; rút gọn thành ba bước chính:
Stager script. Nạn nhân mở file HTA hoặc WSF, chạy bằng
mshta.exehoặcWScript. Script ẩn cửa sổ, gửi một request theo dõi, rồi tải tầng tiếp theo từ Cloudflare R2 hoặc CloudFront. Tầng này tải về ba tài nguyên đã mã hóa, giải mã bằng Base64 biến thể rồi RC4, và chạy orchestrator ngay trong bộ nhớ.Chuỗi deserialization .NET. Dùng gadget chain (
AxHost+StatevàActivitySurrogateSelector) để nạpTestAssembly.dllbên trong tiến trìnhmshta.exe. Component này tải về một PDF làm mồi, mở nó cho nạn nhân thấy, rồi tải bộ ba file để sideload.DLL sideloading và khởi động Antino.
GatherOsState.exe, một binary ADK hợp lệ có chữ ký Microsoft, nạpslc.dllđộc hại và gọi exportSLOpenđể khởi động Antino. Bộ cài đặt nằm dưới%LOCALAPPDATA%\Windows GatherOSStateKit\. Điểm đáng chú ý về mặt phòng thủ: toàn bộ chuỗi chạy trong tiến trình của các binary hợp lệ, và chữ ký số của Microsoft có mặt ở bước cuối.
Antino: khả năng và cấu hình
Antino viết bằng Rust, có cả bản 32 và 64-bit, được nhận diện qua manifest AntinoApp cùng các đường dẫn chứa "antino" trong PDB và tham chiếu mã nguồn Rust.
| Nhóm lệnh | Lệnh |
|---|---|
| Trinh sát host | system_info, list_files |
| Thực thi | cmd, powershell, execute_program, load_shellcode |
| Truyền file | upload_file (OneDrive của kẻ tấn công về máy nạn nhân), download_file (từ nạn nhân lên OneDrive của kẻ tấn công) |
| Duy trì | add_to_run (tạo giá trị Run trong HKCU) |
load_shellcode chạy trong bộ nhớ và có sleep mask: vùng nhớ chứa payload được mã hóa trong lúc implant ngủ, khiến việc quét bộ nhớ khó phát hiện hơn.
Cấu hình được lưu trong một PE section riêng tên .cfg, với header JSON bị XOR bằng hai byte luân phiên 0xAB 0xCD, chứa các thiết lập run và launch_mode.
Khác biệt giữa hai thế hệ:
| Gen1 (10/2025) | Gen2 (12/2025–01/2026) | |
|---|---|---|
| Session ID | Dẫn xuất từ thông tin host (XOR rồi Base64) | UUIDv4 sinh ngẫu nhiên |
| Đăng ký và heartbeat | Qua email | JSON trên OneDrive |
| Xác thực | — | OAuth client-credentials tới Microsoft Graph qua một app Entra ID |
| Manifest | — | AntinoApp |
C2 chỉ qua Microsoft 365
Đây là phần làm nên đặc trưng của Antino. Theo Talos, kênh C2 gốc "hoạt động hoàn toàn qua Microsoft 365, sử dụng Microsoft Graph".
Outlook làm kênh lệnh. Implant poll hộp thư của kẻ tấn công mỗi 10 giây:
Subject lệnh gửi đi: command_req_[session_id]
Subject phản hồi: command_res_[session_id]
Body: JSON gồm command_type, command_data, request_id
OneDrive làm kênh file và heartbeat:
/antino/heartbeats/{session_id}.json # heartbeat lúc khởi động và mỗi khoảng một phút
/antino_downloads/ # dữ liệu lấy từ nạn nhân
/antino_uploads/ # công cụ kẻ tấn công đưa vào máy nạn nhân
Domain duy nhất quan sát được là graph.microsoft.com và login.microsoftonline.com. Với bất kỳ tổ chức nào dùng Microsoft 365, hai domain này không thể chặn và cũng không gây nghi ngờ trong log proxy.
Lạm dụng Windows Scripted Diagnostics
Antino dùng framework Scripted Diagnostics của Windows (sdiageng.dll, sdiagnhost.exe và gói PCW) để proxy việc thực thi PowerShell cùng thao tác sửa Run key. Nghĩa là PowerShell không được sinh ra từ tiến trình của malware mà từ một tiến trình hệ thống hợp lệ.
Talos nói kỹ thuật này "có thể làm phức tạp việc quy kết theo hành vi", nhưng cũng nhấn mạnh telemetry về PowerShell, tạo file và registry vẫn còn. Nói cách khác, kỹ thuật này phá chuỗi cha-con mà nhiều rule dựa vào, nhưng không làm hành động biến mất khỏi log.
Nhận định
C2 qua Microsoft 365 làm vô hiệu hóa cả một lớp phòng thủ. Chặn theo domain, chặn theo reputation, TI feed dạng IP và domain: tất cả đều không có gì để bám vào. Phát hiện phải chuyển sang hai hướng khác. Thứ nhất là tín hiệu danh tính: app Entra ID nào đang xác thực bằng client credentials, với quyền gì, và ai đã cấp consent. Thứ hai là tương quan tiến trình và traffic: tiến trình nào trên endpoint đang gọi graph.microsoft.com, và nó có lý do gì để làm vậy.
Gen1 lên Gen2 cho thấy nhóm học từ chính dấu vết của mình. Việc đổi session ID từ dẫn xuất theo thông tin host sang UUIDv4 ngẫu nhiên là thay đổi có mục đích rõ ràng: session ID kiểu cũ cho phép bên phòng thủ liên kết các nạn nhân với nhau và suy ra thông tin về host. Nhóm này theo dõi cách mình bị phát hiện và sửa.
Chỉ dấu quy kết tốt, nhưng cũng là dấu hiệu vệ sinh build lỏng. Đường dẫn Cargo trỏ tới rsproxy.cn, mirror Rust dùng trong nội địa Trung Quốc, và đường dẫn build D:\a\antino\antino\... theo layout của GitHub Actions. Những thứ này không nên còn trong bản release. Chúng vừa giúp Talos quy kết, vừa tạo ra signature rất bền cho bên phòng thủ. Talos cũng nêu rõ một mình UTC+8 không phải chỉ dấu phân biệt được, nên quy kết dựa trên tổ hợp bằng chứng.
Liên hệ với nhóm khác được giữ thận trọng, và nên đọc đúng mức đó. Talos thấy trùng lặp với hoạt động gián điệp liên quan Antino của Jewelbug (Symantec), nhưng không xác minh được liên hệ với phần gian lận tiền mã hóa của Jewelbug, nên tiếp tục theo dõi UAT-11587 riêng. Liên hệ với UNC6384 chỉ dựa trên một CloudFront distribution dùng chung và Talos xếp ở mức low confidence. Khi tổng hợp báo cáo, không nên nâng cấp những liên hệ này thành khẳng định.
Vấn đề DMARC p=none là lỗ hổng của bên bị giả mạo, không phải của bên nhận. Chiến dịch này giả mạo các tổ chức đáng tin cậy và email vẫn tới đích vì chính những tổ chức đó chưa đặt policy thực thi. Đây là loại rủi ro mà tổ chức tự tạo ra cho đối tác và người dân của mình, không phải cho hệ thống của mình.
Liên hệ Việt Nam
Việt Nam không có trong danh sách nạn nhân mà Talos công bố. Nhưng đọc kỹ danh sách đó thì bối cảnh rất gần:
Các nước láng giềng và cùng khu vực đều bị nhắm: Philippines, Campuchia, Thái Lan, Myanmar. Mồi nhử về vấn đề hàng hải và các sự kiện chính sách Indo-Pacific là chủ đề mà cơ quan Việt Nam cũng theo dõi sát.
Nhóm ngành bị nhắm trùng với bề mặt của Việt Nam: cơ quan ngoại giao, lập pháp, viện nghiên cứu chính sách và đại học. Mồi nhử dạng "agenda hội thảo" hay "tài liệu nội bộ" rất phù hợp với cách các tổ chức này nhận email từ bên ngoài.
DMARC
p=nonecòn rất phổ biến ở domain cơ quan và doanh nghiệp Việt Nam. Điều này nghĩa là domain của bạn có thể bị dùng để giả mạo trong một chiến dịch nhắm đối tác, mà hệ thống của bạn không thấy gì cả.Microsoft 365 được dùng rộng rãi, nên traffic tới
graph.microsoft.comlà bình thường ở mọi tổ chức. Không có baseline theo tiến trình nguồn thì kênh C2 này gần như vô hình.mshta.exethường không bị chặn. Nhiều môi trường vẫn cho phép chạy HTA vì lo ảnh hưởng ứng dụng nội bộ cũ. Đây là bước đầu tiên của toàn bộ chuỗi.
Khuyến nghị
Siết DMARC lên
p=quarantinerồip=rejectcho mọi domain tổ chức sở hữu, kể cả domain không dùng để gửi thư. Đây là biện pháp bảo vệ đối tác và người dân khỏi bị giả mạo bằng tên tổ chức bạn.Giám sát Microsoft Graph theo tiến trình nguồn: cảnh báo khi một tiến trình không phải client Office hoặc trình duyệt tạo kết nối tới
graph.microsoft.comhoặclogin.microsoftonline.com. Đồng thời rà soát các app Entra ID xác thực bằng client credentials và quyền đã được cấp cho chúng.Chặn hoặc giới hạn
mshta.exevà Windows Script Host qua AppLocker, WDAC hoặc ASR rule. Nếu không thể chặn hoàn toàn, tối thiểu phải cảnh báo khi chúng được chạy từ thư mục người dùng hoặc tạo kết nối mạng.Rule phát hiện sideloading:
GatherOsState.exenạpslc.dlltừ thư mục người dùng ghi được, và nói chung là mọi binary có chữ ký hợp lệ nạp DLL từ ngoài đường dẫn cài đặt chuẩn.Phát hiện lạm dụng Scripted Diagnostics:
sdiagnhost.exechạy với tham số-Embedding, và PowerShell được sinh ra từsdiagnhost.exe. Talos nêu rõ telemetry này vẫn còn dù chuỗi cha-con đã bị phá.Xử lý email kỹ hơn ở tầng gateway: bóc tách cả link dạng protocol-relative (
//domain/...), và coi email fail DMARC là tín hiệu cần xử lý kể cả khi policy của domain gửi làp=none.
IOC
Talos công bố khoảng 80 hash. Dưới đây là phần chọn lọc có giá trị vận hành cao nhất. Bộ đầy đủ nằm trong repository IOC của Cisco Talos.
Domain
osc-cdn[.]com # envelope sender giả mạo
microsoft-flash[.]com # fake installer
wps-cn[.]com # fake installer
d2nq35tel3ucuo[.]cloudfront[.]net # staging
d32tpl7xt7175h[.]cloudfront[.]net # trùng với UNC6384 (low confidence)
pub-abfa7742e315485a98a5fafd6dbfb68e[.]r2[.]dev # staging
pub-0173d1566dcd4fd49fa25f11f14bfe4c[.]r2[.]dev # staging
oisadjfoinsiduhfnoisdnfosdnoifnsoid[.]pages[.]dev # tracking
Các project Cloudflare Pages dùng để phát tán, đều dưới .pages[.]dev:
my-3lyt6wcp my-qc39r814 my-662ylt3w my-6g16qsfe my-goq6xmbm
my-h3qli6kq my-sv7c1fzs my-u0up9qri my-vtsdod2n my-wgoxp32b
Địa chỉ IP
103[.]27[.]110[.]220 # IP từng phục vụ payload Antino trên wps-cn[.]com
URL tiêu biểu
hxxps://microsoft-flash[.]com/download/flashcenter_pp_ax_install_en.exe
hxxps://www[.]wps-cn[.]com/downloads/flashcenter_pp_ax_install_en.exe
hxxps://my-662ylt3w[.]pages[.]dev/Institutional_Disciplinary_Action_Report_May_2026.hta
hxxps://my-goq6xmbm[.]pages[.]dev/Tehran_Bilateral_Summit_Proceedings_May2026.hta
hxxps://my-wgoxp32b[.]pages[.]dev/Internal_Review_Dossier_0520.hta
Hash tiêu biểu (SHA-256)
e809da86bd81463347fa7f922d3e088755a94a331889d32acb55aa8f57778a34 # HTA stager
e6ff096a0562c0042b09d250bd60272ffcd8d72bd95c563842acf765a8dc8bcf # HTA stager
4d0fdce4c098635fe9b296c3a82c74645f9885eb5e383aa44a0fe7e50da3ca3f # HTA stager
d753a615aedf8e58ffc75b2b7ebd320c0cbe6bcb5cbb885db749a2a85c55d3bf # TestAssembly.dll
1fadc90b61ce536abda78eb387a7f3d745f00c16775d3f762845ccc0fde567da # Antino Gen1 slc.dll
09ef7c736bccfafefc44d9910d499173b88063b73b221fc0dc9e9105107e5cff # Antino Gen2 slc.dll
0c39264337a1186b2e765e24073399cbdcba118306614eb411e315887af578bd # Gen2 fake installer
Host-based
%LOCALAPPDATA%\Windows GatherOSStateKit\ # thư mục cài đặt
C:\Windows\Temp\SDIAG_<GUID> # dấu vết Scripted Diagnostics
GatherOsState.exe # binary ADK hợp lệ bị lạm dụng
slc.dll # Antino
OsGather.dat # PE mồi dạng calculator
HKCU Run # giá trị do add_to_run tạo
Payload sau khi tải về được đổi sang các đuôi lạ: .luy, .pzs, .syk, .lzj, .iwq, .ael, .thl, .czh, .mxb, .mtm, .fsc, .pgy.
Marker dùng cho hunting
AssemblyAttribute GUID: b2b3adb0-1669-4b94-86cb-6dd682ddbea3 # trong build TestAssembly.dll
Đường dẫn build: D:\a\antino\antino\... # layout GitHub Actions
Manifest: AntinoApp
PE section cấu hình: .cfg (header JSON XOR 0xAB 0xCD)
Coverage sẵn có: signature ClamAV (Win.Trojan.UAT-11587-10060365-1 tới -10060384-1, cùng các biến thể HTML và text), và rule Snort 2/3 1:66880, 1:66881, 1:66882.
Tài liệu tham khảo
Cisco Talos (Ashley Shen) — China-nexus UAT-11587 targets government and policy organizations across Asia with Antino backdoor (30/09/2026): https://blog.talosintelligence.com/china-nexus-uat-11587-targets-government-and-policy-organizations-across-asia-with-antino-backdoor/
Cisco Talos — IOC repository: https://github.com/Cisco-Talos/IOCs/blob/main/2026/09/uat-11587-targets-gov.txt
The Hacker News (Ravie Lakshmanan) — Antino Backdoor Uses Outlook and OneDrive for C2 in China-Nexus Espionage Campaign (02/10/2026): https://thehackernews.com/2026/10/antino-backdoor-uses-outlook-and.html
Symantec và Carbon Black — nghiên cứu về Jewelbug (08/2026)
Arctic Wolf — nghiên cứu về UNC6384





