UAT-11587 and the Antino Backdoor: A Microsoft 365 Dead-Drop C2 Campaign Across Asia

·

On 2 October 2026, Cisco Talos disclosed UAT-11587, a China-nexus espionage cluster that between September 2025 and July 2026 compromised roughly 350 endpoints across at least 16 confirmed and probable government, defence, diplomatic and policy-research organisations in eight Asian countries. The operation's signature tool is Antino — a Rust-compiled Windows backdoor whose command-and-control channel runs entirely through Microsoft 365.

Antino never talks to a dedicated C2 server. It authenticates to Microsoft Graph with an OAuth client-credentials token, polls an attacker's Outlook mailbox for command emails every ten seconds, and uses OneDrive folders as a dead drop for heartbeats and file transfer. All traffic terminates at graph.microsoft.com and login.microsoftonline.com — endpoints almost every enterprise allowlists. Talos tracks loose infrastructure overlap with UNC6384 and Symantec's Jewelbug, but attributes Antino to a separately managed actor. This brief rebuilds the full kill chain and gives SOC teams copy-pasteable hunts.

◈ Table of Contents

01 Threat Actor Profile 02 Campaign Timeline 03 Initial Access 04 Five-Stage Execution Chain 05 Antino Implant Deep Dive 06 The M365 Dead-Drop C2 07 Commands & Post-Exploitation 08 Indicators of Compromise 09 Detection & Hunt Queries 10 MITRE ATT&CK Mapping 11 Mitigation & Hardening 12 Sources & References
🎯

01 — Threat Actor Profile

UAT-11587

Talos assesses with high confidence that UAT-11587 is China-nexus, and the judgement rests on a stack of independent indicators rather than any single artifact. Decoy documents carry Simplified Chinese metadata (a zh-CN language tag and the author string 未定义) and UTC+8 timestamps. Rust build artifacts reference rsproxy.cn, a China-focused package mirror. The targeting set — Taiwan's legislature, regional maritime and diplomatic affairs, foreign ministries — aligns tightly with established Chinese intelligence priorities.

AttributeDetail
DesignationUAT-11587 (Cisco Talos tracking identifier)
AttributionChina-nexus — High Confidence
Signature malwareAntino (Rust backdoor, 32- and 64-bit; Gen1 and Gen2)
First observedSeptember 2025
Activity windowSeptember 2025 – July 2026 (ongoing cluster)
Infrastructure overlapShared CloudFront distribution previously linked to UNC6384 (Arctic Wolf); loose overlap with Symantec "Jewelbug" — tracked separately due to distinct payload and C2 architecture
ObjectiveLong-term intelligence collection (espionage), not disruption or extortion
Targeted sectors
🛡️

Defence & National Security

Military, civil defence and border-security bodies — including Taiwan-focused civil-defence and legislative subjects.

🏛️

Government & Diplomacy

Executive administration, foreign-affairs ministries and parliamentary institutions across the region.

🎓

Policy & Research

Think tanks, universities and human-rights / civil-society organisations working on Indo-Pacific policy.

The actor profile matters operationally: an espionage crew optimises for dwell time and quiet collection. Expect persistence, credential harvesting and selective exfiltration — not the loud, fast behaviour of a ransomware affiliate. Hunt for the long tail.

🗓️

02 — Campaign Timeline

Sep 2025 → Oct 2026

Talos reconstructed a ten-month operation that scaled from single-country probing to a multi-country wave, with the delivery technique and implant generation both evolving along the way.

⏱Dated activityTalos
  • 1Sep – Nov 2025. Earliest observed activity: Philippines-themed lures delivered as direct email attachments. Antino Gen1 builds first compiled around October 2025.
  • 2Jan 2026. Two further Philippines HTA campaigns; lure themes broaden to regional geopolitics. The standalone fake-installer delivery branch (bogus Flash / WPS installers) begins. Antino Gen2 builds appear December 2025 – January 2026.
  • 3Mar 2026. Taiwan spear-phishing wave targeting the academic, think-tank and civil-society policy community.
  • 4Mar – Jun 2026. Closely timed Philippines and Taiwan operations; activity extends to Cambodia, Myanmar, Syria, Pakistan and Thailand.
  • 58 – 9 Jun 2026. Largest concentrated burst: roughly 57 newly observed endpoints associated with India over two days.
  • 6Jul 2026. Investigation concludes with 16+ confirmed and probable affected environments across 8 countries; ~350 compromised endpoints in total.
  • 72 Oct 2026. Cisco Talos publishes the campaign, naming UAT-11587 and the Antino backdoor.
