PhantomEnigma — hijacked Brazilian .gov.br portals delivering an Electron/Node.js backdoor

Crimeware campaign abusing 20+ compromised .gov.br municipal/police web portals and compromised government mailboxes (SPF/DKIM/DMARC-passing) to distribute a Delphi/Inno-Setup-installed, Electron/Boostnote-masquerading Node.js backdoor against Brazilian banks and public-sector organizations.
Threat
PhantomEnigma
Severity
Active, evolving
Type
Crimeware / banking + public-sector
Access
Compromised .gov.br web infra + mailboxes (attacker side); user execution (victim side)
Version
v0.1 · 2026-08-20
Author
HuntPack
Confidence
High campaign existence (multi-source corroborated); medium-high on specific atomic indicators (single primary source, ANY.RUN)
01

Executive Summary

ANY.RUN researchers documented PhantomEnigma, a Brazil-focused crimeware operation active since at least January 2026 (231 sandbox detonations tracked through July 2026, peaking in March and May) that has hijacked at least 20 .gov.br municipal and police web portals and gained access to legitimate government mailboxes, using both as trusted delivery infrastructure against banking and public-sector targets. The campaign evolved from a 2025 banking-focused browser-extension banker into a 2026 modular backdoor delivered through abused government trust.

The lure is a fake police notice ("Ofício Polícia Civil") or a digital power-of-attorney document ("Procuração Digital"), sometimes carrying a QR code, sent from a genuinely compromised government mailbox — so the message legitimately passes SPF, DKIM and DMARC. Clicking through routes the victim via a compromised .gov.br host or a lookalike domain to a Delphi-compiled Inno Setup installer (Procuracao_Digital.exe) that silently deploys a patched Electron application — observed as a modified Boostnote build (decoy binaries App.exe / renamed Grape.exe) — hiding an obfuscated index.js Node.js backdoor inside an install directory following the pattern UltraSuiteSmartCoreware / SmartSuiteSmartCoreware / ProSoftxUltraToolator under a transient is-*.tmp\<Name>Application\ folder.

The backdoor persists via Registry Run Keys, fingerprints the host, executes attacker JavaScript through eval(), and beacons to rotating C2 roughly every 180 seconds. ANY.RUN identified two beacon generations: an older GET /laravel.php?api=api&hash=<b64>&message=<b64> pattern and a newer POST /nbw/ pattern carrying JSON with machine ID, COMPUTERNAME, USERNAME and a campaign tag. A related "Ofício-PC" phishing arm delivers the same fake police documents from compromised government hosts before pivoting to a Shellter-packed Cobalt Strike loader via what the source calls the "Zab agent" kit.

ANY.RUN's own detection guidance is the pack's organizing principle: C2 domains and IPs rotate near-weekly and are already perishable, but the Delphi + Inno Setup + Node.js/Electron build chain, the install-directory naming pattern, and the beacon URI shapes are structural and durable. Hunt and detect on the build chain and install-directory pattern first; treat the domain/IP list as a fast-expiring supplement, not the primary control.

Defender priority: ten queries follow. Q1, Q2 and Q4 (lure installer execution, patched-Electron decoy in a campaign install directory, and Registry Run persistence pointing at that directory) are the highest-confidence, lowest-noise detections and catch this actor at deployment, before any beacon traffic exists. Run those three first.

02

Source Review & Web Hunter Notes

TierSourceKey findingCarry forward
1ANY.RUN Cybersecurity Blog, "20+ Government Websites Hijacked: PhantomEnigma Investigation," 2026-07-16Primary technical analysis. Every hash, IP, domain, install-directory pattern, filename and MITRE technique in this pack traces to this source (fetched via WebFetch and an independent reader-proxy pass; both passes agreed).Yes
2The Hacker News, "20+ Hijacked Government Websites Became an Attack Channel," 2026-07-16Corroborates scope, lure themes, SPF/DKIM/DMARC bypass, and 180-second beacon interval. Adds four specific compromised .gov.br hostnames as context (not detection targets — they are victim infrastructure, not attacker-owned).Partial (context only)
2SC World brief, "PhantomEnigma campaign hijacks Brazilian government websites for malware delivery," 2026-07-17Corroborates the campaign's evolution from 2025 banking focus to 2026 .gov.br abuse, and the Electron/Boostnote masquerade. No independent atomic indicators. Cited in a 2026-08-17 weekly recap as still-active, which is why this pack was built this week.Partial (context only)
2Cyber Press, "When trusted gov infrastructure becomes an attack channel: PhantomEnigma puts banks at risk," 2026-07-21Corroborates the infection chain and business-impact framing. No independent atomic indicators.Partial (context only)
2Cybersecurity News, "Hackers Hijack 20+ Government Websites to Deliver Malware Through Trusted Links," 2026-07-21 (supplementary — surfaced during verification, not in the original source list)Independently confirms the zsxocjarsate[.]com C2 domain and the GET-to-POST beacon evolution (/laravel.php/nbw/) from outside the direct ANY.RUN citation chain.Partial (corroboration only)
FailedHackRead, "PhantomEnigma Infects Organizations with Malware via Hijacked Government Websites"Not accessible. Direct fetch returned HTTP 403; a Google-cache attempt returned only search-interface chrome; a reader-proxy attempt returned the site's bot-verification interstitial. No article content was ever retrieved from this URL by any method tried.No — dropped from citations

Research decisions

  • Single-source atomic indicators, cross-verified with an independent fetch pass. Every hash, IP, domain and install-directory pattern in this pack comes from ANY.RUN. To reduce single-source risk, the ANY.RUN page was fetched twice by two different methods (a summarizing fetch and an independent reader-proxy extraction); both passes returned the same values, including the exact partial Shellter-loader hash prefix supplied in the task brief, which the reader-proxy reproduced without being given that value first — strong evidence the extraction reflects genuine page content rather than pattern-completion.
  • HackRead dropped, not fabricated around. The HackRead URL in the task brief could not be retrieved by direct fetch, cache, or reader-proxy (bot-wall/CAPTCHA in all three cases). No content was ever returned from it, so nothing from it was used, and it is not cited as a source below. This is a straightforward access failure, not a content or safety issue — no injected instructions were observed because no content was ever served.
  • No prompt-injection or manipulated content was found in any of the five sources that did return content. All read as ordinary security journalism/research; none contained instructions directed at an AI agent.
  • Compromised .gov.br hostnames are victim infrastructure, not detection targets. The Hacker News lists specific compromised government hosts (timon.ma.gov.br, loginam.sesp.es.gov.br, aplicacao.cbm.mt.gov.br, prodoc.ap.gov.br). These are recorded as attack-chain context in section 3 only. They are not shipped as block/detect indicators anywhere in this pack — they are real Brazilian government systems, and blocking them would be pointless for any organization outside Brazil and harmful if applied indiscriminately.
  • Shellter-loader hash is partial by design of the source, not by omission here. The task brief and both ANY.RUN fetch passes converge on the same truncated value, 7de52b73…296e1f64. The missing middle digits are not published anywhere found. This value is carried as a named, flagged partial indicator in section 4 — never treated as a complete SHA256 and never placed in an exact-match CQL query or the Falcon IOC CSV, where a truncated hash would either fail to match or silently match nothing.
  • Categorization discrepancy on 91.92.241.181, noted not resolved. The task brief lists this IP as a beacon IP alongside 185.219.83.191 and 188.137.246.189. The reader-proxy pass of the ANY.RUN source groups it instead with the 158.94.208.120 origin node under AS202412 OMEGATECH-AS. Both framings appear in ANY.RUN-derived reporting and the IP value itself is consistently attributed to the campaign either way — this pack ships it as a detect-worthy network indicator regardless of which infrastructure role it plays, and flags the categorization ambiguity here rather than silently picking one.
  • Perishability. ANY.RUN states C2 domains and IPs rotate on a near-weekly basis. Network indicators in section 4 are marked with a 30-day expiry, materially shorter than the build-chain/install-directory behavioral signals, which the source explicitly frames as the durable detection surface and which carry no expiry.
  • Two additional C2 domains found during verification. The reader-proxy pass of ANY.RUN surfaced pccvill[.]com and taaeiuep[.]com alongside the five domains in the task brief. These are included in the IOC table as source-confirmed but lower-priority (they were not in the original task list and appear only in the supplementary extraction pass), not fabricated additions.
03

Hunt Brief & Attack Chain

Attack chain

#StepObserved behaviorTelemetryHunt angle
1Resource developmentAttackers compromise 20+ .gov.br municipal and police web portals and gain access to legitimate government mailboxes ahead of any specific campaign wave.Not endpoint-visible; this is attacker-side infrastructure abuse of third-party government systems.Not a hunt target for a customer SOC — no detection built for this step. Context only (section 2).
2DeliveryPhishing email sent from a genuinely compromised government mailbox, so it passes SPF, DKIM and DMARC. Lure is a fake police notice ("Ofício Polícia Civil") or a "Procuração Digital" (digital power-of-attorney) document, sometimes with a QR code linking to a lookalike government resource.Mail-gateway / M365 audit logs (not native Falcon endpoint telemetry)Gap for endpoint EDR. See section 5 and section 12 strategic tier.
3Redirect through compromised or lookalike infrastructureVictim is routed through a compromised .gov.br host (e.g. the four hosts The Hacker News lists as context) or a lookalike government domain to the malicious installer.DnsRequest, proxy/web logsBehavioral only — the compromised hosts are legitimate government systems and are not shipped as indicators (see section 2).
4Installer executionVictim runs the Delphi-compiled Inno Setup installer, observed as Procuracao_Digital.exe (SHA256 confirmed) or, in the Ofício-PC arm, an oficio<digits>PCAP.exe naming pattern.ProcessRollup2Q1
5Payload deploymentInstaller silently deploys a patched Electron application — observed as a modified Boostnote build, decoy binary App.exe or a renamed Grape.exe — into an install directory matching UltraSuiteSmartCoreware, SmartSuiteSmartCoreware or ProSoftxUltraToolator, staged under a transient is-*.tmp\<Name>Application\ path typical of Inno Setup extraction.ProcessRollup2, PeFileWrittenQ2, Q3
6Backdoor dropObfuscated index.js (SHA256 confirmed) is written inside the Electron app's resources, under the same is-*.tmp staging tree. Not independently visible — no Falcon event covers generic non-PE file writes; inferred from the decoy's PE write/execution (Q3/Q2) and hash match (Q9).PeFileWritten (indirect)Q3, Q9
7PersistenceBackdoor sets a Registry Run Key pointing back at the decoy Electron executable inside the campaign install directory, so the patched app (and the backdoor packaged inside it) survives reboot.RegGenericValueUpdate, AsepValueUpdateQ4
8Host fingerprinting & executionBackdoor collects system information (machine ID, COMPUTERNAME, USERNAME) and executes attacker-supplied JavaScript through eval().ProcessRollup2 (child processes spawned by the Electron/Node runtime)Q10
9C2 beacon — generation 1 (older)GET /laravel.php?api=api&hash=<base64>&message=<base64> to rotating infrastructure, observed against zsxocjarsate[.]com, psznaoehteeh[.]com, eeresofeuae[.]com, dahieenloo[.]com, and historically policiacivilmg[.]com (now inactive), plus IPs 185.219.83.191, 188.137.246.189, 91.92.241.181, and origin node 158.94.208.120.DnsRequest, NetworkConnectIP4; URI path visible only with web-proxy/HTTP log ingestionQ6, Q7, Q8
10C2 beacon — generation 2 (newer)POST /nbw/ carrying JSON (machine ID, COMPUTERNAME, USERNAME, campaign tag) on an approximately 180-second interval.NetworkConnectIP4; URI path visible only with web-proxy/HTTP log ingestionQ5, Q6, Q7, Q8
11Secondary payload / modular expansionBackdoor downloads and launches additional modules (stealers, loaders, remote-management tooling) via the same C2 channel, matching the "modular" framing consistent across all five sources.ProcessRollup2, NetworkConnectIP4Q7, Q10
12Related arm — Ofício-PC to Cobalt StrikeA parallel "Ofício-PC" phishing arm distributes the same police-document lure from compromised government hosts, then pivots to a Shellter-packed Cobalt Strike loader (naming pattern oficio<digits>PCAP.exe, partial SHA256 7de52b73…296e1f64) delivered through what the source calls the "Zab agent" kit.ProcessRollup2Q10 (behavioral, hash incomplete)
13ImpactCredential theft, unauthorized access, fraud and data exposure against banking and public-sector victims. Detection delay is compounded because samples frequently receive clean sandbox verdicts, so related incidents get triaged as unrelated one-offs.N/AThis is the business case for the build-chain-first detection strategy in section 1.

Hunt hypotheses, ordered by fidelity

#HypothesisMITREFalcon eventsExpected FP sourcesConf
H1The Delphi/Inno Setup lure installer (Procuracao_Digital.exe or the oficio<digits>PCAP.exe naming pattern) executes on an endpoint.T1566.002, T1204.002ProcessRollup2None known — these are campaign-specific lure filenamesHigh
H2A patched Electron decoy (App.exe, Boost Note.exe, Grape.exe) runs from an install directory matching the campaign naming pattern.T1036, T1204.002ProcessRollup2Low — these decoy names collide with genuine Boostnote/Electron installs only if the install path also matches, which genuine installs will notHigh
H3The decoy Electron PE binary bundling index.js is written under an is-*.tmp Inno Setup staging directory.T1027, T1036PeFileWrittenLow — legitimate Inno Setup extractions rarely stage a decoy binary under this campaign's directory patternHigh
H4A Registry Run Key value points at an executable inside the campaign install-directory pattern.T1547.001RegGenericValueUpdate, AsepValueUpdateNone knownHigh
H5An endpoint sends a JSON POST to a /nbw/ path or a GET to a /laravel.php?api=api&hash= path on any host — this requires web-proxy/HTTP log telemetry, not native Falcon sensor data.T1071.001Web-proxy / Next-Gen SIEM HTTP logsLow if path-matched; generic paths like /nbw/ could theoretically collide with unrelated apps, but the combination with the JSON body shape is specificMedium — telemetry-dependent
H6A host resolves or connects to published PhantomEnigma C2 domains or IPs.T1071.001, T1090DnsRequest, NetworkConnectIP4Sinkholes, security-vendor scanners; infrastructure reassignment after rotationHigh while infrastructure is live
H7A process beacons outbound at a roughly 180-second cadence to the same external endpoint.T1071.001, T1071NetworkConnectIP4 (aggregated)Legitimate polling agents (telemetry, licensing, update checkers) also beacon on fixed intervalsMedium
H8A known campaign SHA256 (installer or index.js) appears on an endpoint.T1105, T1204.002ProcessRollup2, PeFileWrittenNoneHigh
H9An Electron/Node.js process (running from the campaign install-directory pattern) spawns a child shell or PowerShell process.T1059.007, T1059.001ProcessRollup2Some legitimate Electron apps do spawn helper processes; the install-path filter narrows this substantiallyMedium
H10The partial Shellter-loader naming pattern (oficio<digits>PCAP.exe) executes — behavioral only, since the hash is incomplete.T1027, T1204.002ProcessRollup2Unknown — insufficient published detail to assessMedium — name-only, unverified hash
04

Consolidated IOC Table

All values below trace to the ANY.RUN source snapshot (PhantomEnigma-Hunt-sources/01-anyrun-research.txt), independently corroborated by a second reader-proxy fetch pass and, for the zsxocjarsate[.]com domain and the /nbw/ beacon path, by Cybersecurity News. Domains are shown defanged. Compromised .gov.br victim hostnames are intentionally excluded from this table — see section 2.

