Cómo eludir los controles de seguridad del software con ingeniería inversa

Cómo eludir los controles de seguridad del software con ingeniería inversa - Codelivly

A menudo nos encontramos con aplicaciones de software que están protegidas con contraseña o requieren ciertas condiciones para continuar. Una forma de lidiar con estas aplicaciones de software es romper la configuración de seguridad mediante un ataque de fuerza bruta. Sin embargo, el ataque de fuerza bruta puede llevar mucho tiempo. Por lo tanto, no es una solución ideal, especialmente en situaciones de tiempo limitado en las que necesitamos una respuesta rápida. La segunda opción es dividir el software en partes y completar/solucionar o completar el desafío. Esta técnica de desmantelamiento de código de software se conoce como ingeniería inversa. La ingeniería inversa juega un papel importante en la ciberseguridad, especialmente durante las pruebas de penetración y las tareas de análisis forense digital. Existen varias herramientas patentadas y de código abierto disponibles que pueden ayudar a los profesionales de la seguridad a diagnosticar aplicaciones de software mediante ingeniería inversa. OllyDbg es una de esas herramientas de código abierto que puede realizar ingeniería inversa sin tener el código fuente de la aplicación. Sin embargo, OllyDbg es un depurador de 32 bits. Las aplicaciones con arquitectura x64 no se pueden ejecutar en la herramienta OllyDbg. Hay otra herramienta de código abierto llamada x64dbg con apariencia y funcionalidad similares. El x64dbg tiene soporte adicional para programas x64. Este artículo presenta una breve comparación de las dos herramientas (OlyDbg y x64dbg) seguida de una aplicación de ingeniería inversa para demostrar técnicas de evasión de seguridad con estas herramientas.

Objetivos claves

1. Cómo instalar la herramienta OllyDbg

2. Una descripción general de las características de OllyDbg

3. Cómo instalar la herramienta x64dbg

4. Comparación de características x64dbg con OllyDbg

5. Cómo crear un programa ficticio x64 .exe

6. Cómo aplicar ingeniería inversa a las aplicaciones utilizando la herramienta x64dbg.

¿Cómo instalar OllyDbg?

OllyDbg es un depurador de software gratuito de 32 bits. La herramienta se puede utilizar para el proceso de depuración de software sin necesidad de código fuente. OllyDbg se puede descargar desde el siguiente enlace.

https://www.ollydbg.de/download.htm

La herramienta se descarga en formato zip. El proceso de extracción zip nos lleva al siguiente directorio que contiene todos los archivos de soporte, incluido el ejecutable del programa OllyDbg.

El OlyDbg no requiere ninguna instalación adicional. Simplemente abra la herramienta como se muestra en la siguiente captura de pantalla.

Características OllyDbg

Antes de ejecutar OllyDbg, es importante comprender los componentes básicos de la herramienta para conocer su funcionalidad. En tiempo de ejecución, el panel de OllyDbg aparece de la siguiente manera.

Para comprender mejor las características clave de OllyDbg, descarguemos un archivo ficticio del sistema.

Nota: este no es el archivo que depuraremos en la última sección de este artículo

El tablero se puede dividir en 4 secciones arriba a la izquierda, arriba a la derecha, abajo a la izquierda y abajo a la derecha. La sección superior izquierda muestra el código del programa depurado (instrucciones en lenguaje ensamblador).

Como sabemos, la arquitectura de la computadora incluye procesador, memoria y dispositivos de entrada/salida. La CPU tiene varios almacenamientos pequeños para almacenar los datos que se van a ejecutar. Estos lugares son técnicamente llamados registros. La sección superior derecha de OllyDbg muestra los registros actualmente en uso, que contienen diferentes conjuntos de datos para el archivo de muestra depurado actual.

La sección inferior izquierda es el volcado de memoria del programa depurado actual.

De manera similar, la esquina inferior derecha muestra el estado de la pila de las instrucciones que se ejecutan en OllyDbg. Stack es una abstracción o búfer de datos que almacena temporalmente las solicitudes de programas más recientes. Si miramos el tablero global de OllyDbg, vemos varias opciones, pestañas, etc. Todo esto convierte a OllyDbg en un potente depurador. Algunas características clave de la herramienta OllyDbg se explican a continuación.

Modo de ejecución de código: OllyDbg permite dos modos para ejecutar código de programa depurado. Podemos ejecutar todas las instrucciones del programa juntas o podemos ejecutar el código línea por línea. La última opción es una característica poderosa que permite analizar las declaraciones de código a un nivel muy básico.

Función Step-In/Step-Over: El código de aplicación depurado puede contener cientos de funciones y bibliotecas utilizadas en el programa. A veces es vital estudiar una función seguida de todas las funciones asociadas a ella. Esto se puede lograr con la función Step-In. A menudo vemos funciones que son genéricas o parte de una estrategia de ofuscación aplicada por el creador del software. Es mejor ignorar estas funciones. OllyDbg puede hacer esto usando la función Step Over.

Puntos de interrupción: Como sabemos, la mejor característica de OllyDbg es modificar y recompilar un programa depurado. Esta característica a menudo se denomina parche. Pero necesitamos tener la capacidad de suspender el programa en ciertas declaraciones para analizar el comportamiento o la salida del programa en esas declaraciones. Por ejemplo, supongamos que el malware (bajo revisión a través de OllyDbg) toma datos del disco duro y los cifra antes de enviarlos al servidor remoto. Estos datos encriptados son muy difíciles de entender. Sin embargo, podemos usar los puntos de interrupción justo antes de la declaración de cifrado para ver qué datos están cifrados.

El paquete x64dbg se puede descargar desde el siguiente repositorio.

https://x64dbg.com/#inicio

Después de la descarga, descomprima el directorio descargado. Ejecute el siguiente archivo de aplicación para poner en marcha el ejecutable x64dbg.

Características de X64dbg

El panel x64dbg se parece casi a la herramienta OllyDbg.

La herramienta tiene 4 secciones similares a OllyDbg. La sección de volcado tiene más opciones para volcados en comparación con OllyDbg.

El x64dbg también contiene características como ejecución personalizada, paso a paso, puntos de interrupción, etc. La característica principal que hace que x64dbg sea la opción preferida es su capacidad para ejecutar aplicaciones de 32 bits/64 bits. Por lo tanto, en este tutorial usaremos la herramienta x64dbg ya que estamos usando una aplicación de 64 bits con fines de demostración.

Cómo crear una aplicación exe de demostración para la depuración

Hay muchos repositorios en línea disponibles que ofrecen aplicaciones de demostración gratuitas para practicar técnicas de ingeniería inversa. Sin embargo, elegimos crear nuestra propia aplicación. El propósito de crear un código de aplicación personalizado es simplificar el concepto de depuración. Logramos la tarea escribiendo un código simple en programación C usando el compilador Codeblocks. El compilador Codeblocks se puede descargar a través del siguiente enlace.

https://www.codeblocks.org/downloads/

Después de descargar e instalar Codeblocks, abre la consola dándole al programa un nombre de proyecto. Llamamos a este proyecto "hackingloops-pass". En el siguiente paso, escriba el código deseado para compilarlo. Dado que vamos a demostrar cómo omitir una verificación de seguridad con la herramienta x64dbg, escribimos el siguiente código en el compilador.

El compilador Blockcodes compila el código y crea automáticamente un archivo ejecutable (aplicación) del código en la carpeta bin.

Resumen de códigos: El código anterior toma la entrada del usuario como un porcentaje de puntuación. Si la puntuación del usuario es mayor o igual a 75, se le recibe con el siguiente mensaje de bienvenida: La siguiente captura de pantalla ilustra el concepto.

"Bienvenido a www.hackingloops.com"

Si el usuario ingresa una puntuación inferior a 75, se le advierte con la siguiente advertencia.

“¡Aléjate chico!

Objetivos de depuración: Ahora supongamos que solo tenemos el archivo ejecutable. Nuestra misión es pasar por alto el valor de puntuación de umbral de 75 para que podamos recibir el primer mensaje (de saludo) para cualquier número.

Cómo depurar usando la herramienta x64dbg

Como tenemos un archivo x64, usaremos la herramienta x64dbg para descompilar y depurar el programa. Al abrir el archivo hackingloops-pass en x64dbg, se desarmará el archivo en diferentes secciones, como se muestra en la siguiente captura de pantalla.

Hay varias formas de iniciar el proceso de depuración. Sin embargo, la mejor práctica es buscar las cadenas que aparecen en el cuadro de diálogo del software durante la interacción del usuario con el software. En x64dbg podemos hacer esto haciendo clic derecho en la sección del panel de código/instrucciones y seleccionando las opciones de cadenas de referencia a través de la opción de búsqueda.

Esta acción nos lleva a la vista del tablero que contiene todos los canales del programa. Nuestro objetivo es encontrar cadenas que pertenezcan a mensajes de éxito o error que se muestran después de la entrada del usuario. Estas cadenas se pueden ver en la siguiente captura de pantalla.

A partir de las cadenas anteriores, podemos interpretar la situación. La primera cadena pertenece a la entrada del usuario. La segunda cadena hace la comparación. El programa muestra una de las dos cadenas restantes en el área resaltada, dependiendo de la entrada del usuario. Si hacemos doble clic en la cadena vinculada a la acción de comparación, x64dbg nos lleva a la dirección exacta del proceso, como se muestra en la siguiente captura de pantalla.

Teóricamente, si deshabilitamos esta comparación, el programa omitirá la verificación de puntaje umbral (75) y nos llevará al "mensaje de bienvenida" para cualquier puntaje. La comparación se puede deshabilitar modificando los registros con valores nulos como se muestra en la siguiente captura de pantalla.

Ahora podemos volver a compilar el código desensamblado a través de la opción de parche en la herramienta x64dbg.

Haga clic en la opción de archivo de parche y guarde el código con cualquier nombre. Guardamos el programa con el nombre "hacking-loops-modified.exe".

Ahora podemos ejecutar y probar la aplicación modificada. Primero, proporcionaremos una puntuación por encima del valor umbral de 75 para ver la respuesta. La aplicación recibió con el mensaje de bienvenida con más de 75 entradas de puntuación.

Ahora insertemos un número más pequeño (por ejemplo, 35) para ver si pudimos omitir el protocolo de umbral de la aplicación.

El programa muestra el mismo mensaje de saludo que se esperaba. Por lo tanto, logramos eludir la condición de 75 como valor de umbral para el mensaje de bienvenida.

Aplicamos el saludo simple en la demostración. La misma idea se puede aplicar al software que requiere una contraseña para continuar o cumple otras condiciones.

Conclusión

La ingeniería inversa es una gran habilidad para modificar software sin código fuente. Los evaluadores de penetración y los expertos en análisis forense digital pueden usar esta habilidad para lograr objetivos como ingresar al software y realizar análisis de datos en aplicaciones restringidas. Herramientas como Ollydbg y x64dbg proporcionan un entorno gráfico excelente para realizar estas tareas. Sin embargo, una sólida comprensión del lenguaje ensamblador y la arquitectura de la computadora es imprescindible para usar estas herramientas.

Si quieres conocer otros artículos parecidos a Cómo eludir los controles de seguridad del software con ingeniería inversa puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas