Back to Intelligence

EtherHiding Blockchain C2, BlackHatSect0r/DXQRTXX Go C2, Balonx Spyroid PhaaS: OTX Enterprise Detection Pack

SA
Security Arsenal Team
September 18, 2026
9 min read

Threat Summary

Three TLP:white OTX pulses converge on the same enterprise risk pattern: financially motivated intrusion sets are industrializing initial access, credential theft, and MFA defeat while making infrastructure cheaper to rotate. The EtherHiding campaign, active since November 2025, compromises legitimate websites and uses ClickFix/FakeCaptcha-style social engineering to push banking-trojan execution. Its differentiator is C2 address storage in Polygon smart contracts, with rotation costing pennies and no hardcoded C2 in payloads. At least 31 legitimate sites across multiple countries were used as staging or lure infrastructure, with finance explicitly targeted.

The BlackHatSect0r && DXQRTXX pulse is a rare operator-side exposure: an operation server revealed a custom Go C2 platform, DXSCAN tooling, queued targeting across 2.7 million domains, 726,989 hosts, and 16,834 harvested credentials. The crew is French-speaking, extortion-oriented, and blends vishing, cloud-storage exploitation, mass vulnerability scanning, and an AI agent whose safety controls were intentionally degraded. Targeting spans government, finance, transportation, and education in the United States and France.

Balonx Sistema is a Mexico-operated Phishing-as-a-Service platform targeting more than 20 financial institutions. It sells tiered subscriptions, uses fake security alerts to distribute a Spyroid-based Android RAT, and relies on real-time WebSocket session hijacking and callflow/AI vishing to defeat MFA. Since October 2025, more than 1,100 victim credential sets are reported. Collectively, these pulses show a mature criminal supply chain: web compromise and fake CAPTCHA for desktop execution, mass scanner/C2 backend for scale, and mobile RAT plus live session interception for banking fraud.

Threat Actor / Malware Profile

EtherHiding is technique-centered rather than attributed to a named actor. Distribution begins through compromised legitimate websites and fake verification pages that instruct users to copy and run commands. Payload behavior typically abuses signed Windows utilities and script interpreters such as mshta, powershell, rundll32, or curl to retrieve staged loaders. C2 communication is dynamic: the malware queries Polygon RPC endpoints such as public Matic RPC services to read smart-contract storage and recover current C2 addresses. Persistence varies by stage, but hunt for Run keys, scheduled tasks, startup folder entries, and browser-launched script processes. Anti-analysis is infrastructure-led: blockchain-backed rotation reduces static IOC value and makes takedown slower.

BlackHatSect0r && DXQRTXX operate like an extortion and access factory. DXSCAN and a Go-based C2 coordinate reconnaissance, exploit attempts against internet-facing edge and application stacks, credential collection, and operator tasking. The exposed CVE set points to perimeter and app-framework exploitation: F5 BIG-IP TMUI/APM flaws, Laravel ignition/debug and framework issues, Spring Cloud Gateway, WordPress plugin paths, and related remote-code-execution chains. Their vishing and AI-agent workflow suggests helpdesk social engineering, MFA fatigue, and cloud-storage abuse for staging stolen data.

Balonx Sistema is PhaaS with customer-facing panels and token/API endpoints. The Android payload is Spyroid-based RAT functionality delivered through fake bank security alerts. Core behaviors include accessibility abuse, overlay credential capture, SMS/notification interception, device-admin persistence, and WebSocket session hijacking so operators can ride authenticated banking sessions after the victim completes MFA. The panel endpoints under /admin/api/api/gql, /admin/api/api/rest, and /admin/api/api/token are high-value detection anchors for proxy, DNS, and egress monitoring.

IOC Analysis

The indicator set is dominated by domains, URLs, hostnames, and CVEs, with no file hashes provided in the sample. Treat domains such as lanhd6549tdhse.top, soporte-aclaracion.xyz, balonx.online, callbalonx.info, panelbalonxfs.xyz, and phishing-domain.xyz as block and hunt pivots. Treat Polygon RPC hostnames such as polygon.api.onfinality.io, polygon.lava.build, and the URL http://1rpc.io/matic as behavior context rather than blanket blocks: many legitimate wallets and developer tools use them, so alert only when the initiating process is a browser-launched script, Office child, mshta, powershell, rundll32, curl, or an unsigned binary.

CVEs including CVE-2023-0386, CVE-2023-44487, CVE-2023-4911, CVE-2024-6387, CVE-2020-5902, CVE-2021-3129, CVE-2021-22986, CVE-2021-29447, CVE-2022-22947, CVE-2022-1388, CVE-2018-15133, and CVE-2023-46747 should drive exposure management and virtual patching, not simple IOC blocking. Operationalize indicators by pushing domains/URLs to DNS RPZ, secure web gateway, EDR network rules, firewall egress, and email/URL rewriting; push CVEs to vulnerability scanners and attack surface management; load all indicators into MISP/TI platform with confidence and last-seen fields; and create SIEM correlation for web compromise lure, script execution, RPC lookup, then banking-panel contact within a short window.

Detection Engineering

YAML
---
title: ClickFix FakeCaptcha Browser-Launched Script Execution
id: 9f18a2c1-etherhiding-clickfix-0001
status: experimental
description: Detects browser or explorer spawned mshta, powershell, rundll32, curl, or wscript consistent with ClickFix and FakeCaptcha lure execution used by EtherHiding-style campaigns.
author: Security Arsenal
date: 2026/09/18
logsource:
  category: process_creation
  product: windows
detection:
  parent_browser:
    ParentImage|endswith:
      - '\msedge.exe'
      - '\chrome.exe'
      - '\firefox.exe'
      - '\brave.exe'
      - '\explorer.exe'
  child_script:
    Image|endswith:
      - '\mshta.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\rundll32.exe'
      - '\curl.exe'
      - '\wscript.exe'
      - '\cscript.exe'
  suspicious_cli:
    CommandLine|contains:
      - ' -enc '
      - ' -encodedcommand '
      - ' -w hidden'
      - ' -windowstyle hidden'
      - ' invoke-webrequest'
      - ' iwr '
      - ' curl '
      - ' http://'
      - ' https://'
      - ' clipboard'
      - ' mshta http'
      - ' javascript:'
  condition: parent_browser and child_script and 1 of suspicious_cli
fields:
  - Image
  - ParentImage
  - CommandLine
  - ParentCommandLine
  - User
  - Hashes
falsepositives:
  - Admin automation launched from browser portals
  - Software deployment helper scripts
level: high
tags:
  - attack.t1204
  - attack.t1059
  - attack.t1218
references:
  - https://www.guidepointsecurity.com/blog/etherhiding-exposed-deep-dive/
---
title: Script Process Querying Polygon RPC For Blockchain C2
id: 9f18a2c1-etherhiding-rpc-0002
status: experimental
description: Detects non-wallet script or LOLBin processes connecting to Polygon RPC endpoints associated with EtherHiding smart-contract C2 resolution.
author: Security Arsenal
date: 2026/09/18
logsource:
  category: network_connection
  product: windows
detection:
  rpc_dest:
    DestinationHostname|contains:
      - 'polygon.api.onfinality.io'
      - 'polygon.lava.build'
      - '1rpc.io'
      - 'polygon-rpc.com'
      - 'rpc.ankr.com'
  proc_susp:
    Image|endswith:
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\curl.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\regsvr32.exe'
      - '\msiexec.exe'
  condition: rpc_dest and proc_susp
fields:
  - Image
  - ProcessId
  - DestinationHostname
  - DestinationIp
  - DestinationPort
  - Initiated
falsepositives:
  - Web3 development tools
  - Browser wallet extensions
level: medium
tags:
  - attack.t1568
  - attack.t1071.001
  - attack.t1102
references:
  - https://www.guidepointsecurity.com/blog/etherhiding-exposed-deep-dive/
---
title: Balonx Sistema PhaaS Panel And Spyroid Infrastructure Access
id: 9f18a2c1-balonx-spyroid-0003
status: experimental
description: Detects endpoint or proxy access to Balonx Sistema phishing, callflow, and admin API infrastructure, including GraphQL, REST, and token endpoints.
author: Security Arsenal
date: 2026/09/18
logsource:
  category: network_connection
  product: windows
