Campaign comparison

The DDoS Zombie That Won't Let Go vs Skynet Lost the War in 2013. Its Malware Still Doesn't Know It.

2026-09-10  ·  2026-08-29

Link signals

Analytic Same stage(s) reached by different techniques: initial-access, execution, defense-evasion, impact, command-and-control — same objective, different method
Commodity Shared ATT&CK technique(s): T1571 — commodity, many actors share these

Actor & objective

Actor unattributed vs unattributed different
Objective DDoS-for-hire botnet recruitment: conscripts the host as an on-demand flooding zombie, not data theft. The lockdown behavior exists to keep the machine exclusively under the operator's control. vs financial: banking credential theft (ZeuS core) and cryptocurrency mining, with a persistent per-victim Tor backdoor for remote access different

Kill chain

= same stage & technique   ≠ same stage, different technique   • unique to one campaign

The DDoS Zombie That Won't Let Go

  1. divergent step: 1. initial-access · T1190
    Jenkins Script Console reachable from the internet without a password; Groovy code execution as the service account, no exploit required
  2. divergent step: 2. execution · T1059.004
    delivery command tries five writable directories and three download tools (wget/curl/busybox wget) in turn, then runs the binary four times in a row
  3. unique step: 3. persistence · T1543.002
    writes /etc/systemd/system/system-helper.service ("System Helper", Restart=always), enables it, then deletes its own file from disk
  4. divergent step: 4. defense-evasion · T1562.004
    adds firewall chain LOCKER_INPUT dropping inbound traffic on SSH/Telnet/RDP/VNC ports so remote access cannot be restored
  5. divergent step: 5. impact · T1489
    kills sshd, dropbear, ftpd, vncserver, xinetd and in.telnetd before the firewall rules go in
  6. divergent step: 6. defense-evasion · T1562.001
    sets 19 download-tool binaries (wget/curl/tftp/scp/aria2c and others) to permission 000, and SIGKILLs ps/top/netstat/tcpdump/strace/gdb and a dozen other analysis tools the instant they start
  7. divergent step: 7. defense-evasion · T1070.002
    deletes and recreates empty auth.log, syslog, messages, secure, wtmp, btmp, lastlog, faillog, dmesg, kern.log and the journal/audit directories
  8. divergent step: 8. defense-evasion · T1070.003
    wipes .bash_history and .zsh_history for the current user and root
  9. divergent step: 9. defense-evasion · T1027
    the process-blocklist table (gdb, strace, ltrace, objdump, readelf, strings, radare2, iaito, ghidra, binwalk) is stored XOR'd with 0xE7 at a fixed offset so it never appears in a strings dump; identical across both builds
  10. divergent step: 10. defense-evasion · T1622
    background thread every 10 seconds: self-ptrace, TracerPid check, FNV-1a memory hash against a baseline, and a scan for the 0xCC breakpoint byte; any hit kills and relaunches the process from /proc/self/exe
  11. divergent step: 11. defense-evasion · T1036.004
    renames its running process to kworker/0:0, mimicking a kernel worker thread that would never hold a network socket
  12. divergent step: 12. command-and-control · T1571
    hardcoded IPv4 literal and fixed port (83.168.69[.]95:9482); plain-text single-line protocol, no domain, no DNS lookup, no encryption, no fallback
  13. divergent step: 13. impact · T1498
    on command, floods a named target using one of 11 methods (udpplain, syn, std, pps, ack, raknet, ssh, http, tcpstomp, minecraft, ovh)

Skynet Lost the War in 2013. Its Malware Still Doesn't Know It.

  1. divergent step: 1. initial-access · T1204.002
    fake lossless-audio release on Usenet; unpacks to an executable and a 58MB random-filler blob, no media content
  2. divergent step: 2. defense-evasion · T1027.002
    3.7MB code section, 13% real code, 87% random filler/zero padding, 1,684 opaque predicates
  3. divergent step: 3. defense-evasion · T1027.007
    import table declares only C-runtime housekeeping; functions resolved at runtime by manually walking the PEB and parsing export tables
  4. divergent step: 4. defense-evasion · T1497.003
    ~483 billion computed instructions (3-8 min CPU-saturated stall) before any file/registry/network activity, outlasting default sandbox timeouts
  5. divergent step: 5. execution · T1055.012
    svchost.exe started suspended, written to, resumed: manually mapped image with no OS record of the module
  6. unique step: 6. credential-access · T1056.004
    ntdll.dll remapped writable in every injected process; read as ZeuS installing its own form-grabbing hooks, not anti-EDR unhooking
  7. divergent step: 7. command-and-control · T1090.003
    IRC C2 over Tor v2 hidden services; per-victim inbound hidden service on non-standard port 55080
  8. divergent step: 8. impact · T1496
    CGMiner GPU mining, idle-gated (starts after 2 minutes without user input, stops on touch)

