Back to Intelligence

SparroWocky Backdoor & GhostEmperor (FamousSparrow) LATAM Government Espionage Campaign: OTX Pulse Detection Pack

SA
Security Arsenal Team
October 17, 2026
8 min read

Threat Summary

A live AlienVault OTX pulse published 2026-10-17 documents an active cyberespionage operation attributed to GhostEmperor — a China-aligned APT cluster tracked by ESET as FamousSparrow and overlapping with activity other vendors label Earth Estries. The campaign centers on SparroWocky, a sophisticated C++ backdoor observed in-the-wild since August 2025, which has replaced the group's earlier SparrowDoor implant.

The strategic shift is notable: FamousSparrow historically targeted hotels, telecoms, and government entities across Asia and the Middle East. This campaign marks a deliberate pivot toward governmental organizations across Latin America, assessed as likely correlated with increased US geopolitical interest in the region. The actor's objective is classic state-sponsored espionage: long-dwell access to government networks, exfiltration of diplomatic, policy, and administrative communications, and persistence that survives routine IT hygiene cycles.

The attack chain follows the group's established tradecraft: initial access (historically via exploitation of internet-facing Microsoft Exchange and other edge services), staged payload delivery of the SparroWocky backdoor, and hands-on-keyboard operator activity issuing commands through the implant's tasking channel. The pulse ships 33 indicators, heavily weighted toward SHA1 file hashes of SparroWocky/SparrowDoor binaries — indicating multiple compiled variants, consistent with a mature operator re-tooling between engagements.

Threat Actor / Malware Profile

GhostEmperor / FamousSparrow / Earth Estries (overlapping clusters)

  • Alignment: China-aligned state-sponsored espionage group, active since at least 2019.
  • Target profile: Government ministries, diplomatic corps, and public administration — now concentrated in Latin America.
  • Prior tooling: SparrowDoor backdoor, custom loaders, and exploitation of ProxyLogon-class Exchange vulnerabilities for initial access.

SparroWocky (successor backdoor)

  • Distribution: Staged post-exploitation deployment onto already-compromised government infrastructure; typically side-loaded or dropped alongside legitimate binaries to blend into the host environment.
  • Payload behavior: Full-featured C++ implant providing remote shell command execution, file upload/download, directory enumeration, and in-memory tasking. The 'commands that catch' moniker reflects its command-handling architecture designed to intercept and process operator tasking reliably.
  • C2 communication: Tasking over outbound HTTP/HTTPS channels from compromised endpoints, engineered to resemble ordinary web traffic. Expect beaconing to operator-controlled infrastructure with periodic intervals and jitter.
  • Persistence: Registry Run-key entries and/or scheduled tasks masquerading as system or vendor update jobs; possible service installation for SYSTEM-level survival across reboots.
  • Anti-analysis: Multiple distinct compiled variants (evidenced by the hash diversity in this pulse), string obfuscation, and likely environment checks to frustrate sandbox detonation.

IOC Analysis

The pulse contains 33 indicators, with the sample shown dominated by FileHash-SHA1 values tied to SparroWocky and SparrowDoor binaries. Representative indicators:

  • 23e228d5603b4802398b2e7419187aef71ff9dd5
  • 2560b7e28b322bb7a56d0b1da1b2652e1efe76ea
  • 4df896624695ea2780552e9ea3c40661dc84efc8
  • 76c430b55f180a85f4e1a1e40e4a2ea37db97599
  • 873f98caf234c3a8a9db18343dad7b42117e85d4
  • b9601e60f87545441bf8579b2f62668c56507f4a
  • bb2f5b573ac7a761015daad0b7ff03b294dc60f6
  • c36ecd2e0f38294e1290f4b9b36f602167e33614

Operationalization guidance for SOC teams:

  1. Bulk-ingest the full SHA1 set into your EDR blocklist and SIEM threat-intel tables. SHA1 is deprecated for integrity but remains a reliable malware pivot in EDR platforms (CrowdStrike, Defender for Endpoint, SentinelOne all support SHA1 custom intelligence).
  2. Retro-hunt across 90+ days of file-creation telemetry — the implant has been live since August 2025, so point-in-time blocking is insufficient.
  3. Hash-pivot outward: submit hashes to VirusTotal/MalwareBazaar to surface sibling samples, dropped DLLs, and associated C2 domains not in this pulse.
  4. Because indicators are hash-heavy, treat behavioral detections below as the primary net — recompiled variants will defeat hash matching alone.

Detection Engineering

YAML
---
title: SparroWocky Backdoor Registry Run Key Persistence
description: Detects persistence via registry Run keys with characteristics consistent with FamousSparrow/GhostEmperor SparroWocky and SparrowDoor implants — suspicious value names, non-standard binary paths, or masquerading update tasks.
id: 7a1f2c31-9b3e-4d6a-8f21-sparrowock0001
status: experimental
author: Security Arsenal Threat Intel
date: 2026/10/17
references:
  - https://www.welivesecurity.com/en/eset-research/beware-sparrowock-backdoor-bites-commands-catch/
