
CERT Kaiju es una extensión de marco de análisis binario para el conjunto de herramientas de ingeniería inversa de software Ghidra. Este repositorio es un "espejo" -- por favor, presente tickets, informes de errores o solicitudes de extracción en el repositorio upstream en @CERTCC: https://github.com/certcc/kaiju
CERT Kaiju es una colección de herramientas de análisis binario para Ghidra.
Se trata de una implementación en Ghidra/Java de algunas características de CERT Pharos Binary Analysis Framework, particularmente las herramientas de hashing de funciones y análisis de malware, pero se espera que crezca con nuevas herramientas y capacidades con el tiempo.
Como este es un esfuerzo nuevo, esta implementación aún no tiene una paridad completa de funcionalidades con la implementación original en C++ basada en ROSE; sin embargo, el cambio a Java y Ghidra ha permitido algunas nuevas funcionalidades no disponibles en el marco original — notablemente, un mejor manejo de arquitecturas que no son x86. Dado que se está realizando un rediseño significativo del marco y las herramientas, y que el cambio a Java y Ghidra permite capacidades diferentes a las de la implementación en C++, se tomó la decisión de utilizar una nueva marca para reducir la confusión entre implementaciones al discutir las diferentes herramientas y capacidades.
Nuestra intención para el futuro cercano es mantener tanto el marco original de Pharos como Kaiju, lado a lado, ya que ambos pueden proporcionar funcionalidades y capacidades únicas.
ADVERTENCIA: Al ser un prototipo, pueden surgir muchos problemas al evaluar los hashes de funciones creados por este plugin. Por ejemplo, a diferencia de la implementación de Pharos, el módulo de hashing de funciones de Kaiju creará hashes para funciones muy pequeñas (por ejemplo, aquellas con una sola instrucción como RET, lo que provoca muchas más colisiones no intencionadas). Como resultado, los resultados analíticos pueden variar entre este plugin y Pharos fn2hash.
Paquetes precompilados de Kaiju están disponibles. Simplemente descargue el archivo ZIP correspondiente a su versión de Ghidra e instálelo según las instrucciones a continuación. Se recomienda instalarlo a través de la interfaz gráfica de Ghidra, pero también es posible descomprimirlo manualmente en el directorio adecuado para instalarlo.
CERT Kaiju requiere las siguientes dependencias en tiempo de ejecución:
Z3 se proporciona precompilado como parte de los paquetes precompilados, o puede compilar Z3 por su cuenta o usar el paquete de su distribución Linux.
Inicie Ghidra, y desde la ventana de apertura, seleccione en el menú:
File > Install Extension. Haga clic en el signo más en la parte superior de la
ventana de extensiones, navegue y seleccione el archivo .zip en el explorador
de archivos y presione OK. La extensión se instalará y aparecerá una casilla
marcada junto al nombre de la extensión en la ventana para indicar que está
instalada y lista.
La interfaz le pedirá que reinicie Ghidra para comenzar a usar la extensión. Simplemente reinicie, y las funciones adicionales de Kaiju estarán disponibles para uso interactivo o en scripts.
Alguna funcionalidad puede requerir habilitar los plugins de Kaiju. Para ello,
abra el Code Browser y luego navegue al menú File > Configure.
En la ventana que aparece, haga clic en el enlace Configure debajo del
icono de la categoría "CERT Kaiju". Aparecerá una ventana emergente con todos
los plugins de Kaiju disponibles públicamente. Marque cualquier plugin
que desee activar y luego presione OK. Ahora tendrá acceso a las
funcionalidades interactivas de los plugins.
Si un plugin no es visible inmediatamente después de habilitarlo, puede
encontrarlo en el menú Window del Code Browser.
Versiones "alpha" experimentales de herramientas futuras pueden estar disponibles en la categoría "Experimental" si desea probarlas. Sin embargo, estos plugins son definitivamente experimentales, no tienen soporte y no se recomiendan para uso en producción. ¡Agradecemos sus comentarios tempranos!
Las extensiones de Ghidra como Kaiju también pueden instalarse manualmente descomprimiendo el contenido de la extensión en el directorio adecuado de su instalación de Ghidra. Para más información, consulte The Ghidra Installation Guide.
También puede compilar la extensión Kaiju directamente desde el código fuente.
Consulte el archivo INSTALL.md incluido en el directorio raíz del código fuente de Kaiju.
Las herramientas de Kaiju pueden usarse de manera gráfica interactiva, o mediante un modo "headless" más adecuado para trabajos por lotes. Algunas herramientas pueden estar disponibles solo para uso gráfico o headless, según la naturaleza de la herramienta.
Kaiju crea una interfaz gráfica interactiva (GUI) dentro de Ghidra utilizando Java Swing y la arquitectura de plugins de Ghidra.
La mayoría de las herramientas de Kaiju son en realidad plugins de Análisis
que se ejecutan automáticamente cuando se selecciona la opción "Auto Analysis",
ya sea al importar un nuevo ejecutable para desensamblar, o eligiendo directamente
Analysis > Auto Analyze... desde la ventana del code browser. Verá
varios plugins de análisis de CERT seleccionados por defecto en la herramienta
Auto Analyze, pero puede habilitar/deshabilitar según lo desee.
Sin embargo, las herramientas de Análisis deben ejecutarse antes de que funcionen las diversas herramientas GUI. En algunos casos excepcionales, puede ser útil ejecutar el Auto Analysis dos veces para asegurar que se produzcan todos los metadatos necesarios para crear una partición y desensamblado correctos, lo que a su vez puede influir en los resultados de hashing.
Los analizadores se ejecutan automáticamente durante la fase de análisis de Ghidra e incluyen:
Las herramientas GUI incluyen:
Kaiju > GhiHorn para acceder a esta herramienta desde el CodeBrowser de Ghidra.
También puede iniciar el plugin presionando CTRL-G.Window > CERT Kaiju Function Hash Viewer del menú para comenzar
con esta herramienta si aún no está visible. Aparecerá una nueva ventana
mostrando una tabla de hashes y otros datos. Los botones en la parte superior
de la ventana pueden actualizar la tabla o exportar datos a un archivo o
una firma YARA. Esta ventana también puede acoplarse al CodeBrowser
principal de Ghidra para un uso más fácil junto con otros plugins.
Documentación de uso más extensa se puede encontrar en
el menú Help > Contents de Ghidra al usar la herramienta.Kaiju > OOAnalyzer Importer del menú para comenzar
con esta herramienta. Un cuadro de diálogo simple le pedirá que
localice el archivo JSON que desea importar.
Documentación de uso más extensa se puede encontrar en
el menú de Ghidra al usar la herramienta.Ghidra también admite un modo "headless" que permite ejecutar herramientas en algunas circunstancias sin usar la GUI interactiva. Estos comandos pueden utilizarse para scripting y trabajos en "modo por lotes" de grandes cantidades de archivos.
Las herramientas headless se basan en gran medida en la funcionalidad GhidraScript de Ghidra.
Las herramientas headless incluyen:
Se ha incluido un script de lanzamiento simple llamado kaijuRun para ejecutar
estos comandos headless en escenarios simples, como generar los hashes de
funciones para cada función en un solo ejecutable.
Suponiendo que la variable GHIDRA_INSTALL_DIR está configurada, se podría
por ejemplo ejecutar el script de lanzamiento en un solo ejecutable de la siguiente manera:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
Este comando generaría los resultados en un archivo con nombre automático como
example.exe.Hashes.csv.
La ayuda básica para el script kaijuRun está disponible ejecutando:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Consulte el archivo docs/HeadlessKaiju.md en el repositorio
para obtener más información sobre el uso de este modo y
el script de lanzamiento kaijuRun.
Hay documentación y ayuda más completas disponibles, en uno de dos formatos.
Consulte el directorio docs/ para documentación en formato Markdown
y ayuda para todas las herramientas y componentes de Kaiju. Estos documentos
son fáciles de mantener, editar y leer incluso desde la línea de comandos.
Alternativamente, puede encontrar la misma documentación en el sistema de
ayuda integrado de Ghidra. Para acceder a estos documentos de ayuda,
desde el menú de Ghidra, vaya a Help > Contents
y luego seleccione CERT Kaiju en el árbol de navegación del lado
izquierdo de la ventana de ayuda.
Tenga en cuenta que la documentación de ayuda de Ghidra es exactamente el mismo
contenido que los archivos Markdown en el directorio docs/; gracias a un
plugin gradle integrado, gradle analizará automáticamente el Markdown y lo
exportará a HTML de Ghidra durante el proceso de compilación.
Esto permite un mantenimiento aún más simple (actualizar documentos en un solo
lugar, no dos) y mantiene ambos sincronizados.
Toda la documentación nueva debe agregarse al directorio docs/.
Este software está licenciado bajo una licencia de estilo BSD simplificada
por el Software Engineering Institute de Carnegie Mellon University.
Encuentre los detalles completos de esta licencia, así como los términos de
licencia de las dependencias utilizadas en este proyecto, en el archivo
LICENSE.md en la raíz de este repositorio.
El logotipo de CERT Kaiju está basado en arte creado por Cameron Spahn, originalmente publicado bajo los términos de la Creative Commons Attribution-Share Alike 4.0 International license.
Help > Contents