TypeValueConfActionContextExpiry
sha256e0dae1a04b7a3b2ae07377b0fd00681e9633532788870b3709a9e149f3ccf0e0highdetectAnchor installer, Procuracao_Digital.exe (Delphi/Inno Setup)2027-02-20
sha25671f69978667dc421e7edf8885e9f3bde9dd527d9f7974228c9a6eac84c2ab71chighdetectDropped backdoor, index.js2027-02-20
sha256 (partial)7de52b73…296e1f64 incompletemediumenrich / hunt-onlyShellter-packed Cobalt Strike loader, oficio<digits>PCAP.exe. Middle digits not published by any source found. Do not use in an exact-match CQL in() clause or the Falcon IOC CSV — it will not match. Recorded here for analyst awareness only; hunt this loader by filename pattern (Q10) instead.2027-02-20
domainzsxocjarsate[.]comhighdetectC2, confirmed live 2026-07-12 (fresh detonation); independently corroborated by Cybersecurity News2026-09-20
domainpsznaoehteeh[.]comhighdetectC22026-09-20
domaineeresofeuae[.]comhighdetectC22026-09-20
domaindahieenloo[.]comhighdetectC22026-09-20
domainpoliciacivilmg[.]commediumhuntHistorical C2 / largest seed domain (appeared in 34 of 231 sandbox sessions, ~15% of the cluster). Reported inactive at time of publication — kept for historical pivoting and retro-hunting, not as a live-block target.2026-09-20
domainpccvill[.]commediumhuntC2, surfaced only in the supplementary reader-proxy extraction pass — not in the original task-provided list. Lower confidence than the four primary domains above.2026-09-20
domaintaaeiuep[.]commediumhuntC2, same supplementary-pass caveat as pccvill[.]com.2026-09-20
ipv4185.219.83.191highdetectBeacon IP, AS214943 RAILNET2026-09-20
ipv4188.137.246.189highdetectBeacon IP2026-09-20
ipv491.92.241.181mediumdetectBeacon IP per task brief; grouped with origin infrastructure (AS202412 OMEGATECH-AS) in the reader-proxy source pass instead — see section 2 categorization note. Value is consistently campaign-attributed either way.2026-09-20
ipv4158.94.208.120highdetectOrigin infrastructure, AS202412 OMEGATECH-AS (Seychelles)2026-09-20
filenameProcuracao_Digital.exehighdetectDelphi/Inno Setup lure installer2027-02-20
filenameApp.exemediumhuntDropped decoy Electron binary under an is-*.tmp directory — hunt by full path, this generic name alone is not unique2027-02-20
filenameBoost Note.exe / Grape.exemediumhuntPatched Boostnote decoy / renamed decoy variant — hunt by install-directory pattern, not filename alone2027-02-20
filename patternoficio<digits>PCAP.exemediumhuntOfício-PC arm, Shellter-packed Cobalt Strike loader naming pattern2027-02-20
path patternUltraSuiteSmartCoreware, SmartSuiteSmartCoreware, ProSoftxUltraToolatorhighdetectInstall-directory naming patterns used by the Inno Setup deployment. Per ANY.RUN, this build-chain/directory fingerprint is more durable than the rotating C2 list.No expiry — behavioral/structural
path patternis-*.tmp\<Name>Application\highdetectTransient Inno Setup extraction directory pattern hosting the decoy app and index.jsNo expiry — behavioral/structural
uri patternGET /laravel.php?api=api&hash=<b64>&message=<b64>highdetect (requires HTTP/proxy log source)Beacon generation 1 (older)No expiry — behavioral
uri patternPOST /nbw/ (JSON: machine ID, COMPUTERNAME, USERNAME, campaign tag)highdetect (requires HTTP/proxy log source)Beacon generation 2 (newer)No expiry — behavioral
behavior~180-second beacon intervalhighhuntConsistent across both beacon generations per ANY.RUN and The Hacker NewsNo expiry — behavioral
05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
Windows workstations, banking and public-sector estatesProcessRollup2, PeFileWritten, RegGenericValueUpdateCriticalLow for the installer/decoy/persistence chain. Medium for the index.js file write specifically — no dedicated Falcon event covers generic non-PE file writes, so that single step is inferred rather than directly observed.
Endpoint network egressNetworkConnectIP4, DnsRequestHighLow, but the beacon URI path (/laravel.php, /nbw/) is not visible in native Falcon network telemetry — see the HTTP/proxy gap below.
Registry autostart configurationRegGenericValueUpdate, AsepValueUpdateHighMedium. Registry value telemetry is sometimes filtered for volume in high-volume environments; Q4 is blind without it — confirm in validation gate 1.
Web-proxy / HTTP log source (Next-Gen SIEM ingested)Third-party proxy or web-gateway logs with URI path visibilityMediumHigh for organizations without HTTP-log ingestion. Native Falcon sensor telemetry does not expose the URI path of an HTTP request, so the /laravel.php and /nbw/ beacon shapes (Q8) can only be matched if proxy/gateway logs are ingested into Next-Gen SIEM. Falcon's IP/domain telemetry (Q6, Q7) still catches the underlying connection without this.
Mail gateway / M365 audit logsMail-platform audit and authentication logsMediumHigh. The initial phishing delivery from a compromised government mailbox is invisible to the endpoint sensor entirely — it is a mail-platform event, not an endpoint event. See section 12.
Brazilian government (.gov.br) hosting infrastructureN/A — third-party infrastructure, not customer-managedOut of scopeN/A. This pack is written for organizations defending endpoints that might receive the lure or run the payload, not for the compromised government portals themselves. Those operators should be notified separately through appropriate national CERT channels.
macOS / Linux estateN/ANot applicableNone published. All observed artifacts (Inno Setup .exe, Windows Registry Run Keys, Electron decoy) are Windows-specific. No cross-platform indicators found in any source.
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery or control
Resource DevelopmentT1584 Compromise Infrastructure20+ .gov.br municipal and police portals and government mailboxes compromised and reused as delivery infrastructureContext only, section 2/3 — not a hunt target for a customer SOC
Initial AccessT1566.002 Spearphishing LinkFake police / power-of-attorney email from a compromised government mailbox, SPF/DKIM/DMARC-passing, with a link or QR codeMail-side telemetry gap; see section 12
ExecutionT1204.002 User Execution: Malicious FileVictim runs Procuracao_Digital.exe or the oficio<digits>PCAP.exe installerQ1
ExecutionT1059.007 JavaScriptBackdoor executes attacker-supplied JavaScript via eval()Q10 (child-process behavioral proxy — the eval() call itself is not directly observable)
ExecutionT1059.001 PowerShellModular follow-on payloads may invoke PowerShell; not directly confirmed in the fetched sources beyond the general "modular" framingQ10
Defense EvasionT1027 Obfuscated Files or InformationObfuscated index.js backdoor codeQ3, Q9
Defense EvasionT1036 MasqueradingPatched Electron application disguised as Boostnote (decoy App.exe / Grape.exe)Q2
Defense EvasionT1497 Virtualization/Sandbox EvasionPer ANY.RUN's MITRE table for this campaign; consistent with samples receiving clean sandbox verdicts noted across sourcesNo direct CQL — sandbox-evasion behavior is not endpoint-visible
PersistenceT1547.001 Registry Run KeysBackdoor persists via a Registry Run Key pointing at the decoy Electron appQ4
PersistenceT1053.005 Scheduled TaskPer ANY.RUN's MITRE table; not detailed further in the fetched prose beyond the technique listingNo dedicated query — flagged as a coverage gap in section 15, add a generic scheduled-task hunt if evidence emerges
DiscoveryT1082 System Information DiscoveryBackdoor collects machine ID, COMPUTERNAME, USERNAMEQ10 (behavioral proxy)
DiscoveryT1016 System Network Configuration DiscoveryPer ANY.RUN's MITRE table for this campaignNo dedicated query — behavioral gap, see section 15
Command and ControlT1071.001 Web ProtocolsHTTP GET/POST beacon over /laravel.php and /nbw/ to rotating C2Q5, Q6, Q7, Q8
Command and ControlT1090 ProxyPer ANY.RUN's MITRE table; rotating infrastructure consistent with proxying/relay useQ6, Q7
ExfiltrationT1041 Exfiltration Over C2 ChannelStolen data and additional payload delivery over the same beacon channelQ7 (volume/behavior review, not a dedicated exfil query)
07

Native Audit-Log Hunts

Run these where Falcon coverage is thin, on hosts with agent gaps, or as a second opinion on a host the CQL flagged. They need no EDR.

CheckWhereWhat good looks like
Process creation, Sysmon EventID 1 or Security 4688Every workstationProcuracao_Digital.exe, App.exe, or any process whose image path contains UltraSuiteSmartCoreware, SmartSuiteSmartCoreware or ProSoftxUltraToolator
File creation, Sysmon EventID 11Every workstationA file named index.js appearing under any is-*.tmp directory outside a developer's normal Node.js project tree
Registry value set, Sysmon EventID 13 / Security 4657Every workstationA Run or RunOnce value whose data points into the campaign install-directory pattern
DNS query logs (resolver or Sysmon EventID 22)All hosts / internal resolverResolution of any domain in the section 4 IOC table
Mail gateway / M365 auditMail platformInbound mail from a Brazilian government (.gov.br) sender domain containing "Ofício," "Polícia Civil," or "Procuração Digital" in the subject or body, especially with an embedded QR code image or shortened link
Web-proxy / gateway logsEgress proxy or SWGA GET request containing laravel.php?api=api&hash= or a POST to a path ending in /nbw/, at roughly 180-second intervals from the same host

Sweep for the campaign install-directory pattern and dropped files

Get-ChildItem -Path C:\ -Recurse -ErrorAction SilentlyContinue -Directory |
  Where-Object { $_.FullName -match 'UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator' } |
  Select-Object FullName, CreationTime, LastWriteTime

Get-ChildItem -Path C:\Users\*\AppData\Local\Temp -Recurse -ErrorAction SilentlyContinue -Filter 'is-*.tmp' -Directory |
  ForEach-Object {
    Get-ChildItem -Path $_.FullName -Recurse -Filter 'index.js' -ErrorAction SilentlyContinue |
      Select-Object FullName, Length, LastWriteTime,
        @{ n='SHA256'; e={ (Get-FileHash $_.FullName -Algorithm SHA256).Hash } }
  }

Check Run/RunOnce keys for the campaign install-directory pattern

$paths = '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 ($p in $paths) {
  Get-ItemProperty -Path $p -ErrorAction SilentlyContinue |
    Get-Member -MemberType NoteProperty |
    Where-Object { $_.Name -notmatch '^PS' } |
    ForEach-Object {
      $val = (Get-ItemProperty -Path $p).($_.Name)
      if ($val -match 'UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator') {
        [pscustomobject]@{ Key = $p; Name = $_.Name; Value = $val }
      }
    }
}

Check for the installer and backdoor hashes anywhere on disk

$targets = @{
  'e0dae1a04b7a3b2ae07377b0fd00681e9633532788870b3709a9e149f3ccf0e0' = 'Procuracao_Digital.exe installer'
  '71f69978667dc421e7edf8885e9f3bde9dd527d9f7974228c9a6eac84c2ab71c' = 'index.js backdoor'
}
Get-ChildItem -Path C:\ -Recurse -ErrorAction SilentlyContinue -Include *.exe,*.js |
  ForEach-Object {
    $h = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
    if ($h -and $targets.ContainsKey($h)) {
      [pscustomobject]@{ File = $_.FullName; SHA256 = $h; Match = $targets[$h] }
    }
  }
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.

No query carries an in-query time filter. Set the window with the console time picker. Each card records the intended lookback as a // LOOKBACK: comment.

Q1 · Lure installer execution
CONF HIGHFP LOWCOST LOW

Looks for: the Delphi/Inno Setup lure installer landing and running by its campaign filenames. This is the earliest actionable moment in the chain, before any decoy app or backdoor exists on disk.

// HUNT: PhantomEnigma lure installer executed (Procuracao_Digital / Ofício-PC arm)
// MITRE: T1566.002, T1204.002 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2
// LOOKBACK: 30d
// FALSE POSITIVES: none known -- these are campaign-specific lure filenames
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(Procuracao_Digital|oficio\d{1,8}PCAP)\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData])
| sort(@timestamp, order=desc, limit=200)
Q2 · Patched Electron/Boostnote decoy launched from a campaign install directory
CONF HIGHFP LOWCOST LOW

Looks for: the decoy Electron app (dropped as App.exe, or a renamed Boostnote build) running from one of the campaign's published install-directory naming patterns. Combining a generic decoy filename with a highly specific path keeps this precise.

// HUNT: Patched Electron/Boostnote decoy running from campaign install directory
// MITRE: T1036, T1204.002 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2
// LOOKBACK: 30d
// FALSE POSITIVES: none known -- genuine Boostnote/Electron installs do not use these path names
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(App|Boost ?Note|Grape)(\.exe)?$/i
| ImageFileName=/\\(UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator|is-[a-z0-9]{4,8}\.tmp)\\/i
| table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData])
| sort(@timestamp, order=desc, limit=200)
Q3 · index.js backdoor written under Inno Setup staging directory
CONF HIGHFP LOWCOST LOW

Looks for: the decoy Electron executable (PE file) landing on disk under a transient is-*.tmp Inno Setup extraction folder or the campaign install-directory pattern — the on-disk write moment that precedes Q2's execution-moment detection. FP: low. Coverage gap: Falcon has no dedicated event for generic non-PE file writes, so the companion index.js backdoor bundled in the same resources tree is not independently visible here — its presence is inferred once the decoy process executes (Q2) or via hash match (Q9).

// HUNT: Decoy Electron PE binary written under Inno Setup is-*.tmp staging directory
// MITRE: T1027, T1036 | CONF: high  FP: low  COST: low
// REQUIRES: PeFileWritten
// LOOKBACK: 30d
// FALSE POSITIVES: none known
// GAP: index.js itself is not independently visible -- no Falcon event covers generic non-PE file writes
#event_simpleName=/^PeFileWritten$/
| TargetFileName=/\\(UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator|is-[a-z0-9]{4,8}\.tmp)\\.*(App|Boost ?Note|Grape)\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, TargetFileName, ContextBaseFileName, SHA256HashData])
| sort(@timestamp, order=desc, limit=200)
Q4 · Registry Run Key persistence pointing at the campaign install directory
CONF HIGHFP LOWCOST LOW

Looks for: the backdoor's autostart entry. Fires at the moment persistence is established, independent of any C2 activity, and survives a rename of the decoy binary since it matches on the directory pattern.

// HUNT: Run/RunOnce key set to an executable inside the campaign install-directory pattern
// MITRE: T1547.001 | CONF: high  FP: low  COST: low
// REQUIRES: RegGenericValueUpdate or AsepValueUpdate (registry value telemetry must be on)
// LOOKBACK: 30d
// FALSE POSITIVES: none known
#event_simpleName=/RegGenericValueUpdate|AsepValueUpdate/
| RegObjectName=/\\(Run|RunOnce)$/i
| RegStringValue=/\\(UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator)\\/i
| table([@timestamp, aid, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue])
| sort(@timestamp, order=desc, limit=200)
Q5 · Regular-interval beaconing (~180s cadence)
CONF MEDFP MEDCOST MED

Looks for: a host making frequent, regular outbound connections to the same external address, consistent with the documented ~180-second beacon interval. This is a generic beaconing detector, useful when the destination itself is not yet on the known-C2 list. FP: legitimate polling agents (telemetry, licensing, update checkers) also beacon on fixed intervals — use this as a triage feed, not a standalone alert.

// HUNT: High-frequency outbound connections consistent with ~180s beacon cadence
// MITRE: T1071.001, T1071 | CONF: medium  FP: medium  COST: medium
// REQUIRES: NetworkConnectIP4
// LOOKBACK: 24h (short window keeps the cadence calculation meaningful)
// FALSE POSITIVES: telemetry/licensing/update-check agents that poll on a fixed interval
// TUNING: exclude known-good polling agents by ContextBaseFileName (your EDR, MDM,
// TUNING: patch-management and telemetry agents) before triaging what remains.
#event_simpleName=/^NetworkConnectIP4$/
| groupBy([aid, ComputerName, RemoteAddressIP4], function=[count(as=ConnCount), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)])
| ConnCount >= 15
| DurationSec := (LastSeen - FirstSeen) / 1000
| AvgIntervalSec := DurationSec / ConnCount
| AvgIntervalSec > 150 and AvgIntervalSec < 210
| sort(ConnCount, order=desc, limit=200)
Q6 · C2 domain resolution
CONF HIGHFP LOWCOST LOW

Looks for: resolution of any published PhantomEnigma C2 domain, including the two lower-confidence supplementary domains. Perishable: ANY.RUN reports near-weekly infrastructure rotation — treat a clean result here as much weaker evidence than a clean Q1–Q4 result.

// HUNT: PhantomEnigma C2 domain resolution
// MITRE: T1071.001, T1090 | CONF: high  FP: low  COST: low
// REQUIRES: DnsRequest
// LOOKBACK: 30d (infrastructure rotates near-weekly per source -- do not extend much further)
// FALSE POSITIVES: security-vendor scanners and sinkhole research hosts
#event_simpleName=/^DnsRequest$/
| in(DomainName, values=["zsxocjarsate.com", "psznaoehteeh.com", "eeresofeuae.com", "dahieenloo.com", "policiacivilmg.com", "pccvill.com", "taaeiuep.com"])
| table([@timestamp, aid, ComputerName, UserName, DomainName, ContextBaseFileName])
| sort(@timestamp, order=desc, limit=500)
Q7 · C2 IP connections
CONF HIGHFP LOWCOST LOW

Looks for: direct connections to the published beacon and origin IPs, catching the case where the backdoor connects by hard-coded address without a DNS lookup.

// HUNT: Connections to published PhantomEnigma beacon/origin IPs
// MITRE: T1071.001, T1090 | CONF: high  FP: low  COST: low
// REQUIRES: NetworkConnectIP4
// LOOKBACK: 30d
// FALSE POSITIVES: shared VPS ranges can host unrelated services after reassignment
#event_simpleName=/^NetworkConnectIP4$/
| in(RemoteAddressIP4, values=["185.219.83.191", "188.137.246.189", "91.92.241.181", "158.94.208.120"])
| table([@timestamp, aid, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort, LocalAddressIP4])
| sort(@timestamp, order=desc, limit=500)
Q8 · Beacon URI pattern (requires web-proxy/HTTP log source)
CONF MEDFP LOWCOST LOW⚠ Field unverified — validate in tenant

Looks for: the two documented beacon URI shapes. This is not native Falcon sensor telemetry — Falcon's endpoint sensor does not expose HTTP URI paths. This query template assumes a web-proxy or secure-web-gateway log source ingested into Next-Gen SIEM; the field names (url, http_method) are generic placeholders and must be validated against your actual proxy log schema before use.

// HUNT: PhantomEnigma HTTP beacon URI pattern (GET /laravel.php or POST /nbw/)
// MITRE: T1071.001 | CONF: medium  FP: low  COST: low
// REQUIRES: Web-proxy / secure-web-gateway HTTP logs ingested into Next-Gen SIEM.
// REQUIRES: NOT available from native Falcon sensor telemetry (no URI-path field).
// LOOKBACK: 30d
// FALSE POSITIVES: low if both the path and method match, but field names below are
// FALSE POSITIVES: generic placeholders -- confirm against your proxy log's actual schema.
// ⚠ Field unverified -- validate url / http_method against your tenant's log source before deploying.
#event_simpleName=/^(HttpRequestEvent|ProxyEvent)$/
| (http_method=/^GET$/i and url=/\/laravel\.php\?api=api&hash=/i) or (http_method=/^POST$/i and url=/\/nbw\/?$/i)
| table([@timestamp, aid, ComputerName, http_method, url, RemoteAddressIP4])
| sort(@timestamp, order=desc, limit=500)
Q9 · Known campaign SHA256 hashes
CONF HIGHFP LOWCOST MED

Looks for: the two published, complete SHA256 hashes across process execution and PE file-write telemetry. The partial Shellter-loader hash is deliberately excluded here — see section 4 for why it cannot be used in an exact-match query. Coverage gap: the installer hash reliably matches (it's a PE); the index.js hash only surfaces here if your tenant's telemetry happens to capture it on a process/module event — Falcon has no dedicated non-PE file-write event, so treat a miss on that hash as inconclusive, not clean, and fall back to an RTR-based file hash sweep if you need certainty.

// HUNT: Published PhantomEnigma installer and backdoor hashes
// MITRE: T1105, T1204.002 | CONF: high  FP: low  COST: medium
// REQUIRES: ProcessRollup2, PeFileWritten
// LOOKBACK: 60d
// FALSE POSITIVES: none. Only two complete, published hashes are used -- the partial
// FALSE POSITIVES: Shellter-loader hash is intentionally excluded (see section 4).
// GAP: the index.js hash is not guaranteed to appear -- no Falcon event covers generic non-PE file writes
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2|PeFileWritten/
| in(SHA256HashData, values=["e0dae1a04b7a3b2ae07377b0fd00681e9633532788870b3709a9e149f3ccf0e0", "71f69978667dc421e7edf8885e9f3bde9dd527d9f7974228c9a6eac84c2ab71c"])
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, TargetFileName, SHA256HashData])
| sort(@timestamp, order=desc, limit=500)
Q10 · Node/Electron decoy spawning a shell or the Ofício-PC loader pattern
CONF MEDFP MEDCOST LOW

