Ransomware geanalyseerd

Noud van Kruysbergen
0

Inhoudsopgave

Bij ransomware als WannaCry gaat het in het algemeen om erg simpel in elkaar geflanste software. We hebben de encryptie-malware TeslaCrypt, de Trun-trojan en Locky nader bekeken.

De kern van ransomware is natuurlijk de versleuteling. Veel encryptie-trojans beweren de bestanden daarbij met RSA met minstens 2048 of 4096 bit te versleutelen. Dat is dus blijkbaar om slachtoffers angst aan te jagen, maar feitelijk is het pure onzin. RSA wordt eigenlijk nooit voor het versleutelen van grote hoeveelheden gegevens gebruikt. Daar is het procedé veel te langzaam voor.

Veel ransomware gebruikt wel RSA, maar versleutelt daarmee alleen de encryptiesleutel – die maar enkele bytes lang is. Reguliere encryptieprogramma’s doen dat overigens ook zo. De versleuteling van de feitelijke bestanden gaat altijd met een snel symmetrisch procedé zoals AES. Dat is met 128 bit al niet te kraken. Bij de vaak gebruikte 256-bit sleutels is zo’n poging volledig zinloos. In de praktijk betekent dit dat je zonder de AES-sleutel geen toegang krijgt tot je bestanden.

Ontbinden in factoren

Die AES-sleutel staat normaal in de header van de versleutelde bestanden. Maar is op zijn beurt ook weer beveiligd door versleuteling. Op dat punt hebben de ontwikkelaars van TeslaCrypt steken laten vallen. In plaats van bewezen technieken als RSA te gebruiken, hebben ze zelf iets in elkaar geprutst. Daardoor staat in de header van een met TeslaCrypt2 versleuteld bestand het product van twee sleutels. Zo’n bestand is te herkennen aan de extensie .vvv. Een daarvan is de benodigde AES-sleutel. Omdat het bij beide sleutels om 256-bit getallen gaat, hoef je alleen een 512-bit getal in factoren te ontbinden. Die moet je daarna weer op de juiste manier combineren om de benodigde AES-sleutel te berekenen.

Dat kan in het ergste geval enkele dagen duren, maar vaak kost het slechts een paar minuten. Dat komt doordat er veel kleine priemgetallen zijn die snel te vinden zijn. In elk geval zou dat allemaal onaangenaam lang gaan duren als je een paar duizend bestanden moet ontsleutelen. Gelukkig voor de slachtoffers hebben de ontwikkelaars van TeslaCrypt nog een bok geschoten. De trojan genereert bij het starten wel een random AES-sleutel, maar gebruikt die voor alle bestanden. Alleen wanneer de trojan bijvoorbeeld door een reboot onderbroken is, gebruikt hij een nieuwe sleutel. Normaal gesproken kun je dus alle bestanden decoderen met de eenmaal berekende AES-sleutel. Anders is er nog een tweede factorontbinding nodig. Dat was dus ook de manier waarop de gratis tool TeslaDecoder te werk ging om de sleutel te reconstrueren.

Jammer genoeg hebben de afpersers achter TeslaCrypt 2.0 hun fouten bij versie 3.0 hersteld. Inmiddels is ook versie 4.0 uitgekomen. TeslaDecoder helpt je bij een besmetting met die laatste TeslaCryptversies dus ook niet meer.

Met GPG versleuteld

De relatief onbekende Trun-trojan gaat zorgvuldiger te werk en gebruikt de opensource tool GnuPG om bestanden te versleutelen. Daarvoor downloadt hij van een server het originele programma gpg.exe. Hij genereert op de geïnfecteerde computer in batchmodus daarmee een nieuw pgp-sleutelpaar voor een gebruiker die ‘Cellar’ heet. Hij exporteert de privésleutel daarvan uit de gpg-sleutelring en versleutelt hem daarna.

echo Key-Type: RSA > vrbom6q1.jt0bpfga

echo Key-Length: 1024 >> vrbom6q1.jt0bpfga

echo Name-Real: Cellar >> vrbom6q1.jt0bpfga

gpg.exe --batch --gen-key vrbom6q1.jt0bpfga

gpg.exe -r Cellar --export-secret-keys ...

gpg.exe -r kkkkk ... -o trun.KEY

