Public Report

Infrastructure Security — Q1 2026

Security audit of a small production fleet. 27 months of HTTP data, SSH brute-force analysis, cross-layer threat correlation, and hardening assessment. Operational details redacted.

Web data: Jan 2024 – Mar 2026 (813 days) SSH data: auth log retention window Generated: Mar 23, 2026
OPSEC notice: This is the public version of an internal security report. Server names, IP addresses, ports, network topology, and specific vulnerability details have been redacted. Attacker IPs are published as indicators of compromise (IOCs). A full unredacted version is maintained internally.

Executive Summary

What this report cannot prove

01 Methodology & Data Availability

What was queried, what was not, and known gaps.

Data sources

SourceCoverageQuality
HTTP request logging database813 daysbest source 513,227 records
SSH auth logs (journalctl)4–16 daysgood per server retention varies
Firewall configuration auditpoint-in-timegood
Deception-based detectionearly stageearly stage
Outbound connection snapshotpoint-in-timemoderate

All data queried directly from production systems via SSH. Full HTTP dataset frozen to snapshot for reproducibility. [VERIFIED]

What was NOT assessed

How this report was made

Produced by Architect, the infrastructure & security agent within Daimon — a self-governing multi-agent system built on Claude Code. Data gathering delegated to automated subagents (SSH into servers, database queries). Analysis and cross-correlation performed by a separate reasoning agent. Full HTTP dump frozen to snapshot for reproducibility — the database is live and numbers drift between queries.

Scoring model: targeted indicators (multi-layer activity, path specificity, custom tooling, persistence) vs. opportunistic indicators (single-layer, burst pattern, generic credentials). Thresholds: ≥6 TARGETED, 3–5 SUSPICIOUS, −2 to 2 INCONCLUSIVE, ≤−3 OPPORTUNISTIC.

02 SSH Brute Force & Authentication

149,623 failed authentication attempts across the fleet. Zero breaches. [VERIFIED]
149,623
Failed SSH Attempts
across all servers, auth log window
98.5%
On One Server
cloud VPS in heavily-scanned range
0
Unauthorized Logins
all logins = authorized via VPN
Fixed
Rate Limiter
misconfiguration found & resolved
Rate limiter misconfiguration found and resolved. Audit discovered that the rate-limiting service was not matching SSH events due to a platform-level service naming issue. Zero bans had been issued despite 149,623 attacks. Fixed same day across all servers. [VERIFIED]
Why one server attracted 98.5% of attempts: The busiest node is a cloud VPS in a datacenter IP range that is heavily targeted by automated scanning — an extremely high daily rate even on a non-standard SSH port. This reflects the datacenter’s scanning profile, not targeted interest in our infrastructure.

Top attacker IPs

45.224.97.181
26,618
51.79.2.27
18,448
139.99.122.93
8,147
158.247.202.121
7,032
87.121.84.136
5,278
144.31.117.52
3,349
111.22.52.211
2,892

7 top attackers. Cross-checked against full 813-day web dataset (513,227 records): zero appear in HTTP traffic. SSH-only operators. [VERIFIED]

Top usernames tried

UsernameAttemptsCategory
ubuntu1,212Generic default
admin1,142Generic
user843Generic
test544Generic
dell423Vendor default
postgres375Service account
oracle372Service account
git291Service account
jenkins219CI/CD service
claude214AI-related
clawd213AI-related

Notable: claude and clawd — attackers probing for AI/LLM service accounts. Emerging trend in 2025/26 threat landscape.

Authentication outcome

All logins legitimate. Every accepted SSH login across all servers was verified as authorized operator access via mesh VPN, using public-key authentication.

Zero unauthorized successful logins. [VERIFIED]

03 Web Traffic & Scanning

Full 813-day dataset: 513,227 HTTP requests, 35,424 unique IPs, Jan 2024 – Mar 2026. [VERIFIED]
513,227
Total HTTP Requests
813 days (Jan 2024 – Mar 2026)
35,424
Unique IPs
all time
59.5%
Return 404
305,617 of 513,227
78%
Bot / Automated
400,668 confirmed non-human

Traffic decomposition (full dataset)