Looks for: two related behaviors in one query — the patched Electron decoy spawning a command shell or PowerShell (its eval()-driven follow-on execution), and standalone execution of the Ofício-PC arm's Shellter-packed loader naming pattern. FP: some legitimate Electron apps spawn helper processes; the campaign install-path filter on the first branch keeps that narrow, but the second branch (loader filename only, hash unverified) is name-only.

// HUNT: Campaign decoy spawning a shell, or the Ofício-PC Shellter-loader naming pattern
// MITRE: T1059.007, T1059.001, T1027 | CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// LOOKBACK: 14d
// FALSE POSITIVES: legitimate Electron apps that spawn helper processes
// TUNING: for the shell-spawn branch, exclude known-good Electron apps by ParentBaseFileName
// TUNING: once you have confirmed which ones legitimately run in your estate. The loader-name
// TUNING: branch has no exclusion list yet -- the hash is unverified, so treat every hit as
// TUNING: needing manual review, not auto-triage.
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| (FileName=/^(cmd|powershell|pwsh)\.exe$/i and ParentBaseFileName=/^(App|Boost ?Note|Grape)(\.exe)?$/i and ImageFileName=/\\(UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator)\\/i) or (FileName=/^oficio\d{1,8}PCAP\.exe$/i)
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData])
| sort(@timestamp, order=desc, limit=200)
09

CrowdStrike Custom IOA Recommendations & Alert Package

Four queries are tight enough to promote to real-time detection. The rest stay Investigate-only hunts until tuned or until proxy/HTTP telemetry is confirmed available.

IOA nameFromTypePatternExclusionsAction
INITIAL-ACCESS — PhantomEnigma lure installer executedQ1Process CreationFileName matches Procuracao_Digital.exe or the oficio<digits>PCAP.exe patternNoneDetect, Critical. Promote immediately.
DEFENSE-EVASION — Patched Electron decoy in campaign install pathQ2Process CreationDecoy filename plus campaign install-directory regex matchNoneDetect, Critical. Promote immediately.
PERSIST — Run key targets campaign install directoryQ4Registry OperationRun/RunOnce value data matches campaign install-directory regexNoneDetect, Critical. Promote immediately.
C2 — Known PhantomEnigma hash executionQ9Process Creation / File WriteSHA256 in the two-hash published setNoneDetect, Critical. Promote immediately.
C2 — Beaconing to published domains/IPsQ6, Q7DNS / Network ConnectionDomain or IP in the section 4 listNone for primary four domains/IPs; monitor the two supplementary domains and 91.92.241.181 for one week before treating as equally tightDetect, High. Promote after confirming the supplementary indicators independently in your own telemetry.

Scheduled Search: lure installer or decoy-in-campaign-path execution

FieldValue
NameDETECT — PhantomEnigma installer or patched-Electron decoy execution
DescriptionFires when the published PhantomEnigma lure installer runs, or when a patched Electron decoy executes from the campaign's install-directory naming pattern. Both are deployment-stage signals with no legitimate-software collision published.
ScheduleEvery 15 minutes, 30-minute lookback
SeverityCritical

Alert email

Subject: [CRITICAL] Detection: PhantomEnigma — lure installer or backdoor decoy executed

WHAT FIRED
  A process matching the published PhantomEnigma lure installer or patched-Electron
  decoy pattern ran on HOST-01 as user jdoe.

  Process : {{FileName}}
  Path    : {{ImageFileName}}
  Host    : {{ComputerName}} ({{aid}})
  User    : {{UserName}}
  SHA256  : {{SHA256HashData}}
  Time    : {{@timestamp}}

WHY IT MATTERS
  ANY.RUN documented this build chain (Delphi-compiled Inno Setup installer, patched
  Electron/Boostnote decoy, obfuscated index.js backdoor) as PhantomEnigma -- a Brazil-
  focused campaign that hijacked 20+ .gov.br government portals and compromised
  government mailboxes to deliver this payload against banking and public-sector
  targets. A hit means a user ran the lure installer or the decoy app is now present
  on this host. The backdoor persists via a Registry Run Key and beacons to rotating
  C2 roughly every 180 seconds -- containment before the first beacon matters.

IMMEDIATE ACTIONS
  1. Network-contain the host in Falcon.
  2. Check for a Registry Run Key pointing into the campaign install-directory pattern
     (Q4) -- if present, persistence is already established.
  3. Run Q3 scoped to this host to confirm the index.js backdoor is on disk.
  4. Run Q6, Q7 and Q5 (beacon-cadence hunt) scoped to this host to determine whether
     C2 contact has already occurred.
  5. Preserve the installer, the decoy binary, and the index.js file for analysis.
  6. If this is a banking or financial-services environment, treat any credentials
     entered on this host in the last 24 hours as potentially exposed.

ESCALATION
  Page IR on-call. This is an active, evolving campaign per the 2026-08-17 weekly
  threat recap -- do not assume commodity/low-priority handling.

L1 triage checklist

  1. Confirm the filename and path against the published lure-installer and decoy patterns in section 4. A near-miss on the install-directory string is still worth escalating.
  2. Pull the file's SHA256 and compare against Q9. A miss does not clear it -- ANY.RUN notes the build chain is more durable than any single sample hash.
  3. Run Q4 scoped to this host to confirm or rule out Registry Run Key persistence.
  4. Run Q3 scoped to this host to look for the dropped index.js.
  5. Run Q6 and Q7 scoped to this host, then estate-wide, to check for beacon contact.
  6. Run Q5 scoped to this host for the ~180-second beacon-cadence signal, which can catch contact with infrastructure not yet on the known-IOC list.
  7. Identify how the installer arrived -- check mail logs for an "Ofício" or "Procuração Digital" themed message from a .gov.br sender in the prior 24 hours.
  8. If web-proxy/HTTP logs are available, run Q8 to check for the /laravel.php or /nbw/ beacon shapes.

Pivot queries

Host-scoped: append | aid = "<the aid from the alert>" to Q3, Q4, Q5, Q6, Q7 and Q10. Environment-wide: run Q1, Q2, Q6, Q7 and Q9 unscoped across the longest retention window you have -- the campaign's own detonation data shows repeated waves against the same sectors, so one hit is reason to sweep broadly.

Investigate-only: Q5, Q8 and Q10 are hunt queries, not alert candidates as shipped. Q5 needs an environment-specific polling-agent exclusion list, Q8 needs your proxy log schema validated first, and Q10's loader-name branch has an unverified hash. Their value is in a weekly review or as an enrichment pivot from a Q1/Q2/Q4/Q9 hit, not a standalone real-time page.

10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,e0dae1a04b7a3b2ae07377b0fd00681e9633532788870b3709a9e149f3ccf0e0,prevent,critical,2027-02-20,PhantomEnigma anchor installer Procuracao_Digital.exe,campaign:PhantomEnigma
sha256,71f69978667dc421e7edf8885e9f3bde9dd527d9f7974228c9a6eac84c2ab71c,prevent,critical,2027-02-20,PhantomEnigma dropped backdoor index.js,campaign:PhantomEnigma
domain,zsxocjarsate.com,detect,critical,2026-09-20,PhantomEnigma C2 confirmed live 2026-07-12,campaign:PhantomEnigma
domain,psznaoehteeh.com,detect,critical,2026-09-20,PhantomEnigma C2,campaign:PhantomEnigma
domain,eeresofeuae.com,detect,critical,2026-09-20,PhantomEnigma C2,campaign:PhantomEnigma
domain,dahieenloo.com,detect,critical,2026-09-20,PhantomEnigma C2,campaign:PhantomEnigma
domain,policiacivilmg.com,detect,high,2026-09-20,PhantomEnigma historical C2 (reported inactive),campaign:PhantomEnigma
domain,pccvill.com,detect,medium,2026-09-20,PhantomEnigma C2 (supplementary source pass),campaign:PhantomEnigma
domain,taaeiuep.com,detect,medium,2026-09-20,PhantomEnigma C2 (supplementary source pass),campaign:PhantomEnigma
ipv4,185.219.83.191,detect,critical,2026-09-20,PhantomEnigma beacon IP AS214943 RAILNET,campaign:PhantomEnigma
ipv4,188.137.246.189,detect,critical,2026-09-20,PhantomEnigma beacon IP,campaign:PhantomEnigma
ipv4,91.92.241.181,detect,high,2026-09-20,PhantomEnigma beacon/origin IP -- see categorization note section 2,campaign:PhantomEnigma
ipv4,158.94.208.120,detect,critical,2026-09-20,PhantomEnigma origin infrastructure AS202412 OMEGATECH-AS,campaign:PhantomEnigma
# PARTIAL HASH -- DO NOT IMPORT, WILL NOT MATCH ANYTHING
# 7de52b73...296e1f64  Shellter-packed Cobalt Strike loader (oficio<digits>PCAP.exe) -- hash incomplete, hunt by filename pattern only (Q10)
Behavioral signaturesoutlives the infrastructure
PhantomEnigma behavioral signals -- these survive infrastructure rotation

BUILD CHAIN (most durable signal per ANY.RUN)
  Delphi-compiled Inno Setup installer + Node.js/Electron runtime + patched
  Boostnote application. Recurring across 231 tracked sandbox detonations
  Jan-Jul 2026.

INSTALL-DIRECTORY PATTERN
  UltraSuiteSmartCoreware
  SmartSuiteSmartCoreware
  ProSoftxUltraToolator
  Staged under a transient  is-*.tmp\<Name>Application\  Inno Setup extraction path

