Πακέτο DeviceDoor npm Αποστολή ενός Microsoft 365 Device-Code Phishing Framework

DeviceDoor: ένα δημόσιο πακέτο npm που αποστέλλει ένα πλαίσιο ηλεκτρονικού "ψαρέματος" (phishing) και μαζικής αποστολής αλληλογραφίας κώδικα συσκευής του Microsoft 365

TL? DR

nolimit-agent είναι ένα πακέτο npm του οποίου οι δημοσιευμένες εκδόσεις — 1.0.299 μέσω 1.0.307, κυκλοφόρησε σε διάστημα τεσσάρων ημερών από 26-06-2026 έως 29-06-2026 — το καθένα φέρει ένα πλήρες πλαίσιο ηλεκτρονικού "ψαρέματος" (phishing) και μαζικής αποστολής μηνυμάτων (bulk mail) μέσα σε έναν κρυφό, πλήρως κρυμμένο κατάλογο. Σε κάθε έκδοση η κύρια καταχώρηση καταλήγει σε .ad/x0.js, ένα από τα ~86 αρχεία σε έναν φάκελο με όνομα dotfile που περιέχει περίπου 4,200 blobs javascript-obfuscator string-array. Το άγκιστρο εγκατάστασης και η διάταξη καταχώρησης είναι πανομοιότυπα σε όλη τη γραμμή.

Πίσω από την συσκότιση βρίσκεται ένα Ροή κώδικα συσκευής Microsoft 365 OAuth (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) που, μόλις εγκριθεί ένας κώδικας, διαβάζει τα εισερχόμενα του Outlook του θύματος και στέλνει στοιχεία μέσω του Microsoft Graph API· μια μηχανή μαζικής αποστολής SMTP και SMS που λειτουργεί από λίστες παραληπτών που παρέχονται από τον πάροχο· πρότυπα μηνυμάτων πλαστοπροσωπίας επωνυμίας· κατασκευή συνδέσμων ανοιχτής ανακατεύθυνσης· και αναγνώριση μέσω αναζήτησης κώδικα DNS μέσω HTTPS, WHOIS και GitHub. Σήματα κυκλοφορίας χρόνου εκτέλεσης στην υποδομή του παρόχου στο api[.]nolimitent[.]xyz:4100.

Επηρεάζονται: όποιος εγκαθιστά οποιαδήποτε έκδοση του πακέτου και οποιοσδήποτε Γραμματοκιβώτιο του Microsoft 365 του οποίου ο κάτοχος εγκρίνει έναν κωδικό συσκευής που παρουσιάζεται μέσω αυτού. Η πιο πρόσφατη έκδοση, 1.0.307, είναι η τρέχουσα πιο πρόσφατη ετικέτα και φέρει την ίδια δυνατότητα γραμματοκιβωτίου κωδικού συσκευής — ο κακόβουλος κώδικας δεν περιορίζεται σε μία παλαιότερη έκδοση.

Αυστηρότητα: κρίσιμηςΕπηρεαζόμενο οικοσύστημα: npm. Η μία ένδειξη που πρέπει να αναζητήσετε πρώτα: ο κεντρικός υπολογιστής api[.]nolimitent[.]xyz.

Η επίθεση: πώς λειτουργεί

Ένα καλοήθη κέλυφος πάνω από ένα κρυφό ωφέλιμο φορτίο

Η συσκευασία παρουσιάζει μια συνηθισμένη επιφάνεια. πακέτο.json δηλώνει α μετά την εγκατάσταση γάντζο – 

text postinstall: node scripts/postinstall.js 

— και κατά την επιθεώρηση σενάρια/postinstall.js είναι ακίνδυνο: εγκαθιστά ένα command shim των Windows και τερματίζει. Το άγκιστρο δεν είναι το σημείο όπου βρίσκεται η συμπεριφορά. Το κύριος και bin και τα δύο πεδία δείχνουν προς .διαφήμιση/, ένας κατάλογος του οποίου η κύρια κουκκίδα τον εμποδίζει να είναι περιστασιακός ls έξοδο, και των οποίων το περιεχόμενο είναι ομοιόμορφα κρυμμένο από το μηχάνημα. Ο στατικός σαρωτής μέτρησε ~4,293 διαστήματα κωδικοποιημένου ωφέλιμου φορτίου σε όλο το .διαφήμιση/ σύνολο μονάδων; javascript-obfuscator είναι μια δηλωμένη εξάρτηση ανάπτυξης, η οποία ταιριάζει με το σχήμα περιστροφής συμβολοσειράς-πίνακα των ομαδοποιημένων αρχείων.

