Análisis de malware

Técnicas antianálisis de malware y formas de evitarlas

mayo 2, por Ninja de seguridad

Esta serie de artículos se centrará en varias técnicas antianálisis utilizadas por el malware y luego analizaremos varias formas en las que los analistas pueden eludir las técnicas antianálisis para considerar todos los artefactos del malware. En este artículo, nos centraremos en las técnicas anti-análisis y en una forma muy básica de evitar la técnica.

Los analistas emplean varias técnicas para analizar un malware, como generar una máquina virtual aislada y luego capturar artefactos, ejecutar malware en entornos de pruebas automatizados, etc., pero la mayoría del malware se ha vuelto sofisticado ahora y verifica los entornos en los que opera, y sólo cuando ven el entorno libre exhiben todas sus características. A continuación se detallan algunas de las técnicas antianálisis que emplea el malware para protegerse de ser analizado.

Ahora que hemos visto las formas más comunes en que el malware emplea comprobaciones para las técnicas de diferentes analistas, veamos un ejemplo en el que un malware comprueba si el depurador está presente o no en el sistema y luego cómo podemos evitar esa comprobación de malware y continuar analizándolo.

Debajo del malware, el ejemplar se ejecuta normalmente cuando se inicia en el sistema y se conecta a su servidor CC, pero tan pronto como se carga en OllyDBG, simplemente finaliza.

Entonces, carguemos el malware en Ollydbg y antes de ejecutarlo consideremos los nombres utilizados por este espécimen presionando Ctrl+N.

Vemos que este malware utiliza IsDebuggerPresent, lo que significa que de alguna manera busca la presencia de un depurador. Veamos la referencia de esta llamada API.

Solo hay una referencia a la llamada API, sigamos ahora el código en dissembler. Haga clic derecho y siga en disembler. A continuación se muestra el código en el disimulador.

Ahora IsDebuggerPresent devuelve 1 si el depurador está presente en el sistema; de lo contrario, 0. Pruebe EAX, EAX está probando esta condición. Pongamos un punto de interrupción en 01001296 y ejecutemos la muestra. Vemos que EAX devuelve 1, ahora, si continuamos ejecutándolo, el código salta a 0100146D y luego termina.

Entonces, si podemos hacer algo con el código presente en 010014D, entonces este espécimen no terminará y continuará ejecutándose. ¿Deberíamos cambiar el código en 010014D? Probablemente no es una buena idea. ¿Qué pasa si cambiamos la instrucción JMP por completo y la cambiamos a JZ? Bueno, eso resuelve nuestro propósito en este caso, pero funcionará si el espécimen está dentro de un depurador, de lo contrario terminará (porque fuera de IsDebuggerPresent siempre dará 0 y, por lo tanto, JZ siempre se ejecutará).

Lo que podemos hacer en este caso es parchear el código. Parchear el código es cuando reemplazamos alguna instrucción sin afectar la funcionalidad del binario. Existe una instrucción NOP cuyo propósito es no realizar ninguna operación. Sustituyamos JNZ por NOP para evitar el salto por completo.

Coloque NOP en la dirección 01001298. Asegúrese de que la casilla Mantener tamaño y llenar el resto con NOP esté marcada. Esto se debe a que NOP tiene solo 1 byte, mientras que la instrucción que reemplaza tiene 6 bytes, por lo que para llenar perfectamente la dirección de memoria estas opciones son útiles. A continuación se muestra el código parcheado.

Después de parchear esto, ejecutemos el código y, como era de esperar, ahora el malware se engaña diciendo que no está siendo depurado en este caso y continúa su ejecución.

¡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

Entonces, en este artículo, hemos visto las diversas comprobaciones que utiliza el malware para vencer a partir de técnicas de análisis y un ejemplo básico de cómo podemos evitar dichas técnicas de malware también. EN la siguiente parte veremos otras comprobaciones de malware y su forma de eludirlas.