CategoryRequests%How identified
Empty UA 144,778 28.2% NULL or empty user_agent — mostly cloud provider IPs, automated probing
Spoofed browser UA 141,559 27.6% Browser-like UA but: outdated Chrome (91/78/60/42), typos (Mozlila, 5.g), known scanner UAs
Known bot crawlers 71,823 14.0% Self-identifying: bot/crawl/spider in UA (Google, Bing, AI crawlers, SEO)
Known tool scanners 24,253 4.7% UA matches curl/wget/nikto/sqlmap/nuclei/httpx/zgrab
Automated clients 18,255 3.6% Go-http-client, python-requests, python-httpx, node-fetch
Browser UA (unclassified) 112,559 21.9% Modern browser UAs that don’t match known bot patterns. Upper bound — includes headless browsers + scrapers with valid UAs. Actual humans estimated ~2,500/month based on baseline before bot waves.

Sum = 513,227. The 102k Chrome/91 requests (2021 browser version) are a single botnet campaign. Site receives ~2–3k real visitors/month. [VERIFIED]

Monthly volume (27 months)

Jan 2024 Jul 2025: 79k peak Dec 2025: 56k 2026 →

Quarterly trends

QuarterRequestsUnique IPs404 RateAI Crawlers185.177.72 Cluster
2024-Q119,4713,79526.1%520
2024-Q225,1154,35231.9%1410
2024-Q350,6654,95064.5%6060
2024-Q437,3404,97652.0%1,5180
2025-Q125,7445,12529.9%1,5860
2025-Q275,4476,36171.4%2,66919,915
2025-Q3120,1447,43778.6%3,45556,593
2025-Q488,2538,26149.8%2,37042
2026-Q171,0486,30157.1%1,53120,425

185.177.72 cluster first appeared May 2025, dominant Jul 2025 (63% of month), went quiet Q4 2025, returned Jan 2026. [VERIFIED]

The 185.177.72.0/24 scanner cluster

96,975 requests from 47 IPs over 11 months (since May 2025) = 18.9% of all traffic ever. All curl/8.7.1. Scanning in waves, systematically probing credential/config paths.

IPAll-time RequestsActive Period
185.177.72.10840,603Jul–Aug 2025 (dominant)
185.177.72.1044,578Jul 2025
185.177.72.2054,392Jun–Jul 2025
185.177.72.134,072Feb–Mar 2026
185.177.72.303,979Jun 2025 + Feb 2026
185.177.72.1133,890Jul 2025
185.177.72.103,700Jun 2025
185.177.72.2103,577Jul 2025
185.177.72.233,303Feb–Mar 2026
... +38 more IPs24,881various

Top paths: /.env, /.env.production, /.git/config, /.aws/credentials, /docker-compose.yml. All return 404. Zero SSH attempts from this subnet. [VERIFIED]

Sensitive path scanning (all time)

WordPress (wp-*)
85,963
.env variants
32,240
.git exposure
2,450
AWS credentials
1,235

WordPress scanning dominant (85,963) despite site not being WordPress — blind mass scanning. All return 404. [VERIFIED]

Notable: Dec 2025 spike (56,106)

185.159.131.99 — 17,942 requests with SQL injection attempts in User-Agent header (-1 OR 5*5=25 --). Caused 5,756 500 INTERNAL SERVER ERROR responses (99% of all 500s in the dataset). Single IP, single campaign.

All-time 500 errors: 5,797. Dec 2025 alone: 5,756. [VERIFIED]

Status code distribution (all time)

StatusCount%
404 NOT FOUND305,61759.5%
200 OK196,93238.4%
500 INTERNAL SERVER ERROR5,7971.1%
304 NOT MODIFIED2,7660.5%
405 METHOD NOT ALLOWED2,0040.4%
308 PERMANENT REDIRECT1110.0%

04 AI Crawlers & MCP Scanning

AI crawlers: 8/month (Jan 2024) → 1,319/month peak (Aug 2025). Now ~500–700/month. MCP probing since May 2025.

AI crawler growth (full 27-month dataset)

MonthClaudeBotChatGPTGPTBotBytespiderMetaTotal AI
2024-01071008
2024-044470015
2024-0777810513194
2024-1022208155061446
2025-0141160156475436
2025-0576610238293121,265
2025-074622082901541421,256
2025-086462821101611201,319
2025-11590213421572051,207
2026-011171333810341432
2026-03 (partial)25666167044452

