TI-2026-016 โ "Phantom Pipes" โ The Vietnamese Residential Proxy Botnet: 102 Hacked Home Routers Selling SSH Tunnel Access Through Viettel's CGNAT
๐ Executive Summary
A sophisticated residential proxy botnet operates exclusively on Vietnam's Viettel telecommunications network, leveraging 102 compromised residential broadband devices as SSH tunnel proxies. Unlike traditional brute-force botnets that seek to install malware, this network's sole purpose is to verify SSH credentials and test proxy connectivity โ the hallmark of a commercial residential proxy service operating on hacked home routers.
The smoking gun: AbuseIPDB reports from other honeypot operators capture post-authentication behavior โ SSH direct-tcpip tunnel attempt. Destination: ip-who.com:80 โ the botnet verifies each proxy's exit IP before adding it to the commercial pool. Our honeypot observes the credential verification phase: 100% authentication success rate (they only test known-good defaults), zero commands executed, zero malware downloads โ just connect, authenticate, disconnect. The actual proxy traffic flows through other compromised servers.
Each IP is active for a maximum of 6 minutes (91 parallel connections in that window), then never seen again โ consistent with CGNAT dynamic IP rotation on residential broadband. The malware persists on the physical device (likely a home router), continuing operation regardless of which public IP it receives. We estimate 15-25 physical devices generating 102 unique IPs over 58 days of observation, with the botnet actively growing at ~1.5 new IPs per day.
๐งฌ The Forensic Fingerprint โ A 6.5-Year-Old Ghost
Every single connection from all 102 IPs presents the identical SSH client banner:
Banner: SSH-2.0-AsyncSSH_2.1.0
HASSH: fda360b1b4f4d3455cb75c6e7edb1d11
AsyncSSH 2.1.0 was released on November 30, 2019 โ it is now 34 versions behind the current release (2.23.0, May 2026). The malware author embedded this library into their router implant in late 2019/early 2020 and never updated it. This is the permanent forensic fingerprint of frozen botnet firmware โ updating router malware risks bricking the device or triggering detection, so operators leave the initial build running for years.
The HASSH algorithm string includes deprecated ciphers (arcfour, blowfish-cbc, 3des-cbc) and weak KEX (diffie-hellman-group1-sha1, rsa1024-sha1) โ the exact default configuration of AsyncSSH 2.1.0 with zero customization. This means the malware is using the library straight out of the box with no attempt to disguise its fingerprint.
๐ Infrastructure โ Viettel's Compromised Residential Network
| Field | Value |
|---|---|
| ISP | Viettel Group (Tแบญp ฤoร n Viแป n thรดng Quรขn ฤแปi) |
| Type | Cable/DSL/ISP โ Residential Broadband |
| Country | ๐ป๐ณ Vietnam |
| AS Numbers | AS7552 (61 nodes) + AS24086 (31 nodes) |
| Subscribers | ~80 million (Vietnam's largest telecom) |
| Parent Organization | Ministry of National Defence, Vietnam |
| PeeringDB | Traffic: 1-5 Tbps ยท 8 IX exchanges ยท Global scope |
| RDAP Contacts | IRT-VNNIC-AP ยท Nguyen Dang Tiep ยท Tran Van Thanh |
| IP Classification | "Fixed Line ISP" โ residential broadband subscribers |
| Shodan Visibility | 91/92 IPs return "No information available" โ fully NAT'd |
๐บ๏ธ The 5 CGNAT/DHCP Pools
All 102 nodes map to exactly 5 dynamic IP allocation pools, confirming residential broadband subscribers receiving rotating CGNAT addresses:
| Pool | Prefix | IPs Seen | Evidence |
|---|---|---|---|
| Pool A | 27.79.0.0/18 | 31 | 3rd octets 0-47 โ single large DHCP range |
| Pool B | 171.231.176.0/19 | 26 | 3rd octets 176-199 โ contiguous allocation |
| Pool C | 116.110.0.0/16 | 16 | Two clusters: .9-.30 and .145-.217 |
| Pool D | 116.99.168.0/21 | 15 | 3rd octets 168-175 โ tight DHCP pool |
| Pool E | 171.243.148.0/23 | 5 | 3rd octets 149-151 โ smallest pool |
๐ Attack Pattern โ The Proxy Verification Sequence
Phase 1: Credential Spray (what our honeypot captures)
T+0.0s โโ SSH connect (port 60188) โ admin:admin โ
T+0.1s โโ SSH connect (port 60200) โ root:root123 โ
T+2.0s โโ SSH connect (port 58562) โ root:admin โ
T+3.0s โโ SSH connect (port 58590) โ admin:123456 โ
T+3.5s โโ SSH connect (port 58604) โ test:test โ
... (all 12 creds tested in PARALLEL)
T+90s โโ All connections closed. 91 TCP sessions. 0 commands.
Duration: 6 minutes โ Success: 100% โ Post-auth: NOTHING
Phase 2: Tunnel Verification (captured by other honeypots via AbuseIPDB)
1. Authenticate with working credential
2. Request SSH direct-tcpip channel โ ip-who.com:80
3. HTTP GET / โ receive external IP in response
4. Verify: exit IP matches expected proxy address?
5. If YES โ mark as ACTIVE PROXY in commercial pool
6. Disconnect. Total: <30 seconds.
Phase 3: Commercial Proxy Usage (inferred from business model)
Once verified, the residential IP joins a proxy pool sold to customers needing: web scraping with residential IPs (bypass anti-bot), ad fraud (clicks from "real" IPs), account creation/credential stuffing (avoid bans), censorship circumvention (exit through residential IPs).
๐ The Credential Dictionary โ Minimal but Effective
| # | Username | Password | IPs Using | Target |
|---|---|---|---|---|
| 1 | admin | admin | 46 | Router admin panels |
| 2 | root | admin | 46 | Linux + router default |
| 3 | admin | 123456 | 47 | Common weak password |
| 4 | test | test | 46 | Test/demo accounts |
| 5 | root | 12345 | 45 | Numeric default |
| 6 | root | password | 45 | English default |
| 7 | root | root | 46 | Self-referential |
| 8 | root | root123 | 45 | Common variant |
| 9 | root | admin123 | 45 | Admin variant |
| 10 | admin | password | 43 | English default |
| 11 | root | toor | 44 | Reversed root |
| 12 | root | abc123 | 21 | Dictionary word |
On other targets (extracted from AbuseIPDB report logs), the botnet uses an expanded 41-username dictionary including: oracle, ftp, nginx, squid, ubnt (Ubiquiti routers), belkinstyle (Belkin routers!), nikita, rebecca, config, installer, support. The presence of "belkinstyle" โ a known Belkin home router default โ confirms the botnet specifically targets consumer networking equipment.
โฑ๏ธ Temporal Analysis โ Machine Precision
IP Lifecycle: Maximum active time = 6 minutes (0.1 hours). Average = under 1 minute. Each IP is used exactly once then permanently discarded.
Daily Pattern: Exactly 2 IPs/day (64% of days), 3 IPs (14%), 4 IPs (20%). Never 0, 1, or 5+. This is automated scheduling, not random.
Day-of-Week: Wednesday peaks (124 sessions, 20 IPs), Sunday troughs (24 sessions, 4 IPs) โ correlates with business-day proxy demand in UTC+7.
Growth: Linear +1.5 new IPs per day for 58 days. The botnet is actively expanding through ongoing exploitation of newly-deployed vulnerable routers.
๐ฌ Parallel Connection Forensics
A single visit from 27.79.44.126 on March 25, 2026 at 23:14 UTC:
23:14:09 โฌโโ port 60188 (admin:admin) โโโ 3.5s
23:14:10 โโโ port 60200 (root:root123) โโโ 3.7s โ OVERLAPPING
23:14:30 โโโ port 58562 (root:admin) โโโ 7.4s
23:14:33 โโโ port 58590 (admin:123456) โโโ 7.2s โ 3 CONCURRENT
23:14:33 โโโ port 58604 (test:test) โโโ 7.0s โ 3 CONCURRENT
23:14:38 โโโ port 38456 (admin:password) โโโ 9.7s โ 4 CONCURRENT
โ ... 85 more connections ...
23:21:00 โโโ port 53884 (final) โโโ 3.8s
Total: 91 TCP sessions in 6m51s
Overlapping session pairs: 124
Peak concurrency: 5-6 simultaneous SSH sessions
for loop โ it's a Python asyncio event-driven scanner using the AsyncSSH library to fire multiple connections simultaneously. The source port gaps (60188โ60200โ58562) show the OS recycling ephemeral ports from a CGNAT device handling hundreds of concurrent connections. The device behind this IP is simultaneously probing dozens of targets in parallel โ we are one of many.
๐ Corroboration โ What the World Sees
| Source | Finding |
|---|---|
| GreyNoise | 9/9 tested IPs classified as MALICIOUS โ internet-wide mass scanning confirmed |
| AbuseIPDB | 942 reports from 780 distinct reporters โ 100% abuse confidence on all IPs |
| Pulsedive | Listed in Blocklist.de + Brute Force Blocker feeds โ tagged "SSH Brute Force" |
| VirusTotal | 116.99.173.23: 9/57 engines flag as malicious. ET Compromised list. |
| OTX/AlienVault | Appears in 3 threat intelligence pulses (community reports) |
| Shodan | 91/92 IPs invisible โ zero exposed ports. Fully residential NAT. |
| ThreatBook | Tags: "Zombie, Dynamic IP" โ confirms compromised residential device |
| CrowdSec | Multiple IPs detected and banned by CrowdSec community blocklist |
| Blocklist.de | Active listings for SSH brute-force across multiple IPs |
| BinaryDefense | Listed in BinaryDefense IP blocklist |
๐ง Attribution โ Commercial Proxy Operator
| Indicator | Assessment |
|---|---|
| Tool version | Frozen at 2019 release โ never updated in 6.5 years |
| IP rotation | Perfect ephemeral usage โ never reuses IPs (OPSEC) |
| Parallelism | High-performance async I/O โ skilled Python developer |
| Target selection | Minimal dictionary โ efficiency over coverage |
| Post-auth | Tunnel test only โ zero filesystem interaction |
| Working hours | Wednesday peak, Sunday low โ business operation |
| Growth rate | Linear +1.5 nodes/day โ organic device recruitment |
| Geographic focus | 100% single ISP โ intimate knowledge of Viettel infrastructure |
Likely Actor Type: Commercial Residential Proxy Provider
- Motivation: Financial โ selling proxy access ($2,000-$10,000/month estimated)
- Capability: Medium-high โ custom AsyncSSH automation, persistent router malware
- Sophistication: High OpSec โ no forensic traces, ephemeral IPs, zero noise
- Scale: 102+ nodes in single ISP, likely thousands across Vietnam
- Business model: Proxy-as-a-Service with "clean" Vietnamese residential IPs
Why Viettel? Massive subscriber base (80M+), CGNAT provides built-in IP rotation anonymity, poor home router security culture, and the ISP is military-owned โ abuse reporting is bureaucratic and ineffective. VNNIC's WHOIS even self-flags its abuse contact as "invalid".
๐จ Detection Signatures
# HASSH fingerprint (exact match)
hassh: fda360b1b4f4d3455cb75c6e7edb1d11
# SSH banner (string match)
client_version: "SSH-2.0-AsyncSSH_2.1.0"
# Behavioral indicators (any combination)
- 100% auth success with default credentials
- Zero commands post-authentication
- SSH direct-tcpip tunnel attempt to ip-who.com (or similar IP-check service)
- Multiple parallel SSH connections (>5 concurrent from same IP)
- Total visit duration < 7 minutes
- No SSH key presented (password-only authentication)
- Source: Vietnamese residential ISP (AS7552 / AS24086)
๐ฏ Conclusions
- Residential proxy botnets are invisible to traditional security. With zero commands, zero malware downloads, and 100% authentication "success," these connections look benign to most IDS systems. The only indicator is the SSH tunnel request โ which many honeypots don't even log.
- CGNAT is both the vulnerability and the camouflage. Dynamic IP assignment means each node gets a "fresh" IP every 24-48 hours, making blacklisting futile. The same physical device appears as dozens of different IPs over time, while thousands of legitimate subscribers also use those same IPs later.
- Frozen malware creates permanent forensic artifacts. AsyncSSH 2.1.0 from 2019 is a gift to defenders โ its HASSH fingerprint will never change because the router malware cannot be safely updated. This single hash identifies the entire botnet forever.
- The business model explains the behavior. Traditional botnets are noisy (malware downloads, command execution, lateral movement). This one is silent because it's not trying to compromise โ it's verifying inventory for a proxy service. Silence IS the business model.
- Military-owned ISPs create accountability gaps. Viettel is owned by Vietnam's Ministry of Defence. International abuse reports go to VNNIC contacts that WHOIS itself flags as invalid. There is no effective mechanism to compel remediation of 80 million subscribers' home routers.
Your home router might already be a node in a commercial proxy network. If you're on a major residential ISP, using default credentials, and your router hasn't had a firmware update in years โ congratulations, someone might be selling your IP address for $0.05/request to people who need to look like "normal" internet users. The botnet operator doesn't want to hack you โ they just want to route traffic through you. You'd never notice. The traffic is encrypted. Your internet works fine. And somewhere, a scraper, a fraudster, or worse is wearing your IP address like a mask.