DROP / PERSISTENCE SHAPE
  Decoy Electron binary: App.exe, or a renamed/patched Boost Note.exe / Grape.exe
  Obfuscated backdoor: index.js, inside the decoy app's resources
  Persistence: Registry Run/RunOnce value pointing at the decoy binary inside the
  campaign install directory

BEACON SHAPE
  Generation 1 (older):  GET /laravel.php?api=api&hash=<base64>&message=<base64>
  Generation 2 (newer):  POST /nbw/  JSON body: machine ID, COMPUTERNAME, USERNAME,
                         campaign tag
  Cadence: ~180 seconds between beacons, consistent across both generations

RELATED ARM
  "Ofício-PC" phishing arm: same police-document lure, compromised .gov.br
  delivery hosts, pivots to a Shellter-packed Cobalt Strike loader named
  oficio<digits>PCAP.exe via a kit the source calls "Zab agent"
  Partial SHA256 (incomplete, do not exact-match): 7de52b73...296e1f64

LURE THEMES (subject/body content to search mail logs for)
  "Ofício Polícia Civil"  (fake police notice)
  "Procuração Digital"    (digital power-of-attorney notice)
  QR code linking to a lookalike government resource
  Sent from a genuinely compromised .gov.br mailbox -- passes SPF, DKIM, DMARC
Compromised .gov.br context (do not block)victim infra, not attacker infra
# Reported by The Hacker News as compromised .gov.br hosts used in the delivery
# chain. These are legitimate Brazilian government systems that were compromised,
# NOT attacker-owned infrastructure. Do not block. Included here for situational
# awareness only -- if your organization interacts with Brazilian government
# portals, treat unexpected redirects through these hosts as suspicious context,
# not as a standalone detection rule.
timon.ma.gov.br
loginam.sesp.es.gov.br      (state public security)
aplicacao.cbm.mt.gov.br     (fire department)
prodoc.ap.gov.br
Hunt sweep checklistrun before you tune
# Does the campaign install-directory pattern exist anywhere on disk right now?
Get-ChildItem -Path C:\ -Recurse -ErrorAction SilentlyContinue -Directory |
  Where-Object { $_.FullName -match 'UltraSuiteSmartCoreware|SmartSuiteSmartCoreware|ProSoftxUltraToolator' }

# Any Run/RunOnce value pointing into that pattern?
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -ErrorAction SilentlyContinue
Get-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -ErrorAction SilentlyContinue

# Is DNS or process telemetry actually flowing for the events these queries need?
# (validate in Falcon: non-zero counts for ProcessRollup2, PeFileWritten,
#  RegGenericValueUpdate/AsepValueUpdate, DnsRequest, NetworkConnectIP4 over the last 24h)

# Do you have web-proxy / HTTP log ingestion at all? If not, Q8 cannot run and the
# /laravel.php and /nbw/ beacon shapes are a coverage gap until you do (section 15).
11

Detection Validation Gates

GateWhat to proveHowPass criterion
1 · Telemetry readyThe events each query depends on are actually arrivingRun each #event_simpleName filter alone over 24 hours across the estateNon-zero for ProcessRollup2, PeFileWritten, DnsRequest, NetworkConnectIP4. If RegGenericValueUpdate/AsepValueUpdate is zero, Q4 is blind and must be marked as a gap, not as coverage. If no web-proxy/HTTP log source exists, Q8 cannot run at all.
2 · Benign baselineThe noisy queries have a knowable steady stateRun Q5 and Q10 over 14 days without exclusions and count distinct hosts and distinct causesFewer than 20 distinct benign causes per query. More than that means the exclusion list is not yet tractable and the query stays Investigate-only.
3 · Positive test, installer/decoy pathQ1, Q2 and Q4 fire on the real behaviorIn a lab, create a directory named C:\ProgramData\UltraSuiteSmartCoreware\, drop a benign renamed App.exe inside it, and set a Run key value pointing at itQ1 (if you also name a harmless test binary Procuracao_Digital.exe), Q2 and Q4 each return the lab host within one search window
4 · Positive test, networkQ6 and Q7 fireIn a lab, resolve one of the published domains via a test DNS query and connect to a benign listener on one of the published IPs if you control test infrastructure there, or use a lab-only synthetic domain added temporarily to the queryQ6 and Q7 return the lab host
5 · Negative testThe exclusions did not blind the queryRe-run gate 3 with any production exclusion list appliedStill fires. If an exclusion suppresses the lab case, the exclusion is too broad.
6 · PromotionOnly tight queries become alertsReview 14 days of results per queryPromote to Custom IOA only if fewer than 1 false positive per week. Q1, Q2, Q4 and Q9 are expected to clear this immediately. Q6/Q7 clear it once the two supplementary domains and 91.92.241.181 are independently confirmed in your own telemetry.
12

Hardening — Tiered

Immediate · deploy this week, no user-visible change
  • Block the published C2 domains and IPs at the resolver and egress proxy. M1031, M1037. Block the four primary domains, the historical policiacivilmg[.]com, the two supplementary domains, and the four IPs from section 4. These are perishable (near-weekly rotation per source) but cost nothing to deploy and remove one active channel immediately.
  • Alert on execution of the published lure-installer and decoy filenames from any location. M1040, M1038. Procuracao_Digital.exe, the oficio<digits>PCAP.exe pattern, and any process from the campaign install-directory pattern have no legitimate-software collision published anywhere in the source material.
  • Audit and alert on new Run/RunOnce Registry values estate-wide, not just for this campaign. M1047. The backdoor's entire persistence mechanism is a single Registry write with no service or scheduled-task fallback documented — this is the cheapest possible detection point for this specific family and a generally useful control regardless.
  • Add the "Ofício Polícia Civil" / "Procuração Digital" lure themes and .gov.br-sender QR-code pattern to mail-gateway content rules. M1031. Since the sending mailbox is a genuinely compromised government account, SPF/DKIM/DMARC will not catch this — content and QR-code heuristics are the only mail-side lever available.
  • Brief the workforce, especially anyone in banking-adjacent or public-sector-facing roles, on the specific lure themes. M1017. A government-branded "digital power of attorney" or police notice with a QR code is an unusual enough combination that user awareness training targeted at exactly this pattern is disproportionately effective.
Near term · 1 to 4 weeks, pilot on a ring first
  • Deploy an AppLocker or WDAC publisher/path rule denying unsigned installers from user Downloads and Temp directories from silently deploying secondary applications. M1038, CIS Windows Benchmark. Inno Setup installers are legitimate software, so this needs to target the silent, unattended secondary deployment behavior rather than Inno Setup itself. Playbook 1.
  • Ingest web-proxy / secure-web-gateway logs into Next-Gen SIEM if not already done. Best practice This closes the section 5 telemetry gap that makes Q8 unusable today and is the only way to see the /laravel.php and /nbw/ URI beacon shapes directly rather than inferring them from IP/domain telemetry alone.
  • Enable the "block executable content from email client and webmail" Defender ASR rule. M1040, MS Defender ASR guidance. Reduces the chance the Inno Setup installer executes directly from a webmail-delivered link without a separate download step. Playbook 2.
  • Require SmartScreen / reputation-based execution warnings for newly downloaded executables estate-wide. M1038. The installer and decoy are not yet broadly flagged by all engines per the "clean verdict" problem the source describes — reputation/prevalence-based friction is a useful supplementary layer while signature coverage catches up.
  • Set DNS-layer or SWG category blocking for newly-registered and algorithmically-suspicious domains. M1021. The C2 domain set (zsxocjarsate.com, psznaoehteeh.com, eeresofeuae.com, dahieenloo.com) follows a randomized-string naming pattern typical of DGA-adjacent infrastructure; category/reputation blocking catches the next rotation before it is individually published.
Strategic · 1 to 3 months, architectural
  • Move to WDAC application control with a signed-and-managed-installer policy for endpoints in banking-adjacent business units. M1038, MS App Control guidance. Stops a patched Electron application from ever executing regardless of how it arrived, independent of any published indicator.
  • Establish a mail-side anomaly-detection baseline for authenticated-but-anomalous senders. Best practice no formal benchmark for this control Because this campaign's entire delivery model depends on abusing a mailbox that legitimately passes SPF/DKIM/DMARC, the only durable mail-side defense is detecting anomalous content and behavior from an otherwise-trusted sender, not authentication failure.
  • Segment and monitor banking-transaction workstations separately from general user population. M1030. Limits blast radius given the campaign's explicit banking-sector targeting.
  • Coordinate with your national CERT / financial-sector ISAC on Brazilian government-portal-themed lure intelligence sharing. Best practice The campaign explicitly abuses trust in a specific national government's digital infrastructure; sector-level intelligence sharing on lure themes is more durable than any single organization's indicator list.
13

Deployable Playbooks

Playbook 1 — Deny silent secondary-installer deployment from user-writable directories (AppLocker)

# Prerequisites: AppLocker already deployed in Audit mode with a working default rule set;
#                Application Identity service (AppIDSvc) set to Automatic and running;
#                a pilot ring of 20 to 50 representative endpoints. Confirm your legitimate
#                software-deployment tooling (SCCM, Intune, RMM) does not stage installers
#                under Users\<user>\AppData\Local\Temp before enforcing.
# Reboot required: no. Policy applies at the next Group Policy refresh; AppIDSvc must be running.
# Rollback: re-import the policy saved in step 1 --
#           Set-AppLockerPolicy -XmlPolicy C:\Backup\AppLocker-pre-change.xml -Merge:$false
#           then gpupdate /force. Removing the deny rule from the GPO has the same effect.