logsource:
  category: registry_set
  product: windows
detection:
  selection_key:
    TargetObject|contains:
      - '\Software\Microsoft\Windows\CurrentVersion\Run'
      - '\Software\Microsoft\Windows\CurrentVersion\RunOnce'
  selection_suspicious_path:
    Details|contains:
      - '\ProgramData\'
      - '\AppData\Local\Temp\'
      - '\Users\Public\'
      - '\Windows\Temp\'
  filter_legit_vendors:
    Details|contains:
      - 'C:\Program Files\'
      - 'C:\Program Files (x86)\'
  condition: selection_key and selection_suspicious_path and not filter_legit_vendors
falsepositives:
  - Legitimate portable or IT-deployed software registering autorun entries
level: high
tags:
  - attack.persistence
  - attack.t1547.001
---
title: SparroWocky Suspicious DLL Side-Loading via Signed System Binary
description: Detects rundll32/regsvr32 execution of DLLs from user-writable or temp directories, matching GhostEmperor staging tradecraft for SparroWocky deployment on compromised government hosts.
id: 7a1f2c31-9b3e-4d6a-8f21-sparrowock0002
status: experimental
author: Security Arsenal Threat Intel
date: 2026/10/17
references:
  - https://www.welivesecurity.com/en/eset-research/beware-sparrowock-backdoor-bites-commands-catch/
logsource:
  category: process_creation
  product: windows
detection:
  selection_loader:
    Image|endswith:
      - '\rundll32.exe'
      - '\regsvr32.exe'
  selection_dll_path:
    CommandLine|contains:
      - '\AppData\'
      - '\ProgramData\'
      - '\Temp\'
      - '\Users\Public\'
  filter_system_dirs:
    CommandLine|contains:
      - 'C:\Windows\System32\'
      - 'C:\Windows\SysWOW64\'
  condition: selection_loader and selection_dll_path and not filter_system_dirs
falsepositives:
  - Software installers executing setup DLLs from temp paths
level: high
tags:
  - attack.defense-evasion
  - attack.t1218
  - attack.t1574.002
---
title: SparroWocky Backdoor Beaconing - Periodic Outbound Web Traffic from Non-Browser Process
description: Detects HTTP/HTTPS network connections from non-browser, non-update processes characteristic of SparroWocky C2 tasking channels disguised as ordinary web traffic.
id: 7a1f2c31-9b3e-4d6a-8f21-sparrowock0003
status: experimental
author: Security Arsenal Threat Intel
date: 2026/10/17
references:
  - https://www.welivesecurity.com/en/eset-research/beware-sparrowock-backdoor-bites-commands-catch/
logsource:
  category: network_connection
  product: windows
detection:
  selection_port:
    DestinationPort:
      - 80
      - 443
      - 8080
  selection_process:
    Image|endswith:
      - '\dllhost.exe'
      - '\svchost.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
  filter_private:
    DestinationIp|startswith:
      - '10.'
      - '192.168.'
      - '172.16.'
  condition: selection_port and selection_process and not filter_private
falsepositives:
  - Windows Update and legitimate svchost-originated traffic; baseline per-host before alerting
level: medium
tags:
  - attack.command-and-control
  - attack.t1071.001
KQL — Microsoft Sentinel / Defender
// SparroWocky / FamousSparrow hunt — hash match + behavioral pivots
// 1) Direct hash matches across file events
let SparroWockyHashes = dynamic([
  "23e228d5603b4802398b2e7419187aef71ff9dd5",
  "2560b7e28b322bb7a56d0b1da1b2652e1efe76ea",
  "4df896624695ea2780552e9ea3c40661dc84efc8",
  "76c430b55f180a85f4e1a1e40e4a2ea37db97599",
  "873f98caf234c3a8a9db18343dad7b42117e85d4",
  "b9601e60f87545441bf8579b2f62668c56507f4a",
  "bb2f5b573ac7a761015daad0b7ff03b294dc60f6",
  "c36ecd2e0f38294e1290f4b9b36f602167e33614"
]);
let HashHits = union isfuzzy=true
  ( DeviceFileEvents
    | where TimeGenerated > ago(90d)
    | where SHA1 in (SparroWockyHashes)
    | project TimeGenerated, DeviceName, FileName, FolderPath, SHA1, InitiatingProcessFileName ),
  ( DeviceProcessEvents
    | where TimeGenerated > ago(90d)
    | where SHA1 in (SparroWockyHashes)
    | project TimeGenerated, DeviceName, FileName, FolderPath, SHA1, InitiatingProcessFileName );
// 2) Behavioral: non-browser processes making external web connections (C2 tasking)
let SuspiciousBeaconing = DeviceNetworkEvents
  | where TimeGenerated > ago(14d)
  | where RemotePort in (80, 443, 8080)
  | where RemoteIPType == "Public"
  | where InitiatingProcessFileName in~ ("dllhost.exe", "svchost.exe", "rundll32.exe", "regsvr32.exe")
  | summarize ConnectionCount = count(), RemoteIPs = make_set(RemoteIP), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated)
    by DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath
  | where ConnectionCount >= 10;