✉️

03 — Initial Access

Spear-phishing

Every intrusion begins with a tailored spear-phishing email. What raises UAT-11587 above commodity phishing is the lengths it goes to defeat both authentication checks and the recipient's suspicion.

ASender spoofing via envelope / header mismatchSPF pass, DMARC p=none

Messages are sent through the Migadu mail service using the attacker-controlled domain osc-cdn.com as the SMTP envelope sender, while the visible RFC5322 From: header is spoofed to display a trusted organisation. Because SPF authenticates only the envelope domain, SPF passes. DMARC fails on the header mismatch — but where the spoofed organisation publishes a lax p=none policy, the message is still delivered.

SPF "pass" on a message does not mean the visible sender is real. If your gateway promotes SPF-pass mail or your users trust a green banner, this technique walks straight through. DMARC alignment, not SPF alone, is what blocks display-name spoofing.

BCloned Gmail attachment-preview widgetSocial engineering

Inside the HTML body, the actor rebuilt Gmail's native attachment-preview card using four Base64-encoded PNG images embedded as inline MIME parts. The fake card looks like a genuine attachment thumbnail but is wrapped in an anchor tag pointing to attacker infrastructure. To dodge URL-extraction and detonation tooling, the link uses a protocol-relative form (a leading //) that many parsers fail to normalise.

Observed delivery URL pattern
// Protocol-relative anchor hides the scheme from naive URL extractors //my-<project>.pages.dev/File_download?m=<target-identifier> # Example (May 2026 India/Taiwan lures): https://my-662ylt3w.pages.dev/Institutional_Disciplinary_Action_Report_May_2026.hta
CLure content tuned to the targetRecon-driven

Decoys reproduce real-looking policy material: a "Taiwan Information Warfare" workshop document, an exact copy of a Taiwan Ministry of Finance ruling on legislator tax treatment, a "CSIS Indo-Pacific Forecast 2026" event card, and geopolitically topical headlines. The specificity implies the operators researched each recipient's portfolio before writing the email.

🖼️
Lure & cloned-widget screenshots
Cisco Talos · original report (images not re-hosted)
VIEW ▸
⛓️

04 — Five-Stage Execution Chain

HTA → Antino

From the first click, UAT-11587 runs a five-stage chain that keeps the payload off disk for as long as possible and ends with signed-binary DLL side-loading. Every network hop lands on a widely trusted cloud service.

Figure 1 — UAT-11587 five-stage chain, click to in-memory implant
S1HTA / WSF stagermshta.exe

The Cloudflare Pages URL serves an HTA (run by mshta.exe) or a WSF (via Windows Script Host) in a hidden window. The stager beacons to a fixed Cloudflare tracking host and then pulls Stage 2 from Cloudflare R2 or Amazon CloudFront. The lure title embedded in the URL plus a ?track query string gives the operators per-lure execution telemetry.

S2JScript downloader & decryptorRC4

Executed in-process by mshta.exe, the Stage 2 JScript pulls three encrypted resources — a JScript orchestrator and two serialized .NET gadgets — then applies custom Base64 decoding followed by RC4 decryption with an embedded key, and runs the decrypted orchestrator.

S3.NET BinaryFormatter deserializationin-memory

The orchestrator instantiates COM-visible .NET classes and feeds attacker-controlled serialized data to BinaryFormatter. Gadget one tries to disable the ActivitySurrogateSelector deserialization guard; gadget two uses the System.Windows.Forms.AxHost+State gadget with the ActivitySurrogateSelector chain. The result loads an embedded PE, TestAssembly.dll, directly into the mshta.exe process. Try/catch wrapping shows the actor planned for different .NET patch levels.

S4TestAssembly.dll downloader & launcherGUID b2b3adb0…

This small .NET downloader fetches the lure-specific decoy PDF plus a three-file side-loading bundle carrying nonstandard extensions (.luy, .pzs, .syk). It opens the decoy for the victim, writes the bundle to a writable staging directory, then launches the Microsoft-signed GatherOsState.exe. All builds share the AssemblyAttribute GUID b2b3adb0-1669-4b94-86cb-6dd682ddbea3 — a durable hunting pivot.

S5Signed-host DLL side-loadingslc.dll