# 1. Save the current effective policy first. Do not skip this -- it is the rollback.
New-Item -ItemType Directory -Path C:\Backup -Force | Out-Null
Get-AppLockerPolicy -Effective -Xml | Out-File C:\Backup\AppLocker-pre-change.xml -Encoding utf8

# 2. Confirm the enforcement service is running, or the policy is inert.
Set-Service -Name AppIDSvc -StartupType Automatic
Start-Service -Name AppIDSvc

# 3. Add a DENY rule for the campaign install-directory naming pattern specifically --
#    this is narrower and safer to enforce immediately than a blanket Temp-directory deny.
#    Author as a Path rule in the GPO editor under
#    Computer Configuration > Policies > Windows Settings > Security Settings >
#    Application Control Policies > AppLocker, Executable Rules:
#
#      DENY  Everyone  %OSDRIVE%\ProgramData\UltraSuiteSmartCoreware\*
#      DENY  Everyone  %OSDRIVE%\ProgramData\SmartSuiteSmartCoreware\*
#      DENY  Everyone  %OSDRIVE%\ProgramData\ProSoftxUltraToolator\*
#
#    Broader Temp-directory silent-installer denial is a near-term, not immediate,
#    control -- pilot it separately after confirming your deployment tooling is unaffected.

# 4. Verify the rules are live on a pilot host.
Get-AppLockerPolicy -Effective |
  Select-Object -ExpandProperty RuleCollections |
  ForEach-Object { $_ } |
  Where-Object { $_.Action -eq 'Deny' } |
  Select-Object RuleCollectionType, Name, Action

# 5. Post-deployment CQL spot-check: Q2 should return nothing new from these paths.

Playbook 2 — Enable the "block executable content from email/webmail" ASR rule

# Prerequisites: Microsoft Defender Antivirus active (not passive alongside another AV).
#                Run in Audit (2) for one week and review Defender/Operational event 1121
#                before enforcing, since some legitimate workflows email installers directly.
# Reboot required: no.
# Rollback: re-run the same command with -AttackSurfaceReductionRules_Actions Disabled (0)
#           or AuditMode (2). Rule ID is unchanged, so the revert is symmetrical.

# 1. Record current state -- this is the rollback reference.
$p = Get-MpPreference
$ruleId = '3B576869-A4EC-4529-8536-B80A7769E899'   # Block executable content from email/webmail
$idx = [array]::IndexOf($p.AttackSurfaceReductionRules_Ids, $ruleId)
if ($idx -ge 0) { '{0} = {1}' -f $ruleId, $p.AttackSurfaceReductionRules_Actions[$idx] } else { "$ruleId not currently configured" }

# 2. Audit first.
Add-MpPreference -AttackSurfaceReductionRules_Ids $ruleId -AttackSurfaceReductionRules_Actions AuditMode

# 3. After a clean audit week, enforce.
Add-MpPreference -AttackSurfaceReductionRules_Ids $ruleId -AttackSurfaceReductionRules_Actions Enabled

# 4. Verify.
$p = Get-MpPreference
$idx = [array]::IndexOf($p.AttackSurfaceReductionRules_Ids, $ruleId)
'{0} = {1}' -f $ruleId, $p.AttackSurfaceReductionRules_Actions[$idx]

# 5. Tamper Protection must be on, or this is trivially reversible by anyone with local admin.
(Get-MpComputerStatus).IsTamperProtected

Playbook 3 — Block published PhantomEnigma C2 domains and IPs at the resolver/egress

# Prerequisites: DNS sinkhole or resolver-side blocklist capability, or an egress proxy /
#                firewall capable of FQDN and IP blocking. Confirm none of the four
#                compromised .gov.br context hosts in section 10 are accidentally included --
#                they are victim infrastructure and should NOT be blocked.
# Reboot required: no.
# Rollback: remove the entries added in step 1/2 from the resolver blocklist or firewall
#           rule set. No other system state is changed.

# 1. Resolver-side (example: Windows DNS Server RPZ zone, adapt to your resolver)
$domains = 'zsxocjarsate.com','psznaoehteeh.com','eeresofeuae.com','dahieenloo.com',
           'policiacivilmg.com','pccvill.com','taaeiuep.com'
foreach ($d in $domains) {
  Add-DnsServerQueryResolutionPolicy -Name "Block-PhantomEnigma-$d" `
    -Action IGNORE -FQDN "EQ,$d" -ErrorAction SilentlyContinue
}

# 2. Egress firewall / proxy (example: Windows host firewall for lab validation --
#    use your perimeter firewall or SWG for production enforcement)
$ips = '185.219.83.191','188.137.246.189','91.92.241.181','158.94.208.120'
foreach ($ip in $ips) {
  New-NetFirewallRule -DisplayName "HuntPack - Block PhantomEnigma $ip" `
    -Direction Outbound -RemoteAddress $ip -Action Block -Profile Any -ErrorAction SilentlyContinue
}

# 3. Verify
Get-NetFirewallRule -DisplayName 'HuntPack - Block PhantomEnigma*' |
  Get-NetFirewallAddressFilter | Select-Object RemoteAddress

Playbook 4 — Alert on new Run/RunOnce Registry values estate-wide

# Prerequisites: RegGenericValueUpdate / AsepValueUpdate telemetry confirmed flowing
#                (validation gate 1, section 11). This is a detection-only playbook --
#                it does not change endpoint state, so risk of breakage is minimal.
# Reboot required: no.
# Rollback: none required -- this deploys a Falcon Scheduled Search / Custom IOA, it does
#           not modify endpoint configuration. Disable or delete the saved search to revert.

# 1. Baseline current Run/RunOnce contents across a representative host sample, so you can
#    tell a genuinely new value from one that has always been there.
$paths = '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 ($p in $paths) {
  Get-ItemProperty -Path $p -ErrorAction SilentlyContinue |
    Select-Object * -ExcludeProperty PS*
} | Export-Csv C:\Backup\RunKey-baseline.csv -NoTypeInformation

# 2. Create the Falcon Scheduled Search from Q4 in section 8, scheduled every 15 minutes
#    with a 30-minute lookback, severity High, scoped estate-wide (no aid filter).

# 3. Verify the saved search returns the lab-created value from validation gate 3
#    (section 11) before considering this playbook deployed.
14

Containment Runbook

Do not assume a clean sandbox or AV verdict clears a host. All five sources agree the campaign's samples frequently receive clean verdicts, which is explicitly why ANY.RUN recommends detecting the build chain and behavioral pattern rather than relying on signature or reputation alone.