Side by side

green = shared by both campaigns.

Attribute-by-attribute comparison of The DDoS Zombie That Won't Let Go and Skynet Lost the War in 2013. Its Malware Still Doesn't Know It.. Values labelled "shared" appear in both campaigns.
The DDoS Zombie That Won't Let Go Skynet Lost the War in 2013. Its Malware Still Doesn't Know It.
Procedures
AV/sandbox-domain hosts-file poisoning (21 entries to 0.0.0.0)XOR-obfuscated (0xE7) anti-analysis process-block tableanalysis-tool SIGKILL on launchdownload-tool permission-zeroing (chmod 000 across 19 paths, reversible via a saved permissions list)firewall-based remote-access denial (LOCKER_INPUT chain)iterative recompilation (2 builds, 7 days apart, from the same URL)kworker process-name masquerademulti-directory, multi-tool delivery fallback (5 candidate directories, 3 download tools, 4x execution)ptrace/TracerPid/memory-hash/breakpoint-byte anti-debug with self-relaunchrival bot/miner evictionmanual-PEB-walk-api-resolutionntdll-writable-form-grab-hooksopaque-predicate-bloatprocess-hollowing:svchost.exesandbox-timer-stall
Toolmarks
C2 registration string format: "<arch> <group> <memMB> <cpus>"build 2 only: .cron_backup/, .locker.disabled, a "stealth" line appended to /etc/modulesfile names .locker.pid / .locker.lock / .locker.ready / .watchdog.pid / .disabled.list / .iptables.rulesfirewall chain LOCKER_INPUTprocess name t.me/flylegitservice unit system-helper.service ("System Helper")1,684 opaque predicates over 87% paddingPEB-walk API resolution instead of import tablentdll.dll made writable for form-grabbing hookssvchost.exe process hollowing~483B-instruction sandbox-timer stall
C2 protocol
custom plain-text TCP on port 9482: registration string "<arch> <group> <memMB> <cpus>", ping/pong keepalive, unencrypted attack-order commands, 8-second retry cadence, gives up after 450 straight failuresIRC over Tor v2 hidden services (30 addresses); per-victim inbound Tor hidden service on port 55080. All defunct since Tor removed v2 in October 2021
Tooling
mirai-derived custom DDoS bot (C, static uClibc, UPX-packed)cgminertorzeus
Capabilities
hardcoded plain-text C2 over a non-standard port; no domain, no DNS, no encryption, no fallbackon-command DDoS flood across 11 methods (udpplain, syn, std, pps, ack, raknet, ssh, http, tcpstomp, minecraft, ovh)rival-bot and rival-miner eviction to keep the host exclusiveself-defense lockdown: kills remote-access daemons, firewalls off SSH/Telnet/RDP/VNC ports, zeroes permissions on 19 download tools, kills analysis tooling the instant it launches, poisons /etc/hosts against 21 AV/sandbox vendors, deletes logs and shell historysystemd persistence (Restart=always) plus a self-relaunch-from-memory routine triggered by anti-debug checksGPU cryptocurrency mining (CGMiner)SOCKS4/SOCKS5 proxying and denial of service, driven over IRCbanking credential theft (ZeuS core, form grabbing via ntdll hooking)per-victim Tor hidden service for inbound remote access
C2
83.168.69.95:9482 (hardcoded plain-text control channel, both builds)28 additional Tor v2 addresses, full list published in the briefqdzjxwujdtxrjkrz.onion (ZeuS configuration server, port 80)uy5t7cus7dptkchs.onion (primary IRC C2, port 16667)
ASNs
AS202520 (SkyPass Solutions, Warsaw, Poland — staging and C2 host, same machine on two ports)—
Products
Jenkins (Script Console)—
Sectors
—consumer

← Compare a different pair