TL? DR
Ένας μόνο εκδότης npm, deadcode09284814, έχει διεξάγει μια εκστρατεία τυπογραφικής κατάληψης κατά του νόμιμου axios και chalk-template πακέτα από τα μέσα Μαΐου 2026.
Η καμπάνια ξεκίνησε ως μια συμβατική κλοπή διαπιστευτηρίων και πορτοφολιού, αποσπώντας δεδομένα σε ένα Σήραγγα HTTPS Serveo.
On 2026-05-17, με axois-utils:1.0.9, ο χειριστής άλλαξε εντελώς το ωφέλιμο φορτίο: το ίδιο τριπλό σκελετό εγκατάστασης, ο ίδιος εκδότης, το ίδιο όνομα πακέτου.
Αλλά το σενάριο εγκατάστασης είναι πλέον μια στρατολόγηση botnet DDoS σε πολλαπλές πλατφόρμες.
Το ωφέλιμο φορτίο μιλάει για ένα localhost.run σήραγγα και δέχεται εντολές flood, μετατρέποντας τα μολυσμένα περιβάλλοντα σε μέρος ενός botnet με δυνατότητα DDoS.
Ο χειριστής έστειλε ακόμη και το Δυαδικό αρχείο διακομιστή C2 μέσα στο tarball, δείχνοντας μια σαφή κλιμάκωση από την κλοπή διαπιστευτηρίων σε ενεργή υποδομή botnet.
Δύο πακέτα, τέσσερις εκδόσεις που εξακολουθούν να είναι ενεργές στο μητρώο και ένας χειριστής που εκτελεί πλέον και τις δύο ενότητες παράλληλα.
Σοβαρότητα: υψηλή.
Η Επίθεση: Πώς Λειτουργεί
Η καμπάνια βασίζεται σε ένα σκόπιμα βαρετό πλαίσιο παράδοσης: δύο τυπογραφικά λάθη στα ονόματα πακέτων, ένα γράμμα διαφορετικό από πακέτα με εκατοντάδες εκατομμύρια εβδομαδιαίες λήψεις (αξίους, πρότυπο κιμωλίας), και τριπλή εγκατάσταση hooks που εγγυώνται την εκτέλεση. Αυτό που είναι ενδιαφέρον είναι τι είναι το ικρίωμα μεταφέρει — και το γεγονός ότι ο φορέας εκμετάλλευσης άλλαξε το φορτίο χωρίς να αλλάξει τίποτα άλλο.
Το κοινόχρηστο ικρίωμα
Κάθε δημοσιευμένη έκδοση και των δύο πακέτων δηλώνει τους ίδιους τρεις κύκλους ζωής hooks in πακέτο.json:
Καταγραφή του ωφέλιμου φορτίου και στα τρία hooks είναι υπερβολικό — μετά την εγκατάσταση μόνο του θα εκτελούσε σε μια προεπιλεγμένη κατάσταση npm installΗ επιλογή μετράει: npm install –ignore-scripts παραλείπει τα σενάρια, αλλά αρκετές συνηθισμένες ροές εργασίας (επαναφορές προσωρινής μνήμης CI που επαναλαμβάνουν τον κύκλο ζωής) hooks επιλεκτικά, ή προγραμματιστές που ελέγχουν μόνο μετά την εγκατάσταση) κάνουν μια τριπλή πλεονάζουσα δήλωση την ασφαλέστερη επιλογή για τον εισβολέα.
κιμωλία-tempalte προσθέτει έναν δεύτερο μηχανισμό: δηλώνει axois-utils:^1.0.7 ως χρόνο εκτέλεσης εξάρτησηΕγκατάσταση του typosquatted πρότυπο κιμωλίας επομένως, τραβάει και το single typosquat, και εκτελούνται και τα δύο ωφέλιμα φορτία. Τα δύο πακέτα είναι ένα συντονισμένο ζεύγος, όχι ανεξάρτητες καταχωρίσεις.
Φάση Α — διαπιστευτήρια / κλέφτης πορτοφολιού (2026-05-15 → σήμερα)
Η Φάση Α είναι το αρχικό ωφέλιμο φορτίο. Ο φορτωτής είναι ένας κοντός postinstall.js που δείχνει σε μια αντίστροφη σήραγγα Serveo HTTPS:
Ο υποτομέας 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-….)
postinstall.js τα χέρια κάτω phantom.js, μια μονάδα «συλλέκτη» 7,667 γραμμών που περιλαμβάνεται. phantom.js περπατάει τον οικοδεσπότη για:
Ιδιωτικά κλειδιά SSH (~/.ssh/*) |
.npmrc περιεχόμενο και οποιαδήποτε npm_* διακριτικά περιβάλλοντος |
| Αρχεία διαπιστευτηρίων AWS, GCP και Azure |
Regex διακριτικού προσωπικής πρόσβασης GitHub (ghp_*, gho_*, ghu_*, ghs_*) |
| Τεχνουργήματα κρυπτονομισμάτων για Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash |
Μια αναδρομική .env* περπατάω ~/projects, ~/dev, ~/code, ~/workspaceκαι το install cwd |
Ιστορικά στοιχεία της Shell και το πλήρες κείμενο process.env |
Η δέσμη αποστέλλεται στη σήραγγα Serveo στη διεύθυνση /συλλέγωΔεν υπάρχει καμία συσκότιση, καμία λογική κατά των VM, καμία σταδιοποίηση — το στοίχημα του χειριστή είναι στην ένταση και την ταχύτητα.
Φάση Β — Πρόσληψη PhantomBot DDoS (2026-05-17, μόνο axois-utils:1.0.9)
Η Φάση Β αντικαθιστά το phantom.js + postinstall.js με ένα μόνο αρχείο με το όνομα distrube.js (το τυπογραφικό λάθος οφείλεται στον χειριστή). Το scaffold triple-hook στο package.json παραμένει αμετάβλητο. Το πακέτο διατηρεί το ίδιο όνομα, πεδίο εφαρμογής και μοτίβο bump έκδοσης. Από έξω, το 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')}`; |
Τα σχόλια απευθύνονται σε έναν μελλοντικό χειριστή που θα εκτελέσει το κιτ ("Χρησιμοποιήστε τη διεύθυνση URL HTTPS του localhost.run"). Αυτό, συν αυτό που εμφανίζεται δίπλα στον bot client, είναι η υπόδειξη ότι αυτό δεν είναι απλώς ένα ωφέλιμο φορτίο θύματος - είναι το ίδιο το κιτ.
Η ροή:
- Επιμονή εκτελείται πρώτα. Το σενάριο εγκαθίσταται με τρεις διαφορετικούς τρόπους ανά λειτουργικό σύστημα (μητρώο τρέξιμο + Φάκελος εκκίνησης + σκίτσα σε Windows; crontab + phantom-bot.service συστημική μονάδα + .bashrc/.zshrc προσθήκη + /etc/rc.local σε Linux; LaunchAgent com.phantom.bot.plist σε macOS). Το όνομα της υπηρεσίας διατήρησης και η ετικέτα LaunchAgent είναι και τα δύο φάντασμα-ρομπότ / com.phantom.bot, από όπου προέρχεται και το όνομα της καμπάνιας.
- Πληροφορίες συστήματος exfil εκτελείται μία φορά — ένα POST με ένα μόνο δακτυλικό αποτύπωμα στο b94b6bcfa27554.lhr.life:443/collect που φέρει όνομα κεντρικού υπολογιστή, πλατφόρμα, arch, όνομα χρήστη, CPU/RAM, διεπαφές δικτύου, process.env, cwd, homedir, έκδοση κόμβου και δημόσια IP. Αυτό είναι πολύ λιγότερο επιθετικό από τη Φάση Α: χωρίς SSH, χωρίς πορτοφόλια, χωρίς αναδρομή .env. Η δουλειά του bot είναι να εγγραφεί, όχι να κλέψει.
- Βρόχος καρδιακού παλμού ανοίγει ένα HTTPS POST κάθε 30 δευτερόλεπτα στο b94b6bcfa27554.lhr.life:443/. Ο παράγοντας χρήστη είναι PhantomBot/1.0. Η επαλήθευση TLS είναι ρητά απενεργοποιημένη (rejectUnauthorized: false). Η απόκριση C2 αναλύεται ως JSON της μορφής {type, target, port, duration, threads, method} και αποστέλλεται.
- Οπλοστάσιο πλημμυρών είναι συνδεδεμένο με έξι εντολές:
| Τύπος εντολής | Μονάδα μέτρησης | Σημειώσεις |
|---|---|---|
| ping σε | Απάντηση Liveness | Το bot αυτοπροσδιορίζεται |
| http | HTTP flood | Πλημμύρα αιτημάτων επιπέδου 7 |
| https | Πλημμύρα HTTPS | Ίδιο με το http, με αναδίπλωση TLS |
| tcp | Πλημμύρα TCP | Ανεπιθύμητο περιεχόμενο τυχαίας φόρτωσης 65 KB |
| udp | Πλημμύρα UDP | Πακέτα UDP 65,507 byte |
| γρήγορα | HTTP/2 γρήγορης επαναφοράς DoS | Η τεχνική CVE-2023-44487 του 2023 |
Και οι πέντε μονάδες πλημμύρας λαμβάνουν στόχος, λιμάνι, διάρκειακαι θέματα επιχείρημα — το bot είναι ένα γενικό πρόγραμμα flooder προς ενοικίαση, που δεν απευθύνεται σε κάποιο συγκεκριμένο θύμα. Η λίστα θυμάτων του χειριστή βρίσκεται στο C2, όχι στο πακέτο.
Τι νέο υπάρχει εδώ — το δυαδικό αρχείο C2 που διατίθεται προς πώληση
Η Φάση Α είναι ένα γνώριμο σχήμα: κλοπή διαπιστευτηρίων, εγκατάσταση αγκίστρου, διοχέτευση από προμηθευτή C2. Η Φάση Β είναι Επίσης ένα οικείο σχήμα — τα botnets DDoS αποτελούν βασικό στοιχείο κακόβουλων πακέτων npm εδώ και χρόνια. Αυτό που είναι ασυνήθιστο είναι ότι ο χειριστής έστειλε το πλευρά διακομιστή του κιτ μέσα στο tarball npm:
- c2 — ένα δυαδικό αρχείο Go ELF μεταγλωττισμένο 4 megabyte
- c2.go — ο πηγαίος κώδικας Go 426 γραμμών για αυτό το δυαδικό αρχείο
Κανένα από τα δύο αρχεία δεν καλείται από κανένα install hook. Δεν αποτελούν μέρος του ωφέλιμου φορτίου του θύματος. Βρίσκονται στον κατάλογο πακέτων με τον ίδιο τρόπο που θα γινόταν με ένα αρχείο τεκμηρίωσης. Η πιο πιθανή ερμηνεία είναι ότι ο χειριστής προώθησε το δέντρο εργασίας ανάπτυξης στο npm χωρίς να επιμεληθεί τη λίστα αρχείων - ένα πραγματικό OpSec slip - και αυτό που παρέλαβε είναι το πλήρες κιτ δύο όψεων: ο πελάτης που εκτελεί το θύμα και ο διακομιστής που εκτελεί ο χειριστής.
Αυτό είναι το μέρος της ιστορίας που δικαιολογεί την περιγραφή του «ετοιμοπαράδοτου κιτ botnet». Όποιος κατέβασε axois-utils:1.0.9 πριν από την κατάργηση δεν έχει μόνο ένα δείγμα θύματος — έχουν έναν λειτουργικό διακομιστή C2.
Η στροφή, σε μία πρόταση
Ίδιος εκδότης, ίδια ονόματα πακέτων, ίδιο σκελετό τριπλού αγκίστρου, ίδια επωνυμία «φαντάσματος» — αλλά το ωφέλιμο φορτίο άλλαξε το μοντέλο δημιουργίας εσόδων από τη μια μέρα στην άλλη: από «μυστικά συγκομιδής που μπορώ να μεταπωλήσω» έως «ενοικίαση χωρητικότητας πλημμύρας που μπορώ να εκμισθώσω». Τα TTP χρόνου εγκατάστασης που θα πρέπει να παρακολουθούν οι αμυνόμενοι είναι σχεδόν πανομοιότυπα και στις δύο φάσεις. άμυνες που βασίζονται σε υπογραφές κλειδωμένες στις συμβολοσειρές διαδρομής πορτοφολιού της Φάσης Α ή σε phantom.jsΟ συλλέκτης των 7,667 γραμμών του θα είχε χάσει εντελώς τη Φάση Β.
| Ημερομηνία (UTC) | Συμβάν |
|---|---|
| 2026-05-15 | Πρώτη δημοσίευση: axois-utils:1.0.4 (Δοκιμαστική κατασκευή LAN, πλατφόρμα ανάπτυξης στο 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 δημοσιεύτηκε — Η Φάση Α 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 | Η καμπάνια Φάσης Α ανακαλύφθηκε κατά τη διάρκεια ρουτίνας σάρωσης npm. Εφαρμόστηκαν επιβεβαιωμένες κακόβουλες ετυμηγορίες. |
| 2026-05-17 | axois-utils:1.0.9 δημοσιεύτηκε — άξονας ωφέλιμου φορτίου: στρατολόγηση PhantomBot DDoS μέσω σήραγγας localhost.run· από την πλευρά του χειριστή c2 δυαδικό και c2.go η πηγή αποστέλλεται στο tarball |
| 2026-05-17 | chalk-tempalte:1.0.19 και 1.0.20 δημοσιεύτηκε — ακόμα Φάση Α (κλοπή)· ο χειριστής εκτελεί πλέον και τις δύο ενότητες παράλληλα |
| 2026-05-17 | Ανακάλυψη Φάσης Β κατά τη διάρκεια σάρωσης ρουτίνας· οι ετυμηγορίες εφαρμόστηκαν σε όλες τις περιπτώσεις 2026-05-17 εκδόσεις |
| (σε εξέλιξη) | Εκκρεμούν αναφορές κατάργησης. Και τα τέσσερα δημοσιευμένα πακέτα παραμένουν διαθέσιμα στο μητρώο κατά τη στιγμή της σύνταξης του παρόντος. |
Δείκτες συμβιβασμού
Πακέτα
| Οικοσύστημα | Πακέτο | εκδόσεις |
|---|---|---|
| npm | axois-utils (τυποκατάληψη του axios) | 1.0.4, 1.0.6, 1.0.9 |
| npm | chalk-tempalte (τυπογραφικό όριο του προτύπου κιμωλίας) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
Ταυτότητα συγγραφέα
| Πεδίο | αξία |
|---|---|
| εκδότης npm | deadcode09284814 |
| Ηλεκτρονικό ταχυδρομείο εκδότη | phantomdeadcode@tutamail.com |
| SCM επαλήθευση | κανένας |
Εντολή και έλεγχος
| Φάση | Τελικό σημείο | Μεταφορά |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | Σήραγγα HTTPS Serveo |
| A | 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect | Σήραγγα HTTPS Serveo (παλαιότερη έκδοση) |
| A | 80.200.28.28:443/collect | Υποκείμενο τελικό σημείο VPS |
| B | b94b6bcfa27554.lhr.life:443/ | localhost.run HTTPS αντίστροφη σήραγγα |
Συνοπτικά αρχεία (SHA-256)
| Αρχεία | SHA-256 | Σημειώσεις |
|---|---|---|
c2 (Πηγαίνετε στο ELF, 4 MB) | 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 | Διακομιστής C2 από την πλευρά του χειριστή, αποστέλλεται εντός axois-utils:1.0.9 |
c2.go (426 γραμμές) | 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 | Μετάβαση στον πηγαίο κώδικα για το δυαδικό αρχείο C2 |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | Πρόγραμμα-πελάτης bot φάσης Β |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | Πιστοποίηση Φάσης Α / συλλέκτης πορτοφολιών |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | Συλλέκτης φάσης Α (παραλλαγή 1.0.20) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | Φόρτωση φάσης Α, πανομοιότυπος σε byte και στις δύο εκδόσεις |
Απόδοση & Κίνητρο
Παρακολουθούμε αυτήν την καμπάνια ως PhantomBot, παίρνοντας την επωνυμία του ίδιου του φορέα εκμετάλλευσης από το Παράγοντας χρήστη: PhantomBot/1.0 κεφαλίδα καρδιακού παλμού, η phantom-bot.service μονάδα systemd, η com.phantom.bot Η ετικέτα LaunchAgent και το phantomdeadcode@ λαβή email. Ο τελεστής είναι συνεπής σχετικά με αυτό το όνομα σε τουλάχιστον τέσσερα τεχνουργήματα.
Κατάλογος σημάτων
- Publisher - deadcode09284814 σε npm. Λογαριασμός μίας χρήσης, email μιας χρήσης Tutamail, όχι SCM επαλήθευση. Δεν υπάρχει προηγούμενο ιστορικό δημοσιεύσεων πέραν αυτής της καμπάνιας.
- Επαναχρησιμοποίηση επωνυμίας — η λέξη «phantom» εμφανίζεται στο email του εκδότη, στο όνομα αρχείου του συλλέκτη Φάσης Α (phantom.js), στο όνομα της υπηρεσίας διατήρησης Φάσης Β (phantom-bot.service), στην ετικέτα LaunchAgent (com.phantom.bot), και στον παράγοντα χρήστη bot (PhantomBot/1.0).
- Επίπεδο Υποδομών — Ένα μόνο VPS στο 80.200.28.28 προωθεί τη Φάση Α μέσω εναλλαγής υποτομέα Serveo. Η Φάση Β μετακινείται σε ένα localhost.run αντίστροφη σήραγγα (b94b6bcfa27554.lhr.life). Και οι δύο υπηρεσίες προμηθευτών είναι δωρεάν και απαιτούν μόνο εξερχόμενο SSH από την πλευρά του χειριστή, σύμφωνα με τις ρυθμίσεις χαμηλού προϋπολογισμού και χαμηλής ασφάλειας λειτουργίας.
- στυλ κώδικα — Απλή JavaScript σε όλη την έκταση. χωρίς συσκότιση, χωρίς κωδικοποίηση συμβολοσειρών, χωρίς ελέγχους anti-VM. Τα ονόματα των μεταβλητών είναι περιγραφικά (κλοπήΠληροφοριώνΣυστήματος, εκτέλεση εντολής, httpFlood). Σχόλια σε distrube.js απευθύνεται απευθείας σε έναν μελλοντικό χειριστή ("Χρησιμοποιήστε τη διεύθυνση URL HTTPS του localhost.run"), υποδηλώνοντας ότι το αρχείο προοριζόταν για αναδιανομή ως κιτ και όχι για χρήση από έναν μόνο εισβολέα.
- Απόδειξη OpSec — Το tarball Φάσης Β διαθέτει τόσο τον bot client όσο και τον διακομιστή C2 από την πλευρά του χειριστή (c2 ΞΩΤΙΚΟ + c2.go πηγή). Αυτό συμφωνεί με έναν χειριστή που προώθησε το δέντρο εργασίας του σε npm χωρίς να ελέγξει τη λίστα αρχείων. Είτε ο χειριστής είναι άπειρος, είτε το κιτ είναι σήμαινε για δημόσια διανομή και το δυαδικό αρχείο C2 είναι μέρος του προϊόντος.
- Αυτοεπιβεβαίωση - axois-utils:1.0.4 περιέχει το σχόλιο πηγής // Αλλαγή σε '80.200.28.28' για το κοινό στη γραμμή 12, επιβεβαιώνοντας την εξέλιξη ανάπτυξης / σταδιοποίησης / παραγωγής που οι χειριστές συνήθως αρνούνται.
Κινητοποίηση
Το ωφέλιμο φορτίο της Φάσης Α είναι απλή οικονομική κλοπή: τα διαπιστευτήρια, τα κλειδιά cloud, τα tokens GitHub και τα κρυπτονομίσματα έχουν όλα ρευστές αγορές μεταπώλησης. Η Φάση Β είναι επίσης οικονομική, αλλά έμμεση: οι υπηρεσίες DDoS προς ενοικίαση ("booter") ενοικιάζουν χωρητικότητα πλημμύρας ανά λεπτό, και bots όπως αυτό που αποστέλλεται εδώ είναι το απόθεμα στο οποίο λειτουργούν αυτές οι υπηρεσίες. Ο καρδιακός παλμός των 30 δευτερολέπτων, το γενικό στόχος/λιμάνι/διάρκεια το σχήμα εντολών και το οπλοστάσιο πλημμύρας πέντε πρωτοκόλλων είναι το standard προϊόν ενός τελεστή εκκίνησης.
Εκτέλεση και των δύο ενοτήτων παράλληλα — πρότυπο κιμωλίας: 1.0.19 και 1.0.20 συνεχίστε να στέλνετε τον κλέφτη ενώ axois-utils:1.0.9 αποστέλλει το bot — υποδηλώνει ότι ο χειριστής αντισταθμίζει τις ροές εσόδων αντί να εγκαταλείπει τη Φάση Α. Η αλλαγή πορείας είναι μια Επιπλέον, όχι αντικατάσταση.
Αυτό που δεν ισχυριζόμαστε
Δεν έχουμε καταφέρει να επιβεβαιώσουμε την πραγματική ταυτότητα πίσω από το deadcode09284814 λαβή και δεν αποδίδουμε αυτήν την καμπάνια σε κανέναν επώνυμο φορέα απειλής, ομάδα ή χώρα. Η επωνυμία "phantom" είναι αρκετά συνεπής σε όλα τα αντικείμενα ώστε να υποδηλώνει έναν μόνο χειριστή, αλλά η αποστολή του δυαδικού αρχείου C2 σε στυλ κιτ αφήνει ανοιχτό το ενδεχόμενο μελλοντικά πακέτα από άσχετους χειριστές να επαναχρησιμοποιήσουν τον ίδιο κώδικα.
Αντίκτυπος, τάσεις και τι πρέπει να κάνουν οι υπερασπιστές
Επίπτωση
Οι νόμιμοι στόχοι των καταλήψεων αξίους και πρότυπο κιμωλίας βασίζονται ευρέως στο οικοσύστημα JavaScript· αξίους μόνο του βρίσκεται ανάμεσα στα τριάντα πιο δημοφιλή πακέτα npm. Τα ονόματα των typosquat απέχουν ένα πάτημα πλήκτρου από τα πραγματικά (αξόης ↔ αξίους, tempalte ↔ πρότυπο), και τα δύο είναι γλωσσικά εύλογα ορθογραφικά λάθη.
Δεν μπορέσαμε να λάβουμε αξιόπιστα στατιστικά στοιχεία λήψεων για τις κακόβουλες εκδόσεις πριν από την κατάργηση — το npm δεν διατηρεί τον αριθμό λήψεων ανά έκδοση μετά την κατάργηση της δημοσίευσης ενός πακέτου και npms.ioΤα proxies τύπου - είναι θορυβώδη σε αυτήν την κλίμακα. Οποιοσδήποτε οργανισμός του οποίου το αρχείο κλειδώματος επιλύεται σε ένα πακέτο με όνομα αξονικά-χρήσιμα or κιμωλία-tempalte από τον εκδότη deadcode09284814 θα πρέπει να αντιμετωπίζεται ως παραβιασμένο: εναλλάξτε κάθε διαπιστευτήριο που υπάρχει στο process.env στον επηρεαζόμενο κεντρικό υπολογιστή, ελέγξτε τα διανύσματα επιμονής ανά λειτουργικό σύστημα (βλ. "Τι πρέπει να κάνουν οι αμυντικοί" παρακάτω) και καταργήστε την εξάρτηση.
Αναδυόμενα μοτίβα
Αυτή η καμπάνια αποτελεί παράδειγμα μιας αλλαγής που έχουμε δει σε αρκετά πρόσφατα περιστατικά npm: η σκαλωσιά με γάντζο εγκατάστασης είναι το ανθεκτικό περιουσιακό στοιχείο; το ωφέλιμο φορτίο είναι εναλλάξιμοΟ ίδιος εκδότης, το ίδιο πακέτο, το ίδιο προεγκατάσταση / εγκαθιστώ / μετά την εγκατάσταση τριπλό, ακόμη και τον ίδιο ρυθμό εκδοχής - το μόνο πράγμα που άλλαξε μεταξύ axois-utils:1.0.6 και axois-utils:1.0.9 ήταν το αρχείο το hooks εκτέλεση. Ανίχνευση βάσει υπογραφής κλειδωμένη στο ωφέλιμο φορτίο Φάσης Α (συμβολοσειρές διαδρομής πορτοφολιού, phantom.jsΟ συλλέκτης 7,667 γραμμών του, ο κεντρικός υπολογιστής Serveo C2) θα είχε επισημάνει τις τρεις πρώτες εκδόσεις και θα είχε χάσει εντελώς τη Φάση Β.
Το ίδιο μοτίβο είναι ορατό και σε άλλες καμπάνιες του 2026 που έχουμε παρακολουθήσει: ένας μόνο χειριστής με ένα σταθερό scaffold, που εναλλάσσεται μεταξύ κλοπής διαπιστευτηρίων, πελατών που αντιγράφουν εξετάσεις, exfil Telegram-bot και τώρα στρατολόγησης DDoS. Οι defenders που βασίζονται σε υπογραφές payload θα χάνουν συνεχώς τον δεύτερο γύρο κάθε καμπάνιας.
Το επακόλουθο είναι ότι Τα TTP κατά την εγκατάσταση είναι το καλύτερο σήμαΤριπλές δηλώσεις αγκίστρου εγκατάστασης, σενάρια εγκατάστασης που εισάγουν https or παιδί_διαδικασία, εγκαταστήστε σενάρια που γράφουν σε φακέλους εκκίνησης χρήστη και εγκαταστήστε σενάρια που επιλύουν ονόματα κεντρικών υπολογιστών σε δωρεάν υπηρεσίες αντίστροφης διοχέτευσης (Serveo, localhost.run, ngrok, cloudflared) είναι όλα σπάνια σε νόμιμα πακέτα και κοινά σε κακόβουλα.
Τι πρέπει να κάνουν οι αμυντικοί
- Έλεγχος Lockfile. Αναζήτηση κάθε pack-lock.json / νήμα.κλείδωμα / pnpm-lock.yaml στον οργανισμό σας για τις ακριβείς συμβολοσειρές αξονικά-χρήσιμα και κιμωλία-tempalteΑντιμετωπίστε οποιαδήποτε αντιστοιχία ως συμβιβασμό.
- Περιστρέψτε τα μυστικά σε επηρεαζόμενους κεντρικούς υπολογιστές. Μαζική συλλογή διαπιστευτηρίων SSH, cloud, GitHub, npm και wallet Φάσης Α. Υποθέστε κάθε διαπιστευτήριο που υπάρχει ποτέ στο process.env, ~ / .ssh, ~/.aws, ~/.npmrc, ~ / .configή οποιοδήποτε .env* Το αρχείο στον επηρεαζόμενο κεντρικό υπολογιστή είναι εκτεθειμένο.
- Αφαίρεση της επιμονής (Φάση Β). Στα Windows, διαγράψτε HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, αφαιρέστε %APPDATA%\Microsoft\Windows\Μενού Έναρξης\Προγράμματα\Εκκίνηση\system-update.batκαι schtasks /delete /tn Ενημέρωση Συστήματος /fΣτο Linux, crontab -e και αφαιρέστε @κόμβος επανεκκίνησης …, systemctl –απενεργοποίηση χρήστη –τώρα phantom-bot.service στη συνέχεια διαγράψτε ~/.config/systemd/user/phantom-bot.service, τρίψτε .bashrc / .zshrc / /etc/rc.localΣε 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 ELF, sha256 165fa92d…) στο δίσκο. Σάρωση προσωρινών μνημών και αποθηκών τεχνουργημάτων CI. Το δυαδικό αρχείο είναι αδρανές από μόνο του, αλλά η παρουσία του σε έναν σταθμό εργασίας αποτελεί σαφή απόδειξη ότι το πακέτο εγκαταστάθηκε.
Κλείσιμο γραμμής
Ο ίδιος χειριστής, το ίδιο πακέτο και το ίδιο εργαλείο εγκατάστασης μπορούν να προκαλέσουν εντελώς διαφορετικές απειλές μέσα σε 48 ώρες. Προσέξτε το ικρίωμα, όχι το ωφέλιμο φορτίο.