Η διαίρεση είναι το πρώτο σήμα που αξίζει να ονομαστεί: το άγκιστρο εγκατάστασης που θα εξέταζε ένας κριτικός είναι καθαρό, ενώ ο λειτουργικός κώδικας βρίσκεται έναν κατάλογο μακριά, κρυμμένος και ασαφής, προσβάσιμος μόνο όταν εκτελείται το σημείο εισόδου εξαγωγής του πακέτου.

Πρόσβαση σε γραμματοκιβώτιο με κωδικό συσκευής του Microsoft 365

Το δομοστοιχείο .ad/x12.js φέρει την πιο σημαντική δυνατότητα του πλαισίου. Οδηγεί την εκχώρηση εξουσιοδότησης συσκευής Microsoft 365 OAuth 2.0:

text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode 

Η παραχώρηση κώδικα συσκευής είναι μια νόμιμη ροή της Microsoft που έχει σχεδιαστεί για συσκευές με περιορισμούς εισόδου: μια υπηρεσία ζητά έναν κώδικα, ο χρήστης πληκτρολογεί αυτόν τον κώδικα. microsoft.com/devicelogin`σε μια δεύτερη συσκευή και εγκρίνει, και η αιτούσα υπηρεσία λαμβάνει διακριτικά. Όταν η αιτούσα υπηρεσία ανήκει σε κάποιον άλλο εκτός από τον κάτοχο του γραμματοκιβωτίου, η έγκριση παραδίδει σε αυτό το τρίτο μέρος ένα διακριτικό. Μόλις ληφθεί ένα διακριτικό, Το .ad/x12.js` διαβάζει το γραμματοκιβώτιο απευθείας μέσω του Microsoft Graph:

text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients 

The $επιλογή Οι προβολές εξάγουν διευθύνσεις αποστολέα από τα εισερχόμενα και διευθύνσεις παραληπτών από τα απεσταλμένα στοιχεία — την πρώτη ύλη για τη χαρτογράφηση των ανταποκριτών ενός θύματος. Πρόκειται για πρόσβαση μέσω αντίπαλου στη μέση (AiTM) μέσω συγκατάθεσης και όχι μέσω καταγραφής κωδικού πρόσβασης: δεν υπάρχει διαπιστευτήριο για το ηλεκτρονικό ψάρεμα (phishing) με την κλασική έννοια, μόνο ένας κωδικός για έγκριση.

Μια μηχανή μαζικής αλληλογραφίας και SMS με πρότυπα πλαστοπροσωπίας

Γύρω από την πρόσβαση στο γραμματοκιβώτιο βρίσκεται ένα πρόγραμμα αλληλογραφίας. Το πακέτο αποστέλλει αρχεία δεδομένων που μπορούν να επεξεργαστεί ο χειριστής — λίστες αποστολέων (senders.txt, smtps.txt) και ένα αρχείο προτύπου (functions.txt) — των οποίων οι διευθύνσεις κράτησης θέσης διαβάζονται ως φύλλο αξιολόγησης για πλαστοπροσωπία: security@apple.com, login-επαλήθευση, υπηρεσία OAuth, χρέωση και αποστολείς ειδοποιήσεων λογαριασμού έναντι ενός yourdomain.com ο αναπληρωτής χειριστής αντικαθιστά. Η πλευρά SMS διαθέτει τηλέφωνοebook και διαμόρφωση πύλης. Το πρόγραμμα αλληλογραφίας επαναλαμβάνει τις λίστες παραληπτών που παρέχονται από τον χειριστή και τις αποστέλλει μέσω διαμορφωμένων αναμεταδοτών SMTP.