detection:
  balonx_host:
    DestinationHostname|contains:
      - 'balonx.online'
      - 'callbalonx.info'
      - 'panelbalonxfs.xyz'
      - 'soporte-aclaracion.xyz'
      - 'phishing-domain.xyz'
  api_path:
    DestinationHostname|contains: 'panelbalonxfs.xyz'
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\powershell.exe'
      - '\curl.exe'
  condition: balonx_host or api_path
fields:
  - Image
  - User
  - DestinationHostname
  - DestinationIp
  - DestinationPort
  - RemoteUrl
falsepositives:
  - Threat research in controlled lab
level: critical
tags:
  - attack.t1566
  - attack.t1557
  - attack.t1071.001
references:
  - https://www.group-ib.com/blog/balonx-sistema-mexico-phaas
KQL — Microsoft Sentinel / Defender
let BadDomains = dynamic(['lanhd6549tdhse.top','soporte-aclaracion.xyz','balonx.online','callbalonx.info','panelbalonxfs.xyz','phishing-domain.xyz']);
let RpcHosts = dynamic(['polygon.api.onfinality.io','polygon.lava.build','1rpc.io','polygon-rpc.com','rpc.ankr.com']);
let ScriptProcs = dynamic(['powershell.exe','pwsh.exe','mshta.exe','rundll32.exe','curl.exe','wscript.exe','cscript.exe','regsvr32.exe','msiexec.exe']);
let Lookback = 14d;
let NetHits = DeviceNetworkEvents
| where TimeGenerated >= ago(Lookback)
| where RemoteUrl has_any (BadDomains) or RemoteUrl has_any (RpcHosts) or RemoteIP has_any (dynamic([]))
| extend RemoteHost = tostring(parse_url(tostring(RemoteUrl)).Host)
| where RemoteHost has_any (BadDomains) or RemoteHost has_any (RpcHosts) or isempty(RemoteHost)
| project NetTime=TimeGenerated, DeviceName, DeviceId, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessParentFileName, RemoteUrl, RemoteIP, RemotePort, RemoteHost;
let ProcHits = DeviceProcessEvents
| where TimeGenerated >= ago(Lookback)
| where FileName in~ (ScriptProcs)
| where InitiatingProcessFileName has_any ('chrome.exe','msedge.exe','firefox.exe','brave.exe','explorer.exe') or ProcessCommandLine has_any ('-enc','-encodedcommand','-w hidden','-windowstyle hidden','invoke-webrequest',' iwr ','curl ','clipboard','javascript:')
| project ProcTime=TimeGenerated, DeviceName, DeviceId, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, AccountName, SHA256;
ProcHits
| join kind=leftouter (NetHits) on DeviceId, $left.DeviceId == $right.DeviceId
| where abs(datetime_diff('second', ProcTime, NetTime)) <= 900 or isnull(NetTime)
| project ProcTime, NetTime, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteHost, RemoteUrl, RemoteIP, SHA256
| order by ProcTime desc;
PowerShell
$ErrorActionPreference = 'SilentlyContinue'
$bad = @('lanhd6549tdhse.top','soporte-aclaracion.xyz','balonx.online','callbalonx.info','panelbalonxfs.xyz','phishing-domain.xyz')
$rpc = @('polygon.api.onfinality.io','polygon.lava.build','1rpc.io','polygon-rpc.com','rpc.ankr.com')
$scriptProc = @('powershell.exe','pwsh.exe','mshta.exe','rundll32.exe','curl.exe','wscript.exe','cscript.exe','regsvr32.exe','msiexec.exe')
Write-Host '[*] DNS cache and resolver hits'
Get-DnsClientCache | Where-Object { $n=$_.Entry; ($bad+$rpc | ForEach-Object { $n -like ('*'+$_+'*') }) -contains $true } | Select-Object Entry,RecordName,Data,TimeToLive
Write-Host '[*] Active TCP connections to IOC-resolved addresses'
$ips = foreach ($d in ($bad+$rpc)) { try { (Resolve-DnsName $d -Type A -ErrorAction Stop).IPAddress } catch { $null } }
Get-NetTCPConnection | Where-Object { $_.RemoteAddress -in $ips -or $_.RemotePort -in @(80,443,8080,8443) } | ForEach-Object {
  $p = Get-Process -Id $_.OwningProcess
  if ($p.ProcessName -in $scriptProc -or $ips -contains $_.RemoteAddress) { [pscustomobject]@{Local=$_.LocalAddress+':'+$_.LocalPort; Remote=$_.RemoteAddress+':'+$_.RemotePort; State=$_.State; Process=$p.ProcessName; Path=$p.Path; Id=$_.OwningProcess} }
} | Format-Table -AutoSize
Write-Host '[*] Persistence locations'
$runKeys = @('HKCU:\Software\Microsoft\Windows\CurrentVersion\Run','HKLM:\Software\Microsoft\Windows\CurrentVersion\Run','HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce','HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce')
foreach ($k in $runKeys) { Get-ItemProperty $k | ForEach-Object { $_.PSObject.Properties | Where-Object { $_.Value -match 'powershell|mshta|rundll32|curl|wscript|http://|https://|AppData|Temp' } | Select-Object @{n='Key';e={$k}},Name,Value } }
Get-ScheduledTask | Where-Object { ($_.Actions.Execute -match 'powershell|mshta|rundll32|curl|wscript') -or ($_.Actions.Arguments -match '-enc|-encodedcommand|hidden|invoke-webrequest| iwr |http://|https://') } | Select-Object TaskName,TaskPath,State,@{n='Action';e={($_.Actions.Execute+' '+$_.Actions.Arguments)}}
Write-Host '[*] Browser-launched process ancestry snapshot'
Get-CimInstance Win32_Process | Where-Object { $_.Name -in $scriptProc } | ForEach-Object { $parent = Get-CimInstance Win32_Process -Filter ('ProcessId='+$_.ParentProcessId); if ($parent.Name -match 'chrome|msedge|firefox|brave|explorer') { [pscustomobject]@{Time=$_.CreationDate; Proc=$_.Name; Cmd=$_.CommandLine; Parent=$parent.Name; ParentCmd=$parent.CommandLine} } } | Format-List
Write-Host '[*] Edge and app exposure check for listed CVE context'
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 25 HotFixID,Description,InstalledOn
Get-ItemProperty 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' | Where-Object { $_.DisplayName -match 'F5|Laravel|Spring|WordPress|PHP|OpenSSL|Android|ADB' } | Select-Object DisplayName,DisplayVersion,Publisher,InstallDate

Response Priorities

Immediate: block the Balonx domains and EtherHiding lure domain at DNS, secure web gateway, email URL defense, and EDR network control; alert on Polygon RPC only when paired with script/LOLBin initiators; hunt the last 14 days for browser-launched mshta/powershell/curl, WebSocket or GraphQL admin API contact, and any host that resolved panelbalonxfs.xyz token endpoints. Preserve browser cache, clipboard history where available, PowerShell transcripts, Sysmon process/network events, and Android device backups for mobile users.

24h: force identity verification and credential reset for finance users, helpdesk staff, and anyone with banking, VPN, cloud-storage, or admin portal access because these pulses include credential harvesting and MFA/session theft. Invalidate sessions and refresh tokens, review impossible travel and WebSocket/session concurrency, check for new MFA device enrollment, and audit mailbox rules, OAuth grants, cloud-storage sharing, and helpdesk password-reset transcripts for vishing.

1 week: harden the attack vectors rather than only blocking indicators. Patch or virtually patch the listed edge/app CVEs, restrict script interpreters via WDAC/AppLocker, block browser-spawned LOLBins, require phishing-resistant MFA for finance and remote access, segment Android/BYOD banking access from corporate SSO where possible, alert on accessibility-service changes for managed mobile fleets, add smart-contract/RPC anomaly analytics, and run purple-team cases for ClickFix, blockchain C2 resolution, WebSocket session hijack, and mass-scanner exploitation.

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.