Técnicas de Bypass y Evasión de Antivirus más Comunes
Técnicas de Bypass y Evasión de Antivirus más Comunes

Técnicas de Bypass y Evasión de Antivirus más Comunes

Cada día nos enteramos de diferentes ataques, vulnerabilidades, brechas, etc. Es difícil luchar cuando no se sabe quién es el enemigo. Nuestras organizaciones construyen un fuerte muro antivirus para detectar todos esos ataques. Pero en la mayoría de los casos, no los detecta.

Cada vez que se concibe, se crea y se libera en la naturaleza una nueva raza de virus, se realiza otro pequeño cambio en el software antivirus para combatir la nueva amenaza. Si el antivirus funciona, no habrá trabajo para el equipo de defensa. No se puede tener un programa Antivirus y estar más seguro.

Entendiendo el Antivirus

Cómo funciona el motor Antivirus y una posible evasión
Cómo funciona el motor Antivirus y una posible evasión

El software antivirus está diseñado para detectar e impedir que los archivos y procesos maliciosos se propaguen por el sistema operativo, protegiendo así el punto final de su ejecución. Los motores antivirus han evolucionado con el tiempo, haciéndose más inteligentes y sofisticados, pero la base sigue siendo la misma en la mayoría de las soluciones. La mayoría de los programas antivirus actuales se basan en unos pocos motores, cada uno con su propio conjunto de objetivos, como se indica a continuación:

  • Motor estático
  • Motor dinámico (incluye el motor de caja de arena)
  • Motor heurístico
  • Motor de desempaquetado

Motor estático

Como su nombre indica, el motor estático es sumamente sencillo. El motor estático del software antivirus realiza comparaciones de los archivos existentes en el sistema operativo con una base de datos de firmas, y de este modo puede identificar el malware.

Es imposible identificar todo el malware que existe utilizando firmas estáticas porque cualquier cambio en un archivo de malware concreto puede eludir una firma estática concreta, y quizás incluso eludir completamente el motor estático.

Su objetivo es utilizar firmas estáticas, como la firma YARA, para identificar las amenazas. Estas firmas se escriben cada cierto tiempo y son actualizadas por los analistas de seguridad antivirus casi a diario.

Motor dinámico

El motor dinámico es un nivel superior al motor estático, y su trabajo es examinar el archivo en tiempo de ejecución utilizando una variedad de formas.

  • Primer método: monitorización de la API: El objetivo de la monitorización de la API es interceptar y detectar las peticiones maliciosas de la API en el sistema operativo. Se utilizan hooks del sistema para monitorizar las APIs.
  • Segundo método – sandboxing: Una caja de arena es un entorno virtual separado de la memoria del ordenador anfitrión físico. Esto permite detectar y analizar el software malicioso ejecutándolo en un entorno virtual en lugar de hacerlo directamente en la memoria del ordenador físico.

Ejecutar el malware en un entorno de caja de arena es eficaz contra él, especialmente si no está firmado e identificado por el motor estático del software antivirus.

Una de las principales limitaciones de un motor de sandbox como éste es que el malware sólo se ejecuta durante un breve período de tiempo. Los investigadores de seguridad y los actores de las amenazas pueden averiguar cuánto tiempo se ejecuta el malware en una caja de arena, detener la actividad maliciosa durante ese tiempo y luego ejecutar la funcionalidad maliciosa designada.

Motor heurístico

La detección basada en heurística es un método que, basándose en reglas de comportamiento predefinidas, puede detectar el comportamiento potencialmente malicioso de los procesos en ejecución. Utilizando un motor heurístico, el software antivirus se vuelve aún más avanzado. Este tipo de motor determina una puntuación para cada archivo realizando un análisis estadístico que combina las metodologías del motor estático y dinámico. Algunos ejemplos de reglas son:

  • Si un proceso intenta interactuar con el proceso LSASS.exe que contiene los hashes NTLM de los usuarios, los tickets Kerberos, etc.
  • Si un proceso que no está firmado por un proveedor de confianza intenta escribirse a sí mismo en una ubicación persistente
  • Si un proceso abre un puerto de escucha y espera recibir comandos de un servidor de Comando y Control (C2)

