De Iraniër Nimbus Manticore hackinggroep is toegeschreven aan twee voorheen ongedocumenteerde malwarefamilies die de voortdurende evolutie van zijn toolset benadrukken en waarschijnlijk zijn targeting-voetafdruk uitbreiden om Linux- en Apple macOS-systemen te infecteren met behulp van platformonafhankelijke trojans voor externe toegang (RAT’s) ontwikkeld met behulp van Node.js en JavaScript.
Het Russische cyberbeveiligingsbedrijf Kaspersky volgt de malwaresoorten onder de namen NodeRabbit en PollCat. Het eerste exemplaar van NodeRabbit werd ontdekt op een systeem in Afghanistan, gevolgd door waarnemingen op twee verschillende machines in Egypte en Ethiopië.
“De operators leveren (NodeRabbit) via spearphishing-berichten op LinkedIn en andere platforms voor het zoeken naar werk die getrojaniseerde coderingsuitdagingsarchieven bevatten”, aldus Kaspersky-beveiligingsonderzoeker Omar Amin. “Net als NodeRabbit is PollCat een platformonafhankelijke RAT, maar het is geschreven in versluierd JavaScript en wordt ook verspreid via trojan-archieven voor codeeruitdagingen.”
Hoewel Nimbus Manticore van oudsher malware heeft gebruikt die is geschreven in C, C++ en Go, en vertrouwde op technieken voor het kapen van DLL-zoekopdrachten om deze in te zetten, markeren de nieuwste bevindingen de zoektocht van de bedreigingsacteur naar platformonafhankelijke tools om zijn doelen te bereiken.
De ontwikkeling komt te midden van een snelle uitbreiding van het malwarearsenaal van de hackgroep in de afgelopen maanden, waaronder:
- Een Windows-achterdeur genaamd NightLedger
- Twee aangepaste WebSocket-tunnelers, BridgeHead en ArcBridge
- Een tool voor omgekeerde SSH-tunneling
- Een achterdeur die overlap deelt met TWOSTROKE
Het startpunt van de verdachte activiteit die wordt waargenomen in het in Afghanistan gevestigde systeem begint met een ZIP-bestand (“Front-Technical-Challenge.zip”) dat wordt gehost op AWS en waarvan wordt aangenomen dat het is afgeleverd als onderdeel van een vacature voor een technische rol. De bedreigingsacteur zou zich hebben vermomd als talentacquisitiespecialist bij een groot technologiebedrijf om een software-ingenieur te benaderen en hem uit te nodigen een technische opdracht uit te voeren.
Het is vermeldenswaard dat Nimbus Manticore ook wordt gevolgd onder de naam Iraanse Dream Job vanwege het gebruik van kunstaas met rekruteringsthema om potentiële doelwitten te misleiden om hun eigen computers te infecteren, een tactiek die al lang wordt toegepast door de aan Noord-Korea gelinkte Lazarus Group.
Het archief bevat de broncode voor een projectmanagementtool genaamd Taskflow en instrueert kandidaten om “alle bugs in de frontendcode te vinden en op te lossen” als onderdeel van een “technische uitdaging” binnen drie uur en zonder afhankelijk te zijn van door kunstmatige intelligentie (AI) ondersteunde tools.
In de instructies wordt de kandidaten specifiek gevraagd om de servercomponent van de applicatie (“server.js”) niet te wijzigen, waarbij wordt beweerd dat deze “bugvrij is en correct functioneert”. Het is echter in dit bestand dat de kwaadaardige code is ingesloten.
“De eerste regel van server.js importeerde een getrojaniseerd npm-pakket met de naam colorized_terminal, versie 2.1.0”, aldus Kaspersky. “De aanvallers bundelden het pakket rechtstreeks in de map node_modules van het challenge-taakarchief in plaats van het naar het npm-register te publiceren. Toen het werd geïmporteerd, lanceerde het pakket in stilte een implantaat van node_modules/.cache/.320697f1/index.js als een losstaand achtergrondproces.”
Het implantaat in kwestie is NodeRabbit, dat communiceert met een van de drie door Azure gehoste command-and-control (C2)-adressen (“plugplay.azurewebsites(.)net”, “rgbteller.azurewebsites(.)net,” en “wslwebui.azurewebsites(.)net”) via drie verschillende API-eindpunten:
- /api/rabbit/checkin, om agent- en hostinformatie te registreren
- /api/rabbit/task, om te peilen naar opdrachten
- /api/rabbit/result, om taakresultaten te verzenden
De malware ondersteunt 11 opdrachten waarmee het hostgegevens kan verzamelen, lopende processen kan weergeven, willekeurige shell-opdrachten kan uitvoeren, mappen kan opsommen, een bestand in stukjes kan lezen en door Base64 gecodeerde gegevens kan retourneren, door Base64 gecodeerde tekst kan decoderen en op een gekozen bestandsafstand kan schrijven, een bestand kan verwijderen of recursief een map kan verwijderen, mappen recursief kan maken, adapters, MAC-adressen, IP-adressen en DNS-instellingen kan opsommen, en het beacon-interval kan wijzigen.
Een andere opmerkelijke mogelijkheid van NodeRabbit is om een Base64-gecodeerd Node.js-script naar een willekeurig genaamd “.tmp”-bestand te schrijven, het uit te voeren en het vervolgens te verwijderen om sporen van kwaadaardige activiteiten te verdoezelen.
Kaspersky zei dat het nog twee varianten van NodeRabbit heeft geïdentificeerd die dezelfde codelijn delen, elk teruggevonden in Egypte en Ethiopië –
- Een tweede variant die een ander getrojaniseerd npm-pakket gebruikt met de naam Pretty-log (versie 2.1.0) in plaats van colorized_terminal, terwijl deze ook wordt beëindigd als blijkt dat deze in een analyseomgeving draait en gedeeltelijk proxy-ondersteuning voor bedrijven implementeert
-
Een derde variant die ook wordt gelanceerd met behulp van het pretty-log npm-pakket, maar een andere set API-eindpunten gebruikt om dezelfde taken uit te voeren:
- /sdk/v2/ready
- /sdk/v2/config
- /sdk/v2/events
Persistentie wordt bereikt afhankelijk van het besturingssysteem: een Windows Run-registersleutel op Windows, een cron-invoer voor Linux en een opstartagent op macOS. Het persistentiemechanisme bootst een Microsoft Edge-browserupdate (eerste variant) of Intel’s Driver & Support Assistant (tweede variant) na.
De derde variant daarentegen imiteert geen legitieme software, maar houdt ook rekening met het Windows Subsystem for Linux (WSL) om dagelijks om 10.00 uur een Windows-taak te creëren die een Visual Basic Script-bestand start via wscript.exe en “wsl.exe.” Bovendien beschikt het over 12 nieuwe opdrachten om –
- Inventariseer toegankelijke Windows-stationsletters of WSL-gemounte stations
- Voer een proces uit
- Beëindig het proces op PID of afbeeldingsnaam
- Vervang de actieve C2-server en probeer de nieuwe configuratie te behouden
- Retourneer de huidige C2-server
- Verzamel accountadressen van Outlook OST- en PST-artefacten
- Probeer een valse VS Code-extensie met de naam “GitHub Copilot Helper” en Windows Run-waarde te installeren voor extra persistentie
- Controleer de geselecteerde VS Code, geplande taken en Run-key persistentie-indicatoren
- Verwijder de valse extensie
- Zoek naar recente en veelgebruikte ontwikkelingslocaties voor Git-opslagplaatsen
- Injecteer een launcher in de Git-hooks van een repository voor extra persistentie
- Verwijder het gemarkeerde Git-hook-opstartprogramma
Nimbus Manticore is ook waargenomen met behulp van programma-uitdagingen (“RankChallenge-react-6uJSX3-main.zip”), verspreid via in de tijd beperkte ontwikkelaarsbeoordelingen om PollCat te leveren.
“Hoewel de zichtbare oefening geen beveiligings-CTF is, gebruikt het project op verschillende plaatsen CTF-terminologie”, aldus Kaspersky. “Het rootpakket heet ctf-server, de backend drukt de actieve CTF-server af, de frontend gebruikt verschillende ctf-* opslagsleutels en de tutorial verwijst naar pad/naar/ctf.”
“Deze herhaalde labels, samen met instructies die niet volledig overeenkomen met de geleverde applicatie, komen overeen met een AI-ondersteund of sjabloon-gegenereerd project. Een mogelijke verklaring is dat de aanvaller een AI-coderingsassistent heeft gevraagd een React-platform in CTF-stijl te creëren en later de kwaadaardige componenten heeft ingevoegd.”
Een pdf-tutorial in het archief vraagt het doelwit om op Doorgaan te klikken en een door de aanvaller verstrekt eenmalig wachtwoord (OTP) van zes cijfers in te voeren dat elke 30 seconden wordt vernieuwd, en de uitdaging binnen een sessie van een uur te voltooien. De gecomprimeerde tijdlijn om de beoordeling te activeren is waarschijnlijk een poging om een vals gevoel van urgentie te creëren en hen het project zo snel mogelijk te laten uitvoeren om de kans op een infectie te vergroten.
Ondanks de sessieperiode van één uur draait PollCat onafhankelijk van het OTP-authenticatieproces en wordt niet beïnvloed door het succes of falen van de mislukte OTP-validatiestap. Een mislukte validatie verhindert dat het slachtoffer toegang krijgt tot de beschermde uitdagingsfuncties, terwijl een succesvolle OTP-validatie een JWT afgeeft en een extra PollCat-instantie start.
Voor persistentie creëert de malware een dagelijks geplande taak op Windows, Linux of macOS en maakt vervolgens verbinding met een C2-server om basishostinformatie te verzenden en te wachten op verdere instructies. Het ondersteunt 22 opdrachten en communiceert via zeven API-eindpunten –
- /beacon, om de client te registreren en een socketId te verkrijgen
- /gate/hello, om host-, gebruiker-, domein-, besturingssysteeminformatie en het huidige privilegeniveau te verzenden
- /gate/fetch?token=
om te zoeken naar opdrachten - /gate/submit, om een Base64-gecodeerde opdracht-resultaatstructuur in te dienen
- /kluis/
om een gehost bestand op te halen en naar de slachtoffermachine te schrijven - /vault/push, om een lokaal bestand of bestandsdeel naar de C2 te uploaden
- /gate/track, om de voortgang van het uploaden van fragmenten te rapporteren
De opdrachten omvatten het typische achterdeurgamma, waardoor de operator bestandsbewerkingen kan uitvoeren, shell-opdrachten kan uitvoeren, bestanden kan uploaden/downloaden, JavaScript kan uitvoeren, DLL’s kan laden, een ZIP-archief kan maken of extraheren, en actieve processen, schijven, volumes of koppelpunten kan opsommen. Drie opdrachten, namelijk WS_DOWNLOAD, REQUEST_ELEVATION en PERSIST, zijn momenteel niet geïmplementeerd.
PollCat zoekt ook naar mappen die overeenkomen met 24 hardgecodeerde strings die overeenkomen met software- en beveiligingsleveranciers, waaronder Google, Microsoft, Palo Alto Networks, Cisco, VMware, Fortinet, Citrix, Check Point, Juniper Networks, LogMeIn, Sophos, Symantec, Trend Micro, McAfee, Kaspersky Lab, ESET, Bitdefender, Avast, CrowdStrike, SentinelOne, Malwarebytes, Brave, Tencent en Naver.
Wanneer een overeenkomende map wordt gevonden, inventariseert de malware de hoofdinhoud van de map, maar scant deze niet recursief de map van het product. De resultaten worden vervolgens in de vorm van JSON verzonden naar het eindpunt “/api/system-details/result”.
De koppelingen van de activiteit met Nimbus Manticore komen voort uit de structurele overeenkomsten, het ophalen van opdrachten, de bakentiming en de opdrachtenset-overeenkomsten tussen PollCat en MiniFast (ook wel MiniUpdate of Retrograde genoemd), een achterdeur die eerder aan de groep werd toegeschreven, evenals het gebruik van Azure-websites en door Cloudflare ondersteunde domeinen voor C2.
“De verschuiving naar platformonafhankelijke scripting geeft de operators één enkele codebase die draait op Windows, Linux en macOS, met payloads die op natuurlijke wijze opgaan in de werkstations van ontwikkelaars”, aldus Kaspersky. “Het leveringsmechanisme blijft echter consistent met het historische vakmanschap van Mirage Kitten: het gebruik van recruiterpersona’s op LinkedIn om kritieke sectoren in het Midden-Oosten en Afrika te targeten voor cyberspionagedoeleinden.”