In de afgelopen weken heeft ChatGPT enorm veel (social) media-aandacht gekregen in Infosec-kringen. Dit nadat meerdere tweets lieten zien hoe ChatGPT van OpenAI kan worden gebruikt om verschillende cybersecurity-taken te automatiseren en ondersteunen. In dit artikel leggen we uit hoe ChatGPT van toegevoegde waarde kan zijn voor reverse-engineers en malware-analisten, zowel voor degenen die net de arbeidsmarkt betreden als degenen met veel ervaring.
Er zijn een paar dingen waar je rekening mee moet houden wanneer je ChatGPT gebruikt. Ten eerste is ChatGPT getraind met behulp van openbaar beschikbare data (tot 2021). Of het in staat is nauwkeurig en up-to-date antwoorden te geven hangt af van de nauwkeurigheid en relevantie van de trainingsdata. Beschouw de output van ChatGPT als de mening van een goed geïnformeerde gids die je zelf moet gaan controleren, in plaats van dit als dé waarheid te beschouwen.
Ten tweede, komt het ook voor dat ChatGPT op dezelfde of vergelijkbare vragen verschillende antwoorden geeft, afhankelijk van het moment en de manier waarop een vraag wordt gesteld. Het positieve hieraan is dat het anders formuleren of verfijnen van een vraag kan leiden tot betere antwoorden. De ‘regenerate response’-optie aan het einde van elk antwoord kan ervoor zorgen dat ChatGPT meer details geeft. Ook kan context toevoegen aan een vraag helpen om antwoorden relevanter te maken.
Laten we, met het voorgaande in het achterhoofd, kijken hoe ChatGPT kan helpen om veelvoorkomende uitdagingen op het gebied van reverse engineering en malware-analyse op te lossen.
Leer hoe je tools voor reverse engineering effectiever kunt gebruiken
Softwaretools hebben vaak verschillende hoeveelheden ingebouwde helpfuncties. Speciale gebruikersfora en Q&A-sites kunnen veelal de gaten opvullen. ChatGPT is ook een manier om snel hulp te krijgen, of je nu IDA Pro, Ghidra, Radare2, Hopper, Cutter of een ander reverse engineering-platform gebruikt. Al deze platforms hebben hun eigen ingebouwde helpfuncties. Maar als de problemen zijn gebruikt in het trainingsmodel van ChatGPT, dan kun je sneller antwoord krijgen op specifieke vragen.
Leer jezelf assembly language
Ook als het gaat om de basisprincipes van assembly en memory management-technieken van programmeertalen en -platforms, kan ChatGPT relevante informatie bieden. ChatGPT biedt bijvoorbeeld informatieve antwoorden op vragen over de basisprincipes van function invocation en de gerelateerde stack memory management-activiteiten. Verder kun je ChatGPT vragen om uitgebreid of beknopt te zijn.
Assembly code is platform- en compilerspecifiek. Als een assembly-gerelateerde vraag geen specifieke kenmerken bevat over een platform of een hogere taal waaruit assembly is samengesteld, biedt ChatGPT relevante disclaimerinformatie om het antwoord correct te positioneren. Om meer informatie te krijgen kan een gebruiker aanvullende vragen stellen die platform- of compilerspecificaties bevatten. Je kunt continu met ChatGPT over een bepaald onderwerp praten, zodat ChatGPT meer invalshoeken kan behandelen naarmate het gesprek vordert. ChatGPT kan ook code van hoge kwaliteit vertalen waar de gebruiker bekend mee is om code te maken.
Begrijp hoe broncode eruit ziet in een disassembler
Malware-analisten kijken vaak naar malware door de ogen van een disassembler. Ervaring en kennis van een programmeertaal zijn hierbij essentieel, maar ChatGPT kan ons leren hoe bekende broncode eruit ziet in een disassembler, en hoe veranderingen in code te zien zijn in disassembly. Zo krijgen je meer inzicht in kwaadaardige code.
Schrijf snel PoC-broncode
ChatGPT kan helpen om de broncode te schrijven die je nodig hebt om je theorieën te testen. Wellicht krijg je niet meteen het juiste antwoord, maar met doorvragen en expliciete instructies geven, krijg je vaak de disassembly waar je naar op zoek bent.
Vertaal tussen instructiesets
Omdat assembly code platformspecifiek is, kunnen meer ervaren reverse-engineers ChatGPT gebruiken om informatie te krijgen over andere instructiesets dan die sets waarmee ze al bekend zijn. Instrueer bijvoorbeeld ChatGPT om assembly code die in de ene instructieset is geschreven, te vertalen naar de andere. Zo kun je de interessante instructieset verder verkennen.
Vergelijk taal- of platformspecifieke conventies
Ervaren reverse-engineers kunnen ook profiteren van ChatGPT om informatie te krijgen over verschillen in memory management-technieken van programmeertalen en -platforms, bijvoorbeeld calling conventions. Onthoud, ChatGPT is op dit moment getraind met trainingsdata tot 2021. Het biedt dus geen actuele informatie wanneer platform- of taalspecificaties sindsdien veranderd zijn.
Ervaren reverse-engineers en met name malware-analisten kunnen ChatGPT gebruiken om vertrouwd te worden met constructen van programmeertalen die steeds populairder worden, en hoe deze constructen in assembly voorkomen.
Analyseer code segmenten in malware-samples
ChatGPT kan code interpreteren en analyseren – wat relevant is voor reverse engineering, zowel pseudocode als assembly. ChatGPT is nuttig voor het analyseren van codesegmenten van een malware-executable, zoals functies. Het kan namelijk een samenvatting geven van de activiteiten die de code uitvoert. Dit kan de efficiëntie van een malware reverse-engineer aanzienlijk verhogen.
Omdat ChatGPT code kan interpreteren, is het ook mogelijk om code te vergelijken, waardoor malware-analisten de verschillen tussen de implementatie van verschillende malware-samples kunnen begrijpen.
De waarde van de antwoorden van ChatGPT hangt af van de hoeveelheid contextinformatie die aan het taalmodel wordt verstrekt. Voor beter geïnformeerde code-analyse-output van ChatGPT moet de gebruiker:
- ChatGPT-query’s formuleren zodat de benodigde context wordt geboden;
- Een gesprek aangaan met ChatGPT om context te bieden tijdens de dialoog en de antwoorden van ChatGPT te verfijnen. Contextuele informatie kan op een programmatische manier worden verstrekt om de handmatige inspanning van een analist te verminderen, bijvoorbeeld via een disassembler-plug-in;
- De ‘regenerate response’-optie aan het einde van een antwoord proberen, omdat dat lijkt te functioneren als een soort ‘try harder’-instructie voor ChatGPT.
Ontdek kwaadaardige activiteiten in code
Malware-analisten kunnen ChatGPT gebruiken om indicatoren te identificeren van mogelijke kwaadaardige activiteiten die een functie kan implementeren. Dit is belangrijk voor het koppelen van functies in een malware-executable aan specifieke kwaadaardige uitkomsten. Een malware-analist kan de interactie met ChatGPT gebruiken om de sterkste indicator in meer detail te bekijken.
Speculeer over functiedoelen en -doelstellingen
Naast het identificeren van kwaadaardige activiteitsindicatoren, kunnen malware-analisten ChatGPT gebruiken om beter te begrijpen hoe malware bepaalde platform- of softwareconstructen gebruikt en met welk doel.
Begrijp kwetsbaarheden en exploit-code
Begrijpen hoe kwetsbaarheden werken, hoe malware-actoren ze uitbuiten en hoe we hun gebruik in code kunnen identificeren en detecteren, is een uitdaging. Ook hier kan ChatGPT bij helpen.
Hulp bij het automatiseren van reverse engineering-taken
Reverse-engineers gebruiken scripttalen om repetitieve of foutgevoelige taken te automatiseren. Dit kan de efficiëntie van reverse-engineering-taken aanzienlijk versnellen en verbeteren. En ChatGPT kan code schrijven.
Conclusie
Dit zijn slechts enkele voorbeelden van hoe reverse-engineers en malware-analisten ChatGPT kunnen gebruiken in hun werk. Tijdens onze experimenten hebben we ontdekt dat het een waardevolle tool kan zijn. Voor beginners biedt ChatGPT een uitgebreide introductie tot de concepten en vaardigheden die nodig zijn om reverse engineering onder de knie te krijgen. Voor ervaren reverse-engineers en malware-analisten kan ChatGPT worden gebruikt om reverse-engineeringtaken te automatiseren en versnellen.
ChatGPT heeft het potentieel om in de toekomst nog krachtiger en nuttiger te worden voor reverse engineers en malware-analisten. Zo kan het huidige beperkingen overwinnen, zoals de operationele afhankelijkheid van oude data. Door deze beperkingen aan te pakken, kan ChatGPT een onmisbare tool worden voor reverse-engineers en analisten, die de informatie levert die nodig is om code nauwkeurig en efficiënt te analyseren.
Dit is een ingezonden bijdrage van SentinelOne. Via deze link vind je meer informatie over de mogelijkheden van het bedrijf.