
Kit completo para Ghidra headless.
Este proyecto fue muy divertido y ¡mi primer proyecto "grande"! Ahora existen soluciones mejores, más inteligentes y más robustas: https://github.com/LaurieWired/GhidraMCP
Nos vemos, cowboy espacial.
Este conjunto de herramientas para Ghidra es un completo suite de utilidades diseñado para optimizar y automatizar diversas tareas asociadas con la ejecución de Ghidra en modo Headless. Este toolkit proporciona una amplia gama de scripts que pueden ejecutarse tanto dentro como fuera de Ghidra, permitiendo a los usuarios realizar tareas como Búsqueda de Vulnerabilidades, Comentarios de Pseudocódigo con ChatGPT y Generación de Informes con Visualización de Datos en el código analizado. Permite al usuario cargar y guardar sus propios scripts e interactuar con la API integrada del script.
Automatización en modo Headless: El toolkit permite lanzar y ejecutar Ghidra en modo Headless sin problemas, facilitando el procesamiento automatizado y por lotes de tareas de análisis de código.
Repositorio/Gestión de Scripts: El toolkit incluye un repositorio de scripts preconstruidos que pueden ejecutarse dentro de Ghidra. Estos scripts cubren diversas funcionalidades, permitiendo a los usuarios realizar tareas variadas de análisis y manipulación. Permite a los usuarios cargar y guardar sus propios scripts, ofreciendo flexibilidad y opciones de personalización para sus necesidades específicas de análisis. Los usuarios pueden gestionar y organizar fácilmente su colección de scripts.
Opciones de entrada flexibles: Los usuarios pueden utilizar el toolkit para analizar archivos individuales o carpetas completas que contengan múltiples archivos. Esta flexibilidad permite un análisis eficiente tanto de bases de código pequeñas como grandes.
Antes de usar este proyecto, asegúrese de tener instalado el siguiente software:
pip install sekiryu.Para usar el script, simplemente ejecútelo contra un binario con las opciones que desee.
sekiryu [-F ARCHIVO][OPCIONES]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 del binario tome varios minutos dependiendo del rendimiento del host. Si ejecuta Sekiryu contra una aplicación muy grande o una gran cantidad de archivos binarios, prepárese para ESPERAR
El "server.py" está básicamente construido para permitir que los scripts interactúen entre sí con Ghidra y con el sistema anfitrión.
Un usuario puede desarrollar fácilmente su propio script, cargarlo y guardarlo en la carpeta de scripts y usar las funciones conocidas
de la API para interactuar con Ghidra.
Para usarlo, el usuario debe importar xmlrpc en su script y llamar a la función como por ejemplo: proxy.send_data
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 se encarga de ejecutar un script headless de ghidra:
def exec_headless(file, script):
"""
Ejecuta el análisis headless de ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Configurando variables
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Ejecutando ghidra con el archivo y script especificados
try:
p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)
os.rmdir(tmp_folder)
except KeyError as e:
print(e)
os.rmdir(tmp_folder)
El uso es bastante sencillo: puede crear su propio script y luego agregar una función en ghidra_pilot.py como:
def tu_funcion(file):
try:
# Configurando script
script = "modules/scripts/tu_script.py"
# Iniciar la función exec_headless en un nuevo hilo
thread = threading.Thread(target=exec_headless, args=(file, script))
thread.start()
thread.join()
except Exception as 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 la siguiente manera:
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Su mensaje de ayuda", action="store_true")
El módulo xmlrpc.server no es seguro contra datos construidos maliciosamente. Si necesita analizar
datos no confiables o no autenticados, consulte las vulnerabilidades XML.
Para obtener más información sobre Bushido Security, visite nuestro sitio web: https://www.bushido-sec.com/.