De versleuteling richt zich op een gebruiker met het pseudoniem ‘kkkkk’. De publieke pgp-sleutel daarvan zit al in de trun-trojan. Vervolgens verwijdert de trojan de privésleutel van Cellar en gaat aan het werk. Hij versleutelt zoveel mogelijk bestanden met de publieke sleutel van Cellar.

Het sleutelbestand trun.KEY staat op de besmette computer, maar is niet te kraken. Een slachtoffer dat wil betalen, stuurt dat bestand volgens de instructies naar de afperser. Die kan het met zijn geheime kkkkk-key ontsleutelen. Dat levert de privésleutel van gebruiker Cellar op voor een decryptiescript dat hij na ontvangst van het losgeld terugstuurt.

Ook gpg werkt voor het versleutelen van data met een symmetrisch procedé. Standaard wordt CAST5 gebruikt, dat net zo min te kraken is als AES. Alleen de voor ieder encryptieproces random gekozen CAST5-sleutel wordt met RSA versleuteld.

Daarom is de versleuteling van de Trun-trojan niet te kraken. Het enige zwakke punt is de lokaal op het systeem van het slachtoffer aangemaakte privésleutel van Cellar. De trojan verwijdert die, maar met wat geluk zijn daar via forensisch onderzoek nog sporen van te vinden.

Locky op de vingers gekeken

Hoe het eruit ziet als professionals zich met de zaak bemoeien, demonstreert Locky met ontstellende perfectie. Deze versleutingstrojan was een van de succesvolste en gevaarlijkste vertegenwoordigers van zijn klasse. Op bepaalde momenten versleutelde hij bij onze oosterburen meer dan 5000 computers per uur. Voor zover nu bekend heeft deze vermoedelijk door de Dridex-gang geschreven ransomware geen zwakke plekken.

Na het starten maakt de trojan meteen contact met een Command-and-Controlserver (C&C). En versleuteld natuurlijk. Daarbij stuurt hij een GUID door van zestien tekens, die is afgeleid van de unieke volume-ID van de Windows-schijf. Via die GUID beheren de daders hun slachtoffers. Het HTTP- POST-request aan main.php bevat onder andere de parameter act=getkey. Daarmee laat Locky een individuele RSA-sleutel (public key) voor de encryptie maken. De voor de decryptie benodigde geheime sleutel staat op de C&Cserver – buiten bereik van slachtoffers.

Niets is veilig

Ook Locky versleutelt de bestanden niet met de 2048-bit lange RSA-sleutel, maar slechts met een AES-sleutel. In tegenstelling tot TeslaCrypt maakt Locky echter voor ieder bestand een nieuwe random AES-sleutel aan.

Daarbij neemt de malware dan alles op de korrel wat voor gebruikers dierbaar en kostbaar is. Foto’s, muziek, video’s, documenten, databases, programmacode – zelfs certificaten, pgp-sleutels en bitcoin-wallets blijven niet buiten schot. De naam van de versleutelde bestanden begint met de slachtoffer-ID van zestien tekens en eindigt op .locky. Tot nu toe is er geen manier waarmee je die bestanden zonder hulp van de afperser weer zou kunnen ontsleutelen.

Locky wordt vooral verspreid via e-mail met een zip-archief als bijlage. Daarin zit een officedocument met macro’s of een script van enkele kilobytes (bijvoorbeeld met de extensie .js). Dat wordt door de Windows Script Host uitgevoerd. Het doel van de bijlagen is hetzelfde. Het gaat hier om zogenaamde droppers, die via HTTP de laatste versie van de trojan downloaden en uitvoeren. Meestal van een of andere gehackte server.

Locky

Locky communiceert met zijn command-and-control server – natuurlijk versleuteld.

Locky-payload

Een door ons onderzochte Locky-payload heette bba3e983…eec12a4.exe en was ongeveer 186 kB groot. Die belandt in de tempmap van Windows, maar dat kan net als de verspreidingsmethode bij toekomstige versies veranderen. Het programma bevat enkele hard gecodeerde C&C-serveradressen.

Voor de back-up zorgt een zogenaamd domain-generation-algorithm (DGA), dat afhankelijk van de huidige datum het domein van een C&C-server berekent. De achterwacht van Locky registreert die domeinen precies op tijd om de informatie van de besmette computers te verzamelen. En sleutels uit te geven. Is geen van de servers bereikbaar, dan treedt Locky bij gebrek aan een encryptie-key niet in werking. Hij verwijdert zichzelf dan stiekem. Dergelijke DGA’s voor C&C-servers zijn bij botnetwerken overigens al langer in gebruik.

