Back to Intelligence

Operation QUICSILVER: Detecting and Defeating the QUICAgent Go Backdoor Targeting Myanmar Government and IT

SA
Security Arsenal Team
August 24, 2026
10 min read

Seqrite Labs has disclosed an active cyber espionage campaign, codenamed Operation QUICSILVER, targeting Myanmar's government and information technology sectors. The operation uses spear-phishing emails themed around graduation ceremony invitations — a socially engineered lure tuned for maximum credibility against civil servants and IT staff — to deliver QUICAgent, a custom unauthorized access mechanism written in Go. Seqrite assesses with moderate confidence that the activity is the work of a China-nexus threat actor, consistent with the long-running pattern of state-aligned espionage collection against Southeast Asian government targets.

For defenders, this is not a Myanmar-only problem. Campaigns like QUICSILVER are rehearsal grounds. The same lure-building pipeline, the same Go-based implant toolchain, and the same C2 architecture will be pointed at other ministries, telecoms, and technology providers across the region — and at any organization whose intelligence value justifies the effort. If your SOC can detect this tradecraft today, you are ahead of the actor's next target list.

Technical Analysis

Who Is Being Targeted

  • Sectors: Myanmar government entities and the information technology sector.
  • Delivery vector: Spear-phishing emails carrying graduation ceremony invitation lures. The lure is contextually relevant, locally plausible, and designed to be opened by administrative staff — not just executives.
  • Payload: QUICAgent, a backdoor written in the Go programming language.
  • Attribution: China-nexus threat actor, moderate confidence (Seqrite Labs).

Why a Go Backdoor Matters to Your Detections

Go has become the language of choice for state-aligned implant developers, and QUICAgent is a textbook example of why. From a defender's perspective, Go binaries have distinct operational characteristics:

  1. Large, statically compiled executables. Go implants are typically multi-megabyte single-file binaries with no external dependencies. They drop clean, run on any target OS without a runtime, and don't trigger DLL-hijacking or missing-dependency telemetry.
  2. Cross-platform by default. The same source compiles for Windows, Linux, and macOS. Assume the actor can pivot the implant across your heterogeneous estate without retooling.
  3. Weak signature coverage. Many AV engines have historically thin detection rates on freshly compiled Go malware. Operationally, you should treat signature-based AV as a tripwire, not a control, against this class of implant.
  4. Distinctive process artifacts. Go binaries carry embedded build metadata (module paths, build IDs) and spawn runtime goroutines — but more usefully for hunting, they are frequently executed from user-writable staging directories (%TEMP%, %APPDATA%, %LOCALAPPDATA%, ~/Downloads) after being dropped by a phishing attachment or archive.

The C2 Channel: QUIC as an Evasion Layer

The implant's name — QUICAgent — and the operation's codename point directly at the actor's design choice: command-and-control over QUIC, the UDP-based transport protocol (UDP/443) that underpins HTTP/3. This is a deliberate evasion decision:

  • QUIC traffic is encrypted by design (TLS 1.3 is baked into the transport), so there is no plaintext HTTP layer for legacy network inspection to parse.
  • Most enterprise egress filtering is TCP-centric. UDP/443 is frequently left open to accommodate legitimate HTTP/3 browsing, giving a QUIC-native implant a pre-punched hole through the perimeter.
  • QUIC blends with browser noise. Chrome, Edge, and Firefox all generate large volumes of legitimate UDP/443 traffic to Google, Cloudflare, Meta, and Microsoft infrastructure. A backdoor riding the same protocol and port inherits that camouflage.

The critical discriminator defenders can exploit: legitimate QUIC on enterprise endpoints is overwhelmingly generated by browsers and a short list of sanctioned applications. A non-browser process — especially an unsigned executable in a user profile directory — initiating sustained UDP/443 sessions to infrastructure that is not a major CDN is a high-fidelity anomaly.