GatherOsState.exe is a legitimate Windows Assessment and Deployment Kit (ADK) binary. When it loads slc.dll from the staging directory, it calls the DLL's SLOpen export, which initialises Antino. The implant now runs under a Microsoft-signed parent with clean process ancestry.

The side-loaded DLL arrives on disk with a bogus extension (.luy/.pzs/.syk) and is renamed to slc.dll only at staging. Static file-extension allowlisting will miss it; you need to catch the write-then-rename and the GatherOsState.exe load from a non-standard path.

🦀

05 — Antino Implant Deep Dive

Rust backdoor

Antino is a Rust-compiled Windows backdoor named after the AntinoApp string in its application manifest. PDB paths of the form D:\a\antino\antino\target\... reveal it was built in a GitHub Actions CI pipeline. Talos identified two generations with meaningfully different tradecraft.

CharacteristicAntino Gen1Antino Gen2
Build periodOctober 2025Dec 2025 – Jan 2026
App identityNo manifestAntinoApp manifest
Session IDXOR/Base64 of PID, hostname, username, platformRandom UUID v4 (no host-derived data)
Heartbeat storageEmail drafts (sendsession / heartbeat)JSON at /antino/heartbeats/<id>.json
1Configuration: the ".cfg" PE sectionXOR 0xAB 0xCD

Antino stores its configuration in a custom PE section named .cfg. The structure is a 4-byte little-endian length prefix followed by XOR-encrypted JSON using the alternating key bytes 0xAB 0xCD. The config carries the embedded Graph C2 parameters, a run flag (auto-install persistence) and a launch_mode field (exe / raw / dll).

Config decryption logic (pseudocode)
# Locate the .cfg section, read 4-byte LE length, XOR-decrypt the body len = u32_le(cfg[0:4]) body = cfg[4:4+len] key = [0xAB, 0xCD] plain = bytes(b ^ key[i % 2] for i, b in enumerate(body)) # plain is JSON: { c2, run, launch_mode, ... }
2Sleep-mask memory evasionVEH

When the use_sleep_mask parameter is set, Antino hooks Sleep and VirtualAlloc and registers a vectored exception handler (VEH). On each Sleep call it flips its tracked memory region to PAGE_READWRITE and encrypts the contents in place; the access violation when execution resumes triggers the VEH, which restores protection, decrypts, and continues. The implant's code is therefore encrypted at rest in memory during its idle window, shrinking exposure to memory-scanning tools.

3Scripted Diagnostics abusesdiagnhost.exe

For indirect command execution, Antino abuses the Windows Scripted Diagnostics framework. It drives the diagnostic COM class CScriptedDiag (CLSID {1F3D8AA5-9EBF-4EE4-85C2-EA40379AEDE8}, served by sdiageng.dll), injecting an attacker PowerShell script into a temporary PCW package directory under C:\Windows\Temp\SDIAG_<GUID>. The Microsoft-signed sdiagnhost.exe then executes result.ps1 through the legitimate diagnostic workflow — proxying PowerShell and registry changes through a trusted process.

PowerShell whose parent process is sdiagnhost.exe is almost never legitimate in a normal endpoint. It is one of the highest-fidelity single signals for this campaign — alert on it with low tuning cost.

☁️

06 — The Microsoft 365 Dead-Drop C2

Graph API

The defining feature of Antino is that it has no C2 server of its own. It authenticates to Microsoft Graph with an OAuth 2.0 client-credentials token and uses the attacker's own Microsoft 365 tenant — Outlook mailbox plus OneDrive — as a dead drop. Operator actions and implant beacons are decoupled: the human writes command emails into a mailbox; the implant reads them on its own schedule. On the wire, everything is HTTPS to graph.microsoft.com and login.microsoftonline.com.

ChannelMechanism
AuthOAuth 2.0 client-credentials → Microsoft Graph token
Command fetchPolls attacker Outlook mailbox every 10 seconds for subject prefix command_req_[session_id]
Command replyWrites results back with subject prefix command_res_[session_id]
HeartbeatUploads /antino/heartbeats/<session_id>.json at init and every minute (session id, timestamp, online/offline, machine, user, platform, campaign code)
ExfiltrationWrites stolen files to OneDrive /antino_downloads/
Tool deliveryOperator drops toolkit files into OneDrive /antino_uploads/
Command message body (JSON schema observed by Talos)
// Email subject: command_req_<session_id> { "command_type": "powershell", "command_data": { "<params>" }, "request_id": "<per-command-id>" } // Response (subject command_res_<session_id>) adds: // success (bool), result, error

