Lo strumento utilizzato dalla NSA per agevolare gli agenti segreti nel reverse engineering
Il 5 Marzo è stato rilasciato pubblicamente la versione 9.0 di Ghidra (nome in codice del progetto) rilasciandone il rispettivo codice sorgente. Cos'è e di cosa si tratta

La National Security Agency (NSA), uno dei più famosi servizi segreti americani molto discusso in passato a seguito delle rivelazioni di Edward Snowden, ha rilasciato il 5 Marzo 2019 (6 Marzo 2019 in Italia) uno strumento realizzato internamente per agevolare i propri agenti segreti nel reverse engineering.
Il 5 Marzo è stato rilasciato pubblicamente la versione 9.0 di Ghidra (nome in codice del progetto) rilasciandone il rispettivo codice sorgente (non ancora pervenuti, ma in fase di rilascio) a questo indirizzo. Ghidra non era piu un segreto già da anni, infatti Edward Snowden durante la nota campagna di denuncia denominata Vault 7 da wikileaks aveva condiviso alcuni documenti che mostravano l'installazione ed il funzionamento di Ghidra. Già a quell'epoca (Snowden mostrava la versione 7.0.2) era uno strumento molto avanzato ed estremamente promettente, oggi la versione pubblicata direttamente dai servizi segreti Americani è ancora piu completa ed estremamente performante.
Cos'è Ghidra
Ghidra è uno strumento appartenente ad una suite piu ampia denominata SRE (Software for Reverse Engineering) realizzata dagli agenti segreti a supporto delle attività inerenti alla sfera del cybersecurity. L'attività di Reverse Engineering ha come obiettivo quello comprendere il funzionamento più intimo di un codice o di un sistema binario se non si è in possesso del proprio codice sorgente.
L'analista per effettuare tali analisi ha la necessita di utilizzare strumenti di supporto come per esempio (ma non limitato a): decompilers, debuggers e memory mappers. Ghidra racchiude al suo interno molti di questi oggetti e li integra in un unico ambiente per rendere piu veloce e fruibile l'analisi.
Per gli esperti del settore, Ghidra si posiziona sul mercato professionale in atetesi ad alcuni strumenti noti come per esempio IDA Pro, Binary Ninja e per gli amanti dell' Open Source RADA.RE, con una sola differenza: Ghidra è OpenSource (come radar.re) e quindi non ha un costo di licenza mentre il principale player di mercato -- IDA Pro -- possiede una licenza dal costo molto elevato ed ogni modulo è acquistabile separatamente, portando l'accessibilità alle ultime release solo ad organizzazioni ben strutturate(*).
Ghidra è interamente scritto in JAVA e per questo è molto flessibile all'installazione in ambienti differenti come per esempio Windows, Linux e OSX. Possiede una grafica basata su JavaForm ed elementi di JavaFx e non troppo contemporanea (la versione rilasciata risale infatti a circa 7/10 anni fa) ma è molto funzionale e completa.
Cosa utilizza Ghidra per le sue analisi
L'ambiente di analisi ricorda molto quello di IDA Pro ma vi sono numerose differenze. Per esempio Ghidra possiede un sistema molto avanzato per inferire automaticamente le strutture dati e possiede al suo interno numerose collezioni di "tipi dato" per rendere più semplice l'individuazione da parte dell'analista. Ghidra possiede la capacita di decompilare numerose architetture hardware mentre IDA, ad oggi, riconosce principalmente: x86, x64, ARM e AArch64, altri moduli sono acquistabili separatamente. Sia Ghidra sia IDA Pro, possiedono uno scripting engine, ossia la capacità di eseguire script sviluppati da terze parti (tipicamente da analisti) per automatizzare alcuni passaggi di analisi e/o per individuare all'interno del sistema analizzato punti di interesse.
Ghidra, per essere più precisi, utilizza Jython che offre all'analista l'enorme possibilità di interagire con tutto il framework e non soltanto con l'engine di esecuzione plugins. Questa funzionalità permette allo sviluppatore di terze parti oppure all'analista stesso di poter intervenire ad ogni livello di framework offrendo, in questo modo, una vastissima capacita di automazione. Inoltre Ghidra possiede la funzionalità di eseguire il patching del file analizzato: quindi di salvare un file binario con modifiche effettuate dall'analista. Questa operazione è molto piu complessa da eseguire con IDA Pro in quanto non vi è un supporto diretto al patching ma vi è la necessità di attuare workaround e di integrare scripting esterni non nativi all'applicazione.
Una ulteriore qualità di Ghidra, la quale è piaciuta moltissimo a numerosi reverse engineers, è la capacità di utilizzare il "CRTL+Z" ovvero il "torna indietro". In IDA questa funzionalità non è affatto banale. Durante le varie esecuzioni e le numerose modifiche effettuate dagli analisti al fine di analizzare il binario selezionato, vi è alta probabilità di compromettere il sistema analizzato e per questo è necessario ogni volta adottare tecniche parallele al fine di evitare di ricominciare con l'analisi dal principio. La capacita di attuare il "torna indietro" inserisce un grandissimo punto di forza per velocizzare le analisi. Un altra funzionalità presente in Ghidra è la possibilità di effettuare analisi condivise.
Questa funzionalità rende possibile dividere l'analisi corrente tra piu analisti i quali, dividendosi l'attività, hanno la possibilità di amplificare la copertura di analisi effettuando oppure di velocizzare una analisi di contenuto: analisi non completa ma con finalità di comprendere il funzionamento e l'obiettivo del sistema analizzato senza entrare nel dettaglio delle singole operazioni.
Un'impronta indelebile nel reverse engineering
Ghidra può piacere o non piacere sia per le sue nuove funzionalità sia per l'organizzazione che lo ha sviluppato e successivamente rilasciato, tuttavia ha tracciato un impronta indelebile negli strumenti di reverse engineering. Probabilmente gli appassionati di Rada.re difficilmente cambieranno il loro utilizzo, tuttavia chi deciderà di abbandonare IDA Pro o Binary Ninja, per motivi di costo e/o nuove funzionalità, avrà ora una nuova possibilità, gratuita, estendibile e collaborativa.
La pubblicazione di Ghidra da parte dell' NSA ha inoltre rivoluzionato il mercato del "reverse engineering" introducendo un sistema, realizzato circa 10 anni fa, paragonabile all'attuale sistema di reverse più potente in commercio, totalmente gratuito e dal codice sorgente disponibile. Hex-rays, azienda leader di mercato e produttore di IDA Pro, dovrà sforzarsi di compiere un avanzamento tecnologico notevole se vorrà mantenere gli stessi costi, oppure dovrà drasticamente abbattere i costi di licenza per poter rimanere leader di mercato. Infine non dimentichiamo l'importanza della comunità opensource che certamente vorrà mantenere sempre aggiornato il "drago rosso" (icona di Ghidra) effettuando numerose proposte di miglioramento e di nuove funzionalità (pull requests). Ad oggi, pochi giorni dopo la pubblicazione, su GitHub sono disponibili ben 4 "push requests" e 96 "Issues" aperte a dimostrazione di quanto affermato; si mostra un interessante anno sul fronte reverse engineering !
(*): IDA Pro rilascia una versione di alcuni anni più datata gratuita ma non OpenSource
Se avete correzioni, suggerimenti o commenti scrivete a dir@agi.it