345gs5662d34 / mdrfckr — Credential stuffing + SSH key campaign
Active, six-week-plus campaign flooding SSH honeypots with a single reused credential (plus a closely-related variant), then persisting access via a hardcoded RSA authorized_keys backdoor.
Executive summary
One password, reused across more than 9,500 machines, kept a botnet logging into our honeypots daily for six-plus weeks straight. Then, in the final days of the window covered here, that volume dropped — a real decline, though a later full-day count showed it was less severe than an initial partial-day read suggested. This report walks through how the credential-stuffing and SSH-key phases work, and what we ruled out to confirm the drop is real botnet behavior rather than a sensor artifact.
Over a 42+ day window (2026-05-21 through 2026-07-01, ongoing), sensors observed a coordinated two-phase campaign
combining mass credential stuffing with SSH authorized_keys persistence. The campaign uses the credential
345gs5662d34 as both username and password, attempting 458,000+ logins across 9,500+ unique
source IPs. Upon successful login, the attacker injects a single hardcoded RSA SSH key (comment:
mdrfckr) into ~/.ssh/authorized_keys, establishing persistent backdoor access —
observed 333,000+ times across 9,200+ IPs.
The credential stuffing and key injection are performed by the same botnet: the top IPs participate in
both phases with near-identical event counts. The campaign is remarkable for its scale (9,700+ IPs), its
narrow-credential approach (a primary password plus a single-digit variant, together spanning 7+ usernames),
its awareness of Linux hardening
(the chattr -ia pre-step to remove immutable attributes before modifying the SSH directory),
and its persistence — six-plus weeks of continuous activity against the same credential family and key. Daily
volume held steady at roughly 8,600-9,600 credential attempts/day through 2026-06-27, then declined to
roughly 3,400-3,700 attempts/day by 2026-06-30 – 07-01 — a real drop, but to about 40% of peak, not the
near-total collapse an early partial-day read of 2026-07-01 initially suggested; see Campaign Timeline for
the day-by-day breakdown. The campaign's IPs were cross-checked against sensor-side collection-volume
controls and none were affected, so the drop reflects real botnet behavior rather than a collection
artifact — possibly a partial takedown, C2 rotation, or a shift of some nodes to a new credential/key pair
not yet identified.
Threat actor profile
| Attribute | Assessment |
|---|---|
| Campaign name | 345gs5662d34 / mdrfckr (credential + key comment) |
| Type | Coordinated credential stuffing botnet with SSH key persistence |
| Sophistication | Medium — large botnet, single credential, but includes chattr hardening bypass |
| Intent | Persistent SSH access via authorized_keys for future exploitation |
| Botnet size | ~9,500 unique IPs, globally distributed |
| First observed | 2026-05-21 |
| Last observed | 2026-07-01 (active, declining volume) |
Phase 1 — Credential stuffing
The campaign uses the credential 345gs5662d34 as both username and password. The same
botnet IPs also spray a closely-related variant password, 3245gs5662d34 (one digit longer),
against a set of common system usernames. Both credentials appear programmatically generated —
possibly a default password from a specific IoT firmware or a botnet credential rotation token.
Credential distribution
| Username | Password | Attempts | Unique IPs |
|---|---|---|---|
345gs5662d34 | 345gs5662d34 | 461,111 | 9,612 |
root | 3245gs5662d34 | 341,436 | 9,210 |
ubuntu | 3245gs5662d34 | 26,448 | 5,394 |
admin | 3245gs5662d34 | 18,630 | 4,586 |
user | 3245gs5662d34 | 10,680 | 3,748 |
test | 3245gs5662d34 | 8,569 | 3,390 |
ftpuser | 3245gs5662d34 | 6,133 | 2,876 |
Top participating botnet IPs
| IP | Credential attempts | Honeypots hit | First seen | Last seen |
|---|---|---|---|---|
102.88.137.80 | 1,338 | 24 | 2026-05-21 | 2026-07-01 |
20.203.42.204 | 1,247 | 36 (all) | 2026-05-21 | 2026-06-10 |
182.93.50.90 | 1,116 | 36 (all) | 2026-05-22 | 2026-06-29 |
220.247.224.226 | 801 | 35 | 2026-05-21 | 2026-07-01 |
182.93.7.194 | 775 | 36 (all) | 2026-05-21 | 2026-07-01 |
41.82.50.218 | 696 | 33 | 2026-05-21 | 2026-07-01 |
96.78.175.36 | 631 | 35 | 2026-05-22 | 2026-07-01 |
102.88.137.213 | 629 | 36 (all) | 2026-05-21 | 2026-07-01 |
103.98.176.164 | 605 | 36 (all) | 2026-05-22 | 2026-07-01 |
31.179.197.26 | 570 | 36 (all) | 2026-05-22 | 2026-07-01 |
Phase 2 — SSH key injection
Upon successful login, the attacker executes a two-command sequence to install a persistent SSH
backdoor key. The attack is notable for its chattr -ia pre-step, which removes the
immutable and append-only attributes that Linux hardening guides recommend setting on the
~/.ssh directory.
Attack sequence (from 102.88.137.80)
# Step 1: Remove immutable attributes (unlock .ssh directory)
cd ~; chattr -ia .ssh; lockr -ia .ssh
# Step 2: Replace authorized_keys with the mdrfckr RSA key
cd ~ && rm -rf .ssh && mkdir .ssh && echo \
"ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr" \
>>.ssh/authorized_keys && chmod -R go= ~/.ssh && cd ~
The key injection was observed 333,379 times across 9,223 unique IPs — a near-1:1 match with the credential stuffing IPs, confirming this is a single coordinated campaign.
Campaign cross-reference
The same IPs perform both credential stuffing and key injection, confirming a single operation:
| IP | Credential attempts | SSH key injections | Ratio |
|---|---|---|---|
102.88.137.80 | 1,338 | 1,296 | 0.97 |
182.93.50.90 | 1,116 | 1,090 | 0.98 |
20.203.42.204 | 1,247 | 979 | 0.79 |
182.93.7.194 | 775 | 743 | 0.96 |
Other notable credentials in the same window
Several other credential pairs appeared at high volume during the same 30-day period, suggesting either parallel campaigns or additional credentials deployed by the same botnet:
| Credential | Attempts | Unique IPs | Notes |
|---|---|---|---|
admin / admin | 56,314 | 2,596 | Generic default credential |
support / support | 24,757 | 720 | Support account default |
solana / solana | 10,619 | 44 | Crypto-themed — targeted, not botnet |
ftpuser / J5cmmu=Kyf0-br8CsW | 12,469 | 10 | Targeted FTP credential, 10 IPs only |
MITRE ATT&CK mapping
| ID | Technique | Evidence |
|---|---|---|
| T1110.001 | Password Guessing | 873K+ attempts across a primary credential and a single-digit variant, spanning 7+ usernames |
| T1110.004 | Credential Stuffing | 9,700+ unique IPs performing coordinated credential spraying |
| T1098.004 | SSH Authorized Keys | 333K+ injections of mdrfckr RSA key into authorized_keys |
| T1078 | Valid Accounts | Successful logins enable the key injection phase |
| T1059.004 | Unix Shell | chattr, rm -rf, echo, chmod command chain |
| T1562.001 | Impair Defenses | chattr -ia .ssh removes immutable attributes (hardening bypass) |
Campaign timeline
| Date | Event |
|---|---|
| 2026-05-21 | Campaign begins. Credential 345gs5662d34 first observed. SSH key injections begin same day. |
| 2026-05-21 → 06-27 | Continuous daily activity from 9,500+ IPs. Top IP 102.88.137.80 hits only 2 sensors on day 1, ramping up to 24 total over the campaign. |
| 2026-06-10 | 20.203.42.204 (one of six IPs to hit all 36 sensors) stops activity after 1,247 attempts. |
| 2026-06-24 | Campaign still active. Multiple IPs continue credential attempts and key injections. |
| 2026-06-21 → 06-27 | Steady state: ~8,600-9,600 credential attempts/day, ~1,040-1,135 unique IPs/day, matched almost 1:1 by daily key-injection volume. |
| 2026-06-28 → 06-30 | Decline begins: daily attempts drop 5,769 → 4,281 → 3,420, even as daily unique-IP count briefly rises (1,068 → 1,556 → 1,370) — fewer attempts per IP, not fewer participating nodes. |
| 2026-07-01 | 3,741 attempts, 1,283 IPs (full day — an initial partial-day read at time of writing had shown only 433/233 and overstated the severity of the drop). Decline continued into 2026-07-02 (3,033/1,128) and 2026-07-03 (2,425/957, partial); volume has settled at roughly 30-40% of the 06-21 → 06-27 peak, not the ~6% an early snapshot suggested. |
Indicators of compromise
Credential IOC
SSH key IOC
Command pattern IOC
Network — top botnet IPs
Detection signatures
Suricata — 345gs5662d34 credential in SSH auth
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (
msg:"cowrAI 345gs5662d34 credential stuffing campaign";
flow:to_server,established;
content:"345gs5662d34";
threshold:type both, track by_src, count 5, seconds 60;
classtype:attempted-admin; sid:9003020001; rev:1;
)
Suricata — mdrfckr SSH key injection
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (
msg:"cowrAI mdrfckr SSH authorized_keys injection";
flow:to_server,established;
content:"mdrfckr";
content:"authorized_keys"; distance:0;
content:"chattr"; nocase;
classtype:trojan-activity; sid:9003020002; rev:1;
)
OSSEC / Wazuh — authorized_keys replacement
<rule id="100302" level="12">
<if_sid>530</if_sid>
<match>rm -rf .ssh</match>
<match>authorized_keys</match>
<description>SSH authorized_keys replacement detected (mdrfckr campaign)</description>
</rule>
Collection methodology
Data collected by a distributed honeypot fleet running SSH/Telnet protocol lures. All login attempts and post-authentication commands were captured at the application layer and ingested into a time-series database for analysis. Credential pairs, source IP addresses, and command sequences were correlated across sensors to identify the two-phase campaign structure.