The Shopping List
In which we read the receipts of 133 commands and discover that every attacker arrives with a plan
I. The Five-Phase Pipeline
A credential gets you through the door. But what's on the other side?
Our honeypot records every keystroke after successful authentication. Across the current observation window: 133 unique commands, executed in sequences that reveal not improvisation but protocol. Every attacker who runs commands follows the same five-phase pipeline:
๐ญ The Post-Authentication Pipeline
This is not improvisation. This is a production line.
The ordering is consistent across multiple IPs, multiple campaigns, and multiple weeks of observation. No attacker skips Phase 1 (fingerprinting). Most stop at Phase 2 (value assessment) โ because 96.4% of sessions determine the target isn't worth exploiting (as documented in Series 050B, The Silent Handshake). Only the high-value minority proceeds to Phases 3-5.
This is a quality control system. The credential gets you in the factory. The shopping list determines what you take.
II. Phase 1: "What Am I Looking At?"
The first command after login is always identification. Not of the attacker โ of the target.
๐ Phase 1: System Fingerprinting โ 133+ executions across 19+ IPs
| Command | Runs | IPs | Intelligence Gathered |
|---|---|---|---|
| uname -s -v -n -m | 58 | 9 | OS name, version, hostname, architecture |
| uname -s -v -n -r -m | 57 | 4 | + kernel release (vulnerability targeting) |
| /bin/uname, /usr/bin/uname, busybox uname | 47 each | 7 | Fallback paths โ works on minimal systems |
| uname -a | 21 | 19 | Full system info (simpler script) |
| cat /proc/cpuinfo | 18 | 16 | CPU count, model (mining potential) |
| whoami | 20 | 6 | Privilege level confirmation |
| ifconfig | 18 | 16 | Network interfaces, internal IP range |
Notice the redundancy. The command uname is tried via four different paths: /bin/uname, /usr/bin/uname, busybox uname, and bare uname. This is not uncertainty โ it's environmental resilience. The script must work on full Linux, stripped containers, BusyBox-based IoT devices, and embedded systems where PATH is non-standard.
The fingerprinting answers four questions simultaneously:
- What payload architecture? โ x86_64, aarch64, armv7l, mips? This determines which binary to download.
- What exploitation surface? โ Kernel version determines which local privilege escalation exploits work.
- What mining potential? โ CPU count and model determine crypto-mining profitability.
- What network position? โ Internal IP reveals whether lateral movement is possible.
The CIA's Vault 7 "Codex Spec" (SECRET//ORCON/NOFORN) defines a standardized metadata collection format: "original filename, path, size, MD5 hash, modified time, accessed time, created time, owner, group." The same intelligence requirement โ characterize the target before exploitation โ drives both nation-state operations and criminal botnets. The methodology is identical. Only the classification level differs.
โ WikiLeaks, CIA Vault 7: Codex Specification, 2017
III. Phase 2: "Is This Worth My Time?"
After fingerprinting comes the economic decision. Not every compromised system is worth exploiting. The attacker must determine: is the marginal revenue of deploying a payload greater than the marginal cost of maintaining access?
๐ฐ Phase 2: Value Assessment โ The Economic Calculus
Memory Threshold
Competitor Detection
Device Type Detection
Marker File Check
The 1 GB threshold is the most revealing command in the entire dataset. It is an explicit, coded economic decision. The operator has calculated that:
- A machine with <1 GB RAM mines at approximately X hash/second
- At current Monero difficulty, this produces <$Y per month
- Maintaining the compromised host (C2 communication, persistence, updates) costs approximately $Z
- When Y < Z, the host is abandoned.
This is not hacking. This is asset management. The same calculation a venture capitalist makes when deciding which portfolio companies to continue funding.
Read between the lines: The 1 GB threshold tells us exactly what the attacker is deploying: a cryptocurrency miner. Not ransomware (which would encrypt regardless of RAM). Not a botnet relay (which needs bandwidth, not memory). Not data exfiltration (which needs disk access, not RAM). The memory check IS the payload declaration.
IV. Phase 3: "Nobody Saw Me Here"
Before touching anything permanent, the sophisticated attacker erases the evidence of their own commands:
๐งน Phase 3: Anti-Forensics Suite โ 9 executions, 3 IPs
Four commands to disable history. Four. Two exports and two unsets. The redundancy is deliberate โ it covers bash, ksh, zsh, and any other shell that might be running. The attacker doesn't know which shell they landed in, so they clear ALL of them.
But the fifth command is the masterpiece: if ! type export. This tests whether the type builtin works as expected. In real bash, type export returns "export is a shell builtin." In Cowrie (our honeypot), the implementation is imperfect โ it may not handle this query correctly.
The attacker is testing whether they're in a real system or a trap.
The output string "ERROR: BADtype: export" is never displayed to us โ it's checked internally by the script. If the test fails (indicating a honeypot), the script likely terminates. The commands we see are only the ones that didn't detect the deception.
The implication: For every session we observe, there may be sessions that detected our honeypot and silently disconnected. Our data contains only the survivors of the detection filter โ the commands from tools that weren't sophisticated enough to identify Cowrie, or from operators who don't include the detection check.
V. Phase 4: "The Lock Changes But I Keep My Key"
Persistence is the difference between a one-time theft and ongoing access. Two techniques dominate:
๐ Phase 4: Persistence Mechanisms
Technique A: SSH Key Injection
Technique B: Immutability Bypass
chattr -ia removes immutable + append-only flags • lockr = non-standard tool (busybox variant?) • Evidence of COMPETITION: previous attackers set immutable flags to protect their persistenceThe SSH key injection is elegant in its finality. The attacker doesn't just add their key โ they destroy the entire .ssh directory and rebuild it from scratch. This serves three purposes:
- Eliminates the legitimate owner's keys โ preventing them from using key-based auth to investigate
- Eliminates competitor keys โ previous attackers lose their persistence
- Creates a clean slate โ no residual authorized_keys entries to detect
But the chattr -ia command tells a deeper story. The -i flag removes the "immutable" attribute. The -a flag removes "append-only." These flags can only be SET by root. Their presence means a previous attacker โ who also had root โ marked the .ssh directory as immutable to protect their own persistence mechanism.
This is a territorial conflict. Multiple attackers competing for the same resource, using Linux filesystem attributes as locks and lockpicks. The first attacker sets immutable to protect their key. The second attacker removes immutable to overwrite it with theirs.
The recursive irony: The very persistence mechanism that makes a compromised host valuable (key-based re-entry) makes it a target for other attackers. A system with an SSH key in authorized_keys is not just compromised โ it is improved infrastructure from the next attacker's perspective. They just need to replace one key with another.
VI. Phase 5: "Delivery"
The final phase. The payload arrives. Three distinct delivery mechanisms observed:
๐ฃ Payload Delivery Mechanisms
Delivery A: The Meow Botnet
ulimit -n 1020000 โ increases file descriptors to 1M (mass-connection botnet)echo '123456' | sudo -S โ uses SSH password for sudoDelivery B: Chinese /linux Payload (Triple Fallback)
/linux โ one binary, multiple serversnohup โ survives shell terminationDelivery C: IoT/BusyBox Payload
dl600 โ IoT-specific (busybox = embedded device)Three delivery mechanisms, three operator profiles:
Meow (France/GCP) โ The DDoS operator. ulimit -n 1020000 is the smoking gun: increasing file descriptors to one million means the binary needs to maintain a million simultaneous connections. That's a DDoS botnet. It downloads BOTH x86 and arm64 variants โ wasteful but architecturally agnostic. The echo '123456' | sudo -S reveals it uses the same password for sudo escalation that worked for SSH โ exploiting the probability that default passwords are reused across services.
Chinese /linux (Triple Fallback) โ The resilient operator. Four C2 servers, three download methods. If curl is absent, try wget. If wget is absent, use raw bash TCP (/dev/tcp). The random filenames evade simple grep-based detection. The nohup ensures the download survives even if the SSH session is killed. This operator expects network filtering and has engineered around it.
dl600 (Latvia/BusyBox) โ The IoT specialist. busybox wget targets the stripped-down environment of routers, cameras, and embedded devices. The payload name "dl600" suggests a scanner/spreader (numerical naming convention common in Mirai variants).
โ ๏ธ The Sudo Password Reuse Attack
The meow botnet uses: echo '123456' | sudo -S
It pipes the SSH password ('123456') directly into sudo. This works because:
- The system has the same default password for both SSH and sudo
- No separate sudo password was ever configured
- The attacker doesn't NEED to crack sudo โ they already HAVE the credential from Phase 0
One default password = full root access. Not two exploits. One.
VII. The Contested Resource
The most human detail in the entire command set is the competition:
Read this sequence carefully. The attacker is:
- Deleting competitor scripts (secure.sh, auth.sh โ names chosen to look legitimate)
- Killing competitor processes (force-kill, no graceful shutdown)
- Emptying hosts.deny โ removing IP blocks that a previous attacker may have set to prevent others from accessing the system
- Killing all sleep processes โ breaking timer-based persistence of competitor malware
This is gang warfare for CPU cycles. The compromised system is a contested resource, and multiple criminal operations fight over it in real-time. The attacker who arrives second must first evict the attacker who arrived first.
The echo > /etc/hosts.deny is particularly revealing. A previous attacker modified hosts.deny to BLOCK other IPs from connecting โ an attempt to monopolize the compromised system. The new attacker empties this file to restore access for themselves (and anyone else). It's the digital equivalent of cutting someone else's padlock off a squat.
"A coordinated international law enforcement operation resulted in the seizure of HIVE SPIDER infrastructure and acquisition of the Hive ransomware decryption key. The U.S. Department of Justice has reportedly maintained access to HIVE SPIDER's internal infrastructure since July 2022."
โ CrowdStrike Global Threat Report, 2024
Even law enforcement participates in the same dynamic: maintaining persistent access to criminal infrastructure without the criminal knowing. The DOJ was inside HIVE SPIDER for six months, observing. The same access-persistence-surveillance pipeline that criminals run against victims, governments run against criminals. And sometimes โ as the Snowden documents proved โ against everyone else too.
VIII. The Kill Chain Economy
The Verizon DBIR 2024 reports 5,175 System Intrusion incidents with 3,803 confirmed data disclosures. Financial motive: 95%. Espionage: 5%. The credential-to-exploitation pipeline we've documented in this letter IS that statistic โ observed at the individual command level.
The full economic chain:
โ๏ธ The Kill Chain as Supply Chain
The entire chain โ from scan to revenue โ is automated, economic, and optimized. The human involvement is in the initial tool development and infrastructure management. The execution is pure machinery.
And this is just the mining path. For ransomware affiliates (documented by CrowdStrike as "Initial Access Brokers"), the validated credential is itself the product โ sold for $10-$10,000 depending on the target's industry, revenue, and network size. The shopping list in Phase 2 is also a pricing inventory: more CPUs, more RAM, more value.
IX. The Thread Forward
This letter documented the shopping list โ what happens after the credential works. Five phases, three delivery mechanisms, one economic logic: maximize revenue per compromised host while minimizing detection risk.
The next letter โ TI-2026-051C: "The Stuffing Machine" โ will examine the credential-reuse patterns that connect different IPs to the same operator. When the same username/password pair appears from 10+ different source IPs, it's not coincidence. It's a distributed workforce sharing the same input list.
๐ Series Continuity
They didn't break in to look around.
They arrived with a list. They checked every item.
And if the system wasn't worth their time, they left.