Attack Chain (Defender's View)

  1. Initial access (T1566.001/002): Spear-phishing email with graduation ceremony invitation theme delivers a malicious attachment or link.
  2. Execution (T1204): Victim opens the lure; the QUICAgent binary is staged and executed, typically from a user-writable path.
  3. Command and control (T1071/T1573): The implant establishes outbound QUIC (UDP/443) C2 to actor-controlled infrastructure, encrypted end-to-end.
  4. Collection and exfiltration: Espionage-oriented tasking — file collection, system enumeration, and staged exfiltration back over the C2 channel.

Exploitation Status

This is confirmed active, in-the-wild espionage activity with named victims in government and IT sectors. No CVE is associated with this campaign — initial access is purely social engineering, which means no patch will save you. Detection engineering, egress control, and user resilience are the only levers.

Detection & Response

The following detections target the three most reliable observables from this campaign: execution of staged binaries from user-writable directories, non-browser QUIC egress, and persistence out of user profile paths. Tune the allowlists to your environment before deployment.

YAML
---
title: Suspicious Binary Execution from User-Writable Staging Directory
id: 3f8a2c61-9d04-4b7e-a512-8e6f1c0d9a44
status: experimental
description: Detects execution of binaries from user-writable directories commonly used to stage phishing-delivered implants such as the QUICAgent Go backdoor in Operation QUICSILVER.
references:
  - https://thehackernews.com/2026/08/operation-quicsilver-targets-myanmar.html
  - https://attack.mitre.org/techniques/T1204/
author: Security Arsenal
date: 2026/08/10
tags:
  - attack.execution
  - attack.t1204
logsource:
  category: process_creation
  product: windows
detection:
  selection_path:
    Image|contains:
      - '\AppData\Local\Temp\'
      - '\AppData\Roaming\'
      - '\Downloads\'
      - '\Users\Public\'
  filter_installers:
    Image|endswith:
      - '\setup.exe'
      - '\installer.exe'
      - '\update.exe'
  condition: selection_path and not filter_installers
falsepositives:
  - Legitimate portable applications and software updaters running from user profile paths
level: medium
---
title: Non-Browser Process Initiating QUIC (UDP 443) Network Connection
id: 7c1e5b28-4a63-4f91-bd35-2a9c8e0f6b17
status: experimental
description: Detects non-browser processes establishing QUIC (UDP/443) connections, consistent with the QUICAgent backdoor's C2 channel in Operation QUICSILVER. Legitimate QUIC egress is overwhelmingly browser-generated.
references:
  - https://thehackernews.com/2026/08/operation-quicsilver-targets-myanmar.html
  - https://attack.mitre.org/techniques/T1071/
  - https://attack.mitre.org/techniques/T1573/
author: Security Arsenal
date: 2026/08/10
tags:
  - attack.command_and_control
  - attack.t1071
  - attack.t1573
logsource:
  category: network_connection
  product: windows
detection:
  selection:
    DestinationPort: 443
    Protocol: 'udp'
  filter_browsers:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\brave.exe'
      - '\opera.exe'
      - '\teams.exe'
      - '\slack.exe'
  condition: selection and not filter_browsers
falsepositives:
  - Sanctioned HTTP/3-capable applications (collaboration tools, CDN agents)
  - Cloud sync clients using QUIC transport
level: high
---
title: Persistence via Run Key from User Profile Path
id: 9b4d7e13-6c28-4a5f-9e60-1d3b5f7a2c88
status: experimental
description: Detects registry Run key persistence entries pointing to executables in user-writable profile directories, a common persistence pattern for staged backdoors such as QUICAgent.
references:
  - https://thehackernews.com/2026/08/operation-quicsilver-targets-myanmar.html
  - https://attack.mitre.org/techniques/T1547/001/
author: Security Arsenal
date: 2026/08/10
tags:
  - attack.persistence
  - attack.t1547.001
logsource:
  category: registry_set
  product: windows
detection:
  selection_key:
    TargetObject|contains:
      - '\CurrentVersion\Run'
      - '\CurrentVersion\RunOnce'
  selection_value:
    Details|contains:
      - '\AppData\Local\Temp\'
      - '\AppData\Roaming\'
      - '\Users\Public\'
  condition: selection_key and selection_value
falsepositives:
  - User-mode updaters (e.g., Teams, OneDrive) writing Run keys to profile paths — allowlist by signer
level: high
KQL — Microsoft Sentinel / Defender
// Hunt: Non-browser processes making QUIC (UDP/443) connections to non-CDN infrastructure
// Relevant to Operation QUICSILVER / QUICAgent C2 behavior
let KnownQUICApps = dynamic(["chrome.exe","msedge.exe","firefox.exe","brave.exe","opera.exe","teams.exe","slack.exe","onedrive.exe"]);
let KnownQUICDests = dynamic(["google.com","googlevideo.com","cloudflare.com","facebook.com","microsoft.com","akamai.net","fastly.net"]);
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemotePort == 443
| where InitiatingProcessFileName !in~ (KnownQUICApps)
| extend RemoteHost = tostring(parse_json(AdditionalFields).RemoteHost)
| where RemoteHost !has_any (KnownQUICDests) or isempty(RemoteHost)
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated),
    ConnectionCount=count(), DistinctDestinations=dcount(RemoteIP),
    Destinations=make_set(RemoteIP, 20)
    by DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessSHA256, AccountName
| where InitiatingProcessFolderPath has_any ("\\AppData\\", "\\Users\\Public\\", "\\Temp\\")
    or ConnectionCount > 50
| sort by ConnectionCount desc;
VQL — Velociraptor
-- Hunt for staged executables and non-browser QUIC connections on endpoints
-- Operation QUICSILVER / QUICAgent triage artifact
SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(AppData\\\\(Local|Roaming)|Users\\\\Public|Downloads)'
  AND Name !~ '(?i)(onedrive|teams|slack|spotify|discord|dropbox)'

SELECT Pid, Name, Exe,
       netstat().DestIP AS DestIP,
       netstat().DestPort AS DestPort,
       netstat().State AS ConnState
FROM netstat()
WHERE DestPort = 443
  AND Name !~ '(?i)(chrome|msedge|firefox|brave|opera|teams|slack)'

