¿Sabes qué son los métodos antidebugging y por qué se utilizan en el desarrollo avanzado de malwares? Los programas maliciosos actuales son desarrollados con técnicas avanzadas que les permiten ocultarse, detectar y evadir los sistemas de ciberseguridad.
Por eso, para los analistas de malware es importante conocer y aprender a identificar estas técnicas, de lo contrario, podrían resultar exitosas.
Algunas técnicas avanzadas de desarrollo de malware les permiten a estos programas detectar cuándo están siendo ejecutados en entornos virtuales para su estudio. A estas técnicas se les conoce como métodos antisandbox.
Por otra parte, existen los métodos antidebugging, que son algunas funciones que utilizan los malwares para saber cuándo están siendo analizados.
Métodos antidebugging del malware
El debugging o la depuración de programas en informática se refiere a aquellas funciones que se utilizan en los softwares para encontrar y eliminar errores, también conocidos comúnmente como bugs. En consecuencia, los métodos antidebugging son algunas técnicas de desarrollo que les permiten a los programas saber cuándo están siendo depurados y, por ende, analizados.
Los métodos antidebugging en los malwares se concentran en el análisis de dos tipos de estructuras de datos:
- Hilos.
- Procesos.
Por lo tanto, a continuación, veremos dos tipos de métodos de antidebugging: uno relacionado con la depuración de hilos y otro con la depuración de procesos.
Thread environment block (TEB)
El término thread environment block (TEB) se refiere a una estructura de datos de Win32, específicamente de la arquitectura x86, cuya función es almacenar información acerca del hijo que se esté ejecutando en el sistema. La principal ventaja de utilizar TEB en el desarrollo de malware es que se puede recurrir a este sin necesidad de llamar a la API de Windows y, por ende, sin dejar rastro.
🔴 ¿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 semanaUn aspecto importante de la estructura TEB es que está disponible en el modo de usuario, es decir, la utilizan módulos como, por ejemplo, Kernel32 o NTDLL, y por eso, no necesita depurar el kernel para conseguir la información. Uno de los usos más frecuentes de la estructura es buscar librerías mediante importaciones (Kernel.dll, KernelBase.dll, Ntdll.dll) para cargar funciones como LoadLibrary o GetProcAddress.
Es válido aclarar que la información obtenida sobre los hilos que estén siendo ejecutados en el sistema es limitada, pero a la vez muy valiosa para un ciberatacante. Por ejemplo, la función GetProcAddress puede indicar en qué dirección de memoria está ejecutándose un proceso y se puede utilizar este conocimiento para inyectar código o realizar otras tareas maliciosas allí.
Process environment block (PEB)
El segundo tipo de métodos antidebugging está relacionado con en análisis los procesos que estén siendo ejecutados en el sistema, con el fin de saber si se está depurando el programa (y otras cosas más que ya veremos).
El 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. Cada proceso tiene su propio PEB y el kernel de Windows también tendrá acceso al PEB de cada proceso en modo de usuario, para que pueda realizar un seguimiento de ciertos datos almacenados en él, como:
- Contexto.
- Parámetros.
- Estructura de datos para el cargador de imagen.
- Dirección base para la imagen del programa.
- Objetos sincronizados para concurrencia del proceso.
¿Cómo se utiliza la estructura PEB en el desarrollo de malware? Por ejemplo, se puede utilizar para inyectarle una DLL a otro proceso, donde una vez hecho se accede al PEB del proceso y se elimina el nombre del módulo inyectado y, así, puede pasar totalmente desapercibido.
Adicionalmente, la estructura PEB tiene un campo llamado BeingDebugged, el cual muestra si existe algún proceso de depuración en el sistema, de modo que se usa en el desarrollo de malware para que los programas reconozcan si están siendo debuggeados y detenerse.
La función de la API de los sistemas operativos de Windows IsDebuggerPresent (kernelbase) lo que hace es consultar este campo de la estructura PEB. Sobre esta, es necesario destacar que cuenta con dos campos que también pueden ser consultados por un malware, ya que estos están diseñados para protegerse de ellos:
- IsProtectedProcess.
- IsProtectedProcessLight (PPL).
Ya conoces los dos tipos de métodos antidebugging que se utilizan en el desarrollo avanzado de malwares. Si quieres aprender más sobre análisis de malware y convertirte en un experto, en KeepCoding tenemos un curso ideal para ti. Entra a nuestro Bootcamp de Ciberseguridad y especialízate en tan solo 7 meses. ¿A qué esperas para perseguir tus metas? ¡Inscríbete ya!