
Wprowadzenie do problemu / definicja
Kampanie wymierzone w programistów coraz częściej wykorzystują proces rekrutacyjny jako skuteczny wektor początkowego dostępu. W opisywanym scenariuszu atakujący podszywają się pod rekruterów i przesyłają kandydatom pozornie wiarygodne zadania techniczne, które po uruchomieniu instalują złośliwe oprogramowanie typu RAT.
Szczególnie niebezpieczny jest tu wieloplatformowy charakter zagrożenia. Zamiast skupiać się wyłącznie na systemach Windows, operatorzy przygotowali implanty zdolne do działania także na Linuxie i macOS, czyli środowiskach powszechnie używanych przez zespoły developerskie.
W skrócie
- Badacze powiązali kampanię z irańską grupą Nimbus Manticore.
- W analizie pojawiły się dwa wcześniej nieudokumentowane malware families: NodeRabbit oraz PollCat.
- Złośliwe próbki były dostarczane w archiwach udających zadania programistyczne.
- Atak bazował na uruchomieniu lokalnego projektu zawierającego ukryty kod JavaScript lub komponenty Node.js.
- Celem kampanii są prawdopodobnie deweloperzy i specjaliści techniczni posiadający dostęp do cennych zasobów organizacyjnych.
Kontekst / historia
Nimbus Manticore jest od pewnego czasu łączona z operacjami cyberszpiegowskimi wykorzystującymi przynęty związane z zatrudnieniem, ofertami pracy i zadaniami kwalifikacyjnymi. Dotychczas aktywność tej grupy była kojarzona głównie z malware tworzonym w C, C++ i Go oraz z technikami nadużywania mechanizmów ładowania bibliotek i osadzania kodu.
Najnowsza kampania pokazuje jednak wyraźną zmianę podejścia. Operatorzy dostosowali narzędzia do realiów pracy współczesnych programistów, którzy regularnie uruchamiają obcy kod w ramach testów, proof-of-conceptów czy zadań rekrutacyjnych. To znacząco zwiększa skuteczność socjotechniki, ponieważ ofiara wykonuje czynność zgodną z jej codziennym profilem zawodowym.
Analiza techniczna
Pierwszy z implantów, NodeRabbit, był ukrywany w archiwum zawierającym rzekome zadanie związane z analizą błędów frontendowych. Instrukcja sugerowała, aby nie modyfikować części serwerowej projektu, ponieważ miała być ona rzekomo poprawna. W praktyce właśnie tam znajdowała się złośliwa logika.
Plik serwerowy importował spreparowany pakiet npm dołączony lokalnie do archiwum zamiast pobieranego z publicznego rejestru. Po uruchomieniu projekt inicjował implant działający w tle jako odłączony proces. Malware komunikował się z infrastrukturą C2 przez API obsługujące rejestrację hosta, pobieranie poleceń i przesyłanie wyników.
Możliwości NodeRabbit obejmowały rozpoznanie hosta, listowanie procesów, wykonywanie poleceń powłoki, enumerację katalogów, odczyt i zapis plików, usuwanie danych, tworzenie katalogów oraz zbieranie informacji o interfejsach sieciowych. Jedna z funkcji pozwalała również zapisywać zakodowany skrypt Node.js do pliku tymczasowego, uruchamiać go, a następnie usuwać artefakt w celu ograniczenia śladów aktywności.
Badacze opisali też kolejne warianty NodeRabbit. W części z nich zastosowano inne spreparowane pakiety npm, dodano mechanizmy utrudniające analizę i częściowe wsparcie dla środowisk korzystających z korporacyjnych serwerów proxy. Rozszerzono także zestaw poleceń oraz zmieniano sposób komunikacji z serwerem dowodzenia.
Mechanizmy trwałości różniły się zależnie od systemu operacyjnego. Dla Windows wykorzystywano klucze autostartu, dla Linux zadania cron, a dla macOS launch agenty. Jeden z wariantów uwzględniał również środowisko WSL oraz możliwość użycia skryptów uruchamianych przez wscript.exe i wsl.exe.
Dodatkowe funkcje obejmowały enumerację dysków, zabijanie procesów, zmianę serwera C2, próbę pozyskiwania danych z artefaktów Outlook PST i OST, instalację fałszywego rozszerzenia VS Code oraz modyfikację Git hooks w lokalnych repozytoriach. To pokazuje, że twórcy malware dobrze rozumieją środowisko pracy deweloperów i szukają sposobów na trwałe osadzenie się w ich łańcuchu narzędziowym.
Drugi implant, PollCat, był dostarczany w podobnym modelu, ale z dodatkową warstwą pozorowanej kontroli dostępu. Ofiara otrzymywała instrukcję wykonania zadania w ograniczonym czasie i wpisania sześciocyfrowego kodu OTP zmieniającego się co 30 sekund. Taki zabieg wzmacniał presję czasu i zwiększał prawdopodobieństwo, że kandydat uruchomi projekt bez pełnej weryfikacji.
Sama infekcja nie była jednak zależna od powodzenia walidacji OTP. Nawet jeśli użytkownik nie uzyskał pełnego dostępu do funkcji zadania, malware nadal mogło zostać uruchomione i nawiązać komunikację z infrastrukturą operatora. PollCat zapewniał trwałość przez cykliczne zadania w Windows, Linux i macOS, a następnie przesyłał informacje o systemie oraz pobierał instrukcje.
Funkcjonalnie PollCat oferował zestaw typowy dla zaawansowanego backdoora: operacje na plikach, wykonywanie poleceń, transfer danych, uruchamianie kodu JavaScript, ładowanie bibliotek DLL, obsługę archiwów ZIP oraz enumerację procesów, wolumenów i punktów montowania. Interesującym elementem było wyszukiwanie katalogów powiązanych z wybranymi dostawcami technologii i bezpieczeństwa, co może wskazywać na profilowanie środowiska ofiary pod kątem wartości wywiadowczej.
Konsekwencje / ryzyko
Ryzyko związane z tą kampanią należy ocenić jako wysokie. Atakujący łączą skuteczną socjotechnikę z technicznie wiarygodnym scenariuszem, w którym ofiara nie otwiera przypadkowego załącznika, lecz wykonuje pozornie uzasadnione zadanie zawodowe. Taki model znacząco obniża poziom ostrożności.
Dla organizacji najgroźniejsza jest możliwość kompromitacji stacji roboczych programistów. To właśnie na nich często znajdują się dostępy do repozytoriów kodu, klucze API, sekrety chmurowe, połączenia z CI/CD oraz narzędzia administracyjne używane w środowiskach developerskich. Modyfikacja Git hooks czy instalacja fałszywego rozszerzenia VS Code może dodatkowo zwiększyć skalę i czas trwania infiltracji.
Malware posiadające możliwość wykonywania poleceń i transferu plików może posłużyć zarówno do kradzieży kodu źródłowego, jak i do ruchu bocznego, dalszej eskalacji uprawnień lub przygotowania kolejnych etapów operacji szpiegowskiej. W praktyce zagrożone są nie tylko pojedyncze urządzenia, ale całe łańcuchy dostępu do środowisk produkcyjnych i danych organizacyjnych.
Rekomendacje
Organizacje powinny przyjąć zasadę, że każde zewnętrzne zadanie programistyczne jest kodem nieufnym. Tego rodzaju projekty należy uruchamiać wyłącznie w środowiskach izolowanych, najlepiej w jednorazowych maszynach wirtualnych lub kontenerach pozbawionych dostępu do firmowych zasobów, sekretów i repozytoriów.
Stacje robocze deweloperów powinny zostać objęte rozszerzoną telemetrią EDR obejmującą Windows, Linux i macOS. Równie istotne jest monitorowanie mechanizmów trwałości, aktywności procesów potomnych uruchamianych z projektów developerskich oraz nietypowych zmian w lokalnych środowiskach pracy.
- Ograniczyć uruchamianie lokalnych zależności dostarczonych poza zaufanym łańcuchem dostaw.
- Monitorować ręcznie osadzone pakiety w katalogach node_modules.
- Wykrywać tworzenie zadań cron, scheduled tasks i launch agentów.
- Analizować anomalie w katalogach rozszerzeń VS Code oraz w hookach Git.
- Segmentować dostęp deweloperów do krytycznych zasobów i rotować sekrety.
- Wdrożyć szkolenia dla zespołów technicznych dotyczące bezpiecznego uruchamiania zewnętrznych projektów.
Od strony procesowej warto wprowadzić procedury zgłaszania podejrzanych kontaktów rekrutacyjnych oraz obowiązek konsultacji z zespołem bezpieczeństwa przed uruchamianiem nieznanych projektów. Wysoką skuteczność może mieć także stosowanie dedykowanych kont i odseparowanych środowisk do testowania kodu otrzymanego od podmiotów zewnętrznych.
Podsumowanie
Opisana kampania pokazuje, że proces rekrutacyjny stał się pełnoprawnym wektorem ataku na organizacje technologiczne. NodeRabbit i PollCat nie są przypadkowymi RAT-ami, lecz narzędziami przygotowanymi z myślą o konkretnym środowisku pracy, konkretnych nawykach ofiar i wieloplatformowej eksploatacji.
Dla zespołów bezpieczeństwa to wyraźny sygnał, że środowiska developerskie wymagają takiej samej dyscypliny ochronnej jak systemy produkcyjne czy administracyjne. Brak izolacji, monitoringu i kontroli zaufania do uruchamianego kodu może przełożyć się na kompromitację kodu źródłowego, infrastruktury oraz strategicznych danych organizacji.
Źródła
- The Hacker News — https://thehackernews.com/2026/09/iranian-hackers-pose-as-recruiters-to.html
- Kaspersky Securelist — https://securelist.com/
- The Record — https://therecord.media/iranian-cyber-spies-target-aviation-fintech-new-malware