In het kader van de communicatie met de C&C-server informeert Locky zijn heer en meester over de geïnstalleerde Windowsversie, of het om een 64-bit systeem gaat en welke systeemtaal ingesteld is. Via de actie get-text vraagt de malware het afpersingsbericht dan in de juiste taal op. Via de actie stats geeft hij bovendien informatie door over de versleutelde bestanden.

De trojan  gebruikt in het register HKEY_CURRENT_ USERSOFTWARELocky. Daar zet hij de ID van het slachtoffer (id) en de boodschap van de afperser (paytext) in. En eveneens de gebruikte RSA-key (pubkey) en de informatie of de versleuteling succesvol afgesloten is (completed).

Locky versleutelt niet alleen bestanden op schijfstations, maar ook usb-media, RAM-disks en aangesloten netwerkdrives. Hij gaat ook in het netwerk op zoek naar bereikbare netwerkshares, net als WannaCry dat doet met SMB-shares. Vindt hij die, dan mount hij de schijf om daar met zijn verwoestende werk verder te gaan. Configureer dus niet te royaal shares. Geef ook niet alle systemen simpelweg toegang tot alle schijven voor het makkelijk uitwisselen van bestanden. Dat pakt bij een besmetting met Locky rampzalig uit.

Dubbel en driedubbel

Een Locky-infectie is niet over het hoofd te zien. De malware zet in iedere map het bestand _Locky_recover_instructions. txt. Daarin staan in de systeemtaal dan instructies hoe het slachtoffer de benodigde decryptor kan kopen. Om er zeker van te zijn dat het slachtoffer dat advies niet mist, zet Locky het ook op het Bureaublad. Dat wordt geopend met de editor.

Maar dat is nog niet genoeg. De trojan maakt van de opgevraagde afpersingstekst dan de bitmap _Locky_recover_instructions.bmp. Hij opent dat bestand eveneens en stelt hem ook in als bureaubladachtergrond. Na gedane arbeid verwijdert Locky zich dan automatisch.

De decryptor kost in het algemeen een halve bitcoin, wat op dit moment omgerekend neerkomt op zo’n 750 euro. Het slachtoffer moet die bij een hidden-service in het Tor-netwerk kopen. Het adres daarvan staat in het afpersingsbericht. Dat is niet omwille van de veiligheid van het slachtoffer, maar van de afperser. Door het gebruik van het anonimiseringsnetwerk zijn diens systemen dan niet te lokaliseren.

De met wat geluk geleverde decryptor heeft de geheime RSA-sleutel die bij de door Locky opgevraagde public-key past. De tool werkt daarom alleen op de computer van het slachtoffer dat betaald heeft. Het gaat daarbij om een niet spectaculaire commandlinetool. Die werkt zich door de harde schijven en shares heen om de versleuteling weer ongedaan te maken.

Mocht je vermoeden dat je pc geïnfecteerd is, kijk dan bij Ransomware verwijderen en bestanden redden wat je daaraan kunt doen. Maar kijk ook vooral bij Windows en bestanden beschermen tegen ransomware hoe je dat kunt voorkomen.

De Locky-versleuteling: alleen met de RSA-sleutel (blauw) kun je de AES-sleutel decrypten, die je nodig hebt om het bestand weer te herstellen. Maar die RSA-sleutel staat alleen op de C&C-server van de afperser.

(Ronald Eikenberg, Jürgen Schmidt / Jan Mulder)

 

Meer over

Malware

Deel dit artikel

Noud van Kruysbergen
Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

Lees ook

Verschil Windows 10 en 11: dit moet je weten over de twee versies

Wat is het verschil tussen Windows 10 en Windows 11? In dit artikel geven we je een overzicht van enkele functionele verschillen tussen de menu's, hoe...

Chat GPT gebruiken: dit kun je allemaal doen met de chatbot van OpenAI

OpenAI heeft de ChatGPT-bot ontwikkeld als een taalmodel dat is getraind op een enorme hoeveelheid tekst op het internet. Je kunt ChatGPT gebruiken om...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er
Flappie
Lezer
Flappie

Tegenwoordig is een halve bitcoin iets meer dan de gestelde €190.
https://www.plus500.nl/Instruments/BTCUSD?gclid=CICn7frd9NMCFUQW0wodAPwJEw