El marco de análisis binario estático de Pharos es un proyecto del Instituto de Ingeniería de Software de la Universidad Carnegie Mellon. El marco está diseñado para facilitar el análisis automatizado de los programas binarios. Utiliza la infraestructura del compilador Rose desarrollada por Lawrence Livermore National Laboratory para desmontaje, análisis de flujo de control, semántica de instrucciones y más. Este software se lanza bajo una licencia BSD.
La distribución actual es una actualización sustancial de la versión anterior, y agrega una variedad de características que incluyen mejoras en la herramienta Ooanalyzer, el código de análisis de ruta experimental, las mejoras de los particionadores, la múltiples subprocesos y muchas otras características más pequeñas.
El marco de Pharos es un proyecto de investigación, y el código está en desarrollo activo. No se proporcionan garantías de aptitud para ningún propósito. Si bien esta versión proporciona instrucciones de compilación, pruebas unitarias y cierta documentación, queda mucho trabajo por hacer. Hemos probado algunas configuraciones de compilación seleccionadas, pero no hemos probado activamente la portabilidad del código fuente. Consulte las instrucciones de instalación para obtener más detalles.
Dado que el objetivo principal para liberar este código es proporcionar transparencia en nuestra investigación y estimular la conversación con otros investigadores de análisis estáticos binarios, no dude en comunicarse con Cory Cohen [email protected] con preguntas que pueda tener sobre este trabajo. Puede que no pueda responder de manera oportuna, pero haré lo mejor que pueda.
Apianalyzer es una herramienta para encontrar secuencias de llamadas API con las relaciones de datos y control especificadas. Esta capacidad está destinada a ser utilizada para detectar paradigmas de interacción del sistema operativo común como abrir un archivo, escribirlo y cerrarlo.
Ooanalyzer es una herramienta para el análisis y la recuperación de construcciones orientadas a objetos. Esta herramienta fue el tema de un documento titulado "Utilizando la programación lógica para recuperar las clases y métodos de C ++ de los ejecutables compilados" que se publicó en la Conferencia ACM sobre Seguridad de la Computación y Comunicaciones en 2018. La herramienta identifica los miembros de los objetos y los métodos mediante el seguimiento de los punteros de los objetos entre las funciones en el programa. Una implementación previa de esta herramienta se llamó "objdigger", pero se renombró para reflejar un rediseño sustancial utilizando reglas Prolog para recuperar los atributos del objeto. La versión actual de la herramienta solo admite el análisis de ejecutables X86 de 32 bits compilados por Microsoft Visual C ++. Para obtener instrucciones más detalladas sobre cómo ejecutar ooanalyzer en ejecutables muy grandes, consulte estas notas.
La distribución de Pharos se utilizó para incluir un complemento que importó información de OO exportada por Ooanalayzer en el conjunto de herramientas de ingeniería inversa de Ghidra. Para obtener esa funcionalidad ahora y en el futuro, instale el complemento Kaiju Ghidra, que incluye la funcionalidad proporcionada por el complemento Ooanalayzer.
Callanalyzer es una herramienta para informar los parámetros estáticos a las llamadas API en un programa binario. Es en gran medida una demostración de nuestra convención de llamadas actual, análisis de parámetros y capacidades de detección de tipos, aunque también proporciona un análisis útil del código en un programa.
Fn2yara es una herramienta para generar firmas de Yara para las funciones coincidentes en un programa ejecutable. Es probable que los programas que comparten un número significativo de funciones tengan un comportamiento en común.
FN2Hash es una herramienta para generar una variedad de hashes y otras propiedades descriptivas para las funciones en un programa ejecutable. Al igual que FN2Yara, se puede utilizar para admitir el análisis de similitud binaria, o proporcionar características para los algoritmos de aprendizaje automático.
DumpMasm es una herramienta para descargar listados de desmontaje de un ejecutable utilizando el marco Pharos en el mismo estilo que las otras herramientas. No se ha mantenido activamente, y debe considerar usar el estándar de Rose recursedisassmble en su lugar http://rosecompiler.org/rose_html_reference/rosetools.html.