Ghidra reverse-engineering-tool
Professionele disassembler-pakketten voor het analyseren van binaire bestanden zoals IDA Pro kunnen erg duur zijn. Ghidra is een gratis alternatief dat afkomstig is van de NSA.
Als je professioneel binaire bestanden ontrafelt, bijvoorbeeld om beveiligingsgaten in programma’s te ontdekken of om functies te reproduceren, gebruik je daar hoogstwaarschijnlijk het disassemblerpakket IDA Pro van Hex-Ray voor. Dat pakket heeft zich al decennia lang bewezen voor reverse-engineering-doeleinden, maar is helaas ook erg prijzig. Er zijn nauwelijks serieuze alternatieven. De Amerikaanse veiligheidsdienst National Security Agency (NSA) zorgde voor een kleine sensatie toen het ongeveer een jaar geleden het IDA Pro-alternatief Ghidra uitbracht en dat als opensourcesoftware ter beschikking stelde aan het grote publiek. Onlangs is versie 9.1.2 van deze tool verschenen.
Strikt genomen is Ghidra niet alleen een disassembler voor binaire bestanden, maar een werkomgeving waarin je verschillende componenten als plug-in kunt docken. De kern vormt de Code Browser, waarvan de functionaliteit in principe hetzelfde is als van IDA Pro. Hij biedt onder meer een disassembler, een hex-editor en een decompiler. Die laatste genereert allereerst assemblercode, waarvan hij automatisch C-code van alle functies genereert. Dat maakt het analyseren tijdens reverse-engineering makkelijker. Bovendien geeft de Code Browser functies grafisch weer en is het mogelijk om binary’s te patchen.
Momenteel ondersteunt Ghidra meer dan 40 verschillende cpu-architecturen tot 64-bit, waaronder klassieke pc-processors, maar ook ARM, MIPS en klassiekers zoals 6502, Z80 en 68000. De tool kent tal van bestandsformaten zoals PE, ELF en Mach-O. Via de geïntegreerde Python-shell (2.7) kun je alle functies benaderen en met een script automatiseren. Ghidra heeft ook een Java-API waarmee je de tool naar wens met eigen functies kunt uitbreiden. Als je zelf een eigen Ghidra-server opzet, is het zowaar mogelijk om in teamverband aan projecten te werken.
Ghidra is grotendeels in Java geschreven, wat betekent dat je het platformonafhankelijk kunt gebruiken. Om de tool te kunnen uitvoeren, moet een Java-11-JDK op het systeem geïnstalleerd zijn. Na het uitpakken van het zipbestand kun je de decompiler eenvoudig starten via een startscript.
Bij het testen liep Ghidra volledig stabiel zonder te crashen. De tool kon ook probleemloos overweg met binary’s van meer dan tien megabyte. De initiële analyse van de bestanden duurde wel enigszins lang. Het grootste minpunt van Ghidra is dat het, in tegenstelling tot IDA-Pro, nog geen debugger bevat. Daarmee is de tool in zijn huidige vorm alleen in staat om binaire bestanden statisch te analyseren.
De GUI is vergelijkbaar met andere disassemblers. Je kunt de talrijke vensters naar wens groter maken, kleiner maken, verplaatsen, docken, stapelen en tonen of verbergen. De contextgevoelige helpfunctie is uitgebreid en eenvoudig te begrijpen. De documentatie omvat ook de Java-API van Ghidra en vier HTML-presentaties. Die bieden een informatieve en systematische introductie tot Ghidra.
Ondanks de uitstekende helpfunctie vergt Ghidra een behoorlijke inwerktijd en vooral een gebruiker die weet wat hij doet. Gezien de media-aandacht die het GitHub-project heeft gekregen, is het zonder meer mogelijk dat Ghidra nog verder zal worden doorontwikkeld.
Ghidra wordt geleverd met een plug-in voor het migreren van IDA-Pro-databases. Desondanks is het onwaarschijnlijk dat professionele IDA-Pro-gebruikers zonder meer zullen overstappen – vooral omdat de bediening toch behoorlijk afwijkt en een debugger ontbreekt. Als je een IDA-Pro-licentie te duur vindt of alleen een beetje wilt experimenteren met reverse-engineering, dan is Ghidra zeker een kijkje waard.