De merkwaardige bestandsversleuteling van SunCrypt onder de loep

By 8 oktober 2020 oktober 13th, 2020 Blog
suncrypt

SunCrypt SunCrypt is een ransomwarefamilie die eind 2019 voor het eerst is ontdekt, maar die nu vooral in de belangstelling staat omdat de schrijvers ervan beweren dat ze samenwerken met het beruchte Maze-cartel. Uit een grondige analyse, uitgevoerd door Acronis, blijkt dat ze ook een aantal aanvalstechnieken met elkaar gemeen hebben.

In deze blogpost gaan we dieper in op de details van de bestandsversleuteling van SunCrypt en bespreken we een aantal ongewone keuzes die de schrijvers hebben gemaakt.

Bestandsversleuteling

SunCrypt maakt, zoals bij ransomware vrij gangbaar is, gebruik van een combinatie van symmetrische en asymmetrische cryptografie. Voor het symmetrische deel, het versleutelen van de bestanden van het slachtoffer, wordt de streamcode ChaCha20 gebruikt. ChaCha20 ondersteunt zowel 128-bits als 256-bits sleutels en in dit geval wordt de 256-bit variant gebruikt. Voor elk bestand dat door de ransomware wordt versleuteld, wordt willekeurig een nieuwe symmetrische sleutel gegenereerd. Voor het genereren van deze sleutels wordt gebruik gemaakt van RtlGenRandom, of SystemFunction036. De nonce die door deze ransomware wordt gebruikt is nul, maar vanuit een veiligheidsperspectief is dat geen probleem.

Acronis meldde dat voor het asymmetrische deel de versleuteling wordt gedaan met behulp van RSA in twee lagen: een willekeurig gegenereerde sessiesleutel om symmetrische sleutels te encrypten en een ingesloten publieke sleutel om de sessiesleutel te encrypten. Alleen zijn wij bij nader onderzoek tot de conclusie gekomen dat SunCrypt gebruikmaakt van Curve25519, een elliptische curve encryptiealgoritme, en dat het toch geen sessiesleutels gebruikt.

Het asymmetrische deel van de versleuteling is gebaseerd op het zogenaamde Elliptic-Curve Integrated Encryption Scheme, or ECIES. Met behulp van het Curve25519-algoritme wordt op basis van de symmetrische sleutel een openbare waarde berekend. Deze openbare waarde, waarnaar vaak wordt verwezen met ‘R’, wordt opgeslagen bij het versleutelde bestand. Deze openbare waarde kan in combinatie met de master geheime sleutel van de aanvallers worden gebruikt om de juiste sleutel voor de bestandsontsleuteling terug te vinden.

Aangezien de ransomware geen sessiesleutels gebruikt, worden de symmetrische sleutels geëncrypt met de geïntegreerde publieke sleutel. Deze publieke sleutel is hardcoded. Op onderstaand screenshot zien we een deel van de SunCrypt-code die de ECIES-handelingen voor een bestand uitvoert, de R-waarde zoals hierboven besproken als bestandsextensie opslaat en de symmetrische encryptiealgoritme initialiseert. Om te voorkomen dat de sleutel uitlekt, wordt deze onmiddellijk na deze acties uit het geheugen gewist.

SunCrypt

SunCrypt versleutelt één blok in elk bestand, beginnend bij het begin. Is het bestand kleiner dan 512 bytes, dan wordt er niets mee gedaan. Is het bestand kleiner dan 32 kilobytes, dan wordt het hele bestand versleuteld en anders wordt de eerste 32 kilobytes versleuteld.

Ransomware slaat gewoonlijk onderaan een versleuteld bestand een blok met informatie op, de voettekst. Deze voettekst bevat meestal informatie voor de decryptie zoals de originele bestandsnaam/-grootte en checksums voor het valideren van de ontsleutelde inhoud.

Een ongewoon kenmerk van SunCrypt is dat versleutelde bestanden geen voettekst hebben, terwijl de R-waarde moet worden opgeslagen om decryptie mogelijk te maken. Bij deze ransomware is ervoor gekozen om de R-waarde op te slaan in de bestandsextensie van de versleutelde bestanden. Daarom heeft elk bestand een andere hexadecimale bestandsextensie van 64 tekens. We zijn tegengekomen dat hier soms naar gerefereerd wordt met ‘hash’. Alleen in het geval van SunCrypt is het geen hash, maar is het de geëncrypte sleutel voor het bestand. In plaats van te kijken naar de voettekst van een bestand dat al door SunCrypt is versleuteld, wordt er door de ransomware gekeken of de extensie van een bestand op het systeem van het slachtoffer exact 64 tekens lang is. Is dat het geval, dan wordt het bestand met rust gelaten. Bovendien houdt de voettekstloze benadering ook in dat het bestand onbruikbaar wordt gemaakt als de extensie ervan wordt gewijzigd. Omdat er geen aanvullende informatie wordt opgeslagen in de bestanden, hebben we ook vastgesteld dat SunCrypt geen integriteitscontroles voor versleutelde bestanden uitvoert. Hoewel dit niet nodig is voor een succesvolle decryptie, kan eventuele corruptie niet betrouwbaar worden gedetecteerd.

Risicobeheersing

Tesorion stelt regelmatig ransomware-decryptors beschikbaar aan NoMoreRansom. Toch is het niet altijd mogelijk om bestanden te ontsleutelen. Het is daarom van belang dat u maatregelen treft ter bescherming van uw netwerk. Denk hierbij aan offline back-ups, penetratietesten en een geautomatiseerde detectie en respons. Dit zijn slechts enkele voorbeelden van basismaatregelen. Voor elke afzonderlijke organisatie zijn er specifieke maatregelen nodig. Wilt u meer informatie over welke maatregelen bij uw organisatie passen? Neem dan gerust contact met ons op! Wij helpen u graag bij het verbeteren van de cyberveiligheid binnen uw organisatie op een manier die het meest geschikt is voor uw bedrijf.

Indicators of Compromise

• SHA256 of PowerShell loader: 3090bff3d16b0b150444c3bfb196229ba0ab0b6b826fa306803de0192beddb80
• SHA256 of SunCrypt PE file: e3dea10844aebc7d60ae330f2730b7ed9d18b5eec02ef9fd4a394660e82e2219