Network-layer blocking is near-useless here: you cannot block graph.microsoft.com in a Microsoft-shop. Detection has to move to identity (anomalous client-credential sign-ins, unexpected service principals) and endpoint (which process is talking to Graph).

🎛️

07 — Commands & Post-Exploitation

10 commands

Antino exposes a compact but complete command set covering reconnaissance, execution, file transfer, in-memory code loading and persistence — everything an operator needs for hands-on-keyboard collection.

CommandFunction
cmdExecute cmd.exe /C and capture output
powershellExecute powershell.exe -Command
system_infoCollect host and process context
execute_programRun an operator-supplied program
list_filesDirectory enumeration
upload_fileTransfer a file from OneDrive to the host
download_fileExfiltrate a host file to OneDrive
load_shellcodeExecute Base64-encoded shellcode in memory
add_to_runEstablish persistence via an HKCU Run value
exitStop the Antino runtime
PPersistence: add_to_runHKCU Run

The add_to_run command generates PowerShell that writes an HKCU ...\CurrentVersion\Run value to relaunch the chosen Antino executable at the next user sign-in. Staged files are written under %LOCALAPPDATA%\Windows GatherOSStateKit\ — a folder name chosen to blend with the legitimate ADK binary it abuses.

Persistence registry location to hunt
# Run-key persistence written by add_to_run HKCU\Software\Microsoft\Windows\CurrentVersion\Run # Staging directory %LOCALAPPDATA%\Windows GatherOSStateKit\
🔎

08 — Indicators of Compromise

IOCs

A representative selection is below; Talos publishes the complete, authoritative IOC set in its public GitHub repository (linked in Sources). Validate hits against context — several delivery services are shared cloud providers.

Command & delivery domains
IndicatorRole
osc-cdn.comSpear-phishing envelope sender (via Migadu)
oisadjfoinsiduhfnoisdnfosdnoifnsoid.pages.devCloudflare Pages execution-tracking beacon
d2nq35tel3ucuo.cloudfront.netCloudFront Stage 2 staging
pub-abfa7742e315485a98a5fafd6dbfb68e.r2.devCloudflare R2 payload host
pub-0173d1566dcd4fd49fa25f11f14bfe4c.r2.devCloudflare R2 payload host
microsoft-flash.comFake Flash installer (standalone Antino)
wps-cn.comFake WPS installer (standalone Antino)
103.27.110.220Historical serving IP for wps-cn.com
Cloudflare Pages HTA/WSF delivery hosts (sample)
my-3lyt6wcp.pages.dev my-qc39r814.pages.dev my-662ylt3w.pages.dev my-6g16qsfe.pages.dev my-goq6xmbm.pages.dev my-h3qli6kq.pages.dev my-sv7c1fzs.pages.dev my-u0up9qri.pages.dev my-vtsdod2n.pages.dev my-wgoxp32b.pages.dev
Antino implant SHA256 (slc.dll & standalone, sample)
SHA256Note
09ef7c736bccfafefc44d9910d499173b88063b73b221fc0dc9e9105107e5cffGen2 slc.dll
e2eb7703047b37b28dc34e6990205d758a2454b39bc655b460606745fadcb530Gen2 slc.dll
e7e3b0bcd6798634adf8b49d305f3a7b7682e4b76db549682a183c5a186df4bbGen2 slc.dll
fdbd047031c13a17c9f491c9355f44d587584ebe2b8927be8482e6c236c8e1c1Gen2 slc.dll
1fadc90b61ce536abda78eb387a7f3d745f00c16775d3f762845ccc0fde567daGen1 slc.dll
40e7e77aff603f4c2ef17b3bc8ea836e714d0734a1e5b946e52f95536ec5c91dGen1 standalone
0c39264337a1186b2e765e24073399cbdcba118306614eb411e315887af578bdGen2 fake-installer
Stage 2 JScript downloader SHA256 (sample)
61a8f5add6c35f99c389012dbb2343061fd0b54611b40490b9a7f0b49d707da0 747b1d13bdf06956b5da5f47250fefd5284ebcf7961971732c3d348aa1a2d533 a13182699a12a8dd9d07c336dbd8de5e9b086b9b09793b7de2e9761aa03ce1dc
Host artifacts & strings
ArtifactValue
Side-load hostGatherOsState.exe (signed ADK binary)
Side-loaded DLLslc.dll (export SLOpen)
Bundle extensions.luy, .pzs, .syk
TestAssembly GUIDb2b3adb0-1669-4b94-86cb-6dd682ddbea3
Staging folder%LOCALAPPDATA%\Windows GatherOSStateKit\
OneDrive folders/antino/heartbeats/, /antino_downloads/, /antino_uploads/
Outlook subjectscommand_req_*, command_res_*
📡

