Inginer Bitdefender, vizat în campania de recrutări false asociată cu Coreea de Nord

Alexandru Baltariu, DefCamp 15

Un cercetător de securitate de la Bitdefender, abordat pe LinkedIn de un fals recrutor, a primit malware în așa-zisul test de angajare și a descoperit că fusese vizat în campania Contagious Interview atribuită grupării Lazarus din Coreea de Nord.

Campania, asociată cu gruparea nord-coreeană Lazarus, a trecut de la cod ascuns în proiecte la dependențe npm infectate, extensii malițioase pentru VS Code și interviuri live cu deepfake-uri.

Cercetătorul a analizat testul de angajare primit și a reconstituit lanțul de infectare dintr-un proiect aparent banal care, odată rulat, instalează infostealere, backdoor-uri și un miner de criptomonede.

Campania nord-coreeană a trecut între timp la dependențe npm infectate, extensii malițioase pentru VS Code și interviuri live cu deepfake-uri.

Cercetătorul este Ionuț-Alexandru Baltariu, software engineer și technical lead la Bitdefender, a primit oferta pentru un post remote plătit în criptomonede sau cu cel puțin 85 de dolari pe oră.

În proiectul de test, codul malițios din fișierul next.config.js era împins la aproximativ 700 de spații în dreapta codului legitim, vizibil în VS Code doar dacă derulai orizontal.

Baltariu și-a prezentat analiza la DefCamp 2025, în noiembrie anul trecut, la București. Este coautorul analizei publicate de Bitdefender Labs în februarie 2025 despre aceeași campanie.

Baltariu a prezentat analiza lanțului de infectare la ediția DefCamp de anul trecut în prezentarea Fake Jobs, Real Malware. How Cybercriminals are Exploiting the Employment Market.

Oferta și testul

Mesajul descria vag o platformă de schimb descentralizat de criptomonede, fără numele vreunei companii, într-o engleză care nu părea a unui vorbitor nativ. Recrutorul i-a cerut CV-ul și contul de GitHub.

Apoi i-a trimis un repository Bitbucket creat de un utilizator cu nume aleatoriu și un document cu întrebări la care se putea răspunde doar după rularea proiectului.

Contactul inițial și testul de evaluare (sursă: Alexandru Baltariu)

Proiectele sunt de obicei fork-uri ale unor proiecte open source în JavaScript sau TypeScript, care rulează pe Node.js.

Într-un caz analizat, codul malițios a fost introdus pe 14 ianuarie 2025, la peste un an după commit-ul anterior.

Commit-ul venea de pe o adresă de e-mail a Universității Washington, pe care cercetătorul o consideră probabil compromisă.

Modifica mai multe fișiere ca să ascundă schimbarea relevantă, iar data autorului era diferită de data commit-ului, pentru un istoric aparent credibil.

Discordanță în timestamps (sursă: Alexandru Baltariu)

Pe lângă ascunderea prin spații libere, atacatorii încarcă codul și dinamic. Într-una din variante îl descarcă de pe un serviciu public de tip API și îl rulează prin funcția eval.

În alta, trimit o cerere către un URL care răspunde mereu cu HTTP 500, astfel încât execuția intră în ramura catch, unde handlerul de eroare construiește o funcție care încarcă payload-ul.

Cod malițios ascuns după spații libere (sursă: Alexandru Baltariu)

Versiunile noi adaugă straturi de encodare Base64, astfel încât codul să nu pară malițios la prima vedere.

Lanțul de infectare

Loaderul JavaScript, identificat ca BeaverTail, fură date din browser, inclusiv din extensiile de portofele pentru criptomonede, și pornește un loader Python care descarcă scripturile cunoscute ca InvisibleFerret. Acestea trec printr-o decodare Base64 recursivă, cu până la 50 de straturi intermediare.

Scriptul pay.py funcționează ca keylogger și infostealer și configurează backdoor-uri prin AnyDesk sau reverse shell. Alt script extrage parolele și datele cardurilor salvate în browserele bazate pe Chromium, pe Windows, macOS și Linux.

Același script poate porni Tsunami Injector, care caută adresa payload-ului într-o listă de URL-uri Pastebin criptate cu XOR.

Malware-ul Tsunami este o aplicație .NET care comunică prin Tor cu serverul de comandă și control. Una dintre dependențele sale adaugă binarele malițioase pe lista de excepții a Microsoft Defender.

Modulele sale sunt un keylogger, un backdoor, un stealer configurabil pentru documente, seed-uri și fraze mnemonice și un miner de Monero și Ethereum. Minerul se limitează când rulează o aplicație pe tot ecranul și se oprește când sunt deschise Task Manager, Process Explorer sau Procmon.

Atribuire

Bitdefender atribuie tehnicile, familiile de malware și serverele de comandă și control grupării de hackeri nord-coreeni, identificată și ca APT38 de sub umbrela Lazarus.

Campania este cunoscută sub numele Contagious Interview sau Deceptive Development și este analizată de către cercetătorii în securitate informatică încă din decembrie 2022.

Campania este în continuă evoluție, atacatorii schimbând constant payload-urile și folosind acum malware-ul OtterCookie, care ajuns la a cincea versiune.

Baltariu descrie OtterCookie ca pe o combinație între BeaverTail și InvisibleFerret. În trecut au apărut GolangGhost, PylangGhost și RATatouille, iar cea mai recentă familie de malware menționată de cercetător este OtterCandy.

Atacatorii organizează și interviuri live, cu o persoană reală sau un deepfake, în care candidatul este presat să ruleze proiectul direct pe calculatorul propriu.

În versiunile noi, codul din repository este curat, iar malware-ul vine printr-o dependență npm. Din octombrie 2025 au apărut și extensii malițioase pentru editoare bazate pe VS Code, prezentate ca necesare pentru rularea proiectului.

Bitdefender recomandă ca un cod străin să nu fie rulat niciodată pe dispozitive de serviciu, iar pe calculatoarele personale doar în mașini virtuale, sandbox-uri sau platforme online.