Experts: nieuwe programmeertalen zijn geliefd bij malwaremakers

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."

Door Tijs Hofmans

Nieuwscoördinator

16-08-2022 • 09:52

15

Reacties (15)

15
14
9
0
0
0
Wijzig sortering
Ik gebruik momenteel Java (ja I know), maar daar heb je obfuscatie die we runnen voor een release. Moet ik me bij Nim voorstellen dat dat via die scripts enigszins vergelijkbaar is?
Nee, zoals ik het lees niet. Met een macro kun je de syntax van de taal tijdens compilatie herdefinieren. Tijdens run wordt die syntax dan gebruikt.
Obfuscatie is het moeilijker leesbaar maken van een bekende syntax.
Check dat lijkt het idd te zijn
Nim is sowieso niet te vergelijken met Java. Java compileer je naar bytecode en is daardoor kinderlijk eenvoudig weer te decompileren naar prima leesbare Java. Daarom obfusceren jullie je code zodat dit in ieder geval geen eenvoudig leesbaar spul oplevert.

Nim wordt gecompileerd naar machine language en is daarom haast niet te lezen. Maar vaste String of andere herkenbare dingen, kunnen de kwade intenties van software soms evengoed weggeven. De ingebakken macro's van Nim maken het mogelijk om die Strings te verbergen door ze dynamisch op te bouwen/on te knippen. Maar dat kan in elke andere taal ook natuurlijk met wat handmatige code.
Nim gebruikt geen scripts, het is een gecompileerde taal. Ik weet niet hoe het tegenwoordig werkt, maar ik dacht dat ze vroeger via C naar machinecode compileerden.

Het probleem voor reverse-engineering van die moderne talen is dat ze de conventies en patronen van gekende talen als C en C++ niet volgen. Nim weet ik niet zo veel over, maar bijvoorbeeld Rust en Golang volgen een andere calling conventie dan C, gebruiken andere abstracties dan C en C++ en de code wordt anders georganizeerd (zowel op machinetaal niveau als op broncode niveau).

De concepten die belangrijk zijn om machinetaal gegenereerd uit C of C++ te lezen, zijn niet altijd van toepassing op programma's geschreven in die nieuwere taalfamilies.

Op zich denk ik niet dat dat een fundamenteel probleem is, ik denk dat dat gewoon een kwestie van gewenning en tool ontwikkeling is bij de reverse engineering en infosec community.
Dit kan ik niet zo goed plaatsen, kan de logica niet zien:

"Nim mag dan terrein winnen, het krijgt waarschijnlijk niet de overhand. Talen als C blijven op universiteiten nog steeds belangrijk. Dat wordt ook heel veel in besturingssystemen gebruikt en verdwijnt dus niet zomaar.

Wordt bedoeld dat C als taal gedoceerd wordt en daarom door criminele programmeurs veel gebruikt blijft worden? Of dat talen zoals C veel gebruikt worden en daarom er ook in C ransomware geschreven blijft worden? Ik ben in de veronderstelling dat je Nim-software op systemen met C kan inzetten.
Ik denk dat ze bedoelen dat C zo is ingeburgerd op zowel de unversiteiten als in de industrie en dat heel veel code reeds in C is geschreven, complete OSen, dat men niet verwacht dat Nim dit zo maar even overneemt.

Dat geloof ik ook niet echt om eerlijk te zijn, Nim ziet er best aardig uit, maar programmeertaal nummer zoveel, het biedt niet echt extreem veel voordelen t.o.v. andere talen.
Leuk artikel, zo'n deep dive :) Nooit gedacht dat malwareschrijvers iets anders gebruikten dan C/C++.
Die macro's kun je bijvoorbeeld gebruiken om statische strings te versluieren. In andere talen kun je met zo'n string soms achterhalen wat die doet, door de beschrijving.
Hier zijn voor de gangbare talen toch al veel tools voor? En heuristisch wordt het toch altijd opgepikt, want tijdens runtime moet dat natuurlijk naar een normaal commando/pad worden omgezet?
Een ander voordeel is dat Nim niet gecompileerd hoeft te worden omdat de binary's al zijn ingebakken.
Wat wordt hier mee bedoeld - ingebakken waarin? Is juist een Nim-gecompileerde binary niet moeilijker te analyseren dan een Nim-scriptje + runner-executable?
Leuk artikel, en goed dat jullie aanwezig waren in Vegas! Leuk om Tijs daar tegen het lijf te lopen. ;)
Een ander voordeel is dat Nim niet gecompileerd hoeft te worden omdat de binary's al zijn ingebakken. Dat maakt de taal lastiger te analyseren op binaryniveau.
Hier snap ik niet zo veel van. Welke "binaries" zijn al ingebakken? Het runtime environment?

Een taal wordt real-time geïnterpreteerd (zoals bv Python), natiive gecompileerd (C/C++) of byte code executie (zoals Java). Maar ingebakken binaries kan ik me niet veel bij voorstellen.

Python en Java zijn super eenvoudig te bekijken omdat ze niet naar machine language gecompileerd worden en dus eenvoudig leesbaar zijn. Gecompileerd talen zijn lastiger omdat ML nou eenmaal niet heel eenvoudig te lezen is. Ik neem aan dat Nim ook gewoon in 1 van deze 2 categorieën valt.

Edit: de Nim website geeft direct het antwoord. Nim is een native compiled language. Dus het is vergelijkbaar met C/C++ en levert je platform speciifeke executables op. En valt daarmee dus in de 2e categorie die ik hierboven beschreef. Om dit nou te omschrijven als "ingebakken binaries" vind ik vreemd.

[Reactie gewijzigd door sys64738 op 22 juli 2024 18:44]

Dus als ik het goed begrijp heeft Nim het voordeel dat de syntax slick en eenvoudig is zoals bij python maar je compileert dus reverse engineering is onmogelijk wat maakt dat je malware beter kan verbergen.
Beste van 2 werelden dus voor hackers !
Het is geen nieuws maar iets meer een deep dive. Het is niet het langste artikel inderdaad, maar toch wel iets interessanter dan een standaard artikel
Ik snap de reactie wel, dit is waar je vroeger voor kwam naar Tweakers. Nu is dit betalend en de rest is gewoon mainstream tech product launches.
Vroeger kwam zoiets alleen op de fp als een andere bron dit had geproduceerd of gevonden. Dit is door Tweakers zelf gemaakt nieuws. En daarom heeft het (waarschijnlijk) het plus label.

Op dit item kan niet meer gereageerd worden.