PhantomBot: od krađe vjerodajnica do botneta

PhantomBot: Typosquat kampanja koja se od krađe vjerodajnica pretvorila u gotov botnet komplet

TL; DR

Jedan NPM izdavač, deadcode09284814, pokrenuo je kampanju s pogrešnim tipografskim uvjerenjima protiv legitimnih axios i chalk-template paketi od sredine svibnja 2026.

Kampanja je započela kao konvencionalna krađa vjerodajnica i novčanika, izvlačeći podatke u Serveo HTTPS tunel.

On 2026-05-17, jer je oznaka axois-utils:1.0.9, operater je u potpunosti zamijenio korisni teret: isti trostruki instalacijski skel, isti izdavač, isto ime paketa.

Ali instalacijska skripta sada je regrut za DDoS botnet na više platformi.

Korisni teret govori o localhost.run tunelira i prihvaća naredbe za poplavu, pretvarajući zaražena okruženja u dio botneta sposobnog za DDoS.

Operater je čak i poslao Binarni kod C2 servera unutar tarballa, što pokazuje jasnu eskalaciju od krađe vjerodajnica do aktivne botnet infrastrukture.

Dva paketa, četiri verzije još uvijek aktivne u registru i jedan operater sada paralelno pokreće oba modula.

Ozbiljnost: visoka.

Glavni MOK Bilo koja verzija axois-utils ili chalk-tempalte od izdavača deadcode09284814

Napad: Kako funkcionira

Kampanja je izgrađena na namjerno dosadnoj skeli za isporuku: dva tipografski pogrešna imena paketa, jedno slovo različita od paketa sa stotinama milijuna tjednih preuzimanja (aksios, predložak kredom) i trostruku instalaciju hooks koji jamče izvršenje. Zanimljivo je što skela nosi — i činjenicu da je operater promijenio teret bez ikakvih drugih promjena.

Zajednička skela

Svaka objavljena verzija oba paketa deklarira ista tri životna ciklusa hooks in paket.json:

Navođenje korisnog tereta pod sva tri hooks je pretjerano — nakon instalacije sam bi se pokrenuo u zadanim postavkama npm instaliratiIzbor je važan: npm instalacija –ignoriraj-skripte preskače skripte, ali nekoliko uobičajenih tijekova rada (obnavljanje CI predmemorije taj životni ciklus ponovnog pokretanja hooks selektivno ili programeri koji samo provode reviziju nakon instalacije) trostruko redundantna deklaracija čini najsigurnijom opkladom za napadača.

kreda-predložak dodaje drugi mehanizam: deklarira axois-utils:^1.0.7 kao okruženje za izvođenje zavisnostInstaliranje tipografske pogreške predložak kredom stoga povlači i srodni typosquat, i oba se korisnog tereta pokreću. Dva paketa su koordinirani par, a ne neovisni popisi.

Faza A — kradljivac vjerodajnica / novčanika (2026-05-15 → danas)

Faza A je izvorni korisni teret. Utovarivač je kratak postinstall.js koji ukazuje na Serveo HTTPS obrnuti tunel:

Serveo poddomena kodira odredišnu IP adresu (80.200.28.28) izravno u nazivu hosta - prepoznatljiva konvencija za tu uslugu. Operator rotira slučajni prefiks poddomene između verzija kako bi izbjegao naivne liste blokiranja domena, ali temeljna IP adresa se nikada ne mijenja. (predložak-krede:1.0.14 polovan 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 korištenje f04a273bd84c0622-….)

postinstall.js ruke dalje od phantom.js, "kolektorski" modul u paketu od 7,667 linija. phantom.js šeta domaćina za:

SSH privatni ključevi (~/.ssh/*)
.npmrc sadržaj i bilo koji npm_* tokeni okruženja
Datoteke vjerodajnica za AWS, GCP i Azure
GitHub osobni token za pristup regularni izraz (ghp_*, gho_*, ghu_*, ghs_*)
Artefakti kripto-novčanika za Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash
Rekurzivni .env* prošetati ~/projects, ~/dev, ~/code, ~/workspacei instalacijski cwd
Povijest Shell-a i potpuna process.env

Paket je poslan u Serveo tunel na / skupljatiNema obfuskacije, nema anti-VM logike, nema staging-a — operater se kladi na volumen i brzinu.

Faza B — Regrutiranje PhantomBota za DDoS napade (17.05.2026., samo axois-utils:1.0.9)

Faza B zamjenjuje phantom.js + postinstall.js s jednom datotekom pod nazivom distrube.js (tipografska pogreška je operatora). Triple-hook scaffold u package.json ostaje nepromijenjen; paket zadržava isto ime, opseg i uzorak povećanja verzije. Izvana, axois-utils:1.0.9 izgleda kao manji nastavak verzije 1.0.6. Iznutra je to drugačija obitelj zlonamjernog softvera.

distrube.js otvara se konfiguracijskim blokom koji imenuje vlastiti brend operatora:

// axois-utils-1.0.9/distrube.js:11-15
// Use your localhost.run HTTPS URL (the tunnel handles HTTP internally)
const C2_HOST = 'b94b6bcfa27554.lhr.life'; // Your localhost.run tunnel
const C2_PORT = 443; // HTTPS port - tunnel handles SSL
const BOT_ID = `${os.hostname()}_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;

Komentari su upućeni budućem operateru koji pokreće kit („Koristite svoj HTTPS URL localhost.run“). To, plus ono što se isporučuje uz bot klijenta, jest znak da ovo nije samo teret žrtve - to je kit.

Tok:

  1. Upornost Prvo se pokreće. Skripta se instalira na tri različita načina po OS-u (registar trčanje + Mapa za pokretanje + schtaskovi na Windowsima; crontab + usluga fantomskog bota sistemska jedinica + .bashrc/.zshrc dodati + /etc/rc.local na Linuxu; LaunchAgent com.phantom.bot.plist na macOS-u). Naziv usluge persistence i oznaka LaunchAgent su oboje fantomski robot / com.phantom.bot, odakle i potječe naziv kampanje.
  2. Izlaz s informacijama o sustavu pokreće se jednom - jednokratni POST otiska prsta na b94b6bcfa27554.lhr.life:443/collect koji sadrži naziv hosta, platformu, arch, korisničko ime, CPU/RAM, mrežna sučelja, process.env, cwd, početni direktorij, verziju čvora i javnu IP adresu. Ovo je puno manje agresivno od faze A: nema SSH-a, nema novčanika, nema .env rekurzije. Posao bota je upisati se, a ne krasti.
  3. Petlja otkucaja srca otvara HTTPS POST svakih 30 sekundi na b94b6bcfa27554.lhr.life:443/. Korisnički agent je PhantomBot/1.0. TLS provjera je eksplicitno onemogućena (rejectUnauthorized: false). C2 odgovor se parsira kao JSON oblika {type, target, port, duration, threads, method} i šalje.
  4. Arsenal poplava povezan je sa šest naredbi:
Vrsta naredbe Moduli Bilješke
ping Odgovor na živost Bot se identificira
http HTTP poplava Poplava zahtjeva sloja 7
https HTTPS poplava Isto kao http, omotano TLS-om
tcp TCP poplava 65 KB neželjene pošte s nasumičnom količinom sadržaja
pud UDP poplava UDP paketi od 65,507 bajtova
brz DoS s brzim resetiranjem HTTP/2 Tehnika CVE-2023-44487 iz 2023.

Svih pet modula za poplavu uzima meta, luka, trajanjei teme argument — bot je generički flooder za unajmljivanje, nije usmjeren ni na jednu određenu žrtvu. Operaterov popis žrtava nalazi se na C2, a ne u paketu.

Što je novo ovdje — isporučeni C2 binarni fajl

Faza A je poznatog oblika: krađa vjerodajnica, instalacijska kuka, tuneliranje C2 od strane dobavljača. Faza B je Također poznati oblik — DDoS botneti su godinama bili dio zlonamjernih npm paketa. Neobično je da je operater isporučio strana poslužitelja kompleta unutar npm tarballa:

  • c2 — kompilirani Go ELF binarni fajl od 4 megabajta
  • c2.go — Go izvorni kod od 426 redaka za taj binarni kod

Nijedna datoteka se ne poziva instalacijskim hook-om. One nisu dio žrtvenog sadržaja. Nalaze se u direktoriju paketa na isti način kao i datoteka dokumentacije. Najvjerojatnije tumačenje je da je operater pomaknuo svoje razvojno stablo na npm bez uređivanja popisa datoteka - pravi OpSec propust - a ono što je isporučeno je kompletan dvostrani komplet: klijent kojeg pokreće žrtva i poslužitelj koji pokreće operater.

Ovo je dio priče koji opravdava tvrdnju o "gotovom kompletu za botnet". Svatko tko je preuzeo axois-utils:1.0.9 prije uklanjanja nema samo uzorak žrtve - imaju i funkcionalni C2 poslužitelj.

Pivot, u jednoj rečenici

Isti izdavač, ista imena paketa, ista trostruka kuka, isto „fantomsko“ brendiranje - ali korisni teret promijenio je model monetizacije preko noćiod „tajni žetve koje mogu preprodati“ do „iznajmljivanja kapaciteta poplave koje mogu zakupiti“. TTP-ovi u vrijeme instalacije koje bi branitelji trebali pratiti gotovo su identični u obje faze; obrane temeljene na potpisima povezane s nizovima putova novčanika faze A ili s phantom.jsKolekcionar od 7,667 redaka u potpunosti bi propustio Fazu B.

Datum (UTC) događaj
2026-05-15 Prva objava: axois-utils:1.0.4 (LAN testna verzija, razvojna platforma na 192.168.129.19)
2026-05-15 axois-utils:1.0.6 objavljeno — Faza A C2 zamijenjena u 80.200.28.28 putem Serveo tunela; komentar izvora // Change to '80.200.28.28' for public potvrđuje zamjenu dev→prod
2026-05-16 chalk-tempalte:1.0.14 i 1.0.16 objavljeno — deklariranje lančanog učitavača axois-utils:^1.0.7 kao ovisnost za vrijeme izvođenja; Serveo poddomena rotirana
2026-05-16 Kampanja faze A otkrivena tijekom rutinskog npm skeniranja; primijenjene su presude o potvrđenom zlonamjernom sadržaju.
2026-05-17 axois-utils:1.0.9 objavljeno — pivot korisnog tereta: regrutiranje PhantomBot DDoS-a putem tunela localhost.run; strana operatera c2 binarni i c2.go izvorni kod poslan u tarballu
2026-05-17 chalk-tempalte:1.0.19 i 1.0.20 objavljeno — još uvijek Faza A (kradljivac); operater sada paralelno pokreće oba modula
2026-05-17 Otkriće faze B tijekom rutinskog skeniranja; zaključke primijenjene na sve 2026-05-17 inačice
(u tijeku) Izvješća o uklanjanju su u tijeku; sva četiri objavljena paketa ostaju dostupna u registru u trenutku pisanja

Pokazatelji kompromisa

Paketi

ekosustav Paket verzije
NPM axois-utils (tiposkripta aksija) 1.0.4, 1.0.6, 1.0.9
NPM chalk-tempalte (tiposkvatni predložak krede) 1.0.14, 1.0.16, 1.0.19, 1.0.20

Identitet autora

Polje Još malo brojeva
npm izdavač deadcode09284814
E-pošta izdavača phantomdeadcode@tutamail.com
SCM verifikacija nijedan

Zapovijedanje i kontrola

Faza Endpoint prijevoz
A f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect Serveo HTTPS tunel
A 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect Serveo HTTPS tunel (starija verzija)
A 80.200.28.28:443/collect Osnovna VPS krajnja točka
B b94b6bcfa27554.lhr.life:443/ localhost.run HTTPS obrnuti tunel

Sažeci datoteka (SHA-256)

file SHA-256 Bilješke
c2 (Idi na ELF, 4 MB) 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 C2 poslužitelj na strani operatera, isporučuje se unutra axois-utils:1.0.9
c2.go (426 redaka) 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 Go izvorni kod za binarni C2
distrube.js 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 Bot klijent faze B
phantom.js (chalk-tempalte:1.0.19) 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 Faza A akreditacije / sakupljač novčanika
phantom.js (chalk-tempalte:1.0.20) d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 Kolektor faze A (varijanta 1.0.20)
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 Učitavač faze A, identičan bajtovima u obje verzije

Atribucija i motivacija

Pratimo ovu kampanju kao PhantomBot, preuzimajući vlastiti brend operatera od Korisnički agent: PhantomBot/1.0 zaglavlje otkucaja srca, usluga fantomskog bota sistemska jedinica, com.phantom.bot Oznaka LaunchAgent i phantomdeadcode@ adresa e-pošte. Operator je dosljedan u vezi s ovim imenom u najmanje četiri artefakta.

Katalog signala

  • Publisher - mrtvi kod09284814 na npm-u. Račun s jednim korisnikom, jednokratna e-pošta Tutamail, ne SCM provjera. Nema prethodne povijesti objavljivanja izvan ove kampanje.
  • Ponovna upotreba brenda — „phantom“ se pojavljuje u e-poruci izdavača, u nazivu datoteke kolekcionara Phase A (phantom.js), u nazivu usluge perzistencije faze B (usluga fantomskog bota), u oznaci LaunchAgent (com.phantom.bot) i u korisničkom agentu bota (PhantomBot/1.0).
  • Infrastruktura — Jedan VPS na 80.200.28.28 fronte Faze A putem rotacije Serveo poddomene; Faza B se pomiče u a localhost.run obrnuti tunel (b94b6bcfa27554.lhr.life). Obje usluge dobavljača su besplatne i zahtijevaju samo izlazni SSH na strani operatera, što je u skladu s niskobudžetnim postavkama s niskim operativnim troškovima.
  • stil koda — Jednostavan JavaScript u cijelosti; bez obfuskacije, bez kodiranja stringova, bez anti-VM provjera. Nazivi varijabli su opisni (krađaSystemInfo, izvršiNaredbu, httpFlood). Komentari u distrube.js izravno se obraćaju budućem operatoru („Koristite svoj HTTPS URL localhost.run“), što sugerira da je datoteka bila namijenjena za redistribuciju kao komplet, a ne za korištenje od strane jednog napadača.
  • Operativna sigurnosna propust — Tarball faze B sadrži i bot klijenta i C2 poslužitelj na strani operatera (c2 VILENJAK + c2.go izvor). To je u skladu s operaterom koji je poslao svoje radno stablo u npm bez revizije popisa datoteka. Ili je operater neiskusan ili je komplet značilo za javnu distribuciju, a binarna datoteka C2 je dio proizvoda.
  • Samopotvrđivanje - axois-utils:1.0.4 sadrži komentar izvora // Promijeni na '80.200.28.28' za javnost u retku 12, potvrđujući napredak razvoja / pripreme / produkcije koji operateri obično poriču.

Motivacija

Faza A je jednostavna financijska krađa: vjerodajnice, cloud ključevi, GitHub tokeni i kripto novčanici imaju likvidna tržišta preprodaje. Faza B je također financijska, ali neizravna: DDoS-for-hire („booter“) usluge iznajmljuju kapacitet po minuti, a botovi poput ovog koji se ovdje isporučuje su inventar na kojem te usluge rade. 30-sekundni otkucaj srca, generički meta/luka/trajanje shema naredbi i arsenal poplava s pet protokola su standard proizvod operatera za podizanje sustava.

Paralelno pokretanje oba modula — predložak-krede:1.0.19 i 1.0.20 nastaviti slati kradljivca dok axois-utils:1.0.9 šalje bota - sugerira da operater štiti prihode umjesto da napusti Fazu A. Zaokret je dodatak, ne zamjena.

Ono što ne tvrdimo

Nismo uspjeli potvrditi stvarni identitet iza mrtvi kod09284814 ručka, i ne pripisujemo ovu kampanju nijednom imenovanom akteru prijetnje, skupini ili zemlji. Brendiranje "fantoma" dovoljno je dosljedno u svim artefaktima da sugerira jednog operatera, ali isporuka C2 binarne datoteke u stilu kita ostavlja mogućnost da će budući paketi iz nepovezanih ručki ponovno koristiti isti kod.

Utjecaj, trendovi i što bi branitelji trebali učiniti

Utjecaj

Legitimni ciljevi čučnjeva aksios i predložak kredom uvelike ovise o njima u JavaScript ekosustavu; aksios sam se nalazi među trideset najčešće preuzimanih npm paketa. Imena s tipografskim greškama udaljena su jedan pritisak tipke od pravih (axoisaksios, predložakPredložak), i oba su lingvistički uvjerljive pravopisne pogreške.

Nismo uspjeli dobiti pouzdanu statistiku preuzimanja za zlonamjerne verzije prije uklanjanja — npm ne zadržava broj preuzimanja po verziji nakon što je paket poništen s objave i npms.ioProxyji u stilu -su bučni na ovoj skali. Bilo koja organizacija čija se lockfile rješava u paket pod nazivom axois-utils or kreda-predložak od izdavača mrtvi kod09284814 treba tretirati kao kompromitirano: rotirati sve prisutne vjerodajnice u process.env na pogođenom hostu, provjeriti vektore perzistencije po OS-u (pogledajte "Što branitelji trebaju učiniti" u nastavku) i ukloniti ovisnost.

Novi obrasci

Ova kampanja primjer je promjene koju smo vidjeli u nekoliko nedavnih incidenata s novim vlasnicima nekretnina: Skela s kukom za ugradnju je trajna imovina; korisni teret se može mijenjatiIsti izdavač, isti paket, isto predinstalacija / instalirati / nakon instalacije trostruka, pa čak i ista kadenca povećanja verzije - jedina stvar koja se promijenila između axois-utils:1.0.6 i axois-utils:1.0.9 je li datoteka bila hooks pokrenuti. Detekcija temeljena na potpisu povezana s korisnim teretom faze A (nizovi puta novčanika, phantom.jsSakupljač od 7,667 redaka, Serveo C2 domaćin) označio bi prve tri verzije i u potpunosti propustio Fazu B.

Isti obrazac vidljiv je i u ostalim kampanjama iz 2026. koje smo pratili: jedan operater sa stabilnom strukturom, koji se prebacuje između krađe vjerodajnica, klijenata koji varaju na ispitima, izbacivanja putem Telegram botova, a sada i DDoS regrutiranja. Branitelji koji se oslanjaju na potpise korisnih podataka nastavit će gubiti drugi krug svake kampanje.

Posljedica je da TTP-ovi za vrijeme instalacije su bolji signalTrostruke deklaracije install-hook-a, instaliraju skripte koje uvoze https or podređeni_proces, instalirajte skripte koje pišu u mape za pokretanje korisnika i instalirajte skripte koje razrješavaju imena hostova na besplatnim servisima obrnutog tuneliranja (Serveo, localhost.run, ngrok, cloudflared) su rijetki u legitimnim paketima, a uobičajeni u zlonamjernim.

Što bi branitelji trebali učiniti

  • Revizija zaključanih datoteka. Pretraži svakih paket-lock.json / pređa.brava / pnpm-lock.yaml u vašoj organizaciji za točne nizove znakova axois-utils i kreda-predložakTretirajte bilo koji meč kao kompromis.
  • Rotiranje tajni na pogođenim domaćinima. Faza A - skupno prikupljeni SSH, cloud, GitHub, npm i novčanik vjerodajnice. Pretpostavimo svaku vjerodajnicu ikada prisutnu u process.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~ / .configili bilo koji drugi .env* datoteka na pogođenom hostu je izložena.
  • Uklonite perzistentnost (faza B). U sustavu Windows, izbrišite HKCU\Softver\Microsoft\Windows\Trenutna verzija\Pokreni\Ažuriranje sustava, ukloni %APPDATA%\Microsoft\Windows\Izbornik Start\Programi\Pokretanje\system-update.bati schtasks /delete /tn SystemUpdate /fNa Linuxu, crontab -e i ukloniti @reboot čvor …, systemctl –user disable –now phantom-bot.service zatim izbriši ~/.config/systemd/user/phantom-bot.service, piling .bashrc / .zshrc / /etc/rc.localNa macOS-u, launchctl istovari ~/Library/LaunchAgents/com.phantom.bot.plist zatim izbrišite plist.
  • Blokiraj C2 hostove. Dodajte četiri C2 krajnje točke u IOC tablici na svoj izlazni popis blokiranih. *.serveousercontent.com i *.lhr.life može se blokirati u cijelosti ako vaše okruženje nema legitimnu upotrebu za usluge obrnutog tuneliranja.
  • Hunt prema TTP-u za vrijeme instalacije, a ne korisni teret. Unosi u datoteku zaključavanja inventara čiji paket.json izjavljuje predinstalacija, instaliratii nakon instalacije svi upućuju na istu skriptu. Provjerite starost paketa i status provjere izdavača. Ovaj obrazac je rijedak u legitimnim paketima i najpouzdaniji je signal koji PhantomBot ponovno koristi.
  • Revizija za binarni C2. Svatko tko je preuzeo axois-utils:1.0.9 ima C2 poslužitelj operatora (c2 ELF, sha256 165fa92d…) na disku. Skeniraj predmemorije i pohrane CI artefakata. Binarna datoteka je sama po sebi neaktivna, ali njezina prisutnost na radnoj stanici nedvosmislen je dokaz da je paket instaliran.

Završna linija

Isti operator, isti paket i ista instalacijska hook mogu isporučiti potpuno različite prijetnje unutar 48 sati. Pazite na scaffold, a ne na payload.

alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda