PhantomBot Saka Pencurian Kredensial dadi Botnet

PhantomBot: Kampanye Typosquat sing Owah Saka Nyolong Kredensial dadi Kit Botnet Turnkey

TL; DR

Penerbit npm tunggal, deadcode09284814, wis nglakokake kampanye typosquat nglawan sing sah axios lan chalk-template paket wiwit pertengahan Mei 2026.

Kampanye iki diwiwiti minangka maling kredensial lan dompet konvensional, sing nyulik data menyang Terowongan HTTPS Serveo.

On 2026-05-17, karo axois-utils:1.0.9, operator ngganti muatan kabeh: scaffold triple install-hook sing padha, penerbit sing padha, jeneng paket sing padha.

Nanging skrip instalasi saiki dadi rekrut botnet DDoS lintas platform.

Muatan kasebut ngomong karo localhost.run trowongan lan nampa printah banjir, ngowahi lingkungan sing kena infeksi dadi bagean saka botnet sing nduweni kemampuan DDoS.

Operator malah ngirim barang Binar server C2 ing njero tarball, nuduhake eskalasi sing jelas saka pencurian kredensial menyang infrastruktur botnet aktif.

Rong paket, papat versi isih aktif ing registri, lan siji operator saiki mbukak loro modul kasebut kanthi paralel.

Keruwetan: dhuwur.

IOC Utama Versi axois-utils utawa chalk-tempalte saka penerbit deadcode09284814

Serangan: Cara Kerjane

Kampanye iki dibangun ing perancah pangiriman sing sengaja mboseni: rong jeneng paket typosquat, siji huruf sing ilang saka paket kanthi atusan yuta unduhan saben minggu (aksioma, cithakan kapur), lan instalasi kaping telu hooks sing njamin eksekusi. Sing menarik yaiku apa perancah kasebut nglampahi — lan kasunyatan manawa operator ngganti kargo tanpa ngganti apa-apa maneh.

Perancah sing dienggo bareng

Saben versi sing diterbitake saka loro paket kasebut nyatakake telung siklus urip sing padha hooks in paket.json:

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

Ndhaptar muatan ing kabeh telu hooks iku berlebihan - sawise instalasi dhewekan bakal mlaku kanthi standar npm nginstalPilihan iku penting: npm nginstal –ignore-scripts nglewati skrip, nanging ana sawetara alur kerja umum (cache CI mulihake siklus urip sing mlaku maneh hooks selektif, utawa pangembang sing mung ngaudit sawise instalasi) nggawe deklarasi triple-redundant minangka taruhan paling aman kanggo penyerang.

tempalte kapur nambahake mekanisme kapindho: iki nyatakake axois-utils:^1.0.7 minangka wektu mlaku ketergantunganNginstal typosquatted cithakan kapur mulane narik typosquat sedulur uga, lan kaloro muatan kasebut mlaku. Kaloro paket kasebut minangka pasangan sing terkoordinasi, dudu dhaptar independen.

Fase A — maling kredensial / dompet (2026-05-15 → saiki)

Fase A minangka muatan asli. Loader kasebut cendhak postinstall.js sing nuduhake terowongan terbalik Serveo HTTPS:

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

Subdomain Serveo ngode IP tujuan (80.200.28.28) langsung ing jeneng host — konvensi sing bisa dikenali kanggo layanan kasebut. Operator muter awalan subdomain acak antarane versi kanggo ngindhari dhaptar blokir domain naif, nanging IP sing ndasari ora tau obah. (chalk-tempalte:1.0.14 used 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 panggunaan f04a273bd84c0622-….)

postinstall.js tangane ora kanggo phantom.js, modul "kolektor" sing dibundel 7,667 baris. phantom.js mlaku-mlaku karo tuan rumah kanggo:

