Este Ghidra Toolkit es un conjunto completo de herramientas diseñadas para optimizar y automatizar diversas tareas asociadas con la ejecución de Ghidra en modo Headless. Este kit de herramientas proporciona una amplia gama de scripts que se pueden ejecutar tanto dentro como junto a Ghidra, lo que permite a los usuarios realizar tareas como búsqueda de vulnerabilidades, comentarios de pseudocódigo con ChatGPT e informes con visualización de datos en la base de código analizada. Permite al usuario cargar y guardar su propio script e interactuar con la API incorporada del script.
Automatización en modo sin cabeza : el kit de herramientas permite a los usuarios iniciar y ejecutar Ghidra sin problemas en modo sin cabeza, lo que permite el procesamiento automatizado y por lotes de tareas de análisis de código.
Repositorio/Administración de scripts : el kit de herramientas incluye un repositorio de scripts prediseñados que se pueden ejecutar dentro de Ghidra. Estos scripts cubren una variedad de funcionalidades, lo que permite a los usuarios realizar diversas tareas de análisis y manipulación. Permite a los usuarios cargar y guardar sus propios scripts, brindando flexibilidad y opciones de personalización para sus requisitos de análisis específicos. Los usuarios pueden administrar y organizar fácilmente su colección de guiones.
Opciones de entrada flexibles : los usuarios pueden utilizar el kit de herramientas para analizar archivos individuales o carpetas enteras que contengan varios archivos. Esta flexibilidad permite un análisis eficiente de bases de código tanto de pequeña como de gran escala.
Búsqueda de vulnerabilidades con reconocimiento de patrones : aproveche los scripts del kit de herramientas para identificar vulnerabilidades potenciales dentro del código base que se está analizando. Esto ayuda a los investigadores y desarrolladores de seguridad a descubrir debilidades de seguridad y abordarlas de manera proactiva.
Búsqueda de vulnerabilidades con SemGrep : gracias al investigador de seguridad 0xdea y al conjunto de reglas que crearon, podemos usar reglas simples y SemGrep para detectar vulnerabilidades en pseudocódigo C/C++ (su github: https://github.com/0xdea/semgrep -normas)
Generación automática de pseudocódigo : genera pseudocódigo automáticamente dentro del modo sin cabeza de Ghidra. Esta característica ayuda a comprender y documentar la lógica del código sin intervención manual.
Comentarios de pseudocódigo con ChatGPT : mejore la legibilidad y la comprensión del código base utilizando ChatGPT para generar comentarios similares a los humanos para fragmentos de pseudocódigo. Esta característica ayuda a documentar y explicar la lógica del código.
Informes y visualización de datos : genere informes completos con visualizaciones para resumir y presentar los resultados del análisis de manera efectiva. El kit de herramientas proporciona capacidades de visualización de datos para ayudar a identificar patrones, dependencias y anomalías en el código base.
Antes de utilizar este proyecto, asegúrese de tener instalado el siguiente software:
Ghidra: Puede descargar Ghidra desde el repositorio GitHub de la Agencia de Seguridad Nacional @ https://github.com/NationalSecurityAgency/ghidra
Java: asegúrese de tener instalada la versión 17 o superior del Java Development Kit (JDK). Puede descargarlo desde el sitio web de OpenJDK @ https://openjdk.org/projects/jdk/17/
BinExport (OPCIONAL) Siga las instrucciones para instalar la extensión Ghidra https://github.com/google/binexport
SemGrep (OPCIONAL) Siga las instrucciones detalladas https://semgrep.dev/docs/getting-started/
Instale los requisitos previos mencionados anteriormente.
Descargue la versión de Sekiryu directamente desde Github o use: pip install sekiryu
.
Para utilizar el script, simplemente puede ejecutarlo contra un binario con las opciones que desea ejecutar.
sekiryu [-F FILE][OPTIONS]
Tenga en cuenta que realizar un análisis binario con Ghidra (o cualquier otro producto) es un proceso relativamente lento . Por lo tanto, espere que el análisis binario demore varios minutos dependiendo del rendimiento del host. Si ejecutas Sekiryu en una aplicación muy grande o una gran cantidad de archivos binarios, prepárate para ESPERAR
Encuentre una demostración en www.bushido-sec.com
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
Para usarlo, el usuario debe importar xmlrpc en su script y llamar a la función como por ejemplo: proxy.send_data
send_data() : permite al usuario enviar datos al servidor. ("datos" es un diccionario)
recv_data() : permite al usuario recibir datos del servidor. ("datos" es un diccionario)
request_GPT() : permite al usuario enviar datos de cadena a través de la API ChatGPT.
Los scripts se guardan en la carpeta /modules/scripts/, simplemente puede copiar su script allí. En el archivo ghidra_pilot.py
puede encontrar la siguiente función que es responsable de ejecutar un script ghidra sin cabeza:
def exec_headless(file, script): """ Ejecutar el análisis sin cabeza de ghidra """path = ghidra_path + 'analyzeHeadless'# Configuración de variablestmp_folder = "/tmp/out"os.mkdir(tmp_folder) cmd = ' ' + tmp_folder + ' TMP_DIR -importar'+ ' '+ archivo + ' '+ "-postscript "+ script +" -deleteProject"# Ejecutando ghidra con el archivo y scripttry especificados: p = subprocess.run([str(path + cmd)], shell=True, capture_output=True) os.rmdir(tmp_folder) excepto KeyError como e: print(e) os.rmdir(tmp_folder)
El uso es bastante sencillo, puedes crear tu propio script y luego simplemente agregar una función en ghidra_pilot.py
como:
def sufunción(archivo): intente: # Configurar scriptscript = "modules/scripts/your_script.py"# Inicie la función exec_headless en un nuevo hilothread = threading.Thread(target=exec_headless, args=(archivo, script)) thread.start () thread.join() excepto Excepción como e: print(str(e))
El archivo cli.py
es responsable de la interfaz de línea de comandos y le permite agregar argumentos y comandos asociados de esta manera:
análisis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', ayuda="Su mensaje de ayuda", action="store_true")
Scripts/SCRIPTS/SCRIIIIIPTS : esta herramienta está diseñada para ser un conjunto de herramientas que permite al usuario guardar y ejecutar su propio script fácilmente, obviamente, si puede contribuir con cualquier tipo de script (¡cualquier cosa que sea interesante será aprobada!)
Optimización : cualquier tipo de optimización es bienvenida y se aprobará e implementará casi automáticamente en cada versión. Algunas cosas interesantes podrían ser: mejorar las tareas paralelas, la limpieza del código y la mejora general.
Análisis de malware : es una parte importante con la que no estoy familiarizado. Cualquier analista de malware que esté dispuesto a contribuir puede sugerir ideas, scripts o incluso enviar código directamente en el proyecto.
Informes : No soy un ingeniero de visualización de datos, si alguien está dispuesto a mejorar/contribuir en esta parte, será muy bueno.
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
Para obtener más información sobre Bushido Security, visite nuestro sitio web: https://www.bushido-sec.com/.