Classification: TLP:WHITE | Intelligence Category: Infostealer & Credential Theft Campaigns | Analyst: Security Arsenal — From The Dark Side
Threat Summary
Two pulses published on 2026-09-01 expose parallel but strategically related operations in the credential-theft and access-brokering economy:
-
BraZetsu (Exilware) — A sophisticated Python-based Windows malware framework attributed to the Brazilian threat actor Exilware, documented by Group-IB. BraZetsu is not a commodity infostealer; it is a full Initial Access Broker (IAB) toolkit that converts compromised endpoints into sellable underground assets. It performs deep reconnaissance against corporate, financial, industrial, and law enforcement environments across Iberia and Latin America (Brazil, Argentina, Chile, Mexico, Paraguay, Portugal, Spain, plus the US). Companion tooling includes CNABHunter (targeting Brazilian CNAB financial remittance file formats — direct monetization of banking infrastructure), Ousaban, and AgenteV2. Tags confirm AI-assisted development ("ai-powered cybercrime") and an underground marketplace monetization model. Targeted verticals span Finance, Government, Healthcare, Manufacturing, Energy, and Telecommunications.
-
Malicious Packagist Themes → iOS Spyware — Thirteen trojanized Composer theme packages across five vendor namespaces (documented by Socket) inject JavaScript into Vietnamese streaming sites, executing a dual chain: (a) mobile ad-fraud/gambling redirects, and (b) on iPhones, a WebKit-to-kernel exploit chain weaponizing CVE-2025-31277 and CVE-2025-43529 (with CVE-2026-43655 referenced) to install spyware that exfiltrates cryptocurrency wallet seed phrases. Infrastructure ties to FUNNULL content-delivery networks — a known bulletproof hosting/CDN laundering operation.
Collective read: The underground credential economy continues to professionalize. Access brokering (BraZetsu) and seed-phrase/credential theft (iOS spyware) represent two ends of the same pipeline — harvested access and credentials are commoditized for resale, ransomware precursor access, and direct financial fraud. Both campaigns leverage legitimate ecosystems (Python/PyPI-style tooling, Composer/Packagist) as distribution, defeating perimeter trust assumptions.
Threat Actor / Malware Profile
BraZetsu — Exilware (Brazil)
- Actor type: Initial Access Broker; monetizes access via underground marketplace listings rather than direct exploitation.
- Distribution: Social engineering and loader-delivered Python payloads compiled for Windows (PyInstaller-style bundling is typical for this class); targeting focus on LATAM/Iberian corporate users with financial system access.
- Payload behavior: Deep host reconnaissance — domain enumeration, installed financial/banking software discovery, CNAB remittance file hunting (via CNABHunter module), browser credential and session token theft, screenshot/keylogging capability, environment fingerprinting to build a sellable "access profile."
- C2 communication: Python-based beaconing over HTTP/HTTPS to attacker infrastructure (e.g.,
infect.online); AI-assisted code generation accelerates variant churn, reducing hash-based detection durability. - Persistence: Registry Run keys, scheduled tasks, and Python interpreter masquerading (renamed
python.exe/ bundled executables posing as updaters or utilities). - Anti-analysis: VM/sandbox environment checks, delayed execution, string obfuscation, packed PyInstaller archives, and rapid recompilation enabled by AI-assisted development workflows.
- Related families: CNABHunter (financial remittance theft), Ousaban (LATAM banking malware lineage), AgenteV2 (modular agent).
Packagist iOS Spyware Chain — Unknown Actor (FUNNULL-linked)
- Distribution: Supply chain poisoning — 13 malicious Composer themes across 5 Packagist vendor namespaces; downstream injection into Vietnamese movie/comic streaming sites.
- Payload behavior: Injected JavaScript fingerprints device type; non-iOS victims get ad-fraud/gambling redirect chains, iOS victims receive a WebKit exploit chain (CVE-2025-31277, CVE-2025-43529) escalating to kernel for spyware install. Spyware targets crypto wallet seed phrases and credentials.
- C2/infrastructure: FUNNULL-hosted domains (
funnull01.vip,im.ue8im.com,cre-ads.com) and direct-IP delivery (http://23.225.52.67:4466/vip344.html). - Persistence: On-device spyware implant post-kernel exploitation; web-side persistence via compromised Composer dependencies — every
composer install/updatere-deploys the malicious theme. - Anti-analysis: Conditional delivery (iOS-only exploit path), geolocation/locale gating, CDN laundering through FUNNULL infrastructure.
IOC Analysis
The pulses contain a mixed indicator set requiring type-specific operationalization:
| Type | Examples | Operationalization |
|---|---|---|
| Domains/Hostnames | infect.online, xemphimlau.com, funnull01.vip, cre-ads.com, im.ue8im.com | DNS sinkhole/block at resolver and proxy; alert on historical DNS (PassiveDNS) for retro-hunt — FUNNULL domains rotate, so pivot on nameserver and ASN. |
| IP + URL | http://23.225.52.67:4466/vip344.html | Block IP at egress firewall; non-standard port 4466 is a high-fidelity detection pivot — alert on any outbound to this host:port pair. |
| File hashes (MD5/SHA1) | 0e00adb0a5ca285b838af623c753b6ff, 1d83329a31c21880b9fa86644ad466dbf86021d8, etc. (30 hashes) | Load into EDR blocklists and retroactive file sweeps. Caveat: AI-assisted recompilation means hash IOCs decay fast — pair with behavioral rules below. |
| CVEs | CVE-2025-31277, CVE-2025-43529, CVE-2026-43655 | Feed to vuln management; audit iOS fleet patch posture via MDM; flag any managed device below patched WebKit/iOS builds. |
Tooling: Decode/pivot using the OTX DirectConnect API for full 32/34-indicator export, MISP for correlation, VirusTotal/Group-IB graph for BraZetsu sample relationships, and Socket for malicious Composer package diffs. Enrich FUNNULL infrastructure via PassiveTotal/Shodan ASN pivots.
Detection Engineering
Sigma Rules
---
title: BraZetsu Python-Based IAB Malware Execution
description: Detects suspicious Python interpreter execution patterns consistent with the BraZetsu framework (Exilware), including PyInstaller-packed payloads executing reconnaissance and credential-theft commands.
author: Security Arsenal Threat Intel
id: 8f3a1c2e-braz-4e11-9f01-otxpulse0901a
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection_python:
Image|endswith:
- '\python.exe'
- '\pythonw.exe'
selection_cmd:
CommandLine|contains:
- 'wmic process get'
- 'net group "Domain Admins"'
- 'systeminfo'
- 'ipconfig /all'
- 'Get-ChildItem Env:'
- 'vaultcmd'
- 'cnab'
- '.rem'
- 'AppData\Local\Google\Chrome\User Data'
- 'Login Data'
filter_legit:
CommandLine|contains:
- 'site-packages'
- 'anaconda'
condition: selection_python and selection_cmd and not filter_legit
falsepositives:
- Legitimate Python automation scripts by IT admins
level: high
tags:
- attack.discovery
- attack.credential_access
- attack.t1059.006
- attack.t1005
- attack.t1555
date: 2026/09/01
---
title: BraZetsu Persistence via Registry Run Key or Scheduled Task
description: Detects persistence mechanisms consistent with BraZetsu and related LATAM IAB malware registering Python-based payloads in Run keys or scheduled tasks.
author: Security Arsenal Threat Intel
id: 8f3a1c2e-braz-4e11-9f02-otxpulse0901b
status: experimental
logsource:
category: registry_event
product: windows
detection:
selection_key:
TargetObject|contains:
- '\CurrentVersion\Run'
- '\CurrentVersion\RunOnce'
selection_value:
Details|contains:
- 'python'
- '.pyw'
- 'AppData\Local\Temp'
- 'AppData\Roaming'
condition: selection_key and selection_value
falsepositives:
- Rare; legitimate Python auto-start updaters
level: high
tags:
- attack.persistence
- attack.t1547.001
- attack.t1053.005
date: 2026/09/01
---
title: FUNNULL / Packagist Spyware C2 Infrastructure Connection
description: Detects outbound connections to FUNNULL-laundered infrastructure and direct-IP delivery associated with the malicious Packagist theme iOS spyware campaign.
author: Security Arsenal Threat Intel
id: 8f3a1c2e-braz-4e11-9f03-otxpulse0901c
status: experimental
logsource:
category: network_connection
product: windows
detection:
selection_domain:
DestinationHostname|contains:
- 'funnull01.vip'
- 'im.ue8im.com'
- 'cre-ads.com'
- 'xemphimlau.com'
- 'infect.online'
selection_ip:
DestinationIp: '23.225.52.67'
selection_port:
DestinationPort: 4466
condition: selection_domain or (selection_ip and selection_port) or selection_ip
falsepositives:
- None expected; FUNNULL is bulletproof hosting
level: critical
tags:
- attack.command_and_control
- attack.t1071.001
- attack.t1102
date: 2026/09/01
KQL (Microsoft Sentinel)
// Hunt: BraZetsu execution + FUNNULL/Packagist C2 + IAB recon behavior
let BraZetsuHashes = dynamic(["0e00adb0a5ca285b838af623c753b6ff","1b6dd10ace5e6e9a5e52dbbbc5e45289","27167134b9c5110fb4427829eff6dbad","7a7d962cc70d1b8079fc39382ab48ae6","7f1cba40545fa069e7f82023c82f936c","1d83329a31c21880b9fa86644ad466dbf86021d8","5e20d8736e86f2ebebaa5e9aa9257a2086839e47"]);
let C2Indicators = dynamic(["infect.online","funnull01.vip","im.ue8im.com","cre-ads.com","xemphimlau.com","23.225.52.67"]);
let ReconPattern = @"(wmic|systeminfo|net group|ipconfig /all|Login Data|vaultcmd|cnab|\.rem)";
let NetworkHits = DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemoteUrl has_any (C2Indicators) or RemoteIP has_any (C2Indicators)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort
| extend Detection = "C2-Network";
let ProcessHits = DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where (FileName =~ "python.exe" or FileName =~ "pythonw.exe" or MD5 in (BraZetsuHashes) or SHA1 in (BraZetsuHashes))
and ProcessCommandLine matches regex ReconPattern
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, MD5, SHA1, InitiatingProcessFileName
| extend Detection = "BraZetsu-Execution";
let FileHits = DeviceFileEvents
| where TimeGenerated > ago(7d)
| where MD5 in (BraZetsuHashes) or SHA1 in (BraZetsuHashes)
| project TimeGenerated, DeviceName, FileName, FolderPath, MD5, SHA1
| extend Detection = "Hash-Match";
union NetworkHits, ProcessHits, FileHits
| sort by TimeGenerated desc
PowerShell IOC Hunt Script
# Security Arsenal — BraZetsu / FUNNULL IOC Hunt (2026-09-01 OTX Pulses)
# Run elevated on suspected endpoints or deploy via GPO/Intune/EDR live response.
$Report = @()
# 1. File hash sweep (BraZetsu samples)
$Hashes = @(
"0e00adb0a5ca285b838af623c753b6ff","1b6dd10ace5e6e9a5e52dbbbc5e45289",
"27167134b9c5110fb4427829eff6dbad","7a7d962cc70d1b8079fc39382ab48ae6",
"7f1cba40545fa069e7f82023c82f936c"
)
$SweepPaths = @("$env:TEMP","$env:APPDATA","$env:LOCALAPPDATA","C:\Users\Public","C:\ProgramData")
foreach ($p in $SweepPaths) {
Get-ChildItem -Path $p -Recurse -File -ErrorAction SilentlyContinue | ForEach-Object {
$h = (Get-FileHash -Path $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash
if ($Hashes -contains $h.ToLower()) {
$Report += [pscustomobject]@{Type="HashHit"; Path=$_.FullName; Detail=$h}
}
}
}
# 2. Registry Run key persistence referencing python/temp paths
$RunKeys = @("HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce")
foreach ($k in $RunKeys) {
Get-ItemProperty -Path $k -ErrorAction SilentlyContinue | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Value -match "python|\.pyw|AppData|Temp"
} | ForEach-Object {
$Report += [pscustomobject]@{Type="Persistence"; Path=$k; Detail="$($_.Name) = $($_.Value)"}
}
}
}
# 3. Scheduled tasks executing python payloads
Get-ScheduledTask | ForEach-Object {
$actions = ($_.Actions | Out-String)
if ($actions -match "python|\.pyw|AppData\\Local\\Temp") {
$Report += [pscustomobject]@{Type="ScheduledTask"; Path=$_.TaskPath; Detail="$($_.TaskName): $actions"}
}
}
# 4. Active network connections to C2 infrastructure
$C2IPs = @("23.225.52.67")
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue | Where-Object {
$C2IPs -contains $_.RemoteAddress -or $_.RemotePort -eq 4466
} | ForEach-Object {
$proc = (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName
$Report += [pscustomobject]@{Type="C2Connection"; Path="$($_.RemoteAddress):$($_.RemotePort)"; Detail="Process: $proc (PID $($_.OwningProcess))"}
}
# 5. DNS cache check for C2 domains
$Domains = @("infect.online","funnull01.vip","im.ue8im.com","cre-ads.com","xemphimlau.com")
$dns = Get-DnsClientCache -ErrorAction SilentlyContinue
foreach ($d in $Domains) {
$dns | Where-Object { $_.Entry -like "*$d*" } | ForEach-Object {
$Report += [pscustomobject]@{Type="DNSCache"; Path=$_.Entry; Detail=$_.Data}
}
}
if ($Report.Count -gt 0) {
$Report | Format-Table -AutoSize
$Report | Export-Csv -Path ".\brazetsu_hunt_$(Get-Date -Format yyyyMMdd_HHmm).csv" -NoTypeInformation
Write-Host "[!] $($Report.Count) suspicious artifacts found. Isolate host and escalate to IR." -ForegroundColor Red
} else {
Write-Host "[+] No BraZetsu/FUNNULL indicators detected on this host." -ForegroundColor Green
}
Response Priorities
Immediate (0–4 hours)
- Block all domains/IPs:
infect.online,funnull01.vip,im.ue8im.com,cre-ads.com,xemphimlau.com,23.225.52.67(and port 4466 egress) at DNS resolver, proxy, and firewall. - Load the 30 file hashes into EDR blocklists and execute retro-sweeps across the fleet.
- Run the KQL hunt and PowerShell script on any endpoint with LATAM/Iberian finance users or CNAB/banking remittance access.
- Suspend Composer/Packagist pulls in CI/CD; run
composer auditand Socket scanning against lockfiles for the 13 malicious theme packages across the 5 vendor namespaces.
24 Hours
- Credential reset: BraZetsu and the iOS spyware both steal credentials/session material — force password and session-token resets (browser cookies, OAuth refresh tokens) for users on any host with a detection hit.
- Crypto exposure check: Any corporate or BYOD iOS device that browsed the listed streaming domains: treat wallet seed phrases as compromised; rotate keys and move funds where applicable.
- MDM audit: Confirm iOS fleet is patched against CVE-2025-31277 / CVE-2025-43529; quarantine unpatched devices.
- Review outbound financial remittance (CNAB/
.rem) file integrity and recent wire/remittance activity for fraud if any Brazilian finance-endpoint is implicated.
1 Week
- Architecture hardening: Implement egress filtering on non-standard ports; enforce DNS-over-HTTPS to resolvers with threat-intel blocking.
- Supply chain controls: Gate all package registry pulls (Packagist/PyPI/npm) through an artifact proxy with malware scanning (e.g., Socket, JFrog Xray); pin dependencies and verify signatures.
- Python runtime governance: Application control (WDAC/AppLocker) rules blocking unauthorized Python interpreters and PyInstaller-style executables in user-writable paths.
- Detection lifecycle: Convert the Sigma rules to production analytics; schedule FUNNULL ASN/infrastructure pivots weekly — this laundering network recycles across campaigns.
- Threat intel subscription: Subscribe to Exilware/BraZetsu marketplace tracking — IAB listings referencing your org's sector/region are pre-attack early warning.
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.