All-time AI crawlers: 13,928. Peak Aug 2025 (1,319/month). ClaudeBot dominant since Jul 2025. ChatGPT peaked May 2025 (610). GPTBot peaked Mar 2025 (306). Meta appeared Jul 2024. [VERIFIED]

MCP server scanning — 50 requests since May 2025

50 requests (25 POST /mcp + 25 GET /sse) from 24 IPs across 7 subnets. All python-httpx/0.28.1. Always in pairs: POST /mcp then GET /sse — MCP server discovery handshake.

SubnetUnique IPsRequests
45.156.128.0/24612
185.226.197.0/24612
185.180.141.0/2448
109.105.209.0/2436
109.105.210.0/2426
45.156.129.0/2424
52.77.165.0/2412
Total2450

Timeline: first seen May 2025 (2 req), accelerating — Jan 2026 (10), Feb 2026 (18), Mar 2026 (20). Single operator, rotated IPs. Zero SSH attempts. [VERIFIED]

MCP scanning is accelerating. 2 requests in May 2025 → 20 in March 2026 (10x in 10 months). ~1,000 exposed MCP servers documented in the wild (SiliconAngle, Dec 2025). Any MCP deployment must be firewalled from day one.

05 Deception & llms.txt Probing

Two separate signals: deception-based threat detection (recently deployed) and llms.txt file probing (25 hits over 12 months).

Deception-based detection

Deployed deception-based threat detection targeting automated systems and LLM agents. Early results show automated systems interacting with planted indicators. Classification pending — data collection ongoing.

Confidence: LOW — limited data window. Methodology details withheld. [VERIFIED]

llms.txt probing

25 requests to /llms.txt from 16 unique IPs since April 2025. llms.txt is a proposed standard (like robots.txt but for LLM agents). All return 404.

PeriodRequestsNotes
Apr 20254First appearance — 4 different IPs in one day
May–Sep 20255SemrushBot-adjacent IPs
Oct–Dec 20257Expanding IP diversity
Jan–Mar 20269Accelerating

Bots checking whether sites publish LLM-readable descriptions. Indicates growing LLM agent ecosystem. [VERIFIED]

06 Security Posture Checks

16 security scenarios tested, based on real-world incidents and CVEs.
11
PASS
no issues found
4
WARN
non-critical, tracked
0
FAIL
no critical failures
1
N/A
not applicable

Scenarios tested

CategoryChecksStatus
Container runtime securityAPI exposure, socket mounts, runtime CVEspass
Network exposureDatabase ports, internal service ports, 0.0.0.0 bindswarn mitigated by firewall
SSH & key managementKey type, authorized keys, agent forwardingpass
Web exposureSource code (.git), sensitive files, reverse proxy configpass
Mesh VPNVersion currencypass
Log integrityJournal persistence, DNS loggingwarn gaps identified
Malware indicatorsDeleted executables, unexpected processespass
EgressOutbound SSH, mining pools, C2 indicatorspass

Based on: Matrix.org 2019, Firecrawl 2025, Leaky Vessels CVE-2024-21626, Scattered Spider, perfctl, EmeraldWhale. [VERIFIED]

07 Defense Architecture

What actually protected the fleet — structural vs cosmetic defenses.

Structural defenses (effective)

Cosmetic defenses (noise reduction)

Structural defenses proved sufficient. Despite 149,623 SSH attempts and 513,227 HTTP requests, zero unauthorized access. The defense model does not depend on obscurity or rate limiting — it depends on cryptographic authentication and network segmentation.

08 Threat Scoring & Correlation

Cross-layer IP correlation against full 813-day dataset. Zero IPs scored TARGETED or SUSPICIOUS.

Cross-layer correlation

SSH and web attacks come from entirely separate actor populations.

Scoring summary

IP / SubnetLayerScoreVerdictKey Evidence
45.224.97.181SSH-6opportunistic26,618 attempts, burst, generic creds, zero web
51.79.2.27SSH-6opportunistic18,448 attempts, burst, zero web
139.99.122.93SSH-5opportunistic8,147 attempts, burst, zero web
158.247.202.121SSH-5opportunistic7,032 attempts, burst, zero web
185.177.72.0/24Web-2inconclusive96,975 req, 47 IPs, mass .env harvester, web-only
185.159.131.99Web-1inconclusive17,942 req, SQLi in UA, caused mass 500 errors
87.121.84.0/24SSH+Web+2inconclusiveOnly cross-layer subnet, different IPs per layer
MCP scanners (7 subnets)Web-1inconclusive50 MCP probes, novel but mass recon
Zero IPs scored TARGETED (≥6) or SUSPICIOUS (3–5). All activity is opportunistic botnet noise or mass scanning. No evidence of intelligence-driven reconnaissance against this infrastructure. heuristicsee “What this report cannot prove” above.

Confidence statements

FindingConfidenceBasis
SSH volumes + zero breacheshighDirect query of auth logs on all servers
Web traffic statisticshighFrozen database snapshot (513,227 rows), deterministic
SSH↔web correlationhighAll top SSH IPs cross-referenced against full 813-day web dataset
Scoring verdictsmoderateHeuristic model. Some indicators untestable (no threat intel enrichment)
Egress cleanlinessmoderatePoint-in-time snapshot, transient connections missed
Deception detectionlowLimited data window

Weaknesses & areas for improvement

AreaGapImpact on conclusions
Log retention SSH auth logs cover days to weeks, not months. Industry median dwell time before detection exceeds our retention on most servers. Historical or slow intrusions prior to the log window are invisible. “Zero breaches” means “zero in the available window.” confirmed gap
No east-west visibility Only perimeter traffic analyzed. No internal inter-server traffic monitoring. Lateral movement after initial access — the primary APT kill-chain step — would not appear in this report. confirmed gap
No threat intel enrichment Attacker IPs not checked against GreyNoise, AbuseIPDB, or Shodan. Scoring is behavioral-only. An IP with known APT attribution would still score INCONCLUSIVE in our model. Verdicts lack external corroboration. affects scoring
Deception: low confidence Deception-based detection recently deployed. Limited data window. Sample size too small for statistical conclusions. Cannot yet distinguish targeted from automated interaction with planted indicators. early stage
Egress: point-in-time Single outbound connection snapshot per server. No persistent monitoring. C2 callbacks on timers or DNS-based exfiltration would not be captured. Egress verdict is “clean at time of query.” snapshot only
Traffic classification Bot detection is regex-based (UA patterns). 21.9% of traffic classified as “Browser UA (unclassified)” = upper bound. Headless browsers with valid UAs and residential proxies are indistinguishable from real users. Human traffic estimate (~2,500/month) is a heuristic baseline. approximation
Single-analyst methodology Analysis by automated agents. No independent human peer review of raw findings. Systematic blind spots possible. Scoring model could under-weight novel attack patterns. Next audit should include human review and red-team validation. process gap

09 Findings & Remediation

Summary of identified issues and their resolution status.
1
P1 — Resolved
fixed same day
2
P2 — Scheduled
tracked internally
6
P3 — Backlog
low risk, queued

P1 (resolved): Rate limiter misconfiguration — identified and fixed same session across all servers.

P2 (scheduled): Log retention improvements and firewall rule hardening on specific servers.

P3 (backlog): Monitoring enhancements, service binding improvements, key rotation. All tracked internally.

No critical (P0) findings. No active breach, no public exploits, no data exposure. The P1 rate limiter issue was the highest priority finding and was resolved during the audit session.

10 Appendix: IOC Table

Indicators of Compromise

IOCTypeActivityVolumeVerdict
45.224.97.181IPSSH brute-force26,618opportunistic
51.79.2.27IPSSH brute-force18,448opportunistic
139.99.122.93IPSSH brute-force8,147opportunistic
185.177.72.0/24Subnet.env/.git/.aws scanning96,975inconclusive
185.159.131.99IPSQLi in UA + mass crawl17,942inconclusive
87.121.84.0/24SubnetSSH + web (cross-layer)5,278 SSH + webinconclusive
45.156.128.0/24 +6SubnetsMCP probing50inconclusive

Not enriched via GreyNoise/AbuseIPDB. Verdicts based on behavioral analysis only. [VERIFIED]

Scoring model

Each IP/subnet is scored using weighted indicators. Targeted indicators (positive points): multi-layer activity, stack-specific path probing, custom tooling, low-and-slow patterns, persistence attempts. Opportunistic indicators (negative points): single-layer only, burst patterns, generic credentials, known scanner signatures, single port.

Thresholds: ≥6 = TARGETED, 3–5 = SUSPICIOUS, −2 to 2 = INCONCLUSIVE, ≤−3 = OPPORTUNISTIC.