Junior-hacker gebruikte Tailscale en OpenSSH om toegang te behouden nadat zijn C2 offline was gegaan

Een Franstalige aanvaller brak in bij een klein Frans autobedrijf, plaatste een keylogger en stal bank- en e-mailgegevens.

Gewone dingen, totdat er één zet tegen het einde komt.

Voordat zijn command-and-control-server uitviel, installeerde hij OpenSSH en Tailscale op de machine van een slachtoffer, waarmee hij een weg terug naar binnen bouwde die helemaal niet via de C2 liep. Toen de Havoc-server de volgende dag offline ging, deed zijn toegang dat niet. Achttien dagen later kwam de C2 terug, zijn agenten maakten op eigen kracht opnieuw verbinding en hij ging verder.

Cato Networks heeft de hele operatie commando voor commando vastgelegd, 339 daarvan gedurende 33 dagen, nadat de operator zijn SSH-sleutels en een stapsgewijze playbook in een open opslagbucket had achtergelaten. Het artikel, dinsdag gepubliceerd door Cato CTRL-onderzoeker Vitaly Simonovich, geeft een zeldzame weergave van een inbreuk op het toetsenbord van de operator in plaats van de forensische restjes.

De les van de onderzoekers is bot: een C2-server offline halen is geen oplossing als de aanvaller al een aparte deur heeft gebouwd.

De acteur, met ‘Poisson’, is geen APT. Onderzoekers beschrijven een junior operator met wat lijkt op een schoolrooster, actief na 15.00 uur CET met een lange middagpauze, en alles draait op een free-tier kit: DuckDNS, Backblaze B2 en een goedkope IONOS VPS in Berlijn. Zijn ambacht was mager.

Hij lekte zijn thuismap vijf keer, noemde zijn opslagbuckets naar zijn eigen gebruikersnaam en liet een testbestand van zijn eigen toetsaanslagen achter, keer op keer getypt in het keylogger-pakket. Hij faalde op ongeveer de helft van wat hij probeerde. Hij compromitteerde toch vier machines.

De ketting

De malware draaide vrijwel volledig in het geheugen. Een VBScript-stager met een sandbox-ontduikingsvertraging decodeerde een PowerShell-lader, die een .NET-lader haalde waarop Havoc’s Demon-agent draaide zonder het implantaat op schijf te laten vallen. Voor elevatie gebruikte hij Start-Process -Verb RunAs, wat geen stille UAC-bypass is. Er verschijnt een Windows-toestemmingsprompt en wacht tot iemand op Ja klikt. Bij één slachtoffer waren er in twee dagen een tiental pogingen nodig.

Daarna kwam het eindresultaat: een geplande taak die bij elke aanmelding werd uitgevoerd met de hoogste rechten, shellcode geïnjecteerd in Explorer.exe en een op maat gemaakte RustDesk als back-upkanaal. De credential grabber was een Python-keylogger met 70 regels die toetsaanslagen naar een lokaal bestand schreef, zonder baken en zonder exfil-server. Poisson logde gewoon in, pakte het bestand met de hand en draaide powercfg om te voorkomen dat de machines in slaap vielen, zodat het oogsten nooit werd onderbroken.

De beweging die ertoe doet

Op 7 april installeerde hij tijdens een nachtelijke sessie van vijf uur OpenSSH Server en Tailscale, voegde de machine van het slachtoffer toe aan zijn privé Tailscale-netwerk en zette sleutelgebaseerde SSH en een omgekeerde tunnel op. Nu kon hij de machine bereiken via de gecodeerde mesh van Tailscale, zonder C2 en zonder zichtbare poorten.

De volgende dag ging de Havoc-infrastructuur offline. Cato zegt niet waarom, en het doet er nauwelijks toe: het Tailscale-pad bevond zich op een apart netwerk, dus de toegang leefde.

Toen de C2 op 26 april terugkeerde, maakten de agenten automatisch opnieuw verbinding, zonder dat er opnieuw een compromis nodig was. De afgelopen vijf dagen voerde hij nog eens 145 opdrachten uit, doorzocht de opslag van smartcards en certificaten (een teken dat hij op certificaten gebaseerde logins in de gaten hield), voerde twee onverklaarbare uitvoerbare bestanden uit een bestand met de naam Thales.zip gedurende in totaal ongeveer 32 minuten uit, verwijderde vervolgens 17 bestanden en werd op 1 mei stil.

Wat hij wilde was smal. Geen Mimikatz, geen zijwaartse beweging, geen ransomware en geen teken dat hij de documenten heeft meegenomen die hij heeft doorgenomen, van belastinggegevens tot verzekeringen. Precies wat mensen typen: bankaanmeldingen, e-mailwachtwoorden, overheidsportals. Voor een eigenaar van een klein bedrijf is dat een directe financiële blootstelling.

Geen van de tools is nieuw, en dat is het punt. Het Chinese APT31 gebruikte Tailscale tot en met 2024 en 2025 om stilletjes uit Russische IT-bedrijven te tunnelen, Scattered Spider leunde op legitieme tools voor externe toegang zoals Ngrok en Fleetdeck, en RustDesk, het back-upkanaal van Poisson, duikt op bij recente Akira-ransomware-inbraken.

De binaire bestanden zijn ondertekend en legitiem, dus detectie die stopt bij slechte bestanden en niet bij slecht gedrag, mist ze. Wat Poisson toevoegt is een bewijs op commandoniveau dat de truc een takedown overleeft, uitgevoerd door iemand die duidelijk nog aan het leren is.

Wat te bekijken

Cato’s jachtlijst is concreet:

  • Waarschuw wanneer OpenSSH Server op een Windows-werkstation wordt geïnstalleerd, wat zelden legitiem is.
  • Let op tailscale.exe op machines die geen reden hebben om een ​​VPN uit te voeren.
  • Zoek naar ssh -R omgekeerde tunnels die naar externe hosts gaan.
  • Controleer of wscript.exe .vbs-bestanden uitvoert vanuit de staging-mappen van gebruikers.
  • Markeer geplande taken die zijn ingesteld op de hoogste rechten en die scripttolken starten.
  • Let op wijzigingen in de standby-time-out van powercfg die machines wakker houden.
  • Blok DuckDNS.

De grotere: als je een C2 vindt, ga er dan van uit dat dit niet de enige manier is om binnen te komen, en ga op jacht naar de stille persistentielaag erachter.

Wat er in Thales.zip stond, en wat die twee programma’s in hun 32 minuten op de machine deden, is de vraag die Cato openlaat. Het antwoord dat er meer toe doet: de C2 was nooit de indringer, maar slechts één manier om erin te komen. Dood het en laat OpenSSH, Tailscale, de geplande taak en de keylogger actief, en de aanvaller heeft nog steeds een weg terug naar binnen.

Dat is het deel dat bij sanering steeds ontbreekt.

Thijs Van der Does