09 — Detection & Hunt Queries

KQL · SPL · Sigma

Because the C2 hides in trusted cloud traffic, the highest-value detections are on the endpoint behaviours earlier in the chain and on anomalous identity activity. Each query below is paired KQL (Microsoft Sentinel / Defender) and SPL (Splunk), with a one-line purpose.

DETECTS: mshta.exe spawning Stage 1, or spawning a child from a browser / mail client — the entry point of the chain.
KQL — mshta.exe suspicious ancestry
DeviceProcessEvents | where FileName =~ "mshta.exe" | where InitiatingProcessFileName in~ ("outlook.exe","chrome.exe","msedge.exe","explorer.exe") | project Timestamp, DeviceName, InitiatingProcessFileName, ProcessCommandLine, AccountName
SPL — mshta.exe suspicious ancestry
index=endpoint sourcetype=xmlwineventlog EventCode=1 Image="*\\mshta.exe" ParentImage IN ("*\\outlook.exe","*\\chrome.exe","*\\msedge.exe","*\\explorer.exe") | table _time, host, ParentImage, CommandLine, User
DETECTS: PowerShell executed by the Scripted Diagnostics host — a near-unique signal for Antino's indirect execution.
KQL — sdiagnhost.exe spawns PowerShell
DeviceProcessEvents | where InitiatingProcessFileName =~ "sdiagnhost.exe" | where FileName in~ ("powershell.exe","pwsh.exe","cmd.exe") | project Timestamp, DeviceName, ProcessCommandLine, InitiatingProcessCommandLine
SPL — sdiagnhost.exe spawns PowerShell
index=endpoint sourcetype=xmlwineventlog EventCode=1 ParentImage="*\\sdiagnhost.exe" Image IN ("*\\powershell.exe","*\\pwsh.exe","*\\cmd.exe") | table _time, host, ParentImage, Image, CommandLine
DETECTS: GatherOsState.exe running from or loading a DLL in a non-system path — the side-loading of Antino.
KQL — GatherOsState.exe DLL side-load
DeviceImageLoadEvents | where InitiatingProcessFileName =~ "GatherOsState.exe" | where FileName =~ "slc.dll" | where not(FolderPath has @"\Windows\System32") | project Timestamp, DeviceName, FolderPath, InitiatingProcessFolderPath
SPL — GatherOsState.exe DLL side-load
index=endpoint sourcetype=sysmon EventCode=7 Image="*\\GatherOsState.exe" ImageLoaded="*\\slc.dll" NOT ImageLoaded="*\\System32\\*" | table _time, host, Image, ImageLoaded, Signed
DETECTS: a non-Office process reaching Microsoft Graph — Antino's C2 egress from an unexpected binary.
KQL — Graph traffic from non-Office process
DeviceNetworkEvents | where RemoteUrl has "graph.microsoft.com" or RemoteUrl has "login.microsoftonline.com" | where InitiatingProcessFileName !in~ ("outlook.exe","onedrive.exe","teams.exe","msedge.exe","excel.exe","winword.exe") | summarize count(), make_set(InitiatingProcessFolderPath) by DeviceName, InitiatingProcessFileName
SPL — Graph traffic from non-Office process
index=network (dest_host="graph.microsoft.com" OR dest_host="login.microsoftonline.com") NOT process_name IN ("outlook.exe","onedrive.exe","teams.exe","msedge.exe","excel.exe","winword.exe") | stats count values(process_path) by host, process_name
DETECTS: Run-key persistence written by add_to_run, and files staged in the GatherOSStateKit folder.
KQL — persistence & staging
union DeviceRegistryEvents, DeviceFileEvents | where (RegistryKey has @"CurrentVersion\Run" and InitiatingProcessFileName =~ "powershell.exe") or FolderPath has "Windows GatherOSStateKit" | project Timestamp, DeviceName, ActionType, RegistryKey, RegistryValueData, FolderPath
SPL — persistence & staging
index=endpoint (sourcetype=sysmon EventCode=13 TargetObject="*\\CurrentVersion\\Run\\*") OR (sourcetype=sysmon EventCode=11 TargetFilename="*Windows GatherOSStateKit*") | table _time, host, TargetObject, Details, TargetFilename
Vendor-published detections to deploy
  • Cisco Talos ClamAV: Html.Trojan.UAT-11587-* and Win.Trojan.UAT-11587-* (23 signatures)
  • Snort 2 & 3 SIDs: 1:66880, 1:66881, 1:66882
  • Pivot on TestAssembly GUID b2b3adb0-1669-4b94-86cb-6dd682ddbea3 across your binary corpus
  • Identity: alert on OAuth client-credentials sign-ins from unexpected service principals to Graph
