Nieuwe programmeertalen zijn niet alleen nuttig voor 'normale' softwareontwikkelaars, maar ook voor malwaremakers. Sommige talen lenen zich daar beter voor dan andere, omdat ze bijvoorbeeld moeilijker te detecteren zijn. Dat hoeft niet meteen een groot gevaar te zijn, zeggen experts op DEF CON.
Cas van Cooten is beveiligingsonderzoeker en specialiseert zich onder andere in Nim, een statische getypeerde programmeertaal die op syntaxgebied lijkt op Python. Tijdens een presentatie op hackersconferentie DEF CON vertelt hij over zijn ervaringen met de taal, maar ook over de trend die hij sinds kort ziet. Die trend is dat malwaremakers steeds vaker relatief nieuwe programmeertalen gebruiken, zoals Nim. Die hebben voordelen boven klassieke talen zoals Python en ze zijn soms moeilijk te detecteren.
Tweakers op Black Hat en DEF CON
Tweakers is deze week op de beveiligingsconferenties Black Hat en DEF CON in Las Vegas. Black Hat is een conferentie voor securityprofessionals, waar onderzoek wordt gepresenteerd, maar waar ook bedrijven nieuwe tools presenteren. DEF CON vindt in de dagen erna plaats en is een typisch hackersfeest met hackathons en villages waar hard- en software worden gekraakt.
Voor defensieve beveiligingsonderzoekers wordt het steeds belangrijker om nieuwe programmeertalen te ontdekken, zegt Van Cooten. Beveiligers in red teams maakten in het verleden nog vaak gebruik van kant-en-klare tools om de verdediging van bedrijven te toetsen. Een red team probeert netwerkbeveiliging op dezelfde manier te testen als een tegenstander zou doen. Dat is heel wat anders dan een penetratietest, waarbij het bedrijf vooraf duidelijke afspraken maakt met een ethische hacker over waar die wel en niet mag kijken en wat hij wel en niet mag doen om zwakheden te vinden. Zo'n afspraak kan zijn dat je als aanvaller bijvoorbeeld bepaalde automatiseringstools niet gebruikt. Dergelijke regels gelden natuurlijk niet voor een beetje crimineel, dus redteamers proberen dat soort situaties juist wél te simuleren. Vroeger gebruikten zulke teams vooral tools die ze van bijvoorbeeld GitHub haalden. "Maar redteamers moeten ook softwareontwikkelskills verwerven om mee te gaan met hun tijd", bepleit Van Cooten.
Ransomwaremakers
Zo weet hij zelf inmiddels veel van programmeertaal Nim. Hij ziet dat er een verschuiving ontstaat onder cybercriminelen, die steeds vaker gebruikmaken van modernere programmeertalen. "Veel malware wordt nog steeds geschreven in klassieke, algemene talen zoals C, C++ of zelfs Python. Modernere talen zoals Go en Rust worden echter steeds populairder, en je ziet zelfs een opkomst van kleinere talen zoals F- en D-lang." Van Cooten kan niet met harde cijfers aangeven hoe vaak hij dat ziet bij nieuwe malware, maar de trend is er volgens hem wel degelijk. "Bij bijvoorbeeld de Trickbot-ransomware zie je het gebruik van Rust, Go en Nim toenemen." Een andere Nederlandse beveiligingsonderzoeker en malwareanalist met wie Tweakers sprak, die niet vanuit zijn officiële functie spreekt en daarom anoniem wil blijven, bevestigt Van Cootens bevindingen. "Zeker als je dat afzet tegen klassieke talen zoals C, zie je een toename."
Voordelen boven C
'Nim kan met macro's makkelijk strings verbergen'
Een van die talen is dus Nim, waar Van Cooten onderzoek naar doet. Nim heeft verschillende voordelen die specifiek voor makers van malware interessant zijn. "Nim is efficiënt, expressief en elegant. De code die je schrijft, is een stuk sleeker, gestroomlijnder. Vooral het feit dat je macro's kunt gebruiken en dat syntaxen niet gewijzigd hoeven te worden is een voordeel", legt hij uit. "En de syntaxes zelf lijken erg op die van Python, dus dat is bekende kost." De keerzijde van de medaille is dat Nim vooral interessant is voor malwaremakers omdat het ook makkelijk is om de code te verbergen voor endpointdetectie of antivirus.
Van Cooten: "Die macro's kun je bijvoorbeeld gebruiken om statische strings te verbergen. In andere talen kun je met zo'n string soms achterhalen wat die doet, door de beschrijving. Dan staat er bij wijze van spreken: 'hack de database'. Verdedigingssoftware pikt dat er natuurlijk zo uit." Een ander voordeel is dat Nim de code genereert die een andere structuur aanhoudt dan klassieke programmeertalen.
Nieuwe programmeertalen worden volgens Van Cooten regelmatig vroeg opgemerkt en in quarantaine gezet door anvirussoftware, juist omdát ze zo nieuw zijn. Hij zag het bij Nim. Er was een periode dat de beveiligingssoftware alles met een Nim-binary standaard verwijderde. "Inmiddels is dat niet meer zo, want dat was niet houdbaar", zegt Van Cooten. "Daarom is Nim inmiddels weer goed bruikbaar." Zeker als blijkt dat een nieuwe programmeertaal door malwaremakers wordt opgepikt, komt het makkelijk op de radar van beveiligers. "Dat is niet per se slecht, maar Nim wordt nu eenmaal relatief vaak voor malware gebruikt", zegt Van Cooten.
Slechte detectie
De aard van de nieuwe talen draagt bij aan hun aantrekkelijkheid voor criminelen. Wat ook meespeelt, is dat er bij bestaande detectietools nog weinig over bekend is. "Een taal als Nim of Go is nog niet opgenomen in analysetools zoals Ghidra", vertelt de andere malwareanalist met wie Tweakers sprak. "Dat maakt die talen lastiger te reverse engineeren. Ook is er weinig documentatie over, wat het moeilijker kan maken voor verdedigers om iets te herkennen."
Malwaremakers als ontwikkelaars
'Malwaremakers zijn ook maar softwareontwikkelaars'
Dat is allemaal inherent het geval bij nieuwe programmeertalen, of die nou goed zijn voor malware of juist om doodnormale webapps te schrijven. "Uiteindelijk", zegt de malwareanalist, "zijn malwaremakers ook maar gewoon softwareontwikkelaars. Het is niet zo dat ze specifiek op zoek gaan naar een taal die beter geschikt is voor malware, maar ze spotten trends en proberen nieuwe talen uit om de voor- en nadelen voor hun operaties te vinden, net zoals een ontwikkelaar bij een bank of een bedrijf dat zou doen. Het is ook afhankelijk van het doel van de malware. Zoek je iets waarmee je de creditcardgegevens van oude mensen probeert te stelen, dan ben je minder bezig met het verbergen of het verkleinen van een binary. Als je echter grote bedrijven met ransomware wilt treffen, spelen er misschien andere afwegingen."
Hoewel sommige van die nieuwe programmeertalen zich beter lenen voor malware, betekent dat waarschijnlijk niet dat criminelen daarop overstappen. Dat denkt ook de malwareanalist. "Nim mag dan terrein winnen, het krijgt waarschijnlijk niet de overhand. Talen als C blijven nog steeds belangrijk. Dat wordt ook heel veel in besturingssystemen gebruikt en verdwijnt dus niet zomaar. Je zult wel zien dat het malwarelandschap diverser wordt."