GopherWhisper: China-Aligned APT Weaponizes Slack, Discord, and Outlook as C2 Infrastructure

Search for a command to run...

No comments yet. Be the first to comment.
Chuyện Gì Đang Xảy Ra? Hãy tưởng tượng thế này: bạn đang ngồi làm việc trên máy tính, soạn email, lướt web, mở tài khoản ngân hàng kiểm tra số dư. Mọi thứ đều bình thường. Không có cửa sổ lạ nào bật l

What's Going On? Imagine this: you're sitting at your computer, composing emails, surfing the web, opening a bank account to check the balance. Everything is normal. No strange windows pop up. There a

Tổng Quan SourTrade là chiến dịch malvertising quy mô lớn đang hoạt động từ cuối 2024, nhắm vào nhà đầu tư crypto và trader tại 12 quốc gia trên 25 ngôn ngữ. Kẻ tấn công giả mạo ba nền tảng được tin d

Overview SourTrade is a large-scale malvertising campaign running since late 2024, targeting crypto investors and traders in 12 countries across 25 languages. The attacker impersonates three trusted p

Tổng Quan Hãy hình dung kịch bản này: bạn vừa check-in khách sạn sau chuyến bay dài, mở laptop, bật Wi-Fi, mở Chrome và Chrome tự mở trang đăng nhập Microsoft 365. Trông quen thuộc. Bạn gõ mật khẩu, b

