GopherWhisper: Nhóm APT Trung Quốc Khai Thác Slack, Discord và Outlook Làm Kênh C2

Tóm Tắt (Executive Summary)
Tháng 1/2025, ESET Research phát hiện một nhóm APT chưa từng được ghi nhận trước đây, mang tên GopherWhisper, có liên hệ với Trung Quốc, đang nhắm vào các tổ chức chính phủ của Mông Cổ. Điểm đặc trưng của nhóm này là toàn bộ hạ tầng C2 (command-and-control) được xây dựng trên các dịch vụ SaaS hợp pháp — Slack, Discord, Microsoft 365 Outlook, và file.io — giúp lưu lượng độc hại hòa lẫn vào traffic thông thường của doanh nghiệp.
Bộ công cụ của GopherWhisper gồm 7 thành phần, phần lớn viết bằng Go: 4 backdoor (LaxGopher, RatGopher, BoxOfFriends, SSLORDoor), 1 injector (JabGopher), 1 công cụ exfiltration (CompactGopher), và 1 DLL loader (FriendDelivery). ESET xác nhận ít nhất 12 hệ thống trong một cơ quan chính phủ Mông Cổ bị xâm phạm, và phân tích C2 traffic cho thấy còn nhiều nạn nhân khác chưa được xác định địa lý.
Hành động ưu tiên: Triển khai rule phát hiện kết nối Slack/Discord/Outlook API bất thường từ endpoint và kiểm tra tiến trình svchost.exe có DLL injection không rõ nguồn gốc.
1. Bối Cảnh và Attribution
GopherWhisper được ESET phát hiện vào tháng 1/2025 sau khi tìm thấy backdoor LaxGopher trên hệ thống của một cơ quan chính phủ Mông Cổ. Nhóm này được đánh giá là đã hoạt động ít nhất từ tháng 11/2023, dù chỉ mới được công bố vào tháng 4/2026.
Cơ sở attribution về Trung Quốc:
Bằng chứng liên kết nhóm với Trung Quốc đến từ phân tích metadata C2 — không phải suy đoán:
- Múi giờ hoạt động: Phần lớn tin nhắn C2 qua Slack và Discord được gửi trong khung giờ 8:00–17:00 UTC+8 (China Standard Time), tương ứng giờ làm việc hành chính tại Trung Quốc.
- Locale metadata: Cấu hình người dùng trong Slack workspace của attacker có locale được set là
zh-CN. - Môi trường operator: Phân tích máy của operator (qua enumeration kết quả gửi về Discord) cho thấy một máy ảo VMware, được boot và cài đặt tại thời điểm khớp với UTC+8.
- Bộ công cụ: Không có sự trùng lặp code hay TTP với bất kỳ nhóm APT đã biết nào, dẫn đến quyết định tạo attribution mới. Mông Cổ là mục tiêu ít phổ biến hơn so với Đông Nam Á hay Đài Loan trong các chiến dịch APT Trung Quốc, nhưng vị trí địa chính trị của nước này — nằm giữa Trung Quốc và Nga — tạo ra giá trị tình báo rõ ràng cho các đơn vị espionage nhà nước.
2. Bộ Công Cụ — Phân Tích Chi Tiết
GopherWhisper triển khai chiến lược redundancy qua đa dạng C2 — mỗi backdoor dùng một kênh SaaS khác nhau. Đây không phải thiết kế ngẫu nhiên: nếu một kênh bị block, attacker vẫn duy trì được access qua kênh còn lại.
Hình 1: Tổng quan bộ công cụ GopherWhisper (Nguồn: ESET Research)
2.1. JabGopher — Injector
JabGopher là điểm khởi đầu của chuỗi execution. Nó tạo một tiến trình svchost.exe mới và inject payload LaxGopher vào vùng nhớ của tiến trình đó. Kỹ thuật process injection vào svchost.exe là một trong những phương pháp evasion kinh điển nhất — tiến trình này luôn chạy trên mọi hệ thống Windows và ít bị kiểm tra hơn so với tiến trình người dùng thông thường.
LaxGopher được ngụy trang dưới tên whisper.dll — đây cũng là nguồn gốc phần tên "Whisper" trong GopherWhisper.
2.2. LaxGopher — Backdoor qua Slack
LaxGopher là backdoor Go-based, giao tiếp với một Slack workspace riêng tư của attacker. Quy trình hoạt động:
- Kết nối Slack API với token được hardcode trong binary
- Poll kênh Slack để nhận lệnh từ operator
- Thực thi lệnh qua
cmd.exe - Post kết quả trả về cùng Slack channel
- Download payload bổ sung theo lệnh từ operator Các lệnh qua LaxGopher tập trung vào disk enumeration và file enumeration — giai đoạn trinh sát sau khi đã có foothold.
2.3. CompactGopher — Công Cụ Exfiltration
CompactGopher là payload được LaxGopher deploy, chuyên thực hiện exfiltration:
- Filter file theo extension:
.doc,.docx,.jpg,.xls,.xlsx,.txt,.pdf,.ppt,.pptx - Nén file vào ZIP archive
- Mã hóa archive bằng AES-CFB-128
- Upload tự động lên file.io — một dịch vụ file sharing công khai hợp pháp Việc sử dụng file.io đảm bảo traffic exfiltration không bị phát hiện bởi các rule chặn C2 domain đơn giản — file.io là dịch vụ hợp pháp, thường không nằm trong blocklist.
2.4. RatGopher — Backdoor qua Discord
RatGopher là phiên bản Discord của LaxGopher:
- Kết nối Discord server riêng tư qua API token được hardcode
- Nhận lệnh từ channel Discord, thực thi, trả kết quả về channel
- Upload/download file từ file.io Phân tích channel Discord của RatGopher tiết lộ cả Go source code — có thể là bản early iteration của backdoor mà attacker dùng Discord như môi trường test/dev.
2.5. SSLORDoor — Backdoor C++ với Raw Socket
Khác với 3 backdoor Go còn lại, SSLORDoor được viết bằng C++ và không dựa vào SaaS platform. Nó sử dụng OpenSSL BIO để giao tiếp qua raw socket trên port 443 — ẩn mình trong HTTPS traffic thông thường mà không thực sự là HTTPS.
Chức năng: enumerate drive, đọc/ghi/xóa file, thực thi lệnh qua C2.
2.6. FriendDelivery + BoxOfFriends — C2 qua Email Drafts
Đây là cặp công cụ tinh vi nhất của GopherWhisper. FriendDelivery là DLL loader inject BoxOfFriends vào memory. BoxOfFriends giao tiếp C2 theo cơ chế draft email:
- Dùng Microsoft Graph API (Outlook mail REST API) với credentials được hardcode
- Không gửi email thực sự — chỉ tạo và chỉnh sửa email nháp trong hộp thư
- Operator đọc draft để lấy kết quả, viết draft mới để gửi lệnh Kỹ thuật "dead drop" qua email draft đã được sử dụng bởi nhiều nhóm APT trước đây (điển hình là TURLA/Snake với Gmail drafts). GopherWhisper áp dụng tương tự cho Outlook — phù hợp với môi trường doanh nghiệp Microsoft 365 phổ biến tại các cơ quan chính phủ.
Account Outlook được xác nhận: barrantaya.1010@outlook[.]com, được tạo ngày 11/07/2024 — đúng 11 ngày trước khi FriendDelivery DLL được compile (22/07/2024).
3. Phân Tích C2 Traffic — Cú Lỗi Opsec Của Attacker
Đây là phần đáng chú ý nhất về mặt threat intelligence. ESET đã extract được API token của các Slack workspace và Discord server của attacker từ binary bị analyze. Điều này cho phép đọc toàn bộ lịch sử C2 messages.
Lý do attacker để lộ: Nhóm dùng chính các Slack/Discord server đã dùng để test backdoor làm C2 trong chiến dịch thật, và không xóa log. Đây là lỗi opsec nghiêm trọng — lịch sử test và production C2 nằm trên cùng một server.
Kết quả từ phân tích traffic:
- Hàng nghìn tin nhắn Slack và Discord được extract
- Xác nhận múi giờ hoạt động UTC+8
- Tìm thấy link tới các GitHub repository mà attacker dùng làm tài nguyên học/tham khảo trong quá trình phát triển
Hình 2: Phân phối message Slack theo giờ — rõ ràng pattern giờ làm việc UTC+8 (Nguồn: ESET Research)
Hình 3: Tương tự với Discord — hoạt động trong khung 8–17h UTC+8 (Nguồn: ESET Research)
Các GitHub repository được tìm thấy trong Slack messages:
| Repository | Mô Tả |
|---|---|
github.com/kardianos/service |
Quản lý service daemon cho Go trên mọi OS |
github.com/NHAS/stab |
Local và remote process injection cho Go |
github.com/kirinlabs/utils |
Encryption và compression utilities cho Go |
github.com/wumansgy/goEncrypt |
Các phương thức encryption trong Go |
Danh sách này phản ánh rõ định hướng phát triển: attacker đang xây dựng khả năng injection, persistence, và encryption — đặt nền móng cho các phiên bản công cụ tinh vi hơn.
4. Kill Chain và MITRE ATT&CK Mapping
Kill Chain
[Giai đoạn] [Kỹ thuật] [Công cụ]
─────────────────────────────────────────────────────────────────────
Initial Access Chưa xác định (vector không rõ) —
Execution DLL Side-Loading (JabGopher) JabGopher → whisper.dll
Persistence [NEEDS VERIFICATION: chưa xác nhận —
registry persistence cụ thể]
Defense Evasion Process Injection vào svchost.exe JabGopher
SaaS C2 (traffic hòa vào biz flow) LaxGopher/RatGopher/BoxOfFriends
C2 Slack API (private workspace) LaxGopher
Discord API (private server) RatGopher
Outlook Draft via Graph API BoxOfFriends
Raw Socket port 443 (OpenSSL BIO) SSLORDoor
Collection File filter by extension CompactGopher
AES-CFB-128 encryption CompactGopher
Exfiltration Upload to file.io CompactGopher
MITRE ATT&CK Mapping
| Technique ID | Tên | Công Cụ Liên Quan |
|---|---|---|
| T1055 | Process Injection | JabGopher |
| T1574.002 | DLL Side-Loading | JabGopher (whisper.dll) |
| T1071.001 | Application Layer Protocol: Web Protocols | LaxGopher, RatGopher, BoxOfFriends |
| T1102 | Web Service (Legitimate External Services) | Slack, Discord, Outlook, file.io |
| T1567.002 | Exfiltration to Cloud Storage | CompactGopher → file.io |
| T1560.001 | Archive Collected Data: Archive via Utility | CompactGopher (ZIP + AES) |
| T1027 | Obfuscated Files or Information | CompactGopher (AES-CFB-128) |
| T1105 | Ingress Tool Transfer | LaxGopher (download payload) |
| T1087 | Account Discovery | LaxGopher/RatGopher (enumeration) |
| T1078 | Valid Accounts | BoxOfFriends (Outlook account barrantaya.1010) |
5. Indicators of Compromise (IOC)
Lưu ý: IOC đầy đủ (hash, IP, domain) được công bố trong white paper của ESET và GitHub repository. Danh sách sau là các indicator network/host đã được xác nhận công khai.
Network Indicators
# Slack API endpoint (C2 qua LaxGopher)
api.slack.com
# Discord API endpoint (C2 qua RatGopher)
discord.com/api/
# Microsoft Graph API (C2 qua BoxOfFriends)
graph.microsoft.com
# File exfiltration
file.io
# Outlook account được attacker sử dụng
barrantaya.1010@outlook[.]com
Host-Based Indicators
# DLL side-load filename
whisper.dll
# Process injection target
svchost.exe (new instance spawned by malicious process)
# File types targeted bởi CompactGopher
*.doc, *.docx, *.jpg, *.xls, *.xlsx, *.txt, *.pdf, *.ppt, *.pptx
Hash và Binary IOC
# Tham khảo đầy đủ tại:
# https://github.com/eset/malware-ioc/tree/master/gopherwhisper
# White paper: https://web-assets.esetstatic.com/wls/en/papers/white-papers/gopherwhisper-burrow-full-malware.pdf
6. Detection Rules
KQL — Microsoft Sentinel (Phát hiện kết nối SaaS API bất thường từ svchost)
// Phát hiện svchost.exe kết nối tới Slack/Discord/Graph API
DeviceNetworkEvents
| where InitiatingProcessFileName == "svchost.exe"
| where RemoteUrl has_any (
"slack.com/api",
"discord.com/api",
"graph.microsoft.com",
"file.io"
)
| where InitiatingProcessParentFileName !in ("services.exe", "wininit.exe")
| project Timestamp, DeviceName, RemoteUrl, RemoteIP,
InitiatingProcessFileName, InitiatingProcessParentFileName,
InitiatingProcessCommandLine
| order by Timestamp desc
KQL — DLL Side-Loading với tên đáng ngờ
// Phát hiện load whisper.dll hoặc DLL không rõ nguồn gốc vào svchost
DeviceImageLoadEvents
| where FileName =~ "whisper.dll"
or (InitiatingProcessFileName == "svchost.exe"
and FolderPath !startswith "C:\\Windows\\System32"
and FolderPath !startswith "C:\\Windows\\SysWOW64")
| project Timestamp, DeviceName, FileName, FolderPath,
SHA256, InitiatingProcessFileName
Sigma Rule — Process Injection vào svchost
title: Suspicious svchost.exe Spawned with Non-Standard Parent
id: gw-001-svchost-injection
status: experimental
description: Phát hiện svchost.exe được tạo bởi process không hợp lệ (kỹ thuật JabGopher)
author: SOC Team
date: 2026-05-04
references:
- https://www.welivesecurity.com/en/eset-research/gopherwhisper-burrow-full-malware/
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\svchost.exe'
filter_legitimate:
ParentImage|endswith:
- '\services.exe'
- '\wininit.exe'
- '\MsMpEng.exe'
condition: selection and not filter_legitimate
falsepositives:
- Một số software hợp pháp có thể spawn svchost trực tiếp (verify thủ công)
level: high
tags:
- attack.defense_evasion
- attack.t1055
- attack.t1574.002
Sigma Rule — Kết Nối C2 qua SaaS từ Process Không Thường
title: Suspicious SaaS API Connections from Unusual Processes
id: gw-002-saas-c2
status: experimental
description: Phát hiện kết nối tới Slack/Discord/Graph API từ process không phải browser/client thông thường
author: SOC Team
date: 2026-05-04
references:
- https://www.welivesecurity.com/en/eset-research/gopherwhisper-burrow-full-malware/
logsource:
category: network_connection
product: windows
detection:
selection:
DestinationHostname|contains:
- 'slack.com'
- 'discord.com'
- 'graph.microsoft.com'
- 'file.io'
filter_legitimate_processes:
Image|contains:
- '\Slack\app-'
- '\Discord\app-'
- '\Microsoft\Teams'
- '\msedge.exe'
- '\chrome.exe'
- '\firefox.exe'
- '\outlook.exe'
condition: selection and not filter_legitimate_processes
falsepositives:
- Ứng dụng enterprise sử dụng Slack/Discord API hợp lệ — cần whitelist
level: medium
tags:
- attack.command_and_control
- attack.t1102
- attack.t1071.001
7. Nhận Định Chuyên Gia
Chiến lược C2 đa dạng — ưu điểm và giới hạn
GopherWhisper đặt cược vào một giả thuyết đúng: hầu hết firewall enterprise không inspect nội dung HTTPS tới các SaaS tier-1 như Slack, Discord, hay Microsoft Graph. Traffic tới api.slack.com hay graph.microsoft.com trông hoàn toàn bình thường — không khác gì nhân viên dùng Slack chat hoặc Teams check email.
Tuy nhiên, chiến lược này có điểm yếu rõ ràng: behavior của process gọi API. Một svchost.exe kết nối tới api.slack.com — mà không phải từ Slack client chính thức — là một anomaly rõ ràng nếu SOC có coverage đủ tốt trên network layer. Vấn đề là phần lớn tổ chức chưa triển khai correlation giữa process identity và network destination.
Từ kinh nghiệm SOC, đây là gap thường gặp: rule SIEM phát hiện port/IP C2 truyền thống nhưng thiếu rule phát hiện "legitimate domain, illegitimate process." GopherWhisper khai thác đúng khoảng trống này.
So sánh với các nhóm APT Trung Quốc đã biết
Kỹ thuật SaaS abuse không phải mới — Evasive Panda đã dùng cloud services cho C2 trong Operation CloudScout (2024), và nhiều nhóm APT (kể cả Nga) đã dùng email draft làm dead drop từ lâu. Điểm khác biệt của GopherWhisper là độ phong phú của bộ công cụ cho một nhóm mới: 7 tools với 3 kênh C2 độc lập, viết bằng Go — ngôn ngữ đang trở thành lựa chọn ưu tiên cho malware development vì cross-platform, binary tự chứa, và khó reverse hơn so với C/C++ truyền thống.
Mức độ đe dọa với khu vực Đông Nam Á
GopherWhisper hiện chưa có báo cáo nhắm vào Đông Nam Á. Nhưng pattern của nhiều nhóm APT Trung Quốc là bắt đầu từ một khu vực địa lý cụ thể trước khi mở rộng. Các tổ chức chính phủ, cơ sở hạ tầng năng lượng, và ngành telecom tại Đông Nam Á — bao gồm Việt Nam — vẫn là target có giá trị cao với espionage group nhà nước Trung Quốc.
Điểm đáng lo ngại hơn là "dozens of other victims" mà ESET đề cập từ phân tích C2 traffic — nhưng không có thông tin về địa lý. Những nạn nhân đó có thể nằm ở bất kỳ đâu.
8. Khuyến Nghị
Immediate (0–24h)
- Block/alert kết nối từ
svchost.exetớiapi.slack.com,discord.com/api,graph.microsoft.comkhi process parent không phảiservices.exehoặcwininit.exe. - Hunt toàn bộ
whisper.dlltrên hệ thống:Get-ChildItem -Path C:\ -Filter "whisper.dll" -Recurse -ErrorAction SilentlyContinue - Thêm
barrantaya.1010@outlook[.]comvà domainfile.iovào watchlist (với context — file.io là dịch vụ hợp pháp, cần xem xét kỹ trước khi block toàn bộ).
Short-term (1–7 ngày)
- Deploy Sigma rules
gw-001vàgw-002vào SIEM. - Audit các ứng dụng đang gọi Microsoft Graph API trong môi trường — đảm bảo chỉ có ứng dụng đã đăng ký hợp lệ.
- Kiểm tra log Azure AD/Entra ID để phát hiện OAuth token grant bất thường cho Microsoft Graph scopes.
- Download và ingest IOC đầy đủ từ ESET GitHub:
https://github.com/eset/malware-ioc/tree/master/gopherwhisper
Long-term
- Xem xét triển khai SSL inspection cho SaaS traffic từ endpoint — cần cân nhắc privacy policy và hiệu năng.
- Tăng cường process-to-network correlation trong detection pipeline: không chỉ inspect destination, mà cần identify process nào đang gọi.
- Xây dựng baseline traffic profile cho các SaaS platform phổ biến để phát hiện deviation hiệu quả hơn.
Tài Liệu Tham Khảo
- ESET Research — "GopherWhisper: A burrow full of malware" (23/04/2026) — https://www.welivesecurity.com/en/eset-research/gopherwhisper-burrow-full-malware/
- BleepingComputer — "New GopherWhisper APT group abuses Outlook, Slack, Discord for comms" — https://www.bleepingcomputer.com/news/security/new-gopherwhisper-apt-group-abuses-outlook-slack-discord-for-comms/
- The Hacker News — "China-Linked GopherWhisper Infects 12 Mongolian Government Systems" — https://thehackernews.com/2026/04/china-linked-gopherwhisper-infects-12.html
- ESET White Paper — https://web-assets.esetstatic.com/wls/en/papers/white-papers/gopherwhisper-burrow-full-malware.pdf
- ESET IOC Repository — https://github.com/eset/malware-ioc/tree/master/gopherwhisper