PhaseActionsOwnerEvidence to capture
0 · Triage
0 to 1 hour
Confirm the hit against the Q1, Q2, Q4 or Q9 criteria. Determine whether the host has banking-transaction access or handles sensitive public-sector data. Decide containment scope before touching anything.SOC L2Alert record, query output, host role and owner
1 · Isolate
1 to 4 hours
Network-contain in Falcon. Block the published C2 domains and IPs at the resolver/egress if not already deployed (Playbook 3). Preserve, do not delete, the Registry Run/RunOnce value and the decoy application directory so the configuration is available for analysis.SOC L2 with IR leadRegistry Run key export, decoy application directory (full copy), index.js file, installer binary if still present
2 · Scope
4 to 24 hours
Run Q1, Q2, Q6, Q7 and Q9 estate-wide over full retention. Check mail logs for the same "Ofício Polícia Civil" / "Procuração Digital" lure sent to other recipients. If this is a banking environment, check for any transaction or credential activity from this host in the period between likely infection and containment.Threat huntingQuery exports, host list, mail-recipient list, transaction/credential review notes
3 · Credential reset
24 to 72 hours
Reset credentials for any account used on the host since likely infection, prioritizing banking or financial-application credentials. Rotate any stored browser or password-manager credentials on the host.Identity team with IR leadReset log, affected-account inventory
4 · Eradicate
72 hours onward
Remove the decoy application, the Registry Run/RunOnce value, and any secondary payloads the backdoor downloaded. Given the modular download capability, a targeted removal is riskier than a rebuild for high-value (banking-transaction) hosts — rebuild those from known-good media.Endpoint engineeringRemoval record or rebuild record, disposal of original disk image after forensic copy
5 · Recover
1 to 2 weeks
Return hosts to production only after the Immediate and Near-term hardening in section 12 is applied. Keep Q1, Q2, Q4 and Q9 alerting at critical severity for 90 days.IR leadHardening attestation per host, 90-day monitoring plan
6 · Report
Ongoing
Notify your national CERT / financial-sector ISAC, especially if the affected host has banking-transaction access. If the lure referenced a specific .gov.br entity, that entity's IT/security team should be notified so they are aware their portal or mail infrastructure may be under active abuse (do not assume they already know).IR lead with legalTimeline, indicator set, notification record
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1584Compromise of .gov.br infrastructure and mailboxesNoneNoOut of scope attacker-side resource development on third-party government infrastructure, not a customer-SOC detection target
T1566.002Spearphishing link/QR from a compromised, SPF/DKIM/DMARC-passing mailboxNone (mail-side)NoGAP needs mail-gateway/M365 audit telemetry, not endpoint. See section 12.
T1204.002User executes the lure installerQ1YesGood
T1036Patched Electron/Boostnote decoy in campaign install directoryQ2YesGood
T1027Obfuscated index.js dropped under Inno Setup stagingQ3NoGood
T1497Sandbox/analysis evasion (samples receiving clean verdicts)NoneNoGAP evasion behavior itself is not endpoint-visible; mitigated indirectly by build-chain and path-based detection (Q1-Q4) instead of relying on verdict/reputation
T1547.001Registry Run Key persistenceQ4YesGood if registry value telemetry is on
T1053.005Scheduled Task (listed in ANY.RUN's MITRE table, no behavioral detail published)NoneNoGAP technique is attributed by the source but no task name, path or trigger detail was published to build a query from
T1082 / T1016Host/network fingerprinting by the backdoorQ10 (partial, behavioral proxy only)NoPartial the fingerprinting itself happens inside the Node.js runtime and is not separately observable from process telemetry
T1059.007 / T1059.001eval()-driven JavaScript execution, PowerShell follow-onQ10NoPartial catches a shell spawned by the decoy process; does not catch in-process eval() execution with no child process
T1071.001 / T1090C2 beacon (domain, IP, URI shape)Q6, Q7, Q8Q6/Q7 yes, Q8 noGood for domain/IP while infrastructure is live (Q6, Q7); Partial for the URI-path shape (Q8), which needs web-proxy/HTTP telemetry most environments do not have ingested by default
Beacon cadence (behavioral)~180-second beacon interval, generation-independentQ5NoPartial generic cadence detector, needs environment-specific polling-agent exclusions before it is low-noise
T1105 / T1204.002Known installer/backdoor hashesQ9YesGood for the two complete published hashes only; the partial Shellter-loader hash cannot be matched at all (see section 4)
T1041Exfiltration and secondary payload delivery over the C2 channelQ7 (volume/behavior review)NoPartial no dedicated exfil-volume query; the C2-connection queries provide the pivot point for manual review
Ofício-PC / Shellter-loader armCobalt Strike delivery via the "Zab agent" kitQ10 (filename-only branch)NoGAP the loader's hash is incomplete and no other published detail (network indicators, Cobalt Strike beacon config, "Zab agent" mechanics) exists to build a stronger query

Ten queries, of which five are high confidence with no material FP source (Q1, Q2, Q3, Q4, Q9) and two more are high confidence but perishable (Q6, Q7). The pack's strongest coverage sits at installer execution and persistence — exactly where ANY.RUN's own guidance says to focus, since the build chain and install-directory pattern are described as more durable than the domain/IP list. Before deploying, clear validation gate 1 in section 11: if RegGenericValueUpdate/AsepValueUpdate is not flowing in your tenant, Q4 returns nothing forever. If you have no web-proxy/HTTP log ingestion, Q8 cannot run at all and the URI-beacon shape stays a permanent gap until that telemetry exists — Q6 and Q7 partially compensate by catching the underlying network connection even without URI visibility.

16

Hunt Summary Ticket

TITLE       Hunt: PhantomEnigma - hijacked .gov.br portals delivering an Electron/Node.js backdoor
SEVERITY    Critical (active, evolving campaign against banking and public-sector targets)
SCOPE       All Windows endpoints, prioritizing banking-transaction workstations and any
            organization with staff who interact with Brazilian government (.gov.br) portals
            or receive .gov.br-sourced correspondence.

HYPOTHESIS  PhantomEnigma delivers a Delphi/Inno-Setup-installed, patched-Electron-decoy
            Node.js backdoor via phishing from genuinely compromised .gov.br government
            mailboxes (so SPF/DKIM/DMARC pass), using fake police or digital
            power-of-attorney lures. The backdoor persists via a single Registry Run Key
            and beacons to rotating C2 roughly every 180 seconds. Per the primary source,
            the Delphi+Inno+Electron/Node build chain and install-directory naming pattern
            are more durable detection surfaces than the domain/IP list, which rotates
            near-weekly.

QUERIES     Q1  Lure installer execution                             CONF high  FP low
            Q2  Patched Electron decoy in campaign install path      CONF high  FP low
            Q3  index.js dropped under Inno Setup staging            CONF high  FP low
            Q4  Run key targets campaign install directory           CONF high  FP low
            Q5  ~180s beacon-cadence detector (generic)               CONF med   FP med
            Q6  C2 domain resolution                                 CONF high  FP low
            Q7  C2 IP connections                                    CONF high  FP low
            Q8  Beacon URI pattern (needs proxy/HTTP telemetry)      CONF med   FP low
            Q9  Known campaign SHA256 hashes                         CONF high  FP low
            Q10 Decoy-spawned shell / Ofício-PC loader pattern       CONF med   FP med

DO FIRST    1. Run Q1, Q2 and Q4 estate-wide over full retention. These fire at deployment
               and persistence, before any beacon exists, and carry no known FP source.
            2. Import the Falcon IOC CSV from section 10. Do NOT import the partial
               Shellter-loader hash line -- it is commented out and will not match anyway.
            3. Confirm RegGenericValueUpdate/AsepValueUpdate telemetry is flowing, or Q4
               is blind.
            4. Block the published C2 domains and IPs at the resolver and egress (Playbook 3).
            5. If you have web-proxy/HTTP log ingestion, validate and deploy Q8. If not,
               log the gap and rely on Q6/Q7 for network-layer coverage.

FINDINGS    [ ] No hits           [ ] Hits pending triage        [ ] Confirmed compromise

GAPS        - No detection for the initial phishing delivery itself (mail-side telemetry).
            - No detection for in-process eval() execution that does not spawn a child.
            - No detection for the Ofício-PC Shellter-loader beyond its filename pattern --
              the hash is incomplete and no network indicators were published for that arm.
            - T1053.005 (Scheduled Task) is attributed by the source with no behavioral
              detail to build a query from.
            - Beacon URI-path detection (Q8) requires telemetry most environments lack.

ACTIONS     [ ] Q1, Q2, Q4, Q9 promoted to Custom IOA after validation gates 3, 5, 6
            [ ] Q6, Q7 promoted after the two supplementary domains and 91.92.241.181 are
                independently confirmed in your own telemetry
            [ ] Q5, Q8, Q10 baselined / telemetry-validated before promotion
            [ ] Immediate hardening tier deployed (C2 block, installer/decoy alerting,
                Run-key monitoring, mail content rules, user awareness)
            [ ] Near-term hardening piloted (AppLocker deny, proxy log ingestion, ASR rule,
                SmartScreen/reputation friction, DNS category blocking)
            [ ] Containment runbook rehearsed with the clean-verdict-does-not-mean-clean
                constraint understood

OWNER       HuntPack
VERSION     v0.1 - 2026-08-20
17

Changelog

v0.1 2026-08-20 Initial draft. Built from the ANY.RUN PhantomEnigma research (published 2026-07-16) with three corroborating secondary sources (The Hacker News, SC World, Cyber Press) and one supplementary source (Cybersecurity News) surfaced during verification. Ten CQL queries covering lure-installer execution, patched-Electron decoy detection, backdoor drop, Registry Run Key persistence, beacon-cadence detection, C2 domain/IP, the HTTP beacon URI shape (telemetry-gated), known hashes, and decoy-spawned shell / Ofício-PC loader execution. Five Custom IOA candidates, four deployable hardening playbooks with rollback, and a six-phase containment runbook. All atomic indicators traced to the saved source snapshot and cross-verified with an independent reader-proxy fetch pass. HackRead (one of the five originally requested sources) could not be retrieved by any method tried and is excluded from citations. Known gaps recorded in section 15: initial phishing delivery, in-process eval() execution, the Ofício-PC Shellter-loader arm beyond its filename, T1053.005 detail, and the beacon URI-path shape without proxy telemetry.
18

References

TierSourceUsed forAccessed
1ANY.RUN Cybersecurity Blog — 20+ Government Websites Hijacked: PhantomEnigma Investigation (2026-07-16)Primary technical analysis. Every hash, domain, IP, install-directory pattern, filename, beacon shape and MITRE technique in this pack.2026-08-20
2The Hacker News — 20+ Hijacked Government Websites Became an Attack Channel (2026-07-16)Corroboration of scope, lure themes, SPF/DKIM/DMARC bypass, 180-second beacon interval. Source of the four compromised .gov.br context hostnames.2026-08-20
2SC World — PhantomEnigma campaign hijacks Brazilian government websites for malware delivery (2026-07-17)Corroboration of campaign evolution and Electron/Boostnote masquerade. Cited in the 2026-08-17 weekly recap as still-active, motivating this pack.2026-08-20
2Cyber Press — When trusted gov infrastructure becomes an attack channel: PhantomEnigma puts banks at risk (2026-07-21)Corroboration of infection chain and business-impact framing.2026-08-20
2Cybersecurity News — Hackers Hijack 20+ Government Websites to Deliver Malware Through Trusted Links (2026-07-21, supplementary)Independent corroboration of the zsxocjarsate[.]com domain and the /laravel.php-to-/nbw/ beacon evolution.2026-08-20
RefMITRE ATT&CKTechnique identifiers used throughout sections 6, 12 and 15.2026-08-20
RefMicrosoft Security Baselines and Windows security documentationASR rule identifiers, AppLocker and Defender configuration in sections 12 and 13.2026-08-20

Source snapshots. The fetched text of all sources — including the one that failed to load (HackRead) — is preserved alongside this file in PhantomEnigma-Hunt-sources/. Every atomic indicator shipped in section 4 is traced back to those snapshots.