Cybersecurity-onderzoekers hebben een nieuwe versie van de lopende Contagious Interview-campagne onthuld, waarbij de Noord-Koreaanse bedreigingsactoren een reeks van 26 kwaadaardige pakketten in het npm-register hebben gepubliceerd.
De pakketten doen zich voor als ontwikkelaarstools, maar bevatten functionaliteit om de daadwerkelijke command-and-control (C2) te extraheren door schijnbaar onschuldige Pastebin-inhoud te gebruiken als een dead drop-resolver en uiteindelijk een op ontwikkelaars gerichte inloggegevensdief en trojan voor externe toegang te laten vallen. De C2-infrastructuur wordt gehost op Vercel in 31 implementaties.
De campagne, gevolgd door Socket en Kieran Miyamoto van kmsec.uk, wordt gevolgd onder de naam StegaBin.
“De loader extraheert C2-URL’s die steganografisch gecodeerd zijn in drie Pastebin-pasta’s, onschadelijke computerwetenschappelijke essays waarin karakters op gelijkmatig verdeelde posities zijn vervangen om verborgen infrastructuuradressen te spellen”, aldus Socket-onderzoekers Philipp Burckhardt en Peter van der Zee.
De lijst met kwaadaardige npm-pakketten is als volgt:
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
Alle geïdentificeerde pakketten worden geleverd met een installatiescript (“install.js”) dat automatisch wordt uitgevoerd tijdens de installatie van het pakket, dat op zijn beurt de kwaadaardige payload uitvoert die zich in “vendor/scrypt-js/version.js” bevindt. Een ander gemeenschappelijk aspect dat de 26 pakketten verenigt, is dat ze het legitieme pakket dat ze typosquateren expliciet als een afhankelijkheid declareren, waarschijnlijk in een poging om ze geloofwaardig te laten lijken.
De payload dient als een tekststeganografiedecoder door contact op te nemen met een Pastebin-URL en de inhoud ervan te extraheren om de daadwerkelijke C2 Vercel-URL’s op te halen. Hoewel de pasta’s schijnbaar een goedaardig essay over computerwetenschap bevatten, is de decoder ontworpen om naar specifieke karakters op bepaalde posities in de tekst te kijken en deze aan elkaar te rijgen om een lijst met C2-domeinen te creëren.
“De decoder verwijdert Unicode-tekens met een breedte van nul, leest vanaf het begin een markering van vijf cijfers, berekent gelijkmatig verdeelde tekenposities in de tekst en extraheert de tekens op die posities”, aldus Socket. “De geëxtraheerde tekens worden vervolgens gesplitst op een ||| scheidingsteken (met een ===END=== beëindigingsmarkering) om een array van C2-domeinnamen te produceren.”
De malware bereikt vervolgens het gedecodeerde domein om platformspecifieke payloads voor Windows, macOS en Linux op te halen, een tactiek die algemeen wordt toegepast in de Contagious Interview-campagne. Eén zo’n domein, “ext-checkdin.vercel(.)app”, blijkt een shellscript te bedienen, dat vervolgens contact opneemt met dezelfde URL om een RAT-component op te halen.
De Trojan maakt verbinding met 103.106.67(.)63:1244 om te wachten op verdere instructies waarmee het de huidige map kan wijzigen en shell-opdrachten kan uitvoeren, waardoor een uitgebreid pakket voor het verzamelen van inlichtingen wordt ingezet. Het bevat negen modules om de persistentie van Microsoft Visual Studio Code (VS Code), keylogging en klemborddiefstal, het verzamelen van browsergegevens, TruffleHog-geheim scannen en Git-repository en SSH-sleutelexfiltratie te vergemakkelijken –
- versusdat een kwaadaardig taken.json-bestand gebruikt om contact op te nemen met een Vercel-domein telkens wanneer een project wordt geopend in VS Code door gebruik te maken van de runOn: “folderOpen” -trigger. De module scant specifiek de VS Code-configuratiemap van het slachtoffer op alle drie de platforms en schrijft de kwaadaardige taken.json er rechtstreeks naar.
- klemdat fungeert als keylogger, muistracker en klemborddief met ondersteuning voor actieve venstertracking en elke 10 minuten periodieke exfiltratie uitvoert.
- broerwat een Python-payload is om browserreferenties te stelen.
- Jeen Node.js-module die wordt gebruikt voor browser- en cryptocurrency-diefstal door zich te richten op onder meer Google Chrome, Brave, Firefox, Opera en Microsoft Edge, en extensies zoals MetaMask, Phantom, Coinbase Wallet, Binance, Trust, Exodus en Keplr. Op macOS richt het zich ook op de iCloud-sleutelhanger.
- zdat het bestandssysteem opsomt en bestanden steelt die overeenkomen met bepaalde vooraf gedefinieerde patronen.
- Ndat fungeert als een RAT om de aanvaller de mogelijkheid te geven de geïnfecteerde host in realtime op afstand te besturen via een permanente WebSocket-verbinding met 103.106.67(.)63:1247 en interessante gegevens te exfiltreren via FTP.
- truffeldie de legitieme TruffleHog-geheimenscanner downloadt van de officiële GitHub-pagina om ontwikkelaarsgeheimen te ontdekken en te exfiltreren.
- gitdat bestanden uit .ssh-mappen verzamelt, Git-inloggegevens extraheert en repository’s scant.
- geplandwat hetzelfde is als “vendor/scrypt-js/version.js” en opnieuw wordt geïmplementeerd als een persistentiemechanisme.
“Terwijl eerdere golven van de Contagious Interview-campagne afhankelijk waren van relatief eenvoudige kwaadaardige scripts en door Bitbucket gehoste payloads, demonstreert deze laatste iteratie een gezamenlijke inspanning om zowel geautomatiseerde detectie als menselijke beoordeling te omzeilen”, concludeerde Socket.
“Het gebruik van steganografie op karakterniveau op Pastebin en meertraps Vercel-routering wijst op een tegenstander die zijn ontwijkingstechnieken verfijnt en probeert zijn operaties veerkrachtiger te maken.”
De onthulling komt omdat er ook is waargenomen dat Noord-Koreaanse actoren kwaadaardige npm-pakketten (bijvoorbeeld express-core-validator) publiceren om een volgende fase van JavaScript-payload op te halen die wordt gehost op Google Drive.
“Er is slechts één pakket gepubliceerd met deze nieuwe techniek”, zei Miyamoto. “Het is waarschijnlijk dat FAMOUS CHOLLIMA meerdere technieken en infrastructuur zal blijven gebruiken om vervolgladingen te leveren. Het is onwaarschijnlijk dat dit een volledige herziening van hun stager-gedrag op npm betekent.”