CERT Kaiju es una colección de herramientas de análisis binario para Ghidra.
Esta es una implementación Ghidra/Java de algunas características del marco de análisis binario CERT Pharos, particularmente las herramientas de análisis de malware y hash de funciones, pero se espera que crezcan nuevas herramientas y capacidades con el tiempo.
Como se trata de un nuevo esfuerzo, esta implementación aún no tiene paridad total de funciones con la implementación original de C++ basada en ROSE; sin embargo, el cambio a Java y Ghidra ha permitido algunas características nuevas que no estaban disponibles en el marco original, en particular, un mejor manejo de arquitecturas que no son x86. Dado que se está llevando a cabo una importante remodelación del marco y las herramientas, y que el cambio a Java y Ghidra permite capacidades diferentes a las de la implementación de C++, se tomó la decisión de utilizar una nueva marca de modo que hubiera menos confusión entre las implementaciones al discutir la diferentes herramientas y capacidades.
Nuestra intención para el futuro cercano es mantener tanto el marco original de Pharos como Kaiju, uno al lado del otro, ya que ambos pueden proporcionar características y capacidades únicas.
ADVERTENCIA: Como prototipo, pueden surgir muchos problemas al evaluar los hash de función creados por este complemento. Por ejemplo, a diferencia de la implementación de Pharos, el módulo de hash de funciones de Kaiju creará hashes para funciones muy pequeñas (por ejemplo, aquellas con una sola instrucción como RET que causan muchas más colisiones no deseadas). Como tal, los resultados analíticos pueden variar entre este complemento y Pharos fn2hash.
Hay paquetes Kaiju prediseñados disponibles. Simplemente descargue el archivo ZIP correspondiente a su versión de Ghidra e instálelo de acuerdo con las instrucciones a continuación. Se recomienda instalar a través de la interfaz gráfica de Ghidra, pero también es posible descomprimirlo manualmente en el directorio apropiado para instalar.
CERT Kaiju requiere las siguientes dependencias de tiempo de ejecución:
Z3 se proporciona precompilado como parte de los paquetes prediseñados, o puede compilar Z3 usted mismo o utilizar el paquete de su distribución de Linux.
Inicie Ghidra y, en la ventana que se abre, 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 Aceptar. Se instalará la extensión y se marcará una casilla de verificación junto al nombre de la extensión en la ventana para informarle que está instalada y lista.
La interfaz te pedirá que reinicies Ghidra para comenzar a usar la extensión. Simplemente reinicie y las funciones adicionales de Kaiju estarán disponibles para usar de forma interactiva o en scripts.
Algunas funciones pueden requerir habilitar los complementos de Kaiju. Para hacer esto, abra el Explorador de código y luego navegue hasta el menú File > Configure
. En la ventana que aparece, haga clic en el enlace Configure
debajo del ícono de la categoría "CERT Kaiju". Una ventana emergente mostrará todos los complementos Kaiju disponibles y publicados públicamente. Marque los complementos que desee activar y luego presione Aceptar. Ahora tendrá acceso a las funciones interactivas del complemento.
Si un complemento no es visible inmediatamente una vez habilitado, puede encontrarlo debajo del menú Window
en el Explorador de código.
Es posible que haya versiones experimentales "alfa" de herramientas futuras disponibles en la categoría "Experimental" si desea probarlas. Sin embargo, estos complementos son definitivamente experimentales, no son compatibles y no se recomiendan para uso en producción. ¡Sin embargo, agradecemos los comentarios tempranos!
Las extensiones de Ghidra como Kaiju también se pueden instalar manualmente descomprimiendo el contenido de la extensión en el directorio apropiado de su instalación de Ghidra. Para obtener más información, consulte la Guía de instalación de Ghidra.
También puedes crear la extensión Kaiju directamente desde el código fuente. Consulte el archivo INSTALL.md
incluido en el directorio fuente superior de Kaiju.
Las herramientas de Kaiju se pueden utilizar de forma gráfica interactiva o mediante un modo "sin cabeza", más adecuado para trabajos por lotes. Es posible que algunas herramientas solo estén disponibles para uso gráfico o sin cabeza, debido a la naturaleza de la herramienta.
Kaiju crea una interfaz gráfica interactiva (GUI) dentro de Ghidra utilizando Java Swing y la arquitectura de complementos de Ghidra.
La mayoría de las herramientas de Kaiju son en realidad complementos de análisis que se ejecutan automáticamente cuando se elige la opción "Análisis automático", ya sea al importar un nuevo ejecutable para desmontar o seleccionando directamente Analysis > Auto Analyze...
desde la ventana del navegador de código. Verá varios complementos de Análisis CERT seleccionados de forma predeterminada en la herramienta Análisis automático, pero puede habilitar/deshabilitar cualquiera según lo desee.
Sin embargo, las herramientas de análisis deben ejecutarse antes de que funcionen las distintas herramientas GUI. En algunos casos extremos, incluso puede resultar útil ejecutar el análisis automático dos veces para garantizar que se produzcan todos los metadatos para crear información de partición y desensamblado correcta, lo que a su vez puede influir en los resultados del hash.
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 CodeBrowser de Ghidra. También puede iniciar el complemento presionando CTRL-G
.Window > CERT Function Hash Viewer
en el menú para comenzar con esta herramienta si aún no está visible. Aparecerá una nueva ventana que muestra 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 se puede acoplar al Ghidra CodeBrowser principal para facilitar su uso junto con otros complementos. Puede encontrar documentación de uso más extensa en el menú Help > Contents
de Ghidra al utilizar la herramienta.Kaiju > OOAnalyzer Importer
en el menú para comenzar con esta herramienta. Un cuadro de diálogo simple le pedirá que ubique el archivo JSON que desea importar. Puede encontrar documentación de uso más extensa en el menú Help > Contents
de Ghidra al utilizar la herramienta.Ghidra también admite un modo "sin cabeza" que permite ejecutar herramientas en algunas circunstancias sin el uso de la GUI interactiva. Por lo tanto, estos comandos se pueden utilizar para secuencias de comandos y trabajos en "modo por lotes" de grandes cantidades de archivos.
Las herramientas headless dependen en gran medida de la funcionalidad GhidraScript de Ghidra.
Las herramientas sin cabeza incluyen:
Se ha incluido un script de inicio de shell simple llamado kaijuRun
para ejecutar estos comandos sin cabeza en escenarios simples, como generar los hash de función para cada función en un único ejecutable. Suponiendo que la variable GHIDRA_INSTALL_DIR
esté configurada, se podría, por ejemplo, ejecutar el script de inicio en un único 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 el nombre automático 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 del iniciador kaijuRun
.
Hay documentación y ayuda más completa disponibles, en uno de dos formatos.
Consulte el directorio docs/
para obtener documentación con formato Markdown y ayuda para todas las herramientas y componentes de Kaiju. Estos documentos son fáciles de mantener, editar y leer incluso desde una 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 en el lado izquierdo de la ventana de ayuda.
Tenga en cuenta que la documentación de ayuda de Ghidra tiene exactamente el mismo contenido que los archivos Markdown en el directorio docs/
; Gracias a un complemento de Gradle en el árbol, Gradle analizará automáticamente Markdown y lo exportará a Ghidra HTML durante el proceso de compilación. Esto permite un mantenimiento aún más sencillo (actualizar documentos en un solo lugar, no en dos) y mantiene los dos sincronizados.
Toda la documentación nueva debe agregarse al directorio docs/
.
Este software tiene una licencia estilo BSD simplificada otorgada por el Instituto de Ingeniería de Software de la Universidad Carnegie Mellon. Encuentre todos los detalles 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 se basa en el arte creado por Cameron Spahn, publicado originalmente bajo los términos de la licencia internacional Creative Commons Attribution-Share Alike 4.0.