The Evasion Stack
Three evasion layers, three detection gaps, one operator profile
Overview
Three distinct evasion techniques were observed across this investigation. They operate at different layers โ DNS infrastructure, SSH protocol identity, and behavioral detection scope โ and were not applied uniformly across all observed nodes. One technique (PTR evasion) is a pre-positioned infrastructure decision made before any specific campaign. One (banner spoofing) is a per-session identity assertion applied at the SSH library layer. One (multi-protocol scanning) is not evasion in the traditional sense but has the effect of making single-vector defenses incomplete. Together they indicate an operator with working knowledge of how security tooling identifies and classifies scanners.
The Evasion Stack โ Three Layers
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ LAYER 3 โ DNS Infrastructure (PTR Evasion) โ โ Sophistication: HIGH โ โ Applied to: 89.248.168.227 + 22 other IPs in 89.248.168.0/24 โ โ Technique: PTR record returns "no-reverse-dns-configured.com" โ โ Effect: Security tools dismiss IP as having no PTR record โ โ Pre-positioned: YES โ registered 2024-05-07, renewed 2026-06-18โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ LAYER 2 โ SSH Protocol Identity (Banner Spoofing) โ โ Sophistication: MEDIUM โ โ Applied to: 77.246.159.182 (RU node, AS29182) โ โ Technique: Go SSH client declares SSH-2.0-OpenSSH_7.4 โ โ Effect: Banner-matching blocklists and IDS signatures miss node โ โ Pre-positioned: PARTIAL โ code modification required โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ LAYER 1 โ Behavioral Scope (Multi-Protocol Scanning) โ โ Sophistication: LOW-MEDIUM โ โ Applied to: 89.248.168.227 (NL node, AS202425) โ โ Technique: Concurrent SSH bruteforce + HTTP scanning โ โ Effect: Single-vector monitoring misses the full activity scope โ โ Pre-positioned: NO โ consequence of tool design, not evasion โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Findings Addressed in This Article
- F2 โ PTR evasion via engineered domain (SEVERITY: HIGH / CONFIDENCE: HIGH) โ Domain
no-reverse-dns-configured.comregistered 2024-05-07, deployed as PTR for 23 IPs in AS202425, renewed 2026-06-18 โ 23 days before observation. Active operational infrastructure, not abandoned configuration. - F3 โ SSH banner spoofing (SEVERITY: MEDIUM / CONFIDENCE: HIGH) โ 77.246.159.182 declares
SSH-2.0-OpenSSH_7.4; HASSHc39f4cec145ee3d50fb590595143b9d5proves Go SSH client. Banner is a deliberate fabrication. - F4 โ Multi-protocol dual-vector scanning (SEVERITY: MEDIUM / CONFIDENCE: HIGH) โ 89.248.168.227 holds concurrent CrowdSec bans for
cowrie-ssh-bruteforce(23h) andhttp:scan(164h). HTTP campaign preceded SSH campaign by approximately one week.
Layer 3 โ PTR Evasion: The no-reverse-dns-configured.com Technique
How PTR Records Function in Security Tooling
When a host connects to a network resource, the receiving party can perform a reverse DNS lookup โ querying the PTR record for the source IP. The result is a human-readable hostname, or the absence of one. Security tooling uses PTR results in multiple ways: reputation lookups and DNSBL scoring, SIEM correlation rule matching, firewall policy enforcement, automated abuse contact routing, and analyst triage prioritization.
When a PTR lookup returns NXDOMAIN, tools record "no reverse DNS" or a similar phrase. This is the critical observation: the string "no reverse DNS configured" does not require an absent PTR record. It only requires that the PTR record returns a string that reads as one.
PTR Evasion โ The Mechanics
Standard case โ no PTR record configured:
$ dig -x 89.248.168.X
;; NXDOMAIN (no PTR record exists)
โ SIEM field: PTR = "(none)" or "no reverse DNS"
โ Analyst reads: unconfigured IP, possibly ephemeral, low priority
Engineered evasion โ no-reverse-dns-configured.com deployed:
$ dig -x 89.248.168.227
89.248.168.227.in-addr.arpa. 300 IN PTR no-reverse-dns-configured.com.
โ SIEM field: PTR = "no-reverse-dns-configured.com"
โ Analyst reads: "no reverse DNS configured" โ SAME reaction
Why it works:
(1) The string is visually and grammatically identical to a system message
(2) SIEM rules keyed on "no-reverse-dns" fire on BOTH the real absence
AND this domain โ generating noise that trains analysts to ignore
(3) Human triage: analyst sees "unconfigured" โ deprioritizes IP
(4) Abuse pipelines: query domain registrant (Namecheap) instead of
AS202425 abuse contact โ misdirected report, no action taken
What it does NOT do:
ร Does not block the PTR lookup (response is returned promptly)
ร Does not make the IP invisible
โ It makes the IP DISMISSIBLE, not undetectable
Registration and Active Management
| Event | Date | Forensic Significance |
|---|---|---|
| Domain registered | 2024-05-07 | Registrar: Namecheap โ consumer-facing. PTR management in AS202425 requires deliberate operator action, not a provider default. |
| Domain renewed | 2026-06-18 | 23 days before this observation. Active payment and deliberate maintenance. Infrastructure still in use. |
| Observation date | 2026-06-30 | Domain confirmed active and deployed across 23 IPs in 89.248.168.0/24. |
Domain registrations expire annually. Renewal requires deliberate action and payment. The 2026-06-18 renewal date confirms the operator actively maintained this asset 23 days before this investigation. The "counter-narrative" that this is a provider misconfiguration or a joke domain is refuted: PTR records in AS202425 address space are not set by default provider action. Namecheap registration with active renewal and systematic deployment across 23 IPs represents deliberate operational infrastructure.
The /24 Segmentation: Three Distinct Operational Postures
| PTR Pattern | IP Count | Identity Type | Security Tool Response |
|---|---|---|---|
security.criminalip.com |
132 | Transparent โ AI Spera commercial scanner (publicly documented IP ranges) | Whitelisted by defenders who exclude known commercial scanners |
scanner.openportstats.com |
10 | Transparent โ declared scanner identity | Clearly categorized as scanner; excluded or alerted depending on policy |
no-reverse-dns-configured.com |
23 | Deceptive โ engineered to appear as absent PTR | Dismissed as unconfigured; bypasses both whitelisting and scanner categorization |
| Other / not surveyed | ~91 | Unknown | โ |
Subnet Architecture โ Two Operational Postures
89.248.168.0/24 (AS202425, IP Volume inc โ bulletproof hosting)
โ
โโโ 142 IPs [security.criminalip.com + scanner.openportstats.com]
โ โโโ TRANSPARENT LAYER
โ Declared scanner identity; publicly documented
โ Benefit: commercial whitelist coverage; analyst skip via policy
โ
โโโ 23 IPs [no-reverse-dns-configured.com] โ THIS INVESTIGATION
โโโ DECEPTIVE LAYER
Engineered absent-PTR appearance
Benefit: dismissed as unconfigured, not categorized as scanner
Evasion domain: Namecheap | registered 2024-05-07 | renewed 2026-06-18
The 142 transparent nodes operate VISIBLY (whitelisted or categorized).
The 23 deceptive nodes operate DISMISSED (neither whitelisted nor categorized).
Whether the deceptive-PTR nodes belong to the same operator as
the transparent nodes, or represent a separate tenant in AS202425
bulletproof hosting, cannot be determined from current evidence.
Security Controls Bypassed
| Security Control | Bypass Mechanism |
|---|---|
| PTR-based reputation lookups | IPs classified as "no PTR" rather than "identified scanner" โ placed in wrong category, triggering wrong response priority |
| SIEM string-match rules on PTR fields | Rules matching literal "no-reverse-dns" fire on genuine absence AND this domain โ trains analysts to ignore the pattern through repeated noise |
| Blocklists excluding IPs with no PTR | Systems treating no-PTR as ephemeral/low-priority dynamic assignment apply that treatment to persistent scanning infrastructure |
| Automated abuse contact lookup | Abuse reporting pipelines using PTR to identify operators route reports to Namecheap (domain registrant) instead of AS202425 abuse contact โ report misdirected, no action |
| Human analyst first-pass triage | Analyst reviewing honeypot logs reads "no-reverse-dns-configured.com" as unconfigured; IP deprioritized without manual investigation |
Confidence: HIGH โ Domain registered, renewed, and systematically deployed. The technique is consistent across 23 IPs. No plausible benign interpretation is consistent with the full evidence set (registration + renewal + systematic deployment).
Layer 2 โ SSH Banner Spoofing: Impersonating OpenSSH 7.4
The Two Layers of SSH Identity
When an SSH client connects to a server, identity is presented at two distinct protocol layers that operate entirely independently. Understanding why banner spoofing works โ and why it fails against HASSH analysis โ requires examining both layers.
SSH Identity Architecture โ Two Independent Layers
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ LAYER 1 โ Version String (Banner) โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ Source: OPERATOR sets this string (runtime configuration) โ โ Content: SSH-2.0-[softwareversion] โ โ Example: SSH-2.0-OpenSSH_7.4 โ โ Logged by: Cowrie, IDS, SIEM, all SSH servers โ โ Verifiable? NO โ no cryptographic commitment โ โ Can be spoofed? YES โ trivial string substitution in code โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ LAYER 2 โ HASSH (Capability Negotiation Fingerprint) โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ Source: SSH LIBRARY (compiled-in algorithm defaults) โ โ Content: MD5 of SSH_MSG_KEXINIT algorithm preference lists โ โ Example: c39f4cec145ee3d50fb590595143b9d5 โ โ Logged by: Honeypots with HASSH collection enabled โ โ Verifiable? YES โ derived from actual handshake bytes โ โ Can be spoofed? NOT by banner change alone โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 77.246.159.182 modified Layer 1: banner โ SSH-2.0-OpenSSH_7.4 Layer 2 (HASSH) remained: c39f4cec... (Go SSH library) The contradiction between the two layers IS the forensic evidence. The banner string and the HASSH are produced by separate code paths. Changing one does not affect the other.
The Evidence
| IP | ASN / Location | Declared Banner | HASSH Recorded | Verdict |
|---|---|---|---|---|
89.248.168.227 |
AS202425 / NL | SSH-2.0-Go |
c39f4cec145ee3d50fb590595143b9d5 |
HONEST โ banner and HASSH agree |
77.246.159.182 |
AS29182 / Moscow | SSH-2.0-OpenSSH_7.4 โ |
c39f4cec145ee3d50fb590595143b9d5 |
SPOOF โ HASSH proves Go client |
The HASSH is derived from bytes transmitted during the handshake. It is not possible to produce a Go HASSH while running a native OpenSSH binary. It is not possible to produce an OpenSSH HASSH while running the Go SSH library that generated this fingerprint โ without modifying the actual capability negotiation code, which would produce a different HASSH. The banner string is the lie; the HASSH is the evidence.
Why OpenSSH 7.4 Was Chosen
OpenSSH 7.4 (December 2016) was the default on CentOS 7 โ one of the most widely deployed server platforms of its era. It represents a version that is plausible for a long-running unpatched host, is not so old as to be immediately suspicious, and critically, is not one of the known scanner banner strings that blocklists and IDS signatures target: SSH-2.0-Go, SSH-2.0-libssh2_*, SSH-2.0-python-paramiko_*. By presenting as SSH-2.0-OpenSSH_7.4, the client avoids scanner-specific banner blocklists while reading as a legitimate (if outdated) host.
Detection Gap
Any detection rule, blocklist, or investigation workflow that stops at the SSH version banner will miss 77.246.159.182 โ or classify it as a potentially legitimate outdated SSH server rather than a scanning node. The HASSH c39f4cec145ee3d50fb590595143b9d5 is a watch indicator: any new session presenting this fingerprint, regardless of banner, source IP, or ASN, should be correlated to TI-2026-057.
Confidence: HIGH โ The HASSH contradiction is a direct measurement of transmitted handshake bytes, not an inference from secondary signals.
Layer 1 โ Multi-Protocol Dual-Vector Scanning
The Observed State
At the time of observation (2026-06-30), 89.248.168.227 held two active CrowdSec bans from two independent detection scenarios, running concurrently:
| CrowdSec Scenario | Ban Duration Remaining | Detection Type | Issued Approximately |
|---|---|---|---|
cowrie-ssh-bruteforce |
23 hours | SSH credential attack threshold crossed | ~2026-06-29 (1 day prior) |
http:scan |
164 hours | Web scanning behavior threshold crossed | ~2026-06-23 (7 days prior) |
Timeline Reconstruction โ Working Back from Ban Durations
Observation timestamp: 2026-06-30
SSH ban (cowrie-ssh-bruteforce) โ 23 hours remaining:
23h before 2026-06-30 = SSH bruteforce activity ~2026-06-29
HTTP ban (http:scan) โ 164 hours remaining:
164h รท 24 = 6.83 days = HTTP scanning activity ~2026-06-23
Reconstructed timeline:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-06-23 โโ HTTP reconnaissance campaign begins
[web scanning activity triggers CrowdSec http:scan]
โ
โ โโโโโโโโโโโโโโโโโโโโโโ 7 days of HTTP scanning โโโโโโโโ
โ
2026-06-29 โโ SSH bruteforce campaign begins
[cowrie-ssh-bruteforce triggered; MikroTik notified]
โ
2026-06-30 โโ Cowrie honeypot interaction recorded
MikroTik address-list block applied
Investigation triggered โ BOTH bans active simultaneously
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Sequence interpretation:
Phase 1: Broad web reconnaissance (target identification / enumeration)
Phase 2: Targeted SSH credential attacks (access attempt on identified targets)
The MikroTik block was triggered by SSH activity.
The HTTP campaign that preceded it by one week was invisible
to SSH-only detection pipelines until enrichment surfaced it.
What This Rules Out
A commodity SSH bruteforcer โ Hydra, Medusa, a basic Python script with Paramiko โ does not produce an http:scan CrowdSec ban as a side effect of SSH activity. The HTTP ban requires HTTP-specific scanning behavior that triggered CrowdSec's web-scanning detection scenarios. This means 89.248.168.227 was running at minimum two distinct scanning workloads simultaneously. Whether these are separate tools running in parallel or a single multi-protocol reconnaissance platform is not determined from current evidence. What is established: this node is not a single-purpose SSH tool. It is a general-purpose scanning platform conducting simultaneous multi-vector reconnaissance.
Detection Gap
The MikroTik block was triggered by cowrie-ssh-bruteforce. A defender operating with SSH-only honeypot coverage and no web-scanning detection would have the HTTP campaign completely invisible โ the web-facing attack surface was subject to active scanning for approximately a week before the IP appeared in SSH-related alerts. The http:scan ban duration (164h vs the SSH ban's 23h) suggests the HTTP campaign was substantially longer than the SSH campaign. Multi-protocol posture means single-vector monitoring produces a systematically incomplete picture of this node's activity.
Confidence: HIGH โ Two concurrent CrowdSec bans are direct operational telemetry from two independent detection scenarios. The timeline reconstruction uses ban duration arithmetic from observed timestamps.
Sophistication Assessment
Technique Ranking
| Rank | Technique | Sophistication | Infrastructure Required | Pre-positioned? |
|---|---|---|---|---|
| 1 (highest) | PTR Evasion โ no-reverse-dns-configured.com |
HIGH | Domain registration, DNS deployment across 23 IPs, active renewal cycle | YES โ infrastructure predating any campaign |
| 2 | SSH Banner Spoofing โ SSH-2.0-OpenSSH_7.4 |
MEDIUM | Go SSH client code modification only; no infrastructure coordination required | Partial โ code change required; applied per-node |
| 3 (lowest) | Multi-Protocol Scanning (SSH + HTTP) | LOW-MEDIUM | Multi-workload capable platform; concurrent scanning deployment on one node | NO โ consequence of tool capability design, not deliberate anti-detection measure |
Combined Operator Profile
Operator Capability Evidence โ What the Stack Requires
PTR EVASION โ required capabilities:
โข Domain registration with deliberate name selection
The string must read as a system message to analysts scanning logs
โข DNS deployment coordinated across 23 IPs within AS202425
โข Active maintenance: renewal 23 days before observation
โข Knowledge of how PTR values are processed by:
โ SIEM string-match rules (literal string match on PTR fields)
โ Automated abuse contact lookup systems
โ Human analyst triage workflows (cognitive pattern recognition)
โ Reputation scoring systems that differentiate PTR vs no-PTR
BANNER SPOOFING โ required capabilities:
โข Knowledge that SSH scanner banners are targeted by blocklists/IDS
โข Modification of Go SSH client to substitute identification string
โข Selection of a plausible but non-suspicious legacy version string
โข Understanding of which banner strings attract scanner classification
MULTI-PROTOCOL SCANNING โ required capabilities:
โข Platform capable of simultaneous SSH and HTTP reconnaissance
โข Deployment and coordination of multiple scanning workloads on one node
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
AGGREGATE ASSESSMENT:
An opportunistic credential stuffer deploying commodity tools
does NOT exhibit this pattern.
The PTR technique alone required 2+ years of infrastructure
maintenance (registered 2024, renewed 2026 โ active at observation).
The banner spoofing required tool modification informed by knowledge
of defender blocklist behavior.
The multi-protocol scanning indicates general-purpose reconnaissance
capability, not a single-function SSH brute-force script.
This is deliberate, layered, maintained evasion infrastructure.
What the Aggregate Profile Resembles
This profile is consistent with organized scanning infrastructure operated for sustained reconnaissance โ either self-directed (building target lists for later exploitation) or commercial (scanning-as-a-service sold to third parties). Supporting indicators:
- Bulletproof hosting choice (AS202425, IP Volume inc) โ hosting designed to resist takedown requests
- Evasion domain registered 2024, renewed on schedule in 2026 โ minimum 2 years of deliberate operational investment
- Multi-protocol tooling indicating capability extending beyond a single credential-stuffing script
- Unclassified private HASSH (only 2 IPs) indicating purpose-built tooling, not commodity deployment
- The Moscow node (AS29182 JSC IOT) choosing banner spoofing but no PTR evasion, while the NL node takes the opposite configuration โ suggesting either different operator configurations or different targeting priorities
Known Unknowns
| Unknown | Why It Matters | How to Resolve |
|---|---|---|
| Whether 89.248.168.227 also employs banner spoofing in some sessions | Only SSH-2.0-Go is in evidence for the NL node. Configuration may vary across sessions or targets. |
Expanded session log review across extended observation window |
| Whether all 23 deceptive-PTR nodes are actively scanning | Only .227 triggered alerts in this period. Other 22 may be reserve capacity, different-campaign nodes, or inactive. | Broader /24 scan coverage; cross-reference with other honeypot deployments |
The HASSH-to-tool mapping for c39f4cec145ee3d50fb590595143b9d5 |
Specific Go SSH library version, fork, or custom implementation producing this hash is unidentified. | Empirical testing โ compile known Go SSH library versions, compare HASSH output |
| HTTP scanning target list and method | What paths, services, or vulnerabilities were targeted by the http:scan campaign is not in evidence. |
Web server access log correlation from the same period (2026-06-23 to 2026-06-30) |
| Whether both nodes share a common operator | Toolkit similarity (shared HASSH) established; command relationship and operational coordination unconfirmed. | Additional behavioral correlation: credential overlap, command sequence similarity, temporal alignment |
Summary
| Technique | Finding | Evidence | Target Control Class | Confidence |
|---|---|---|---|---|
PTR Evasion โ no-reverse-dns-configured.com |
F2 | E4 | PTR reputation, SIEM rules, abuse contact routing, analyst triage | HIGH / HIGH |
SSH Banner Spoofing โ SSH-2.0-OpenSSH_7.4 |
F3 | E2, E3 | Banner-based blocklists, IDS version-string signatures, analyst classification | MEDIUM / HIGH |
| Multi-Protocol Scanning (SSH + HTTP) | F4 | E7 | Single-protocol detection coverage gaps | MEDIUM / HIGH |
All claims in this article are derived directly from evidence items E2, E3, E4, and E7. No claim is made beyond what the cited evidence directly supports. Confidence assessments reflect the quality of the underlying evidence, not the severity of the conclusion.