🧩

10 — MITRE ATT&CK Mapping

ATT&CK
TechniqueIDWhere it shows up
Search Open Websites/DomainsT1597Reconnaissance of target organisations
Spearphishing LinkT1598.003Cloned Gmail widget → Cloudflare Pages
Spearphishing AttachmentT1566.002HTA / WSF delivery
User Execution: Malicious FileT1204.002Victim opens HTA / WSF
Command & Scripting: JavaScriptT1059.007Stage 2 JScript orchestrator
Command & Scripting: PowerShellT1059.001powershell command, add_to_run
Indirect Command ExecutionT1202Scripted Diagnostics / sdiagnhost.exe
System Binary Proxy ExecutionT1218GatherOsState.exe side-loading slc.dll
Obfuscated Files or InformationT1027RC4 stages, XOR-encrypted .cfg
Deobfuscate/Decode FilesT1140RC4 decryption of stage resources
Process Injection (APC)T1055.004load_shellcode in-memory execution
Boot/Logon Autostart: Run KeyT1547.001add_to_run HKCU persistence
Application Layer Protocol: WebT1071.001Microsoft Graph HTTPS C2
Data ObfuscationT1001C2 blends into legitimate MS sync traffic
File & Directory DiscoveryT1083list_files command
Exfiltration Over C2 ChannelT1041download_file → OneDrive
🛡️

11 — Mitigation & Hardening

Action
MPrioritised hardening stepsDo now
  • 1Move DMARC to p=reject. A lax p=none on your own domain is exactly what let UAT-11587's display-name spoofing land. Enforce alignment, not just SPF.
  • 2Restrict mshta.exe and wscript.exe/cscript.exe. Block or heavily constrain them with WDAC / AppLocker; almost no business workflow needs user-launched HTA.
  • 3Kill BinaryFormatter. Disable or remove BinaryFormatter deserialization in internal .NET apps — it is deprecated and central to Stage 3.
  • 4Audit Graph service principals. Review app registrations with mail/file permissions, enforce least privilege, and alert on new client-credential grants. This is where the C2 hides.
  • 5Hunt the durable pivots. Sweep for the TestAssembly GUID, slc.dll side-loaded by GatherOsState.exe, and the Windows GatherOSStateKit staging folder across the estate.
  • 6Deploy vendor signatures. Push the Talos ClamAV and Snort rules, and add the IOC domains/hashes to your blocklists and retro-hunt the last 12 months of telemetry.

Retro-hunt deep: this cluster has been live since September 2025 with a strong espionage emphasis on dwell time. If you are in-scope (Asian government, defence, diplomatic or policy sectors), assume you may already be compromised and hunt the 12-month window, not just the last week.

📚

12 — Sources & References

Primary
Cisco Talos — China-nexus UAT-11587 targets government and policy organizations across Asia with the Antino backdoor (primary report, 2 Oct 2026) Cisco Talos — Full UAT-11587 IOC repository (authoritative hashes, domains, IPs) The Hacker News — Antino backdoor uses Outlook and OneDrive for stealthy C2 (corroborating)

Are Antino's IOCs in your environment? Paste the hashes and domains from this brief into the CyberHawk IOC Scanner to triage fast, then track follow-on China-nexus activity on the CyberHawk Threat Intel feed. For detection engineering playbooks and SOC runbooks, browse the CyberHawk SOP library.

◈ Stay Connected

Follow CyberHawk Threat Intel for threat intelligence, deployment guides and hands-on SOC tooling content.

🌐 Website ▶️ YouTube ▶️ YouTube (2) 𝕏 Twitter / X ♪ TikTok ✈️ Telegram
🔍 IOC Scanner 🛠️ Live Tools 📚 Courses 🚨 Threat Intel 📝 Blog 📋 SOPs

"They can't exploit you if you are the Exploit."