SELECT FullPath, Size, Mtime, Ctime
FROM glob(globs='C:\\Users\\*\\AppData\\Local\\Temp\\*.exe')
WHERE Mtime > (now() - 604800)
PowerShell
# Operation QUICSILVER / QUICAgent endpoint sweep and QUIC egress hardening
# Run elevated on suspect Windows endpoints

# 1) Sweep user-writable staging directories for recently created executables
$stagingPaths = @(
    "$env:SystemDrive\Users\*\AppData\Local\Temp\*.exe",
    "$env:SystemDrive\Users\*\AppData\Roaming\*.exe",
    "$env:SystemDrive\Users\Public\*.exe",
    "$env:SystemDrive\Users\*\Downloads\*.exe"
)
Get-ChildItem -Path $stagingPaths -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
    ForEach-Object {
        $sig = Get-AuthenticodeSignature $_.FullName
        [PSCustomObject]@{
            Path       = $_.FullName
            SizeMB     = [math]::Round($_.Length / 1MB, 2)
            Modified   = $_.LastWriteTime
            Signed     = $sig.Status
            SHA256     = (Get-FileHash $_.FullName -Algorithm SHA256).Hash
        }
    } | Format-Table -AutoSize

# 2) Audit Run/RunOnce persistence keys for profile-path binaries
$runKeys = @(
    "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
    "HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce",
    "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run",
    "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
)
foreach ($key in $runKeys) {
    if (Test-Path $key) {
        Get-ItemProperty $key | Get-Member -MemberType NoteProperty | ForEach-Object {
            $val = (Get-ItemProperty $key).($_.Name)
            if ($val -match 'AppData|Users\\Public|Temp') {
                Write-Output "[SUSPICIOUS] $key :: $($_.Name) = $val"
            }
        }
    }
}

# 3) Identify live non-browser processes holding UDP/443 sockets
Get-NetUDPEndpoint -LocalPort * -ErrorAction SilentlyContinue | ForEach-Object {
    $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    if ($proc -and $proc.ProcessName -notmatch '^(chrome|msedge|firefox|teams|slack)$') {
        [PSCustomObject]@{
            PID     = $_.OwningProcess
            Process = $proc.ProcessName
            Path    = $proc.Path
        }
    }
} | Sort-Object -Unique Process, Path | Format-Table -AutoSize

# 4) Hardening: block outbound QUIC for non-browser processes at the host firewall
# (Browsers retain HTTP/3; everything else falls back to TCP/443 which is inspectable)
$browserExes = @("chrome.exe","msedge.exe","firefox.exe")
New-NetFirewallRule -DisplayName "Block QUIC egress - non-browser (QUICSILVER hardening)" `
    -Direction Outbound -Protocol UDP -RemotePort 443 -Action Block `
    -Program "C:\Windows\System32\*" -ErrorAction SilentlyContinue | Out-Null
Write-Output "Review firewall policy: prefer proxy-enforced TCP/443 and deny direct UDP/443 egress at the perimeter for non-sanctioned apps."

Remediation

Because Operation QUICSILVER's initial access is social engineering rather than a software flaw, remediation is architectural, not a patch cycle. Prioritize in this order:

  1. Constrain QUIC egress. There is rarely a business justification for arbitrary endpoints to speak UDP/443 to the internet. Force traffic through your egress proxy over TCP/443 where TLS inspection and SNI-based filtering apply. Where QUIC must be allowed, allowlist it by application (browsers) and destination (known CDNs), and alert on everything else.
  2. Application control on user-writable paths. Enforce WDAC or AppLocker rules blocking unsigned executables from %TEMP%, %APPDATA%, and %USERPROFILE%\Downloads. This single control breaks the execution stage of the QUICAgent chain as described.
  3. Email gateway hardening. Detonate and rewrite links, strip or sandbox executable-bearing archives, and flag invitation-themed lure patterns. Given the graduation-ceremony pretext, brief regional or government-adjacent staff specifically — generic annual phishing training will not stop a culturally tuned lure.
  4. Hunt retroactively. Run the KQL and VQL hunts above across at least 30 days of telemetry. Espionage implants dwell; a clean result today does not mean a clean estate. Look for the non-browser QUIC pattern and for multi-megabyte unsigned binaries that appeared in user profile directories and were executed once.
  5. Registry persistence audit. Sweep Run/RunOnce keys fleet-wide for values referencing user-writable paths; validate each hit by Authenticode signer before remediation.
  6. If you find the implant: Isolate the host, preserve memory before reboot (Go implants are heavily memory-resident in their runtime), capture the binary for hash and YARA analysis, extract C2 destinations from firewall and DNS telemetry, and rotate credentials for any account that was interactive on the compromised host. Treat IT-sector compromises as potential supply-chain staging — review what systems that host could reach.
  7. Threat-intel tracking. Monitor Seqrite Labs' published IOCs for Operation QUICSILVER and ingest them into your SIEM/EDR blocklists, but build behavioral coverage as above — this actor's infrastructure will rotate faster than the indicators will.

Related Resources

Security Arsenal Red Team Services AlertMonitor Platform Book a SOC Assessment pen-testing Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.