HashHits;
SuspiciousBeaconing;
PowerShell
# SparroWocky / FamousSparrow IOC Hunt — run elevated on suspect endpoints
# Checks hash presence, Run-key persistence, suspicious scheduled tasks, and active C2-like connections

$sha1IOCs = @(
    '23e228d5603b4802398b2e7419187aef71ff9dd5',
    '2560b7e28b322bb7a56d0b1da1b2652e1efe76ea',
    '4df896624695ea2780552e9ea3c40661dc84efc8',
    '76c430b55f180a85f4e1a1e40e4a2ea37db97599',
    '873f98caf234c3a8a9db18343dad7b42117e85d4',
    'b9601e60f87545441bf8579b2f62668c56507f4a',
    'bb2f5b573ac7a761015daad0b7ff03b294dc60f6',
    'c36ecd2e0f38294e1290f4b9b36f602167e33614'
)

Write-Host "=== [1] Hash sweep of high-risk staging directories ===" -ForegroundColor Cyan
$searchPaths = @("$env:ProgramData", "$env:PUBLIC", "$env:TEMP", "$env:APPDATA")
foreach ($path in $searchPaths) {
    Get-ChildItem -Path $path -Recurse -Include *.dll,*.exe -ErrorAction SilentlyContinue | ForEach-Object {
        try {
            $h = (Get-FileHash $_.FullName -Algorithm SHA1 -ErrorAction Stop).Hash.ToLower()
            if ($sha1IOCs -contains $h) {
                Write-Host "[HIT] SparroWocky/SparrowDoor IOC: $($_.FullName) [$h]" -ForegroundColor Red
            }
        } catch {}
    }
}

Write-Host "=== [2] Registry Run-key persistence check ===" -ForegroundColor Cyan
$runKeys = @(
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run',
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce',
    'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
    'HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce'
)
foreach ($key in $runKeys) {
    if (Test-Path $key) {
        (Get-ItemProperty $key).PSObject.Properties | Where-Object {
            $_.Value -match 'ProgramData|AppData|Temp|Public' -and $_.Name -notmatch '^PS'
        } | ForEach-Object {
            Write-Host "[SUSPICIOUS] $key -> $($_.Name) = $($_.Value)" -ForegroundColor Yellow
        }
    }
}

Write-Host "=== [3] Scheduled tasks launching from user-writable paths ===" -ForegroundColor Cyan
Get-ScheduledTask | ForEach-Object {
    $actions = $_.Actions
    foreach ($a in $actions) {
        if ($a.Execute -match 'ProgramData|AppData|Temp|Public') {
            Write-Host "[SUSPICIOUS] Task '$($_.TaskName)' -> $($a.Execute) $($a.Arguments)" -ForegroundColor Yellow
        }
    }
}

Write-Host "=== [4] Active outbound connections from suspicious processes ===" -ForegroundColor Cyan
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
    Where-Object { $_.RemotePort -in @(80,443,8080) -and $_.RemoteAddress -notmatch '^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|127\.)' } |
    ForEach-Object {
        $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
        if ($proc.Name -match 'dllhost|rundll32|regsvr32|svchost') {
            Write-Host "[BEACON?] $($proc.Name) (PID $($proc.Id)) -> $($_.RemoteAddress):$($_.RemotePort)" -ForegroundColor Yellow
        }
    }

Write-Host "=== Hunt complete. Escalate any [HIT] findings to IR immediately. ===" -ForegroundColor Cyan

Response Priorities

Immediate (0–4 hours):

  • Push all 33 pulse IOCs to EDR custom-intelligence blocklists and email/web gateway hash feeds.
  • Retro-hunt 90 days of DeviceFileEvents/Sysmon EventID 1 telemetry for the listed SHA1 values — the implant has operated since August 2025.
  • Isolate any host returning a hash hit; capture memory before remediation for variant analysis.

24 hours:

  • For any confirmed-compromised host, force credential resets for all accounts with interactive or service logons on that machine — assume the operator harvested credentials during dwell time, even though SparroWocky is primarily a backdoor rather than a dedicated stealer.
  • Review outbound web proxy logs for periodic connections from server/workstation processes that are not browsers or sanctioned updaters.
  • Audit internet-facing Exchange, VPN, and edge appliances for exploitation artifacts — this actor's historic initial-access vector.

1 week:

  • Segment government/administrative VLANs from general user networks; restrict east-west SMB/RPC.
  • Enforce application control (WDAC/AppLocker) blocking DLL and EXE execution from ProgramData, AppData, Temp, and Public paths.
  • Deploy the Sigma detections above to production with tuned baselines for svchost/dllhost network behavior.
  • Subscribe to the OTX pulse author feed and ESET research channel for follow-on C2 infrastructure indicators — hash-only coverage decays fast against a re-tooling APT.

Related Resources

Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub

Is your security operations ready?

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