La principal desventaja del motor heurístico es que puede dar lugar a un gran número de falsos positivos, pero también es fácil aprender cómo funciona el motor y evitarlo mediante una serie de pruebas básicas de ensayo y error.

Técnicas de Evasión de Antivirus

Los siguientes son algunos de los métodos más frecuentes utilizados por los hackers para evitar la detección del antivirus:

Obfuscadores (Obfuscators)

La ofuscación del malware es uno de los métodos más utilizados por los atacantes. Esta técnica dificulta la lectura y la comprensión del código, al tiempo que mantiene su funcionalidad. La ofuscación también se utiliza para engañar a las herramientas antivirus y otros programas que se basan en las firmas digitales para interpretar el código.

  • La ofuscación simplemente distorsiona el malware manteniendo su forma. Un ejemplo sencillo sería aleatorizar las mayúsculas y minúsculas de un script de PowerShell.
  • La función es la misma, a PowerShell no le importa el caso de los caracteres, pero puede engañar a un simple escaneo basado en firmas.
  • Reorganizan y modifican el código de tal manera que es prácticamente difícil hacer ingeniería inversa y averiguar qué está haciendo en los discos. Pueden introducir código muerto o modificar la semántica de las instrucciones existentes con código igualmente peligroso.

Ejemplos de Obfuscadores:

  • Shellter
  • HanzoInjection (https://github.com/P0cL4bs/hanzoInjection)
  • FuckThatPacker (https://github.com/Unknow101/FuckThatPacker)
  • Chimera (https://github.com/tokyoneon/Chimera)
  • LoGiC.NET (https://github.com/AnErrupTion/LoGiC.NET)
  • Invoke-Obfuscation (https://github.com/danielbohannon/Invoke-Obfuscation)
  • Simple-Loader (https://github.com/cribdragg3r/Simple-Loader)

Cifradores (Crypters)

Ejemplo de un Crypter
Ejemplo de un Crypter

El cifrado elimina de forma efectiva la capacidad de los antivirus de detectar el malware sólo a través de la firma. Los autores de malware suelen utilizar “crypters” para cifrar sus cargas útiles (payloads) maliciosas. Los crypters cifran un archivo y adjuntan un “Stub”, un programa que descifrará el contenido y lo ejecutará. Hay dos tipos de crypters:

  • Los “crypters en tiempo de escaneo” son los más ingenuos y simplemente descifran la carga útil, la colocan en el disco y la ejecutan.
  • Los “crypters en tiempo de ejecución” utilizan varias técnicas de inyección de procesos para descifrar la carga útil maliciosa y ejecutarla en la memoria, sin tocar nunca el disco.

Process Hollowing (Vaciado de Procesos)

  • El “Process Hollowing” es uno de los métodos de inyección de procesos más comunes utilizados por los crypters en tiempo de ejecución. El stub primero crea un nuevo proceso en estado suspendido utilizando un ejecutable completamente legítimo como explorer.exe. A continuación, “vacía” (“hollows“) este proceso desmapeando la memoria del proceso legítimo y sustituyéndola por la carga útil maliciosa antes de reanudar el proceso.
  • Aunque existen numerosas técnicas de inyección de procesos, el objetivo principal de los crypters en tiempo de ejecución sigue siendo el mismo: descifrar una carga útil maliciosa y ejecutarla sin permitir que toque el disco y dar así tiempo al antivirus para examinar el archivo en profundidad.

Process Ghosting

El “Process Ghosting” permite que el malware se escriba en el disco de tal manera que sea difícil de escanear o eliminar, tras lo cual un atacante puede ejecutar remotamente el programa virtual como si fuera un archivo ordinario en el disco. Es posible implementar este método porque es posible falsificar un archivo ejecutable antes de que sea escaneado por los productos antivirus, dentro de un cierto período de tiempo entre el momento en que se crea el proceso y el momento en que los productos de seguridad “lo conocen”. El método se describe en detalle en este artículo.

Inline Hooking

Creamos una especie de ruta de subrutina, en la que añadimos algo de código y cambiamos el flujo de ejecución para que nuestro código malicioso se ejecute en algún punto entre la ejecución normal de la función y ésta complete su trabajo con normalidad, sin que el usuario se dé cuenta de que ha hecho algo malo.

Empaquetadores (packers)

Los packers se utilizan para reducir el tamaño de la carga útil. Antes, los códigos maliciosos se comprimían con WinRAR. Sin embargo, hoy en día, los empaquetadores reducen el tamaño del ejecutable creando una estructura binaria completamente nueva para el archivo en el disco.

Ejemplo packer o empaquetador PowerShell

Protectores (Protectors)

Los protectors fueron creados para evitar que cualquier código sea revertido, depurado o probado a través del método de emulación de la máquina virtual. Sin embargo, al construir la carga útil detrás de la protección y enviarla a la víctima, podemos utilizar esta funcionalidad para engañar a las soluciones antivirus.

Otros Métodos de Bypass de Antivirus

Ejemplo de evasión antivirus y antimalware
Ejemplo de evasión antivirus y antimalware
  • Secuestro de DLL: Esta técnica de evasión antivirus consiste en ejecutar código malicioso a través de un archivo de confianza mediante la suplantación de una DLL. Para evitar su detección, los archivos DLL infectados imitan la firma digital de la aplicación.
  • Uso de servicios web conocidos: Los servicios web conocidos pueden utilizarse para ocultar los canales de control y proporcionar un encubrimiento adicional, como en el caso del grupo Carbanak, que almacenaba sus scripts en Google Docs y Pastebin.
  • Living off the land: Se trata de una clase de técnicas en las que un atacante utiliza medios legítimos y capacidades incorporadas al sistema operativo para lograr sus objetivos: descargar archivos, ocultar y ejecutar código. Algunos ejemplos son el conjunto de herramientas de Sysinternals (PSexec), las utilidades integradas en el sistema operativo rundll32.exe, regsvr32.exe, msbuild.exe y las capacidades de PowerShell. Hay ejemplos de técnicas disponibles en este repositorio (https://github.com/LOLBAS-Project/LOLBAS).
  • Eludir el AMSI (Anti-Malware Scan Interface): Los mecanismos AMSI utilizan la detección de amenazas basada en firmas. Se pueden utilizar varios métodos para eludir esta tecnología. Por ejemplo, el hooking de funciones (function hooking) permite tomar el control de una función antes de que sea llamada. Otro método, el de los parches de memoria, consiste en devolver un valor “Prueba superada con éxito” en cualquier caso. Esto se implementa utilizando NoAmci, AmsiScanBufferBypass y su modificación. Otro método muy conocido es el PowerShell downgrade, que se implementa invocando la versión 2.0 de PowerShell. Puedes encontrar algunos ejemplos aquí (https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell).

Nota

Las técnicas anteriores se utilizan para evadir AV y la técnica más utilizada es la ofuscación. La implementación de una regla basada en ella en tu entorno ayudará a detectar los ataques relacionados con la ofuscación.

Palabras Finales de EsGeeks

Protección contra virus informáticos
Protección contra virus informáticos

Como se ha mostrado más arriba (específicamente los ejemplos de obfuscadores), el uso de tecnología de código abierto obsoleta sigue siendo una de las varias técnicas de evasión de antivirus que sortean con éxito los antivirus modernos. Sin embargo, las herramientas de código abierto tienen una corta vida útil, las herramientas más exitosas son creadas o vendidas de forma privada, de código cerrado, ya que las compañías antivirus no pueden encontrar tan fácilmente las firmas dejadas por estas herramientas sin el código fuente. Existen conocidos servicios y software de Crypter disponibles tanto en la web clara como en la oscura.

El antivirus es una herramienta valiosa en tu kit de herramientas; sin embargo, no es una bala de plata. Ahora que entiendes las técnicas comunes de evasión de antivirus, comprueba que tienes una ciberseguridad holística. Es imprescindible contar con un enfoque de seguridad de varias capas, que se compruebe periódicamente para detectar los puntos débiles y con un personal formado para evitar los ataques de phishing y examinar cuidadosamente el software antes de ejecutarlo.

¿Hay alguna técnica que se olvidó mencionar en este artículo? Comparte tus consejos o experiencias en la sección de comentarios.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda