Herramientas para ayudar a aplicar ingeniería inversa a los formatos de archivos binarios

81

¿Qué herramientas están disponibles para ayudar a decodificar formatos de datos binarios desconocidos?

Conozco Hex Workshop y 010 Editor, ambas estructuras de soporte. Estos están bien hasta cierto punto para un formato fijo conocido, pero se vuelven difíciles de usar con algo más complicado, especialmente para formatos desconocidos. Supongo que estoy buscando un módulo para un lenguaje de secuencias de comandos o una herramienta GUI para secuencias de comandos.

Por ejemplo, me gustaría poder encontrar una estructura dentro de un bloque de datos a partir de información limitada conocida, quizás un número mágico. Una vez que haya encontrado una estructura, siga las palabras de longitud y desplazamiento conocidas para encontrar otras estructuras. Luego repita esto de forma recursiva e iterativa cuando tenga sentido.

En mis sueños, ¡quizás incluso identifique automáticamente posibles compensaciones y longitudes en función de lo que ya le he dicho al sistema!

Estera
fuente
1
No es una respuesta directa a su pregunta: ¿No tiene los archivos ejecutables que funcionan con estos archivos binarios con formatos desconocidos? Usar un depurador ring3 como OllyDbg para realizar ingeniería inversa sería mucho más fácil que intentar utilizar formatos de archivo de fuerza bruta.
Daniel Sloof
Oh, sí, una de las aplicaciones que debería haber agregado a la pregunta "¿qué programa quisiste escribir pero nunca
tuviste
En algunos casos, tengo archivos ejecutables que los procesan hasta cierto punto. A veces, los archivos son código ejecutable (pero no en un formato estándar) y pueden contener sus propias rutinas de decodificación. Es posible que tengamos fragmentos limitados de documentación parcial como punto de partida. En otros casos no tengo nada.
Mat

Respuestas:

22

Aquí hay algunos consejos que me vienen a la mente:

Desde mi experiencia, los lenguajes de secuencias de comandos interactivos (yo uso Python) pueden ser de gran ayuda. Puede escribir un marco simple para lidiar con flujos binarios y algunos algoritmos simples. Luego, puede escribir scripts que tomarán su binario y verificarán varias cosas. Por ejemplo:

Haz un análisis estadístico de varias partes. Los datos aleatorios, por ejemplo, le dirán que esta parte probablemente esté comprimida / cifrada. Los ceros pueden significar un relleno entre partes. Los ceros dispersos pueden significar valores enteros o cadenas Unicode, etc. Intente detectar varias compensaciones. Intente convertir partes del binario en enteros de 2 o 4 bytes o en flotantes, imprímalos y vea si tienen sentido. Escriba algunas funciones que buscarán partes repetidas o muy similares en los datos, de esta manera puede detectar fácilmente los encabezados.

Trate de encontrar tantas cadenas como sea posible, pruebe diferentes codificaciones (cadenas c, cadenas pascal, utf8 / 16, etc.). Hay algunas buenas herramientas para eso (creo que Hex Workshop tiene una herramienta así). Las cadenas pueden decirte mucho.

¡Buena suerte!

Untrots
fuente
Hachoir de la respuesta a continuación es exactamente este tipo de marco. Viene con un conjunto predefinido de campos: diferentes tipos de cadenas, fechas, bits, flotantes, relleno, etc. Los analizadores sintácticos incorporados se pueden usar como ejemplos junto con los documentos.
roolebo
15

