TL; DR
nolimit-agent ist ein npm-Paket, dessen veröffentlichte Versionen — 1.0.299 durch 1.0.307, veröffentlicht über vier Tage vom 26.06.2026 bis zum 29.06.2026 – jede enthält eine komplettes Phishing- und Massenmail-Framework innerhalb eines versteckten, vollständig verschleierten Verzeichnisses. In jeder Version wird der Haupteintrag aufgelöst zu .ad/x0.js, eine von ca. 86 Dateien in einem mit einer Punktdatei benannten Ordner, der ungefähr 4,200 JavaScript-Obfuscator-String-Array-Blobs enthält; der Installations-Hook und das Einstiegslayout sind in allen Dateien identisch.
Hinter der Verschleierung verbirgt sich ein Microsoft 365 OAuth-Gerätecode-Ablauf (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) das, sobald ein Code genehmigt ist, den Outlook-Posteingang und die gesendeten Elemente des Opfers über die Microsoft Graph API liest; eine Massen-SMTP- und SMS-Versand-Engine, die auf vom Betreiber bereitgestellten Empfängerlisten basiert; Vorlagen für markenähnliche Nachrichten; Erstellung von offenen Weiterleitungslinks; und Aufklärung über DNS-over-HTTPS, WHOIS und die GitHub-Codesuche. Laufzeit-Traffic-Beacons an die Betreiberinfrastruktur bei api[.]nolimitent[.]xyz:4100.
Betroffen: Jeder, der eine beliebige Version des Pakets installiert, und jeder Microsoft 365-Postfach dessen Besitzer einen darüber übermittelten Gerätecode genehmigt. Die neueste Version, 1.0.307, ist das aktuellste Tag und verfügt über die gleiche Gerätecode-Mailbox-Funktionalität – der Schadcode ist nicht auf eine ältere Version beschränkt.
Severity: kritischemBetroffenes Ökosystem: npmDer erste Indikator, nach dem man suchen sollte: der Host api[.]nolimitent[.]xyz.
Der Angriff: So funktioniert er
Eine harmlose Hülle über einer versteckten Nutzlast
Die Verpackung weist eine gewöhnliche Oberfläche auf. paket.json erklärt a Nachinstallation Haken -
text postinstall: node scripts/postinstall.js — und bei der Inspektion scripts/postinstall.js ist harmlos: Es installiert einen Windows-Befehlsschnittstellen-Shim und beendet sich. Das Verhalten selbst findet nicht im Hook statt. Haupt- und Kasten Beide Felder zeigen auf .Anzeige/, ein Verzeichnis, dessen führender Punkt es vor zufälligen Einträgen schützt. ls Ausgabe, deren Inhalt einheitlich maschinell verschleiert ist. Der statische Scanner zählte ~4,293 Abschnitte mit kodierter Nutzlast über die .Anzeige/ Modulsatz; Javascript-Obfuscator ist eine deklarierte Entwicklungsabhängigkeit, die der String-Array-Rotationsstruktur der gebündelten Dateien entspricht.
Die Aufteilung ist das erste Signal, das es wert ist, benannt zu werden: Der Installations-Hook, den ein Prüfer genau unter die Lupe nehmen würde, ist sauber, während sich der operative Code in einem anderen Verzeichnis befindet, versteckt und verschleiert, und nur dann erreicht wird, wenn der exportierte Einstiegspunkt des Pakets ausgeführt wird.
Zugriff auf Microsoft 365-Gerätecode-Postfach
Das Modul .ad/x12.js Es beinhaltet die wichtigste Funktion des Frameworks. Es steuert die Autorisierung von Microsoft 365 OAuth 2.0-Geräten:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Die Gerätecode-Gewährung ist ein legitimer Microsoft-Ablauf, der für eingabebeschränkte Geräte entwickelt wurde: Ein Dienst fordert einen Code an, der Benutzer gibt diesen Code ein. microsoft.com/deviceloginauf einem zweiten Gerät und genehmigt die Anfrage, woraufhin der anfragende Dienst Tokens erhält. Gehört der anfragende Dienst einer anderen Person als dem Inhaber des Postfachs, wird diesem Dritten durch die Genehmigung ein Token zugewiesen. Sobald ein Token erhalten wurde, .ad/x12.js liest die Mailbox direkt über 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 Das $auswahl Projektionen extrahieren Absenderadressen aus dem Posteingang und Empfängeradressen aus gesendeten Nachrichten – das Rohmaterial zur Ermittlung der Korrespondenz eines Opfers. Dies ist ein Angreifer-in-the-Middle-Zugriff (AiTM) mit Zustimmung des Angreifers, nicht durch Passwortabfangen: Es gibt keine Zugangsdaten im klassischen Sinne für Phishing, sondern nur einen Code zur Bestätigung.
Ein Massenmail- und SMS-System mit Vorlagen zur Identitätsfälschung
Um den Briefkastenzugang herum befindet sich ein Versandautomat. Das Paket enthält vom Bediener bearbeitbare Datendateien – Absenderlisten (sender.txt, smtps.txt) und eine Vorlagendatei (functions.txt) — deren Platzhalteradressen wie eine Liste von Casting-Kandidaten für Identitätsfälschung wirken: security@apple.com, login-Verifizierung, OAuth-Dienst, Abrechnung und Absender von Kontobenachrichtigungen gegenüber einem yourdomain.com Der Stellvertreter wird vom Bediener ersetzt. Die SMS-Seite verfügt über ein Telefonebook und Gateway-Konfiguration. Der Mailer durchläuft die vom Betreiber bereitgestellten Empfängerlisten und versendet die E-Mails über konfigurierte SMTP-Relays.
Damit Links landen, .ad/xu.js und .ad/xq.js Erstellen Sie URLs, die die Mehrdeutigkeit der URL-Analyse und das Klick-Tracking ausnutzen. Die gefälschten Muster betten eine vertrauenswürdig wirkende Autorität vor einem @ Das sichtbare Präfix unterscheidet sich also vom tatsächlichen Hostnamen:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Das Framework greift auch auf Favicons von großen Verbraucher- und enterprise E-Mail-Anbieter – eine gängige Technik zur Erstellung einer überzeugenden, anbieterbezogenen Aufforderungs- oder Landingpage.
Ziel- und Infrastrukturaufklärung
Mehrere Module erfassen den Kontext vor dem Senden. .ad/x0.js löst Namen über DNS-over-HTTPS auf (dns[.]google/resolve), .ad/xa.js fragt WHOIS ab (api[.]whois[.]vu), Und .ad/x9.js führt die GitHub-Codesuche durch (api[.]github[.]com/search/code?q=) — ein Muster, das mit der Entdeckung offengelegter Mailserver-Konfigurationen und SMTP-Zugangsdaten zur Weiterleitung an die Relay-Liste übereinstimmt. .ad/xs.js Fragt den CDX-Index der Wayback Machine ab.
Steuerung und Kontrolle
Im gesamten verschleierten Set .ad/x4.js verweist auf den Operator-Endpunkt:
text http://api[.]nolimitent[.]xyz:4100 Der Gastgeber teilt seine nolimitent Marke mit eigener Namensgebung des Verlags und die : 4100 Der Port ist der zentrale Kommunikationskanal des Frameworks. Dies ist der wichtigste Indikator für die Sicherheit: Wenn ein Paket, eine Entwickler-Workstation oder ein Build-Agent diesen Port erreicht, … api[.]nolimitent[.]xyz hat diesen Code ausgeführt.
Kompromissindikatoren
Die folgenden Indikatoren ermöglichen es einem Sicherheitsverteidiger, Maßnahmen zu ergreifen – beispielsweise das Durchsuchen einer Sperrdatei, das Blockieren eines Hosts oder die Analyse von Proxy- und DNS-Protokollen. Microsoft-Endpunkte werden angezeigt, weil das Framework sie missbraucht; sie sind selbst nicht schädlich und sollten daher nicht blockiert werden.
| Indikator | Typ | COHO Expo bei der | Verteidigeraktion |
|---|---|---|---|
nolimit-agent (alle Versionen 1.0.299–1.0.307) | Verpackung | npm | Grep-Sperrdateien / Installationsprotokolle |
api[.]nolimitent[.]xyz (:4100) | C2-Host | .ad/x4.js | Blockieren; DNS- und Proxy-Protokolle durchsuchen. |
.ad/ verstecktes Verzeichnis als main/bin-Ziel | Struktur | package.json | Statisches Signal bei der Registerprüfung |
trusted[.]com@ / %40 / :80@ Linkformulare | URL-Spoofing | .ad/xu.js, .ad/xq.js | E-Mail-/Proxy-URL-Prüfung |
Gerätecode-Zuteilung + Graph inbox/sentitems besuch | Verhalten | .ad/x12.js | M365-Anmeldung + Überprüfung des Diagramm-Audits |
Bei der Sichtung erfasste Dateihashes:
- package/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- package/package.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Ein Microsoft 365-Tenant-Signal, das unabhängig von diesem Paket untersucht werden sollte: erfolgreiche Geräte-Code-Anmeldungen, gefolgt von Graph-Lesevorgängen von Mailordner/Posteingang und Mailordner/Sendungselementeinsbesondere aus einer Sitzung, die der Benutzer nicht wiedererkennt.
Attribution und beobachtetes Verhalten
Das Beobachtbare bleibt getrennt von der Person, die dahintersteckt.
Beobachtbare Fakten: Das Paket wird unter dem Handle veröffentlicht. nolimit-agent mit einer nicht verifizierten Gmail-Adresse und ohne verknüpftes Quellcode-Repository; paket.json beschreibt es als „fortschrittlichen E-Mail-Absender“ und kennzeichnet es mit dem Rotes Team Schlüsselwort; der Laufzeitcode ist in einem versteckten, verschleierten .Anzeige/ Verzeichnis, dessen Toolchain (Javascript-Obfuscator) ist eine deklarierte Abhängigkeit; und der Call-Home-Host api[.]nolimitent[.]xyz verwendet die nolimitent Marke. Es handelt sich um ein einzelnes Paket mit einem vom Betreiber kontrollierten Infrastruktur-Markenzeichen – nicht um einen Cluster aus mehreren Paketen, und es wurden keine Überschneidungen mit einer zuvor genannten Kampagne festgestellt.
Das Rotes Team Das Schlüsselwort ändert nichts an der Klassifizierung. Legitime offensive Sicherheitstools mit Dual-Use-Funktionalität arbeiten transparent: lesbarer Quellcode, vom Betreiber vorgegebene Ziele und keine versteckte Verbindung zum Server. Dieses Paket kehrt all diese Eigenschaften um – sein Funktionscode ist verschleiert und verborgen, und es sendet Signale an eine feste Betreiberinfrastruktur anstatt an ein vom Benutzer angegebenes Ziel. Das Verhalten, nicht die Bezeichnung, bestimmt das Urteil, das als bösartig eingestuft wird.
Die Absicht wird hier nicht dargelegt. Der Beitrag beschreibt die Funktionsweise des Codes – Anforderung eines Gerätecodes, Auslesen eines Postfachs über Graph, Versand von Massenmails über konfigurierte Relays, Senden eines Beacons an einen festen Host – lässt aber das Motiv unerwähnt.
Auswirkungen, Trends und Leitlinien für Verteidiger
Zwei Effekte während der Installation sind relevant. Erstens: Jeder Entwickler oder CI-Agent, der installiert nolimit-agent bringt das Framework auf diesen Host und stellt die Verbindung zu her. api[.]nolimitent[.]xyzZweitens erweitert die Gerätecode-Funktion die Reichweite über den installierenden Host hinaus: Ein Microsoft 365-Postfach, dessen Besitzer dazu gebracht wird, einen präsentierten Code zu genehmigen, wird direkt über Graph gelesen, ohne dass jemals ein Passwort übertragen wird.
Der übergeordnete Trend geht in Richtung Internalisierung. Geräte-Code-Phishing (AiTM) hat sich von einer eigenständigen Phishing-Infrastruktur zu einem Paket in einem öffentlichen Register entwickelt – die Verbreitung erfolgt über … npm installieren Anstatt per E-Mail-Link. Durch diese Art der Paketierung des Kits wird das Hosting- und Link-Problem des Phishing-Betreibers gegen die Reichweite einer Registry getauscht, und der eigentliche Code wird hinter einem sauberen Installations-Hook und einem verschleierten Verzeichnis mit Punktdateinamen verborgen, was ein schnelles manuelles Überfliegen verhindert.
Für Verteidiger:
- Überprüfung der Registry und Abhängigkeiten. Behandeln Sie ein Paket, dessen Haupt-/Kasten Die Auflösung führt zu einem versteckten (mit einem Punkt beginnenden) Verzeichnis mit einheitlich verschleiertem Quellcode, das allein aufgrund seiner Struktur als risikoreich eingestuft wird, unabhängig davon, ob der Installations-Hook sauber aussieht. Minifizierung ist nicht gleich Verschleierung – die Signatur des String-Array-Decoders ist entscheidend, nicht die Zeilenlänge.
- Microsoft 365-Härtung. Beschränken Sie den Autorisierungsablauf für Gerätecodes mithilfe von bedingtem Zugriff, wenn dieser nicht betrieblich erforderlich ist. Gerätecode-Berechtigungen sind ein bekannter Angriffsvektor für AiTM und werden von interaktiven Benutzern selten benötigt. Überprüfen Sie Anmeldungen mit Gerätecodes und führen Sie anschließend umgehend eine Enumeration der Graph-Mailboxen durch.
- Netzwerkerkennung. Blockieren und Alarmieren bei api[.]nolimitent[.]xyz. Suchen Sie in den ausgehenden DNS- und Proxy-Protokollen der gesamten Entwickler- und Build-Infrastruktur danach.
- Erkennung des E-Mail-Pfads. Das Benutzer@Host URL-Spoof-Formulare (trusted[.]com@…) sind am Mail-Gateway und Proxy erkennbar; kennzeichnen Links, deren Autoritätskomponente einem vorangeht @.
Das Paket war zum Zeitpunkt der Analyse auf npm verfügbar. Da das verborgene Framework die gesamte veröffentlichte Versionsreihe und die aktuelle Version umfasst, … neuesten Der Tag (1.0.307) verfügt über die Gerätecode-Fähigkeit; die Entfernung aus der Registry sollte jede Version umfassen, nicht nur eine einzelne ältere Version.