In January 2025, ESET Research uncovered a previously undocumented China-aligned APT group named GopherWhisper, actively targeting Mongolian government institutions. The group's defining characteristic is its use of legitimate SaaS platforms — Slack, Discord, Microsoft 365 Outlook, and file.io — as exclusive command-and-control (C2) infrastructure, blending malicious traffic into normal enterprise communication flows.
GopherWhisper's toolkit spans seven components, the majority written in Go: four backdoors (LaxGopher, RatGopher, BoxOfFriends, SSLORDoor), one injector (JabGopher), one exfiltration tool (CompactGopher), and one DLL loader (FriendDelivery). ESET confirmed at least 12 compromised systems within a single Mongolian government entity, with C2 traffic analysis suggesting dozens of additional, geographically unidentified victims.
Priority Action: Deploy detection rules for anomalous SaaS API connections (Slack, Discord, Graph API) originating from non-browser processes, and hunt for injected DLLs in svchost.exe instances with non-standard parent processes.
GopherWhisper was discovered in January 2025 when ESET researchers identified the LaxGopher backdoor on a Mongolian government system. Despite only being publicly disclosed in April 2026, the group is assessed to have been active since at least November 2023.
Attribution Basis — China Alignment:
Attribution to China is grounded in forensic metadata, not inference:
zh-CN.GopherWhisper implements a redundant multi-channel C2 strategy: each backdoor uses a different SaaS platform for command delivery. If one channel is blocked, operator access persists through the remaining ones.
Figure 1: GopherWhisper toolset overview (Source: ESET Research)
JabGopher initiates the execution chain by spawning a new svchost.exe process and injecting the LaxGopher payload into its memory space. Process injection into svchost.exe is a long-established evasion technique — the process runs on every Windows system by design and receives far less scrutiny than user-space processes.
LaxGopher is disguised as whisper.dll — the origin of the "Whisper" portion of the group's name.
LaxGopher is a Go-based backdoor communicating with a private Slack workspace controlled by the attackers. Its operational loop:
cmd.exeDeployed by LaxGopher as a secondary payload, CompactGopher handles data staging and exfiltration:
.doc, .docx, .jpg, .xls, .xlsx, .txt, .pdf, .ppt, .pptxRatGopher mirrors LaxGopher's functionality but routes C2 through a private Discord server:
Unlike the Go-based backdoors, SSLORDoor is written in C++ and avoids SaaS platforms entirely. It uses OpenSSL BIO to communicate over raw sockets on port 443, camouflaging traffic within expected HTTPS flows without implementing full TLS termination in the conventional sense.
Capabilities: drive enumeration, file read/write/delete, command execution via C2 input.
The most operationally sophisticated pair in the arsenal. FriendDelivery is a malicious DLL that loads and injects BoxOfFriends into memory. BoxOfFriends implements a dead drop C2 mechanism via Outlook:
The attacker's Outlook account is confirmed as barrantaya.1010@outlook[.]com, created on July 11, 2024 — exactly 11 days before the FriendDelivery DLL compilation timestamp of July 22, 2024.
One of the most significant intelligence gains in this investigation came from the attackers' own operational mistake. ESET extracted Slack and Discord API tokens from the analyzed binaries, gaining direct read access to the C2 channel history.
Root cause: GopherWhisper reused the same Slack and Discord servers for backdoor testing and live C2 operations — and never cleared the logs. This single opsec failure exposed thousands of internal communications.
Key intelligence recovered:
Figure 2: Slack message distribution by hour — clear 08:00–17:00 UTC+8 working hour pattern (Source: ESET Research)
Figure 3: Discord message distribution mirrors the same working hour pattern (Source: ESET Research)
GitHub repositories referenced in C2 messages:
| Repository | Purpose |
|---|---|
github.com/kardianos/service |
Service daemon management for Go |
github.com/NHAS/stab |
Process injection (local and remote) for Go |
github.com/kirinlabs/utils |
Encryption and compression utilities for Go |
github.com/wumansgy/goEncrypt |
Encryption method implementations in Go |
These repositories indicate active toolset development, with a clear focus on injection, persistence, and cryptographic capabilities — suggesting future iterations of the toolkit may be more sophisticated.
[Phase] [Technique] [Tool]
──────────────────────────────────────────────────────────────────────
Initial Access Unknown (initial vector not confirmed) —
Execution DLL Side-Loading JabGopher → whisper.dll
Persistence [NEEDS VERIFICATION] —
Defense Evasion Process Injection into svchost.exe JabGopher
SaaS C2 (blends with legitimate traffic) LaxGopher/RatGopher/BoxOfFriends
C2 Slack API (private workspace) LaxGopher
Discord API (private server) RatGopher
Outlook Draft via Microsoft Graph API BoxOfFriends
Raw Socket port 443 (OpenSSL BIO) SSLORDoor
Collection File filter by extension, ZIP + AES CompactGopher
Exfiltration Upload to file.io CompactGopher
| Technique ID | Name | Associated Tool |
|---|---|---|
| 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-CFB-128) |
| T1027 | Obfuscated Files or Information | CompactGopher (encryption) |
| T1105 | Ingress Tool Transfer | LaxGopher (payload download) |
| T1087 | Account Discovery | LaxGopher/RatGopher (enumeration) |
| T1078 | Valid Accounts | BoxOfFriends (hardcoded Outlook credentials) |
Note: Full IOC lists (hashes, IPs, domains) are published in the ESET white paper and GitHub repository. The following indicators have been publicly confirmed.
# Slack API C2 endpoint (LaxGopher)
api.slack.com
# Discord API C2 endpoint (RatGopher)
discord.com/api/
# Microsoft Graph API C2 endpoint (BoxOfFriends)
graph.microsoft.com
# Exfiltration destination
file.io
# Attacker-controlled Outlook account
barrantaya.1010@outlook[.]com
# Side-loaded DLL filename
whisper.dll
# Injection target process
svchost.exe (new instance with non-standard parent process)
# File types targeted by CompactGopher
*.doc, *.docx, *.jpg, *.xls, *.xlsx, *.txt, *.pdf, *.ppt, *.pptx
# ESET GitHub
https://github.com/eset/malware-ioc/tree/master/gopherwhisper
# ESET White Paper
https://web-assets.esetstatic.com/wls/en/papers/white-papers/gopherwhisper-burrow-full-malware.pdf
// Detect svchost.exe connecting to 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
// Detect whisper.dll load or non-system DLLs loaded into 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
title: svchost.exe Spawned with Non-Standard Parent Process
id: gw-001-svchost-injection
status: experimental
description: |
Detects svchost.exe created by a non-standard parent process,
consistent with JabGopher injection technique used by GopherWhisper APT.
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:
- Some legitimate software may spawn svchost directly — manual verification required
level: high
tags:
- attack.defense_evasion
- attack.t1055
- attack.t1574.002
title: Suspicious SaaS API Connections from Non-Client Processes
id: gw-002-saas-c2
status: experimental
description: |
Detects connections to Slack/Discord/Graph API from processes
other than known legitimate clients — consistent with GopherWhisper C2 behavior.
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:
- Enterprise applications with legitimate Slack/Discord API integration — whitelist as needed
level: medium
tags:
- attack.command_and_control
- attack.t1102
- attack.t1071.001
GopherWhisper's core assumption is correct: most enterprise firewalls do not deep-inspect HTTPS traffic to tier-1 SaaS providers. Traffic to api.slack.com or graph.microsoft.com is indistinguishable from a business employee using Slack or Outlook — at the network perimeter level.
The weak point lies in process-to-network correlation. A svchost.exe instance connecting to api.slack.com — without a Slack client binary in the chain — is a clear behavioral anomaly for any SOC with adequate endpoint telemetry coverage. The problem is that most organizations have not built correlation rules linking process identity to destination. GopherWhisper exploits precisely this gap.
The "C3" (Civilian Command and Control) pattern — co-opting legitimate cloud infrastructure rather than operating dedicated servers — reduces infrastructure cost and dramatically increases the attacker's longevity before detection. Takedowns require coordination with commercial providers rather than simple server shutdown.
SaaS abuse is not novel. Evasive Panda leveraged cloud services for C2 in Operation CloudScout (2024), and email draft dead-drops have been documented across multiple APT families for years. What stands out about GopherWhisper for a newly identified group is the breadth of the toolkit: seven distinct tools, three independent C2 channels, and a clear Go-first development philosophy.
Go (Golang) is increasingly the language of choice for threat actors across sophistication tiers. The reasons are practical: single self-contained binaries, straightforward cross-compilation, and more complex reverse engineering compared to conventional C/C++ code. The GitHub repositories found in GopherWhisper's Slack channel suggest the group is actively building out injection and persistence capabilities — the current toolkit may represent an early-stage iteration.
No confirmed GopherWhisper activity targeting Southeast Asian organizations has been reported. However, multiple China-aligned APT groups follow an expansion pattern — establishing operational capability against an initial target set before broadening scope. Government institutions, energy infrastructure, and telecommunications operators across Southeast Asia, including Vietnam, represent high-value espionage targets for China-state-aligned groups.
The more pressing unknown is the "dozens of other victims" referenced in ESET's C2 traffic analysis — with no geographic information currently available. Those victims could be anywhere.
svchost.exe connections to api.slack.com, discord.com/api, graph.microsoft.com where parent process is not services.exe or wininit.exe.whisper.dll across managed endpoints: Get-ChildItem -Path C:\ -Filter "whisper.dll" -Recurse -ErrorAction SilentlyContinuebarrantaya.1010@outlook[.]com to email threat watchlist; add file.io to monitoring (evaluate full block based on business use).gw-001 and gw-002 into SIEM.https://github.com/eset/malware-ioc/tree/master/gopherwhispersvchost.exe from non-system paths.