Kunci pribadi SSH (~/.ssh/*)
.npmrc isi lan apa wae npm_* token lingkungan
File kredensial AWS, GCP, lan Azure
Regex token akses pribadi GitHub (ghp_*, gho_*, ghu_*, ghs_*)
Artefak dompet kripto kanggo Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash
Rekursif .env* mlaku liwat ~/projects, ~/dev, ~/code, ~/workspace, lan instalasi cwd
Sejarah Shell lan lengkap process.env

Bundel kasebut dikirim menyang trowongan Serveo ing / ngumpulakeOra ana obfuskasi, ora ana logika anti-VM, ora ana pementasan — taruhan operator ana ing volume lan kecepatan.

Fase B — Rekrutmen DDoS PhantomBot (2026-05-17, axois-utils:1.0.9 wae)

Fase B ngganti phantom.js + postinstall.js nganggo siji file jenenge distrube.js (salah ketik kuwi saka operator). Scaffold triple-hook ing package.json ora owah; paket tetep nganggo jeneng, ruang lingkup, lan pola version-bump sing padha. Saka njaba, axois-utils:1.0.9 katon kaya tindak lanjut cilik saka 1.0.6. Ing njero, iki minangka kulawarga malware sing beda.

distrube.js dibukak nganggo blok konfigurasi sing menehi jeneng merek operator dhewe:

// 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')}`;

Komentar-komentar kasebut ditujokake kanggo operator sing bakal mbukak kit kasebut (“Gunakake URL HTTPS localhost.run sampeyan”). Iku, ditambah apa sing dikirim ing jejere klien bot, minangka pratandha yen iki dudu mung muatan korban — nanging kit kasebut.

Alirane:

  1. Kegiyatan mlaku dhisik. Skrip kasebut nginstal dhewe kanthi telung cara sing beda saben OS (registri Run + Folder pambuka + schtasks ing Windows; crontab + layanan phantom-bot. unit sistem + .bashrc/.zshrc nambahake + /etc/rc.local ing Linux; LaunchAgent com.phantom.bot.plist ing macOS). Jeneng layanan persistensi lan label LaunchAgent loro-lorone bot-hantu / com.phantom.bot, saka kono uga asale jeneng kampanye kasebut.
  2. Informasi sistem exfil mlaku sapisan — POST sidik jari siji-sijine menyang b94b6bcfa27554.lhr.life:443/collect sing nggawa jeneng host, platform, arch, jeneng panganggo, CPU/RAM, antarmuka jaringan, process.env, cwd, homedir, versi node, lan IP publik. Iki kurang agresif tinimbang Fase A: ora ana SSH, ora ana dompet, ora ana rekursi .env. Pakaryane bot yaiku ndhaptar, ora nyolong.
  3. Putaran denyut jantung mbukak HTTPS POST saben 30 detik menyang b94b6bcfa27554.lhr.life:443/. Agen Panganggo yaiku PhantomBot/1.0. Verifikasi TLS dipateni kanthi eksplisit (rejectUnauthorized: false). Respon C2 diurai minangka JSON kanthi bentuk {type, target, port, duration, threads, method} lan dikirim.
  4. Gudang senjata banjir disambungake menyang enem prentah:
Jinis printah modul Cathetan
ping Wangsulan urip Bot ngenali awake dhewe
http Banjir HTTP Panjaluk banjir lapisan-7
https Banjir HTTPS Padha karo http, dibungkus TLS
tcp Banjir TCP 65 KB spam muatan acak
udp Banjir UDP Paket UDP 65,507-byte
cepet DoS reset cepet HTTP/2 Teknik CVE-2023-44487 2023

Kabeh limang modul banjir njupuk target, port, dadi, Lan Utas argumen — bot iki minangka flooder umum sing disewa, ora ditujokake kanggo korban tartamtu. Dhaptar korban operator ana ing C2, ora ana ing paket kasebut.

Apa sing Anyar Ing Kene — binar C2 sing dikirim

Fase A kuwi wujud sing wis biasa: nyolong kredensial, nggandheng instalasi, C2 sing di-tunnel vendor. Fase B kuwi uga wujud sing wis dikenal — botnet DDoS wis dadi piranti kanggo paket npm sing mbebayani sajrone pirang-pirang taun. Sing ora umum yaiku operator ngirim sisih server saka kit ing njero tarball npm:

  • c2 — binar Go ELF sing dikompilasi 4-megabyte
  • c2.go — sumber Go 426 baris kanggo binar kasebut

Ora ana file sing dipanggil dening hook instalasi apa wae. File kasebut dudu bagean saka payload korban. File kasebut ana ing direktori paket kaya file dokumentasi. Wacan sing paling masuk akal yaiku operator ngunggah wit kerja pangembangan menyang npm tanpa ngatur dhaptar file — slip OpSec sing nyata — lan sing dikirim yaiku kit rong sisi lengkap: klien sing dilakokake korban, lan server sing dilakokake operator.

Iki bagéan saka crita sing mbeneraké framing "kit botnet turnkey". Sapa waé sing ndownload axois-utils:1.0.9 sadurunge takedown ora mung duwe sampel korban — dheweke uga duwe server C2 sing bisa digunakake.

Poros, ing siji ukara

Penerbit sing padha, jeneng paket sing padha, perancah triple-hook sing padha, branding "phantom" sing padha — nanging Payload ngganti model monetisasi sajrone sewengisaka "rahasia panen sing bisa dakdol maneh" nganti "nyewa kapasitas banjir sing bisa daksewa". TTP wektu instalasi sing kudu dideleng para pembela meh padha ing loro fase kasebut; pertahanan adhedhasar tanda tangan sing dikunci ing senar jalur dompet Fase A utawa phantom.jsKolektor 7,667 baris saka perusahaan iki mesthi ora bakal weruh Fase B babar pisan.

Tanggal (UTC) Event
2026-05-15 Publikasi pisanan: axois-utils:1.0.4 (Pambangunan uji coba LAN, perangkat pengembangan ing 192.168.129.19)
2026-05-15 axois-utils:1.0.6 diterbitake — Fase A C2 diganti dadi 80.200.28.28 liwat trowongan Serveo; komentar sumber // Change to '80.200.28.28' for public ngonfirmasi pertukaran dev→prod
2026-05-16 chalk-tempalte:1.0.14 lan 1.0.16 diterbitake — loader rantai ngumumake axois-utils:^1.0.7 minangka dependensi runtime; subdomain Serveo diputer
2026-05-16 Kampanye Fase A ditemokake sajrone pemindaian npm rutin; putusan sing wis dikonfirmasi minangka kejahatan ditrapake
2026-05-17 axois-utils:1.0.9 diterbitake — pivot muatan: PhantomBot DDoS ngrekrut liwat trowongan localhost.run; sisih operator c2 biner lan c2.go sumber dikirim ing tarball
2026-05-17 chalk-tempalte:1.0.19 lan 1.0.20 diterbitake — isih Fase A (nyolong); operator saiki mbukak loro modul kanthi paralel
2026-05-17 Panemon Fase B sajrone pemindaian rutin; putusan ditrapake ing kabeh 2026-05-17 versi
(aktif) Laporan penghapusan lagi ditundha; kabeh papat paket sing diterbitake isih kasedhiya ing registri nalika iki ditulis

Indikator Kompromi

Packages

Ekosistem paket versi
npm axois-utils (salah ketik saka aksios) 1.0.4, 1.0.6, 1.0.9
npm chalk-tempalte (salah ketik saka template kapur) 1.0.14, 1.0.16, 1.0.19, 1.0.20

Identitas panganggit

Field Value
penerbit npm deadcode09284814
Email penerbit phantomdeadcode@tutamail.com
SCM verifikasi ora ana

Command-lan-kontrol

Phase Endpoint transportasi
A f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect Terowongan HTTPS Serveo
A 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect Terowongan HTTPS Serveo (versi sadurungé)
A 80.200.28.28:443/collect Titik pungkasan VPS sing ndasari
B b94b6bcfa27554.lhr.life:443/ localhost.jalanake HTTPS reverse-tunnel

Ringkesan berkas (SHA-256)

file SHA-256 Cathetan
c2 (Go ELF, 4 MB) 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 Server C2 sisih operator, dikirim ing njero axois-utils:1.0.9
c2.go (426 baris) 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 Golek sumber kanggo binar C2
distrube.js 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 Klien bot Fase B
phantom.js (chalk-tempalte:1.0.19) 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 Pengumpul kredensial / dompet Fase A
phantom.js (chalk-tempalte:1.0.20) d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 Kolektor Fase A (varian 1.0.20)
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 Loader Fase A, identik byte ing loro versi kasebut

Atribusi & Motivasi

Kita nglacak kampanye iki minangka PhantomBot, njupuk branding operator dhewe saka Agen Panganggo: PhantomBot/1.0 judul deg-degan, layanan phantom-bot. unit sistem, ing com.phantom.bot Label LaunchAgent, lan kode mati bayangan@ Gagang email. Operator kasebut konsisten babagan jeneng iki ing paling ora patang artefak.

Katalog sinyal

  • Publisher - kode mati09284814 ing npm. Akun siji-tangan, email Tutamail sing bisa dibuwang, ora SCM verifikasi. Ora ana riwayat publikasi sadurunge ngluwihi kampanye iki.
  • Panggunaan maneh merek — "phantom" katon ing email penerbit, ing jeneng file kolektor Fase A (phantom.js), ing jeneng layanan persistensi Fase B (layanan phantom-bot.), ing label LaunchAgent (com.phantom.bot), lan ing bot Agen Panganggo (PhantomBot/1.0).
  • infrastructure — VPS tunggal ing 80.200.28.28 ngarep Fase A liwat rotasi subdomain Serveo; Fase B pindhah menyang a localhost.jalan trowongan mundur (b94b6bcfa27554.lhr.life). Kaloro layanan vendor kasebut gratis lan mung mbutuhake SSH metu saka pihak operator, selaras karo persiyapan OpSec kanthi anggaran murah lan murah.
  • Gaya kode — JavaScript polos ing sakabèhé; ora ana obfuscation, ora ana encoding string, ora ana pamriksan anti-VM. Jeneng variabel iku deskriptif (nyolongInfoSistem, nglakokake Perintah, httpBanjirKomentar ing distrube.js langsung ngarahake operator ing mangsa ngarep (“Gunakake URL HTTPS localhost.run sampeyan”), sing nuduhake yen file kasebut dimaksudake kanggo disebarake maneh minangka kit, ora digunakake dening siji penyerang.
  • Slip OpSec — Tarball Fase B ngirim klien bot lan server C2 sisih operator (c2 ELF + c2.go (sumber). Iki konsisten karo operator sing ngunggah wit kerjane menyang npm tanpa ngaudit dhaptar file. Operator kasebut ora duwe pengalaman, utawa kit kasebut tegese kanggo disebarake menyang publik lan binar C2 minangka bagean saka produk kasebut.
  • Konfirmasi dhiri - axois-utils:1.0.4 isine komentar sumber // Ganti dadi '80.200.28.28' kanggo umum ing baris 12, ngonfirmasi kemajuan dev / staging / produksi sing biasane ditolak operator.

motivasi

Payload Fase A iku gampang banget dicolong saka segi finansial: kredensial, kunci maya, token GitHub, lan dompet kripto kabeh duwe pasar penjualan maneh sing cair. Fase B uga finansial, nanging ora langsung: layanan DDoS-for-hire ("booter") nyewa kapasitas banjir saben menit, lan bot kaya sing dikirim ing kene minangka inventaris layanan kasebut. Detak jantung 30 detik, generik target/port/dadi skema komando, lan arsenal banjir limang protokol minangka standard produk saka operator booter.

Nglakokake loro modul kanthi paralel — chalk-tempalte:1.0.19 lan 1.0.20 terus ngirim maling nalika axois-utils:1.0.9 ngirim bot — nuduhake yen operator lagi njaga aliran pendapatan tinimbang ninggalake Fase A. Poros kasebut minangka Saliyane, dudu pengganti.

Apa sing ora kita klaim

Kita durung bisa ngonfirmasi identitas nyata ing mburine kode mati09284814 handle, lan kita ora nggandhengake kampanye iki karo aktor ancaman, klompok, utawa negara sing dijenengi. Branding "phantom" cukup konsisten ing antarane artefak kanggo nuduhake operator tunggal, nanging pengiriman gaya kit saka biner C2 mbukak kemungkinan yen paket ing mangsa ngarep saka handle sing ora ana hubungane bakal nggunakake maneh kode sing padha.

impact

Target jongkok sing sah aksioma lan cithakan kapur akeh gumantung ing ekosistem JavaScript; aksioma mung ana ing antarane telung puluh paket npm sing paling akeh diunduh. Jeneng typosquat mung sak keystroke saka sing asli (aksisaksioma, tempaltecithakan), lan kalorone minangka salah ejaan sing masuk akal sacara linguistik.

Kita ora bisa entuk statistik unduhan sing bisa dipercaya kanggo versi angkoro sadurunge dicopot — npm ora nyimpen cacah unduhan saben versi sawise paket ora diterbitake, lan npms.ioProxy gaya-- rame banget ing skala iki. Sembarang organisasi sing file kuncine diowahi dadi paket sing jenenge axois-utils or tempalte kapur saka penerbit kode mati09284814 kudu dianggep minangka kompromi: rotasi saben kredensial sing ana ing proses.env ing host sing kena pengaruh, audit vektor persistensi saben OS (waca "Apa sing kudu ditindakake dening para pembela" ing ngisor iki), lan mbusak katergantungan kasebut.

Pola sing muncul

Kampanye iki minangka conto owah-owahan sing wis dideleng ing sawetara kedadeyan npm anyar: Perancah pengait instalasi minangka aset sing awet; muatan bisa digantiPenerbit sing padha, paket sing padha, padha prainstal / masang / sawise instalasi telu, lan malah irama versi-bump sing padha — siji-sijine sing owah antarane axois-utils:1.0.6 lan axois-utils:1.0.9 berkas kuwi apa hooks mlaku. Deteksi adhedhasar tandha tangan sing dikunci menyang muatan Fase A (string jalur dompet, phantom.jsKolektor 7,667 baris, host Serveo C2) mesthi bakal nandhani telung versi pisanan lan ora kejawab Fase B kabeh.

Pola sing padha katon ing kampanye 2026 liyane sing wis dilacak: operator tunggal kanthi perancah sing stabil, ijol-ijolan antarane nyolong kredensial, klien sing nyolong ujian, exfil Telegram-bot, lan saiki rekrutmen DDoS. Para pembela sing ngandelake tandha tangan payload bakal terus kalah ing babak kapindho saben kampanye.

Akibate yaiku TTP wektu instalasi minangka sinyal sing luwih apikDeklarasi install-hook telu, skrip instal sing diimpor https or proses_anak, nginstal skrip sing nulis menyang folder wiwitan pangguna, lan nginstal skrip sing ngrampungake jeneng host ing layanan terowongan mbalikke gratis (Serveo, localhost.jalan, ngrok, cloudflared) kabeh langka ing paket sing sah lan umum ing paket sing mbebayani.

Apa sing kudu ditindakake para pembela

  • Audit berkas kunci. Telusuri saben package-lock.json / kunci benang / pnpm-lock.yaml ing organisasi sampeyan kanggo senar sing tepat axois-utils lan tempalte kapurAnggep wae jodho minangka kompromi.
  • Puter rahasia ing host sing kena pengaruh. Fase A ngumpulake kredensial SSH, cloud, GitHub, npm, lan wallet kanthi akeh. Anggep saben kredensial sing ana ing proses.env, ~/.ssh, ~/.aws, ~/.npmrc, ~/.config, utawa liya-liyane .env* file ing host sing kena pengaruh bakal katon.
  • Copot kegigihan (Fase B). Ing Windows, busak HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, copot %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.bat, Lan schtasks /delete /tn SystemUpdate /fIng Linux, crontab -e lan nyopot @reboot simpul …, systemctl –pangguna nonaktifake –saiki phantom-bot.service banjur busak ~/.config/systemd/panganggo/phantom-bot.layanan, nggosok .bashrc / .zshrc / /etc/rc.localIng macOS, launchctl mbongkar ~/Library/LaunchAgents/com.phantom.bot.plist banjur busak plist kasebut.
  • Blokir host C2. Tambahake papat titik pungkasan C2 ing tabel IOC menyang dhaptar blokir egress sampeyan. *.serveousercontent.com lan *.lhr.urip bisa diblokir kanthi borongan yen lingkungan sampeyan ora duwe panggunaan sing sah kanggo layanan trowongan terbalik.
  • Mburu miturut TTP wektu instalasi, dudu muatan. Entri file kunci inventaris sing paket.json nyatakake prainstal, masang, Lan sawise instalasi kabeh nuduhake skrip sing padha. Priksa maneh umur paket lan status verifikasi penerbit. Pola iki arang ditemokake ing paket sing sah lan minangka sinyal paling dipercaya sing digunakake maneh dening PhantomBot.
  • Audit kanggo biner C2. Sapa wae sing ndownload axois-utils:1.0.9 nduweni server C2 operator (c2 ELF, sha256 165fa92d…) ing disk. Pindai cache lan panyimpenan artefak CI. Binary kasebut ora aktif dhewe, nanging anane ing workstation minangka bukti sing jelas yen paket kasebut wis diinstal.

Garis penutup

Operator sing padha, paket sing padha, lan hook instalasi sing padha bisa ngirim ancaman sing beda banget sajrone 48 jam. Gatèkna perancahé, dudu muatané.

piranti lunak-piranti-sca-piranti-analisis-komposisi
Prioritasake, ndandani, lan amanake risiko piranti lunak sampeyan
Entuk Akun Gratismu.
Ora ana kertu kredit.

Amanake Pangembangan lan Pangiriman Piranti Lunak Sampeyan

karo Suite Produk Xygeni