Two active OTX pulses published this week expose a dual threat to enterprise environments: a financially-motivated banking trojan expanding north from Latin America into Mexico and Spain via DLL sideloading, and a loader-driven distribution pipeline converting infected endpoints into monetized residential proxy nodes. Both campaigns share a common thread — abuse of legitimate software and user trust to establish persistent, hard-to-detect footholds inside corporate networks.
Threat Summary
These two OTX pulses reveal concurrent crimeware operations targeting enterprise endpoints through complementary vectors:
Campaign 1 — Grandoreiro Banking Trojan (LATAM Expansion): Despite a major INTERPOL-led law enforcement disruption in January 2024 that saw arrests and infrastructure seizures in Brazil, Grandoreiro operators have reconstituted and expanded geographically. The latest campaign — documented by Acronis TRU — shifts targeting from Brazil to Mexico and Spain, using a DLL sideloading chain that abuses the legitimate Duplicate Files Finder application to load a malicious payload. The loader is heavily fortified with sandbox detection, VM artifact checks, and anti-analysis routines consistent with Grandoreiro's Delphi-based codebase.
Campaign 2 — PRIVATELOADER → Peer2Profit/Astroproxy Pipeline: Silent Push research documents how the PRIVATELOADER pay-per-install service delivers bandwidth-sharing SDKs (Peer2Profit) that silently convert victim endpoints into residential proxy exit nodes. That bandwidth is resold through Astroproxy at up to 27x markup. Over a 72-hour observation window, researchers enumerated 117,224 unique IPs across residential, mobile, and datacenter pools. For enterprises, this means infected endpoints become conduits for anonymized third-party traffic — including potentially malicious traffic attributable to your IP space.
Collective objective: Monetization. Grandoreiro harvests banking credentials and performs fraudulent transactions; the proxy SDK operation monetizes raw network bandwidth and creates attribution-laundering infrastructure usable by other threat actors.
Threat Actor / Malware Profile
Grandoreiro (MITRE S0531)
- Distribution: Phishing emails impersonating government entities (tax authorities, telecom providers) with links to ZIP/MSI droppers.
- Execution chain: Legitimate signed binary (Duplicate Files Finder) loads a malicious DLL placed in the same directory (DLL search-order hijacking / sideloading, T1574.002).
- Payload behavior: Delphi-compiled banking trojan. Monitors browser activity for banking sessions, overlays fake login windows, captures keystrokes, and enables remote operator control (T1056.001, T1057, T1021).
- C2 communication: Historically uses DGA-generated domains and, in recent variants, dead-drop resolution via legitimate cloud services. Current campaign C2 resolves through dynamic-DNS infrastructure (see IOC hostnames below).
- Persistence: Registry Run keys and/or LNK manipulation (T1547.001).
- Anti-analysis: Sandbox detection, VM artifact enumeration, keyboard-locale checks (targeting Latin America/Spain language packs), string encryption, and Delphi-specific packing to defeat static analysis.
PRIVATELOADER → Peer2Profit SDK
- Distribution: PRIVATELOADER pay-per-install (PPI) service — commonly bundled with cracked software, fake installers, and malvertising.
- Payload behavior: Installs bandwidth-sharing agent that operates a backconnect proxy service on the host, exposing the internal IP to the Astroproxy commercial pool.
- C2 communication: Persistent outbound TLS connections to proxy orchestration infrastructure; backconnect architecture accepts inbound-routed traffic from proxy customers.
- Persistence: Service installation and scheduled tasks.
- Enterprise risk: Internal network exposure (proxy customers can potentially reach internal resources through the infected host), policy violations, and IP reputation damage.
IOC Analysis
Indicator types present in these pulses:
| Type | Count (sample) | Operational Use |
|---|---|---|
| Hostnames (Grandoreiro C2/staging) | 4 shown / 55 total | DNS sinkhole, proxy block, TLS SNI inspection |
| FileHash-MD5 (Grandoreiro loaders/payloads) | 4 shown | EDR blocklist, retro-hunt on file creation |
| FileHash-SHA256 (PRIVATELOADER/Peer2Profit samples) | 4 | EDR blocklist, sandbox detonation reference |
Notable hostnames: voyage.mydissent.net, beeges.health-carereform.com, b744156103040828396040.nhlfan.net, streamlinepdf-8m2x.workisboring.com — these follow the dynamic-DNS / long-subdomain DGA pattern typical of Grandoreiro staging infrastructure.
SOC operationalization guidance:
- Ingest all 59 indicators into your TIP (MISP, ThreatConnect, OpenCTI) tagged to pulse IDs for provenance.
- Push hostnames to DNS firewall / RPZ and web proxy block categories immediately.
- Push MD5/SHA256 hashes to EDR blocklists (Defender, CrowdStrike, SentinelOne all support hash-based prevention).
- Retro-hunt 30–90 days of DNS and proxy telemetry for the listed hostnames — Grandoreiro infrastructure rotates quickly, so historical hits matter more than future blocks.
- For the proxy SDK hashes, hunt for unexpected outbound TLS sessions with long durations and high byte counts from workstations — bandwidth sharing produces distinctive traffic profiles.
Decoding tooling: CyberChef (DGA pattern analysis), VirusTotal/OTX pivoting on hashes, dnstwist for lookalike monitoring, and sandbox detonation (ANY.RUN, Joe Sandbox) for behavior extraction from the Delphi loader.
Detection Engineering
---
title: Grandoreiro DLL Sideloading via Duplicate Files Finder
id: 7f3a1c2e-9b4d-4e8a-a1f5-3c6d9e2b8a01
status: experimental
description: Detects DLL sideloading execution of the legitimate Duplicate Files Finder binary loading an unsigned or non-standard DLL, consistent with the Grandoreiro Mexico/Spain campaign.
author: Security Arsenal Threat Intelligence
references:
- https://www.acronis.com/en/tru/posts/grandoreiro-goes-north-from-brazil-to-mexico-with-a-new-dll-sideloading-campaign/
date: 2026/08/22
tags:
- attack.defense_evasion
- attack.t1574.002
logsource:
category: image_load
product: windows
detection:
selection_process:
Image|endswith:
- '\duplicatefilesfinder.exe'
- '\dff.exe'
selection_dll:
ImageLoaded|contains:
- '\AppData\'
- '\Temp\'
- '\Downloads\'
- '\Users\Public\'
filter_signed:
Signed: 'true'
condition: selection_process and selection_dll and not filter_signed
falsepositives:
- Legitimate portable application usage (rare in enterprise)
level: high
---
title: Grandoreiro C2 Dynamic DNS Communication
id: 2b8d4f1a-6c3e-4a9b-b7d2-5e1f8c3a9d02
status: experimental
description: Detects DNS resolution of known Grandoreiro C2 and staging hostnames identified in OTX pulse data.
author: Security Arsenal Threat Intelligence
references:
- https://otx.alienvault.com/
date: 2026/08/22
tags:
- attack.command_and_control
- attack.t1071.001
- attack.t1568.002
logsource:
category: dns
product: windows
detection:
selection:
query|contains:
- 'voyage.mydissent.net'
- 'beeges.health-carereform.com'
- 'nhlfan.net'
- 'workisboring.com'
condition: selection
falsepositives:
- None expected for full hostname matches
level: critical
---
title: PRIVATELOADER Peer2Profit Bandwidth Sharing Agent Installation
id: 9e5c2a7d-1f8b-4d6c-c3a9-7b2e4d1f6a03
status: experimental
description: Detects installation or execution of Peer2Profit bandwidth-sharing SDK components delivered via PRIVATELOADER, which enroll endpoints into residential proxy networks.
author: Security Arsenal Threat Intelligence
references:
- https://www.silentpush.com/blog/peer2profit-astroproxy/
date: 2026/08/22
tags:
- attack.command_and_control
- attack.t1102
- attack.t1543.003
logsource:
category: process_creation
product: windows
detection:
selection_image:
Image|contains:
- '\peer2profit'
- '\p2papp'
- '\traffmonetizer'
selection_cli:
CommandLine|contains:
- 'peer2profit'
- 'astroproxy'
condition: selection_image or selection_cli
falsepositives:
- User intentionally installed bandwidth-sharing software (still a policy violation in enterprise)
level: high
// Hunt: Grandoreiro C2 DNS + PRIVATELOADER proxy agent network beacons
// Microsoft Sentinel / Defender XDR — 30-day retro-hunt
let GrandoreiroC2 = dynamic([
"voyage.mydissent.net",
"beeges.health-carereform.com",
"b744156103040828396040.nhlfan.net",
"streamlinepdf-8m2x.workisboring.com"
]);
let ProxyHashes = dynamic([
"eb8826bac873442045a6a05f1fa25b410ca18db6942053f6d146467c00d5338d",
"0b10a1e48df2884a7a8a1ebf5aa903207955433c8ea00d7602c78be6e6c177cc",
"8871d12a7bb7529ff6e90ad5a18c86e92a402a2d02d3283d1385bdb52ba2b0f2",
"c85c7436fdb71cf52db6ef134b336d66c7dbd3738a7866f8b9992434d1208a4b"
]);
let DnsHits = DeviceNetworkEvents
| where Timestamp > ago(30d)
| where RemoteUrl has_any (GrandoreiroC2)
| summarize ConnectionCount = count(), FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
by DeviceName, InitiatingProcessFileName, RemoteUrl, RemoteIP;
let HashHits = DeviceProcessEvents
| where Timestamp > ago(30d)
| where SHA256 has_any (ProxyHashes) or MD5 in (
"0fac99f58640171164d979d5529b00f8",
"320633a89e2f8b55cf45e4377bb8d041",
"48bf5850f83ac9bf7289b4473e0317b0",
"5d6cb9b58fcd2eb04da562d8249fc59f")
| summarize by DeviceName, FileName, FolderPath, SHA256, ProcessCommandLine;
// Bandwidth-sharing behavior: long-lived high-volume outbound TLS from workstations
let BeaconBehavior = DeviceNetworkEvents
| where Timestamp > ago(7d)
| where RemotePort in (443, 8443)
| where InitiatingProcessFileName has_any ("peer2profit", "p2p", "traff", "proxy")
| summarize TotalConnections = count(), DistinctRemotes = dcount(RemoteIP)
by DeviceName, InitiatingProcessFileName
| where TotalConnections > 100;
union DnsHits, HashHits, BeaconBehavior
| sort by LastSeen desc
# Security Arsenal - Grandoreiro + Peer2Profit IOC Hunt Script
# Run elevated on suspect endpoints or via remote PS session / EDR live response
$Report = @()
# 1. Registry Run key persistence check (Grandoreiro T1547.001)
$RunKeys = @(
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
)
foreach ($key in $RunKeys) {
if (Test-Path $key) {
Get-ItemProperty $key | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Value -match "AppData|Temp|Public" -and
$_.Value -notmatch "Microsoft|OneDrive|Teams"
} | ForEach-Object {
$Report += [PSCustomObject]@{
Type = "SuspiciousRunKey"; Path = $key
Name = $_.Name; Value = $_.Value
}
}
}
}
}
# 2. Grandoreiro payload hash check in common staging paths
$MD5s = @("0fac99f58640171164d979d5529b00f8","320633a89e2f8b55cf45e4377bb8d041",
"48bf5850f83ac9bf7289b4473e0317b0","5d6cb9b58fcd2eb04da562d8249fc59f")
$SHA256s = @("eb8826bac873442045a6a05f1fa25b410ca18db6942053f6d146467c00d5338d",
"0b10a1e48df2884a7a8a1ebf5aa903207955433c8ea00d7602c78be6e6c177cc",
"8871d12a7bb7529ff6e90ad5a18c86e92a402a2d02d3283d1385bdb52ba2b0f2",
"c85c7436fdb71cf52db6ef134b336d66c7dbd3738a7866f8b9992434d1208a4b")
$SearchPaths = @("$env:APPDATA","$env:LOCALAPPDATA","$env:TEMP","C:\Users\Public")
foreach ($path in $SearchPaths) {
Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.Extension -in ".exe",".dll",".msi" } | ForEach-Object {
$m = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash
$s = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
if ($MD5s -contains $m.ToLower() -or $SHA256s -contains $s.ToLower()) {
$Report += [PSCustomObject]@{Type="IOC_HASH_MATCH"; Path=$_.FullName; Name=$_.Name; Value=$s}
}
}
}
# 3. Peer2Profit / bandwidth-sharing service and scheduled task check
Get-Service | Where-Object { $_.Name -match "peer2profit|p2papp|traffmonetizer|astroproxy" } |
ForEach-Object { $Report += [PSCustomObject]@{Type="ProxyService"; Path=$_.Name; Name=$_.DisplayName; Value=$_.Status} }
Get-ScheduledTask | Where-Object { $_.TaskName -match "peer2profit|proxy|p2p" } |
ForEach-Object { $Report += [PSCustomObject]@{Type="ProxyScheduledTask"; Path=$_.TaskPath; Name=$_.TaskName; Value=$_.State} }
# 4. Active connections to Grandoreiro C2 dynamic-DNS domains
$C2Patterns = "mydissent.net|health-carereform.com|nhlfan.net|workisboring.com"
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue | ForEach-Object {
$dns = (Resolve-DnsName $_.RemoteAddress -ErrorAction SilentlyContinue).NameHost
if ($dns -match $C2Patterns) {
$Report += [PSCustomObject]@{Type="C2_Connection"; Path=$dns; Name=$_.OwningProcess; Value="$($_.RemoteAddress):$($_.RemotePort)"}
}
}
# 5. Duplicate Files Finder sideload artifact check
Get-ChildItem -Path "C:\Program Files","C:\Program Files (x86)","$env:LOCALAPPDATA" -Recurse -ErrorAction SilentlyContinue -Include "duplicatefilesfinder.exe" |
ForEach-Object {
$dir = $_.DirectoryName
Get-ChildItem $dir -Filter *.dll | Where-Object { -not ($_.VersionInfo.CompanyName) } |
ForEach-Object { $Report += [PSCustomObject]@{Type="SideloadCandidate"; Path=$dir; Name=$_.Name; Value="Unsigned DLL beside DFF binary"} }
}
if ($Report.Count -gt 0) {
Write-Host "[!] $($Report.Count) suspicious artifacts found:" -ForegroundColor Red
$Report | Format-Table -AutoSize
$Report | Export-Csv "Grandoreiro_P2P_Hunt_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation
} else {
Write-Host "[+] No IOC artifacts detected on this host." -ForegroundColor Green
}
Response Priorities
Immediate (0–4 hours)
- Block all listed Grandoreiro hostnames at DNS firewall/RPZ and web proxy; push all MD5/SHA256 indicators to EDR prevention lists.
- Run the KQL retro-hunt (30 days) across the estate; isolate any host with DNS hits to C2 domains or matching hashes.
- Search email gateways for Grandoreiro phishing lures (tax/telecom themes, Spanish and Portuguese language) targeting Mexico/Spain-facing users.
- Identify any endpoint running bandwidth-sharing software (Peer2Profit or similar) — these violate acceptable-use policy and expose internal network paths.
24 Hours
- Grandoreiro is credential-stealing banking malware: force password resets and session revocation for any user on an infected endpoint, prioritizing corporate banking, ERP, and payment-platform credentials.
- Review banking/finance application access logs from affected hosts for anomalous sessions or transaction attempts.
- Audit outbound TLS traffic from infected hosts for data staging; Grandoreiro operators maintain interactive remote access sessions.
- Check whether any infected endpoint's public IP appears in residential proxy pools (attribution/abuse-report exposure).
1 Week
- Deploy application control (WDAC/AppLocker) rules blocking execution of unsigned binaries from user-writable directories — this kills the DLL sideloading staging path.
- Enable DLL search-order hardening and audit unsigned DLL loads adjacent to legitimate signed binaries estate-wide.
- Restrict workstation ability to install services and scheduled tasks; alert on new service creation outside change windows (catches proxy SDK persistence).
- Implement egress filtering and TLS SNI alerting on dynamic-DNS TLDs; segment finance-team workstations with stricter outbound policies.
- Update user awareness training for Spanish/Portuguese phishing themes ahead of the Mexico/Spain targeting wave.
Related Resources
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.