Seguridad

Windows Defender vs. Rubeus: ¿Quién ganará?

Introducción

En la edición anterior, discutimos cómo evadir Rubeus comprendiendo y analizando las reglas YARA que actúan como base de detección. Sin embargo, esto no fue suficiente, ya que al intentar ejecutar la herramienta en un entorno con Windows Defender, esta seguía siendo detectada. Esto se debe a que aún existen medidas de seguridad adicionales que deben ser sorteadas, y precisamente esto es lo que abordaremos en esta entrada.

Objetivo

Seguimos enfocándonos en la evasión de análisis estático del binario, por lo que la estrategia principal continúa siendo su modificación. Windows Defender no proporciona un listado de las reglas de detección de la misma manera que las reglas YARA, lo que hace que el proceso de detección y evasión sea más tedioso y desafiante.

Para esta tarea, utilizaremos una herramienta desarrollada por Daniel Duggan llamada ThreatCheck. Esta herramienta explota el binario de escaneo de Windows Defender para realizar múltiples consultas, utilizando un enfoque basado en el algoritmo de «divide y vencerás».


El proceso es relativamente simple: el binario se divide en mitades, y cada segmento se escanea hasta identificar la porción marcada por Windows Defender como maliciosa. Luego, esa porción se subdivide en fragmentos más pequeños, repitiendo el proceso hasta localizar la zona exacta que provoca la detección. A diferencia de las reglas YARA, que devuelven todas las ejecuciones marcadas como maliciosas, ThreatCheck no actúa de esta manera. Una vez que se modifica la primera detección, si existen más segmentos problemáticos, será necesario repetir el escaneo hasta que el binario quede completamente limpio.

Ejemplo


Para el siguiente ejemplo, utilizaremos el mismo binario de Rubeus después de aplicar las reglas yara. Antes de comenzar con el escaneo, se debe desactivar el Windows Defender, así no escaneará y eliminará el binario.

El formato de ejecución de la herramienta es el siguiente 


En la primera iteración detecta una zona del binario que hace múltiples referencias a la palabra “Ticket” en los nombres de las funciones.


Hay que tener en cuenta que determinados cambios pueden conllevar a cambiar la funcionalidad de la aplicación. En la siguiente imagen se puede observar que cambiando “ticket” por “boletu” se modifica un parámetro inicial. 

La versión final del Rubeus no contemplara /ticket, sino /boletu para las ejecuciones posteriores. Hay que tener en cuenta el “case sensitive” y modificar “ticket” y “Ticket” respectivamente con la opción seleccionada.



Una vez realizada la modificación, Rubeus ya no es detectado en la sección de bytes anterior y nuevamente aparece una nueva detección por llamadas a las funciones de DiffieHellMan. Modificando la palabra “DiffieHellmanKey” por “DiffieHellmanClave” se debería evitar la detección.


Finalmente se muestra otro segmento de bytes detectado como malicioso haciendo referencia a tickets “.kirbi”. Esta extensión es altamente detectable, por lo que modificando el literal de salida a “.rosa” se consigue evadir.



Una nueva iteración sobre el binario debería marcar Rubeus como un binario no detectable. Si activamos Windows Defender y le añadimos la opción de escaneo de AMSI, en este caso no lograra encontrar ninguna detección, quedando Rubeus totalmente evadido en el laboratorio planteado.


Si en algún punto del proceso se obtiene el siguiente resultado o similar, se debe al modo de compilación usado en Visual Studio


Modificando a x64 en modo “Release” evitariamos la deteccion. Esto se debe a que el modo debug deja diferentes trazas que puede ser facilmente detectables por los antivirus si existe alguna regla en ellas.


Conclusiones

En esta entrega hemos explorado diversas técnicas para realizar una evasión efectiva de Windows Defender, uno de los sistemas de protección más utilizados en entornos corporativos y personales. Nuestro enfoque ha estado dirigido a la eliminación de Indicadores de Compromiso (IOC) y trazas características de herramientas conocidas, las cuales suelen ser rápidamente identificadas y bloqueadas en sistemas protegidos. Sin embargo, en escenarios del mundo real, la complejidad de los mecanismos de detección es considerablemente mayor, lo que hace que estas modificaciones básicas resulten insuficientes frente a las soluciones avanzadas de Antivirus (AV) y, especialmente, las de Endpoint Detection and Response (EDR).
Para comprender mejor estos desafíos, es fundamental analizar los factores que dificultan la evasión en entornos con soluciones de seguridad avanzadas:

  • Reglas de detección propietarias: Cada producto de seguridad posee un conjunto de reglas diseñadas para identificar actividades sospechosas. Estas reglas no son públicas y varían entre fabricantes, lo que significa que lo que funciona contra una solución puede fallar frente a otra. Muchas de estas reglas se actualizan de forma continua, haciendo que técnicas de evasión previamente funcionales puedan volverse obsoletas en poco tiempo. Además, algunas soluciones utilizan inteligencia artificial para identificar variaciones en los patrones de ataque, lo que las hace aún más difíciles de evadir.
  • Análisis dinámico y heurístico: Además del uso de firmas para detectar amenazas, los EDR modernos incorporan tecnologías de análisis de comportamiento. Esto significa que no solo buscan patrones conocidos en los archivos ejecutables, sino que también supervisan su interacción con el sistema operativo en tiempo real. Por ejemplo, si una herramienta intenta inyectar código en otro proceso o acceder a credenciales, es posible que se active una alerta sin necesidad de una firma específica. Incluso, algunas soluciones generan entornos controlados o sandboxes para ejecutar potenciales amenazas y analizar su comportamiento antes de permitir su ejecución en el sistema real.

Dada la evolución de estos mecanismos de defensa, han surgido herramientas de ofuscación que permiten modificar binarios y scripts para hacerlos menos detectables. Un ejemplo de esto es InvisibilityCloak, una herramienta diseñada específicamente para entornos en C# que permite manipular proyectos y generar binarios modificados con el objetivo de reducir la probabilidad de detección por parte de soluciones AV y EDR.

A pesar de contar con herramientas de automatización, la evasión efectiva de defensas requiere algo más que simplemente aplicar técnicas conocidas. Es crucial entender en profundidad tanto el funcionamiento de las herramientas que se desean emplear como el entorno en el que se van a ejecutar. Además, es imprescindible mantenerse actualizado sobre los avances en detección y desarrollar enfoques dinámicos que permitan adaptarse continuamente a la evolución de las soluciones de seguridad. En muchos casos, la combinación de varias técnicas y la prueba constante en entornos de laboratorio pueden marcar la diferencia entre ser detectado o pasar desapercibido.
Axel Losantos, Senior Offensive Security Consultant en Zerolynx (by Cybertix).

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.