Για να κάνετε τους συνδέσμους να προσγειωθούν, .ad/xu.js και .ad/xq.js δημιουργούν URL που εκμεταλλεύονται την ασάφεια της ανάλυσης URL και την παρακολούθηση κλικ. Τα μοτίβα πλαστογράφησης ενσωματώνουν μια αξιόπιστη αρχή πριν από μια @ έτσι το ορατό πρόθεμα διαφέρει από τον πραγματικό κεντρικό υπολογιστή:

text https://trusted[.]com@      https://trusted[.]com%40      https://trusted[.]com:80@ https://redirect[.]example[.]com/      https://track[.]example[.]com/click? 

Το πλαίσιο επίσης συγκεντρώνει favicons από μεγάλους καταναλωτές και enterprise πάροχοι αλληλογραφίας — μια συνήθης τεχνική για την απόδοση μιας πειστικής προτροπής ή σελίδας προορισμού με την επωνυμία παρόχου.

Αναγνώριση στόχων και υποδομών

Αρκετές ενότητες συλλέγουν το περιεχόμενο πριν από την αποστολή. .ad/x0.js επιλύει ονόματα μέσω DNS-over-HTTPS (dns[.]google/resolve), .ad/xa.js ερωτήματα WHOIS (api[.]whois[.]vu), Και .ad/x9.js εκτελεί αναζήτηση κώδικα GitHub (api[.]github[.]com/search/code?q=) — ένα μοτίβο που συνάδει με την ανακάλυψη εκτεθειμένης διαμόρφωσης διακομιστή αλληλογραφίας και διαπιστευτηρίων SMTP για την τροφοδοσία της λίστας αναμετάδοσης. .ad/xs.js υποβάλλει ερώτημα στον δείκτη CDX του Wayback Machine.

Εντολή και έλεγχος

Σε όλο το θολό σύνολο, .ad/x4.js αναφέρεται στο τελικό σημείο του τελεστή:

text http://api[.]nolimitent[.]xyz:4100 

Ο οικοδεσπότης μοιράζεται το απεριόριστος μάρκα με την ονομασία του εκδότη, και το : 4100 Η θύρα είναι το κανάλι κλήσης-οικίας του πλαισίου. Αυτός είναι ο μοναδικός πιο ανθεκτικός δείκτης για τους υπερασπιστές: ένα πακέτο, ένας σταθμός εργασίας προγραμματιστή ή ένας παράγοντας κατασκευής που φτάνει api[.]nolimitent[.]xyz έχει εκτελέσει αυτόν τον κώδικα.

Δείκτες συμβιβασμού

Οι παρακάτω δείκτες είναι αυτοί στους οποίους μπορεί να ενεργήσει ένας αμυντικός — grep σε ένα αρχείο κλειδώματος, αποκλεισμός ενός κεντρικού υπολογιστή ή αναζήτηση αρχείων καταγραφής proxy και DNS. Τα τελικά σημεία της Microsoft εμφανίζονται επειδή το πλαίσιο τα καταχράται. Δεν είναι τα ίδια κακόβουλα και δεν πρέπει να αποκλείονται.

Δείκτης Χαρακτηριστικά Πού Δράση αμυντικού
nolimit-agent (όλες οι εκδόσεις 1.0.299–1.0.307) Πακέτο npm Grep lockfiles / αρχεία καταγραφής εγκατάστασης
api[.]nolimitent[.]xyz (:4100) Κεντρικός υπολογιστής C2 .ad/x4.js Αποκλεισμός· αναζήτηση αρχείων καταγραφής DNS + proxy
.ad/ κρυφός κατάλογος ως κύριος/bin στόχος Structure package.json Στατικό σήμα στην αναθεώρηση μητρώου
trusted[.]com@ / %40 / :80@ φόρμες συνδέσμων Παραποίηση URL .ad/xu.js, .ad/xq.js Έλεγχος URL αλληλογραφίας/διακομιστή μεσολάβησης
Χορήγηση κωδικού συσκευής + Γράφημα inbox/sentitems ανάγνωση Συμπεριφορά .ad/x12.js Σύνδεση M365 + Αναθεώρηση ελέγχου γραφήματος

Κατακερματισμοί αρχείων που καταγράφηκαν κατά την ταξινόμηση:

  • πακέτο/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a

  • πακέτο/πακέτο.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

Ένα σήμα μισθωτή του Microsoft 365 που αξίζει να αναζητήσετε ανεξάρτητα από αυτό το πακέτο: επιτυχημένες συνδέσεις στον κώδικα συσκευής ακολουθούμενες αμέσως από αναγνώσεις γραφήματος Φάκελοι αλληλογραφίας/εισερχόμενα και Φάκελοι/αντικείμενα αλληλογραφίας, ειδικά από μια συνεδρία που ο χρήστης δεν αναγνωρίζει.

Απόδοση και παρατηρούμενη συμπεριφορά

Αυτό που είναι παρατηρήσιμο παραμένει ξεχωριστό από το ποιος βρίσκεται πίσω από αυτό.

Παρατηρήσιμα στοιχεία: το πακέτο δημοσιεύεται με την ένδειξη "χειρολαβή" παράγοντας nolimit με μη επαληθευμένη διεύθυνση Gmail και χωρίς συνδεδεμένο αποθετήριο πηγής. πακέτο.json το περιγράφει ως «προηγμένο αποστολέα email» και του προσθέτει την ετικέτα κόκκινη ομάδα λέξη-κλειδί; ο κώδικας χρόνου εκτέλεσης είναι συγκεντρωμένος σε ένα κρυφό, ασαφές .διαφήμιση/ κατάλογος του οποίου η αλυσίδα εργαλείων (javascript-obfuscator) είναι μια δηλωμένη εξάρτηση και ο κεντρικός υπολογιστής κλήσης-οικίας api[.]nolimitent[.]xyz επαναχρησιμοποιεί το απεριόριστος μάρκα. Πρόκειται για ένα ενιαίο πακέτο με ένα ορόσημο υποδομής που ελέγχεται από τον χειριστή — όχι για σύμπλεγμα πολλαπλών πακέτων και δεν εντοπίστηκε επικάλυψη με μια προηγουμένως ονομασμένη καμπάνια.

The κόκκινη ομάδα Η λέξη-κλειδί δεν αλλάζει την ταξινόμηση. Τα νόμιμα εργαλεία επιθετικής ασφάλειας που παρέχουν δυνατότητα διπλής χρήσης το κάνουν αυτό με διαφάνεια: αναγνώσιμη πηγή, στόχοι που παρέχονται από τον χειριστή και καμία κρυφή κλήση-σπίτι. Αυτό το πακέτο αντιστρέφει καθεμία από αυτές τις ιδιότητες - ο λειτουργικός του κώδικας είναι ασαφής και κρυφός και στέλνει beacon σε σταθερή υποδομή χειριστή αντί για έναν στόχο που παρέχει ο χρήστης. Η συμπεριφορά, όχι η ετικέτα, διέπει την ετυμηγορία, η οποία είναι κακόβουλη.

Η πρόθεση δεν δηλώνεται εδώ. Η ανάρτηση περιγράφει τι κάνει ο κώδικας — ζητά έναν κωδικό συσκευής, διαβάζει ένα γραμματοκιβώτιο μέσω του Graph, στέλνει μαζική αλληλογραφία μέσω διαμορφωμένων αναμεταδοτών, beacon σε έναν σταθερό κεντρικό υπολογιστή — και αφήνει το κίνητρο άδηλο.

Αντίκτυπος, τάσεις και καθοδήγηση αμυντικών

Δύο επιπτώσεις στον χρόνο εγκατάστασης έχουν σημασία. Πρώτον, οποιοσδήποτε προγραμματιστής ή εκπρόσωπος CI που εγκαθιστά παράγοντας nolimit φέρνει το πλαίσιο σε αυτόν τον κεντρικό υπολογιστή και δημιουργεί την κλήση-home για να api[.]nolimitent[.]xyzΔεύτερον, η δυνατότητα κωδικού συσκευής επεκτείνεται πέρα ​​από τον κεντρικό υπολογιστή εγκατάστασης: ένα γραμματοκιβώτιο του Microsoft 365 του οποίου ο κάτοχος καλείται να εγκρίνει έναν παρουσιαζόμενο κώδικα, διαβάζεται απευθείας μέσω του Graph, χωρίς να χρειάζεται ποτέ κωδικός πρόσβασης.

Η ευρύτερη τάση είναι αυτή της εσωτερίκευσης. Το ηλεκτρονικό ψάρεμα (phishing) κώδικα συσκευής (AiTM) έχει μετατοπιστεί από την αυτόνομη υποδομή ηλεκτρονικού "ψαρέματος" σε ένα πακέτο σε ένα δημόσιο μητρώο — διανομή μέσω npm install αντί για σύνδεσμο που αποστέλλεται μέσω email. Η συσκευασία του κιτ με αυτόν τον τρόπο ανταλλάσσει το πρόβλημα φιλοξενίας και παράδοσης συνδέσμων του χειριστή ηλεκτρονικού "ψαρέματος" (phishing) με την εμβέλεια ενός μητρώου και κρύβει τον λειτουργικό κώδικα πίσω από ένα άγκιστρο καθαρής εγκατάστασης και έναν κρυφό κατάλογο με όνομα dotfile που αποτρέπει μια γρήγορη μη αυτόματη σάρωση.

Για τους αμυντικούς:

  • Αναθεώρηση μητρώου και εξαρτήσεων. Αντιμετωπίστε μια συσκευασία της οποίας κύριος/bin αναλύεται σε έναν κρυφό κατάλογο (με πρόθεμα κουκκίδας) ομοιόμορφα ασαφές κώδικα πρώτου μέρους ως υψηλού κινδύνου μόνο στη δομή, ανεξάρτητα από το αν το άγκιστρο εγκατάστασης φαίνεται καθαρό. Η ελαχιστοποίηση δεν είναι συσκότιση — πύλη στην υπογραφή αποκωδικοποιητή πίνακα συμβολοσειρών, όχι στο μήκος γραμμής.
  • Ενίσχυση του Microsoft 365. Περιορίστε τη ροή εξουσιοδότησης κωδικού συσκευής με πρόσβαση υπό όρους όπου δεν απαιτείται λειτουργικά. Οι εκχωρήσεις κωδικού συσκευής είναι ένα γνωστό διάνυσμα AiTM και σπάνια χρειάζονται οι διαδραστικοί χρήστες. Ελέγξτε για συνδέσεις κωδικού συσκευής ακολουθούμενες από άμεση απαρίθμηση γραμματοκιβωτίου Graph.
  • Ανίχνευση δικτύου. Αποκλεισμός και ειδοποίηση ενεργοποιημένο api[.]nolimitent[.]xyzΑναζητήστε αρχεία καταγραφής εξερχόμενου DNS και proxy σε όλη την υποδομή προγραμματιστών και δημιουργών.
  • Ανίχνευση διαδρομής αλληλογραφίας. The χρήστης@κεντρικός υπολογιστής Φόρμες πλαστογράφησης URL (αξιόπιστο[.]com@…) είναι ανιχνεύσιμα στην πύλη αλληλογραφίας και στον διακομιστή μεσολάβησης· σύνδεσμοι σημαίας των οποίων το στοιχείο εξουσίας προηγείται ενός @.

Το πακέτο ήταν ενεργό στο npm κατά τη στιγμή της ανάλυσης. Επειδή το κρυφό πλαίσιο εκτείνεται σε ολόκληρη τη γραμμή δημοσιευμένης έκδοσης και την τρέχουσα αργότερο Η ετικέτα (1.0.307) φέρει τη δυνατότητα κώδικα συσκευής, η κατάργηση του μητρώου θα πρέπει να καλύπτει κάθε έκδοση, όχι μόνο μία παλαιότερη έκδοση. 

εργαλεία-ανάλυσης-σύνθεσης-λογισμικού-sca
Ιεράρχηση, αποκατάσταση και ασφάλεια των κινδύνων λογισμικού σας
Αποκτήστε τον Δωρεάν Λογαριασμό σας.
Δεν απαιτείται πιστωτική κάρτα.

Ασφαλίστε την ανάπτυξη και την παράδοση λογισμικού σας

με το Xygeni Product Suite