¿Cómo funciona el antidebugging de un malware y por qué los ciberatacantes utilizan este método? Los malwares más modernos cuentan con funciones para evadir los sistemas de ciberseguridad. A la hora de analizarlos, además de sus tareas maliciosas, es necesario fijarnos en las técnicas que utilizan sus creadores para ocultar el virus y permitirle que pase desapercibido en entornos virtuales y ante programas antimalware.
Por una parte, los malwares modernos son capaces de detectar con un buen nivel de acierto cuándo están siendo ejecutados en un entorno virtual, es decir, en una sandbox. Por otro lado, los desarrolladores de malware también utilizan técnicas para detectar la depuración de procesos en el sistema, los cuales son un indicador de que el malware está siendo analizado.
Las técnicas para detectar y evitar la depuración de programas en el sistema se conocen como métodos antidebugging. El debugging consiste en identificar, corregir y eliminar los errores o bugs en un software. En el contexto del análisis de malware, cuando este está siendo depurado, quiere decir que está siendo estudiado por alguien. Por eso, el debugging está totalmente en contra de los intereses de los ciberatacantes.
En este post, hablaremos sobre cómo funciona el antidebugging de un malware y por qué es importante conocer este proceso.
¿Cómo funciona el antidebugging de un malware?
Para entender cómo funciona el antidebugging de un malware es necesario saber cómo funciona el debugging como tal.
El debugging, como lo explicábamos antes, consiste en la función informática de encontrar y reparar fallos en un software. Para ello, se hace el uso de breakpoints o puntos de ruptura, los cuales son la base de todos los procesos de depuración. Así pues, los métodos antidebugging consisten en identificar dichos breakpoints y deshabilitarlos para su conveniencia.
Breakpoints
🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaLos breakpoints o puntos de ruptura son interrupciones que permiten hacer un análisis detallado de un proceso en un programa. Mediante dichas interrupciones, se pueden analizar problemas de funcionamiento. Además, son útiles para la identificación y el análisis de malwares.
Existen tres tipos de breakpoints en programación, los cuales intentarán ser identificados y deshabilitados o evadidos por los malwares con sus métodos de antidebugging:
- Interrupción del software: se encarga de reemplazar la instrucción original con 0xCC y aumentar la rutina de interrupción, para que el depurador lo maneje.
- Interrupción de hardware: se basa en los registros de depuración DR0 … DR4 proporcionados por el procesador. Cuando se alcanza uno de ellos, el sistema operativo activa la interrupción INT 1.
- Interrupción de la memoria: se llama al controlador de excepciones para poder acceder a una página de protección especificada.
Entonces, para responder a cómo funciona el antidebugging de un malware, hay que saber que este cumple con tres acciones generales:
- Detección de 0xCC bytes para reconocer interrupciones en el software.
- Detección de puntos de interrupción de hardware. En principio, los dos métodos más comunes para estos son: GetThreadContext/SetThreadContext API y la verificación directa de DR. El segundo método se usa para configurar su propio SEH y causar una excepción (es decir, xor eax, eax/div eax) con el fin de obtener acceso directo a los registros de depuración en el controlado.
- Detección de páginas de protección, que se basa en la imitación del comportamiento del depurador. Es decir, se ejecuta la creación de la página de memoria PAGE_GUARD y el acceso a ella y, anteriormente, se coloca la dirección de retorno en la pila. De esta forma, si se produce STATUS_GUARD_PAGE_VIOLATION, se supone que no hay ninguna depuración.
Métodos antidebugging
Ya sabes cómo funciona el antidebugging de un malware. Ahora, te explicaremos en qué consisten los dos métodos principales que existen para esta técnica.
- Thread environment block (TEB): es una estructura de datos de Win32 de la arquitectura x86, cuya función es almacenar información sobre el hilo que se está ejecutando. Permite recurrir a esta información sin necesidad de llamar a la API de Windows.
- Process environment block (PEB): es una estructura que contiene datos sobre el proceso en ejecución, donde algunos campos son estructuras en sí mismos con el fin de contener aún más información.
Ya has aprendido cómo funciona el antidebugging de un malware, pero ¡aún queda mucho más por aprender para convertirte en un experto en análisis de malware! Para continuar con tu proceso de formación en este sector, entra en nuestro Ciberseguridad Full Stack Bootcamp y especialízate en tan solo 7 meses. ¡No sigas esperando y consigue tu plaza ahora!