Two concurrent OTX pulses published 2026-09-24 expose a converging credential-theft ecosystem: CARBONATO, a Docker-centric botnet built around the open-source Hermes AI agent framework, and PavinLoader, a multi-stage .NET loader distributing Amatera Stealer and HijackLoader through ClickFix social engineering and fake download campaigns. Both operations ultimately monetize stolen credentials and cryptocurrency assets — the raw material traded daily across dark web marketplaces. Enterprise security teams should treat exposed container infrastructure and browser-based social engineering as priority attack surfaces this quarter.
Threat Summary
Collectively, these pulses describe two distinct but complementary intrusion economies:
-
CARBONATO targets infrastructure — scanning the internet for unauthenticated Docker daemons exposed on TCP/2375, then deploying containerized payloads. The operation was uncovered via an unauthenticated Docker registry exposed since May 2026, which revealed a dual business model: (a) distribution of trojanized cryptocurrency wallet applications, and (b) a botnet orchestrated through Hermes Agent, an MIT-licensed open-source AI framework repurposed as an autonomous operator. Telegram is used for operator communications and likely C2/tasking.
-
PavinLoader targets end users — heavily obfuscated .NET DLLs distributed through ClickFix fake-captcha lures, counterfeit software downloads, and malicious RenPy games. The loader abuses legitimate Windows tooling (MSBuild) for defense evasion and uses EtherHiding — storing C2 domains on public blockchain smart contracts — to make infrastructure takedown-resistant. Final payloads include Amatera Stealer (credential/session theft) and HijackLoader (modular second-stage delivery).
The shared objective is credential and crypto-asset theft at scale. Stolen sessions, browser credentials, and wallet keys harvested by Amatera and trojanized wallets feed directly into dark web credential shops, while CARBONATO's botnet provides both the distribution horsepower and a mining/spam monetization layer.
Threat Actor / Malware Profile
CARBONATO (with Hermes Agent)
- Distribution: Internet-wide scanning for exposed Docker daemons on TCP/2375; unauthenticated API access allows remote container creation. Trojanized cryptocurrency wallet apps distributed in parallel.
- Payload behavior: Deploys malicious containers onto compromised Docker hosts; AI agent (Hermes Agent, MIT-licensed) automates operator tasks, reducing human involvement in botnet management.
- C2 communication: Telegram-based operator channel; infrastructure observed on hosting providers in DE (Contabo), CR, and IR — classic bulletproof/abuse-tolerant hosting mix.
- Persistence: Malicious containers and images persist on the host Docker daemon; registry exposure since May 2026 indicates long-dwell operation.
- Anti-analysis: Abuse of legitimate open-source AI framework blends malicious automation with legitimate tooling; containerized execution isolates payloads from host-based EDR.
PavinLoader → Amatera Stealer / HijackLoader
- Distribution: ClickFix fake-captcha pages (users tricked into pasting malicious PowerShell into Run dialog), fake software download sites, and trojanized RenPy visual novel games.
- Payload behavior: Multi-stage .NET loader; final stage deploys Amatera Stealer (browser credentials, cookies, session tokens, crypto wallets) or HijackLoader for modular follow-on payloads.
- C2 communication: EtherHiding — C2 domains retrieved from blockchain smart contracts (e.g., BNB Smart Chain), making domain takedowns ineffective. Observed lure/C2 domains span disposable TLDs (.icu, .pro, .shop, .lat, .cfd).
- Persistence: MSBuild abuse — malicious inline-task project files compiled by
MSBuild.exe, a signed Microsoft binary, enabling execution and persistence via scheduled tasks. - Anti-analysis: Heavy .NET obfuscation, living-off-the-land binary (LOLBIN) execution via MSBuild, blockchain-resolved C2 that survives DNS-level blocking.
IOC Analysis
Indicator types present:
- IPv4 (CARBONATO, 5 indicators):
213.136.79.115(Contabo GmbH, DE — ASN AS51167),190.211.124.187(Costa Rica — AS262145),91.99.195.164(Pars Online, IR — AS16322). These represent botnet C2/registry infrastructure. Contabo is a recurring abuse-tolerant hoster; geodiverse ASN spread suggests deliberate resilience. - Domains (PavinLoader, 42 indicators): Lure and C2 domains including
more-arpc.icu,rpcsecnoweb.pro,kelemet.shop,nexahub.lat,stellar-minds.cfd,perfectverified.com,catalyst-pro.lat,twigoamwu.cfd. Note the TLD pattern (.icu/.shop/.lat/.cfd/.pro) — cheap, low-reputation registration zones typical of disposable phishing infrastructure.
Operationalizing in the SOC:
- Push IPs to egress firewall / web proxy blocklists and EDR network IOC feeds. Alert on any outbound connection — CARBONATO IPs should have zero legitimate enterprise traffic.
- Push domains to DNS sinkhole / protective DNS (RPZ). Because PavinLoader uses EtherHiding, domain lists decay fast — also hunt for the retrieval behavior (Web3 RPC calls to blockchain nodes) rather than domains alone.
- Enrich against ASN: flag all egress to AS51167 (Contabo) for review in environments with no legitimate Contabo-hosted dependencies.
- Tooling: OTX pulses ingest natively into AlienVault USM, MISP (via OTX feed), Splunk ES (Threat Intelligence framework), and Microsoft Sentinel (OTX TAXII connector). Decode ClickFix clipboard artifacts with PowerShell transcript logging; detonate RenPy game packages in a sandbox (ANY.RUN, Joe Sandbox) to extract the loader config.
Detection Engineering
---
title: Exposed Docker Daemon Remote Container Creation (CARBONATO)
id: 7c1a2f3e-9b4d-4e6a-a1c2-5d8f0b3e9a71
status: experimental
description: Detects unauthenticated Docker API activity on TCP/2375 consistent with CARBONATO botnet container deployment via exposed Docker daemons.
author: Security Arsenal Threat Intel
date: 2026/09/24
references:
- https://www.threatdown.com/blog/carbonato/
logsource:
category: network_connection
product: windows
detection:
selection_port:
DestinationPort: 2375
selection_action:
EventID: 3
condition: selection_port and selection_action
falsepositives:
- Legitimate internal Docker orchestration (restrict by internal subnet allowlist)
level: high
tags:
- attack.initial_access
- attack.t1190
---
title: ClickFix MSBuild Inline Task Execution (PavinLoader)
id: 2e8b4c1d-6f7a-4d2b-9c3e-1a5f8d0b6c42
status: experimental
description: Detects MSBuild.exe spawned by user-context shell processes or Office/browser processes, consistent with PavinLoader ClickFix infection chains abusing MSBuild inline tasks.
author: Security Arsenal Threat Intel
date: 2026/09/24
references:
- https://www.malwarebytes.com/blog/threat-intel/2026/08/tracking-pavinloader-across-clickfix-and-fake-download-campaigns
logsource:
category: process_creation
product: windows
detection:
selection_image:
Image|endswith: '\MSBuild.exe'
selection_parent:
ParentImage|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\explorer.exe'
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\rundll32.exe'
condition: selection_image and selection_parent
falsepositives:
- Developer workstations compiling Visual Studio projects from CLI
level: high
tags:
- attack.defense_evasion
- attack.t1127.001
- attack.execution
---
title: Suspicious Web3 RPC Blockchain Lookup (EtherHiding C2 Retrieval)
id: 4f9d2a7b-3c5e-4a1f-8b6d-2e7c9a0f1d53
status: experimental
description: Detects processes making outbound HTTPS requests to public blockchain RPC endpoints, consistent with PavinLoader EtherHiding technique resolving C2 domains from smart contracts.
author: Security Arsenal Threat Intel
date: 2026/09/24
logsource:
category: proxy
detection:
selection_domain:
c-useragent|contains|all: []
cs-host|contains:
- 'bsc-dataseed.binance.org'
- 'mainnet.infura.io'
- 'rpc.ankr.com'
- 'eth.llamarpc.com'
- 'cloudflare-eth.com'
filter_browsers:
process|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
condition: selection_domain and not filter_browsers
falsepositives:
- Legitimate crypto/Web3 enterprise applications
level: medium
tags:
- attack.command_and_control
- attack.t1102
// PavinLoader / Amatera Stealer & CARBONATO hunt — Microsoft Sentinel
// 1) Network IOCs from OTX pulses
let BadIPs = dynamic(["213.136.79.115","190.211.124.187","91.99.195.164"]);
let BadDomains = dynamic(["more-arpc.icu","rpcsecnoweb.pro","kelemet.shop","nexahub.lat","stellar-minds.cfd","perfectverified.com","catalyst-pro.lat","twigoamwu.cfd"]);
let NetHits = DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemoteIP in (BadIPs) or RemoteUrl in (BadDomains)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, ActionType;
// 2) ClickFix behavior: powershell spawned by explorer/browser, then MSBuild child
let ClickFix = DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName =~ "powershell.exe"
| where InitiatingProcessFileName in~ ("explorer.exe","chrome.exe","msedge.exe","firefox.exe")
| extend PowershellDevice = DeviceName, PowershellTime = TimeGenerated
| join kind=inner (
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName =~ "MSBuild.exe"
| project MSBuildTime = TimeGenerated, DeviceName, MSBuildCmd = ProcessCommandLine, FolderPath
) on DeviceName
| where MSBuildTime between (PowershellTime .. PowershellTime + 30m)
| project PowershellTime, DeviceName, PowershellCmd = ProcessCommandLine, MSBuildCmd, FolderPath;
// 3) Exposed Docker daemon connections (TCP/2375) from non-allowlisted hosts
let Docker2375 = DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemotePort == 2375
| project TimeGenerated, DeviceName, InitiatingProcessFileName, RemoteIP, RemotePort;
union NetHits, ClickFix, Docker2375
| sort by TimeGenerated desc
# Security Arsenal — CARBONATO / PavinLoader / Amatera IOC Hunt
# Run elevated on suspected endpoints. Outputs findings to C:\IR\ioc_hunt.csv
$findings = @()
$outDir = "C:\IR"; New-Item -ItemType Directory -Path $outDir -Force | Out-Null
# 1) Network connections to CARBONATO C2 IPs
$badIPs = @("213.136.79.115","190.211.124.187","91.99.195.164")
Get-NetTCPConnection | Where-Object { $badIPs -contains $_.RemoteAddress } | ForEach-Object {
$proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
$findings += [pscustomobject]@{Type="NetIOC"; Detail="$($_.RemoteAddress):$($_.RemotePort) via $($proc.ProcessName)"; Host=$env:COMPUTERNAME}
}
# 2) DNS cache hits for PavinLoader lure/C2 domains
$badDomains = @("more-arpc.icu","rpcsecnoweb.pro","kelemet.shop","nexahub.lat","stellar-minds.cfd","perfectverified.com","catalyst-pro.lat","twigoamwu.cfd")
$dns = Get-DnsClientCache -ErrorAction SilentlyContinue
foreach ($d in $badDomains) {
$dns | Where-Object { $_.Entry -like "*$d*" } | ForEach-Object {
$findings += [pscustomobject]@{Type="DNSIOC"; Detail=$_.Entry; Host=$env:COMPUTERNAME}
}
}
# 3) ClickFix artifacts: suspicious RunMRU entries (users pasting PowerShell from fake captcha)
$runMRU = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
if (Test-Path $runMRU) {
(Get-ItemProperty $runMRU).PSObject.Properties | Where-Object {
$_.Value -match "powershell|msbuild|mshta|curl|Invoke-Expression|iex"
} | ForEach-Object {
$findings += [pscustomobject]@{Type="ClickFix-RunMRU"; Detail="$($_.Name)=$($_.Value)"; Host=$env:COMPUTERNAME}
}
}
# 4) Scheduled tasks launching MSBuild or PowerShell (PavinLoader persistence)
Get-ScheduledTask | ForEach-Object {
$actions = $_.Actions | Where-Object { $_.Execute -match "msbuild|powershell|mshta" }
if ($actions) {
$findings += [pscustomobject]@{Type="Persistence-Task"; Detail="$($_.TaskName) -> $($actions.Execute) $($actions.Arguments)"; Host=$env:COMPUTERNAME}
}
}
# 5) Amatera Stealer artifacts: recent access to browser credential stores by non-browser processes
$credPaths = @(
"$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Login Data",
"$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Login Data",
"$env:APPDATA\Mozilla\Firefox\Profiles"
)
foreach ($p in $credPaths) {
if (Test-Path $p) {
Get-ChildItem $p -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } | ForEach-Object {
$findings += [pscustomobject]@{Type="CredStore-Modified"; Detail=$_.FullName; Host=$env:COMPUTERNAME}
}
}
}
# 6) Docker exposure check (CARBONATO target): daemon listening on 2375
if (Get-NetTCPConnection -LocalPort 2375 -ErrorAction SilentlyContinue) {
$findings += [pscustomobject]@{Type="Docker-Exposed"; Detail="Docker daemon listening on TCP/2375 — CARBONATO target"; Host=$env:COMPUTERNAME}
}
$findings | Export-Csv "$outDir\ioc_hunt.csv" -NoTypeInformation
Write-Host "[+] Hunt complete. $($findings.Count) findings -> $outDir\ioc_hunt.csv"
Response Priorities
Immediate (0–4 hours):
- Block the five CARBONATO IPv4 indicators at egress firewalls, proxies, and EDR network controls; sinkhole the 42 PavinLoader domains at DNS.
- Audit internet-facing assets for Docker daemons exposed on TCP/2375 (and 2376 without TLS auth). Shut down or firewall any unauthenticated daemon now — CARBONATO scans continuously.
- Hunt for ClickFix artifacts: RunMRU entries containing pasted PowerShell and MSBuild child processes of browsers/shells.
24 Hours:
- Amatera Stealer exfiltrates browser credentials, cookies, and session tokens. For any endpoint with confirmed loader execution or IOC contact: force enterprise password resets, revoke all active sessions/OAuth tokens (Entra ID, Google Workspace), and rotate API keys accessible from the host.
- Audit cryptocurrency wallet applications installed on endpoints — CARBONATO distributes trojanized wallets; treat any non-standard wallet binary as compromised.
- Review Telegram-related egress and blockchain RPC traffic from non-developer endpoints.
1 Week:
- Harden container architecture: enforce TLS client-cert authentication on Docker daemons, remove public exposure of 2375/2376, and deploy container runtime monitoring (e.g., Falco rules for unexpected container creation).
- Deploy application control (WDAC/AppLocker) to block MSBuild.exe execution outside developer build paths — neutralizes the PavinLoader LOLBIN chain.
- Add ClickFix-awareness content to phishing training: users must never paste clipboard content into the Run dialog from a web page prompt.
- Subscribe protective DNS to the OTX TAXII feed for continuous PavinLoader domain refresh, since EtherHiding rotates C2 domains rapidly.
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.