Análisis de malware

Cómo utilizar Radare2 para ingeniería inversa

31 de julio de por Richard Azú

Este artículo define la ingeniería inversa tal como se utiliza en el análisis de software. Explicaremos en detalle cómo utilizar radare2 para ingeniería inversa.

Expone técnicas que pueden beneficiar a los emprendedores, analistas de seguridad, ingenieros, auditores de software y aficionados que desean mejorar su comprensión de los aspectos de bajo nivel de una pieza de software. Ofrece un enfoque sistémico para comprender la ingeniería inversa y ejemplos del mundo real.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

¿Qué es la ingeniería inversa?

La ingeniería inversa es el proceso creativo de analizar software y comprenderlo sin tener acceso al código fuente. Es el proceso mediante el cual se deconstruye el software de una manera que revela sus detalles más internos, como su estructura, función y funcionamiento.

La ingeniería inversa es una de las habilidades básicas requeridas en la industria de la seguridad del software. La mayoría de los ataques, que normalmente se lanzan en forma de software malicioso, deben revertirse y analizarse. Después de que se lanza un ataque de malware dentro de un sistema, los requisitos clave son limpiar el sistema y los nodos y protegerlos para que no se vean comprometidos.

Es trabajo de un analista de software determinar cómo se instaló el software malicioso dentro del sistema y desarrollar pasos para desinstalar el software. La ingeniería inversa se utiliza en el análisis de malware para comprender qué está haciendo ese fragmento de código y crear un proceso de detección para evitar que vuelva a infectar el sistema.

¿Qué es radare2?

Radare2 es un marco de código abierto que puede realizar desmontaje, depuración, análisis, comparación de datos y manipulación de archivos binarios. Este marco funciona en Windows, Linux y muchas otras plataformas y arquitecturas. El instalador de Windows se puede descargar desde GitHub .

Utilidades de radare2

Radare2 viene con algunas otras herramientas importantes. Estas herramientas son utilidades de línea de comandos que se pueden utilizar juntas o de forma independiente. Este artículo analizará cuatro utilidades clave que se incluyen con radare2.

rax2

rax2 resulta útil cuando es necesario realizar conversiones básicas entre representaciones hexadecimales, valores de punto flotante, cadenas de pares hexadecimales a ASCII, binario, octal, entero, etc.

1. Uso de rax2 para convertir el binario 0011000011111111d al entero 12543

rasm2

rasm2 es un ensamblador y desensamblador para varias arquitecturas, incluida Intel x86.

2. Conversión del código del lenguaje ensamblador para retorno ( ret ) en código de máquina

3. rasm2 convierte el código de máquina c3 al lenguaje ensamblador

rabin2

rabin2 proporciona información clave sobre los binarios ejecutables. Se le conoce principalmente como extractor de información de programas binarios. Como se muestra en la 4, vemos que el binario ejecutable bajo observación se ejecutará en la arquitectura x86 y tiene un tipo bin en formato ejecutable portátil (PE). También vemos que este binario fue codificado usando C++.

Hay información adicional sobre si el valor menos significativo (little-endian) o el más significativo (big-endian) de la secuencia se almacena primero en la dirección de almacenamiento inferior.

4. La utilidad rabin2 extrae información de un binario ejecutable

radare2

Esta es la biblioteca principal y la herramienta de marco, que utiliza el núcleo del editor y depurador hexadecimal. Esta es la utilidad que se puede utilizar para invertir el software.

Cómo aplicar ingeniería inversa a un binario ejecutable

Esta sección describirá cómo revertir un binario ejecutable. Cuando este programa estándar solicita a un usuario que ingrese la contraseña secreta para iniciar sesión en un sistema, compara la contraseña ingresada con una cadena estática y luego imprime una declaración para el código correcto y para los códigos incorrectos. El objetivo aquí es ilustrar la funcionalidad de radare2.

Para comenzar con la inversión, iniciamos radare2 y cargamos un archivo binario llamado binfile.exe.

6. Cargando binario ejecutable en radare

Podemos analizar el binario usando el comando aa . El comando aa analiza todas las banderas comenzando con símbolos, funciones y el punto de partida del programa.

7. Cómo iniciar el análisis del binario cargado en radare2

Durante el análisis binario, podemos saltar a cualquier sección dentro del código binario. El comando » s » en radare2 se utiliza para «buscar» datos dentro del código. Como se muestra en la 8, se utiliza para buscar la clave «contraseña» dentro del código. Tenga en cuenta que la dirección cambia del punto de entrada 0x00401500 a la dirección donde se encuentra la clave: 0x00488019 . Ejecutar el comando s Entry0 en cualquier momento nos devolverá a la dirección inicial 0x00401500 que se muestra en la 10.

8. Búsqueda de palabras clave dentro de un código binario

9. Palabra clave encontrada en la dirección 0x140008b14

10. Regreso al punto de entrada

Para continuar con el análisis del código, podemos cambiar al modo visual con el código “ V ”. Esto presenta la vista hexadecimal del modo visual que se muestra en la 12.

11. Cambio al modo visual para análisis de código

12. Editor hexadecimal en radare2

Dado que los resultados del editor hexadecimal no son en realidad lo que necesitamos ver, podemos cambiar la vista usando el comando p y la tecla de flecha hacia abajo hasta llegar al rango de direcciones 0x00401563 a 0x004015bb . En este rango de direcciones vemos información clave, la contraseña radare2 , que nunca está disponible para el usuario durante la ejecución del programa.

13. Ver códigos ocultos en archivos binarios usando radare2

En lugar de cargar un ejecutable directamente en radare2, también podemos ejecutarlo con el modificador -d que carga el archivo binario en modo de depuración.

14. Lanzamiento de radare2 con la opción -d

Mientras está en modo de depuración, el archivo ejecutable se puede iniciar con el comando dc .

15. Lanzamiento de un archivo binario en modo de depuración

16. Comprobación del estado del registro en modo de depuración

Conclusión

Este artículo ha definido radare2 como un ejemplo de herramienta que puede utilizarse para deconstruir un software y revelar sus detalles más íntimos incluso si el código fuente no está disponible. También proporcionamos pasos prácticos sobre cómo deconstruir un ejecutable.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

Fuentes