Automatizando procesos de "reversing" con r2pipe

radare2 es una gran herramienta para realizar procesos de ingeniería inversa, y actividades de análisis estático en el proceso de análisis de malware. El proyecto radare comenzó como una herramienta de análisis forense, un editor hexadecimal con soporte para scripts que puede abrir archivos del disco duro. Pero mas tarde se agregaron capacidades para analizar binarios, desensamblar código, depurar programas, conectarse con servidores gdb remotos y más. Radare2 funciona en Windows, Linux, MAC, tiene más de 10 años de existir y las contribuciones son bienvenidas. Pueden encontrar la versión más reciente, documentación y ejemplos en github: github.com/radare/radare2

 

Para poder automatizar los procesos de ingeniería inversa y análisis de malware en forma programática, existe r2pipe, una forma de interactuar con el framework desde diferentes lenguajes de programación. Entre los lenguajes soportados por r2pipe estan python, vala, C, C#, newlisp, go, rust, ruby, earlang. La filosofía está basada en enviar una cadena con la instrucción a ejecutar por el framework, y de regreso ofrece una cadena con el resultado. Este resultado se puede solicitar en json para su facilidad de manipulación.

 

En lo personal uso python para realizar análisis de programas sospechosos de forma automática y en grandes cantidades. Por ejemplo unos 1000 binarios en un par de horas. Actualmente estamos revisando malware para el IoT, midiendo que tan similar es en diferentes arquitecturas, si el binario para arm32 se parece al binario de x86 por ejemplo. Además de buscar si estan usando criptografía de librerías conocidas o implementando sus propios métodos de cifrado. En esta plática presentaré una introducción a radare2 y como comenzar a usarlo. Luego algunas guias generales de cómo usar r2pipe con diversos lenguajes de programación. Finalmente mostraré dos de los programas que estoy desarrollando en python:

  • Encontrar funciones interesantes que puedan contener rutinas de criptografía personalizada.
  • Realizar comparaciones de funciones entre dos programas para ver qué tan similares son entre ellos, para esto se utilizan diferentes algoritmos de ""fuzzy matching"".

 

Esta platica está enfocada para interesados en análisis de malware, ingeniería inversa y gente curiosa que le gustaría conocer sobre radare2 y su utilidad."

Lugar: 
Duración estimada: 
1Hr
Nivel: 
Conocimientos necesarios: 
--
Requerimientos del asistente: 
--
Aporte: 
--