Para Mac OS X, hay una nueva gran herramienta que es incluso mejor que mi iBored: Synaliyze It! ( http://www.synalysis.net/ )

En comparación con iBored , es más adecuado para archivos no bloqueados, al mismo tiempo que brinda un control total sobre las estructuras, incluida la capacidad de secuencia de comandos (con Lua). Y también visualiza mejor las estructuras.

Thomas Tempelmann
fuente
10

Tupni ; que yo sepa, no está disponible directamente en Microsoft Research, pero hay un documento sobre esta herramienta que puede ser de interés para alguien que desee escribir un programa similar (tal vez de código abierto):

Tupni: Ingeniería inversa automática de formatos de entrada ( biblioteca digital @ ACM )

Resumen

Un trabajo reciente ha establecido la importancia de la ingeniería inversa automática de especificaciones de formato de archivo o protocolo. Sin embargo, los formatos modificados por ingeniería inversa por herramientas anteriores han pasado por alto información importante que es crítica para las aplicaciones de seguridad. En este artículo, presentamos Tupni, una herramienta que puede aplicar ingeniería inversa a un formato de entrada con un rico conjunto de información, incluidas secuencias de registros, tipos de registros y restricciones de entrada. Tupni puede generalizar la especificación de formato en múltiples entradas. Implementamos un prototipo de Tupni y lo evaluamos en 10 formatos diferentes: cinco formatos de archivo (WMF, BMP, JPG, PNG y TIF) y cinco protocolos de red (DNS, RPC, TFTP, HTTP y FTP). Tupni identificó todas las secuencias de registros en las entradas de prueba. También mostramos que, al agregar varios archivos WMF, Tupni puede obtener una especificación de formato más completa para WMF. Además, demostramos la utilidad de Tupni mediante el uso de la rica información que proporciona para la generación de firmas de vulnerabilidad de día cero, lo que no era posible con herramientas de ingeniería inversa anteriores.

MaD70
fuente
2
Enlace al artículo: research.microsoft.com/en-us/um/people/wdcui/papers/…
Steve Bennett
8

Mi propia herramienta "iBored", que lancé recientemente, puede hacer parte de esto. Escribí la herramienta para visualizar y depurar formatos del sistema de archivos (UDF, HFS, ISO9660, FAT, etc.), e implementé la búsqueda, copia e incluso soporte de estructura y plantillas. El soporte de estructura es bastante sencillo y las plantillas son una forma de identificar estructuras de forma dinámica.

Todo es programable en un dialecto Visual BASIC, lo que le permite probar valores, leer bloques específicos y todo.

La herramienta es gratuita, funciona en todas las plataformas (Win, Mac, Linux), pero como es una herramienta personal que acabo de lanzar al público para compartirla, no está muy documentada.

Sin embargo, si desea probarlo y desea dar su opinión, podría agregar más funciones útiles.

Incluso lo abriría en código abierto, pero como está escrito en REALbasic , dudo que mucha gente se una a un proyecto así.

Enlace: página de inicio de iBored

Thomas Tempelmann
fuente
2
Parece un proyecto fantástico al que unirse ... Cuando trabajaba como investigador de antivirus, esto habría sido muy útil. En cambio, hice el mío todo a mano ... Voy a descargarlo y comprobarlo. Gracias por esto, tengo un uso para ello. :)
LarryF
Parece el comienzo de una buena herramienta de análisis de archivos binarios, pero aún está muy centrada en el disco (los bloques de 512 bytes son un poco obsequios ...)
Steve Bennett
@SteveBennett: le gusta agrupar el archivo en bloques del mismo tamaño, eso es cierto, pero se puede cambiar fácilmente el tamaño del bloque a través del menú. Y iBored también puede manejar todo el archivo como un bloque. La única desventaja es que tendrá problemas con archivos grandes porque intenta mostrar todos los datos en una sola vista de bloque desplazable y luego, como un bloque, lo que puede provocar problemas de rendimiento.
Thomas Tempelmann
6

Todavía uso ocasionalmente un antiguo editor hexadecimal llamado AX, Advanced Hex Editor. Parece haber desaparecido en gran medida de Internet ahora, aunque Google aún debería poder encontrarlo por usted. La última versión que conozco fue la 3.4, pero en realidad solo he usado la versión 2.1 gratuita para uso personal.

Su característica más interesante, y la que más he usado para descifrar varios formatos de juegos y gráficos, es su modo de vista gráfica. Eso básicamente le muestra el archivo con cada byte convertido en un píxel codificado por colores. Y por simple que parezca, a veces ha hecho que mis intentos de ingeniería inversa sean mucho más fáciles.

Sin embargo, supongo que hacerlo a simple vista es todo lo contrario a hacer un análisis automático, y el modo gráfico no será de mucha utilidad para encontrar y seguir compensaciones ...

La versión posterior tiene algunas características que parecen adaptarse a sus necesidades (scripts, buscador de regularidad, generador de gramática), pero no tengo idea de lo buenas que son.

mercator
fuente
La URL está muerta, tal vez esté aquí ahora: advanced-hex-editor-axe.en.softonic.com
Steve Bennett
@Steve Gracias por el aviso. Ese es. Sin embargo, a pesar de todas las promesas de ausencia de virus, mi escáner de virus me dio una advertencia de virus al intentar descargarlo, así que no me molesté. He reformulado mi respuesta.
mercator
5

Hay Hachoir, que es una biblioteca de Python para analizar cualquier formato binario en campos y luego examinar los campos. Tiene muchos analizadores para formatos comunes, pero también puede escribir analizadores propios para sus archivos (por ejemplo, cuando trabajo con código que lee o escribe archivos binarios, generalmente escribo primero un analizador Hachoir para tener una ayuda de depuración). Sin embargo, parece que el proyecto está bastante inactivo ahora.

Oliver
fuente
(Enlace roto)
jacobq
1

Mi proyecto icebuddha.com admite esto usando Python para describir el formato en el navegador.

0xdabbad00
fuente
0

Un corte y pasta de mi respuesta a una pregunta similar:

Una herramienta es WinOLS , que está diseñada para interpretar y editar imágenes binarias de la computadora de administración del motor del vehículo (principalmente los datos numéricos en sus tablas de búsqueda). Tiene soporte para varios formatos endian (aunque no PDP, creo) y visualiza datos en varios anchos y compensaciones, define áreas de matriz (mapas) y visualiza en 2D o 3D con todo tipo de opciones de escala y compensación. También tiene un buscador de mapas automático heurístico / estadístico, que podría funcionar para usted.

Es una herramienta comercial, pero la demostración gratuita le permitirá hacer todo menos guardar los cambios en el binario y utilizar las funciones de gestión del motor que no necesita.

Cambio azúl
fuente