Técnicas de Evasión de Antivirus

Los antivirus funcionan principalmente mediante la detección de firmas conocidas relacionadas con malware o con las herramientas empleadas para su desarrollo. Metasploit es una herramienta muy conocida, por lo que cuando se genera un shellcode con msfvenom será detectado y bloqueado por prácticamente todos los antivirus. Se pueden modificar las firmas con diversas técnicas que se mencionarán posteriormente, aunque estos cambios generalmente no serán efectivos contra herramientas que basen su detección en análisis del comportamiento.

Esto representa un problema tanto durante la explotación como durante la post-explotación, cuando se intenta desplegar y ejecutar código en el equipo cliente, por lo que será necesario utilizar distintas técnicas tendentes a reducir o evitar completamente la detección. Entre las más comunes se pueden citar las siguientes:

  • Cerrar el antivirus: se trata de una medida extrema que impedirá que detecte los archivos generados por el pentester, pero exponiendo el equipo a malware real. No se debe emplear nunca en acciones de pentesting, sobre todo en entornos de producción.
  • Ejecución en memoria: su eficacia se basa en que las posibilidades de detección disminuyen, dado que no se descarga el archivo malicioso en el disco duro. Sin embargo, el riesgo no se elimina del todo y cada vez es más común que sea detectado.
  • Uso de scripts en lugar de ejecutables: en ocasiones se podrá utilizar PowerShell para realizar acciones que no serán detectadas por el antivirus, pero, al igual que en el caso anterior, cada vez es una medida menos eficaz.
  • Compilación manual de un código fuente utilizando diferentes opciones: si las firmas están generadas para una forma de compilar un código fuente, cabe la posibilidad de disminuir la posibilidad detección utilizando parámetros de configuración diferentes.
  • Usar herramientas y payloads propios: es una de las técnicas más eficaces, dado que si el código es totalmente original ningún fabricante de antivirus tendrá firmas.
  • Ghost writing: se trata de una técnica de manipulación de código consistente en desensamblar un exploit compilado, añadir o modificar algunas instrucciones en ensamblador que no afecten al funcionamiento del mismo, y volverlo a compilar.
  • Encoders: con la utilización de encoders se modifica el payload original para que las firmas no coincidan con las que detecta el antivirus. Cuanto más popular sea el encoder utilizado, más difícil será evitar la detección.
  • Packers: son aplicaciones que utilizan un algoritmo para generar un archivo ejecutable que contiene los datos comprimidos y el código para descomprimirlos. Al ejecutar el binario, el payload se descomprime y se ejecuta en memoria. Algunas de las packers más utilizados son UPX, FSG, PECompact, o mpress.
  • Binders: estos programas se utilizan para embeber código malicioso en binarios legítimos. Algunos ejemplos son Exejoiner o Exebinder. msfvenom también se puede utilizar para realizar esta acción.
  • Crypters: cifran el ejecutable con el propósito de dificultar el análisis por parte del antivirus. Cuando se cifra un payload con un crypter se genera una parte sin cifrar denominada stub, que es la que se ejecuta en primer lugar. El stub realiza tres acciones: busca el payload cifrado en el binario, localiza la clave de cifrado, y lo descifra directamente en memoria sin que toque el disco. Un crypter bastante conocido es Hyperion.

A pesar de haber enumerado un buen número de técnicas, para tener una mayor probabilidad de éxito es necesario combinar varias de las técnicas anteriores. Existen herramientas que facilitan esta tarea, entre las que se pueden destacar Shellter, The Backdoor Factory, Veil-Framework, Magic Unicorn y Ehowla.

Los diferentes desarrolladores de productos de seguridad utilizan diferentes tecnologías y pueden manejar diferentes firmas, por lo que una técnica que resulte efectiva en un caso podría ser totalmente inútil en otro. Es decir, no existe una herramienta ni técnica mágica, la mejor será la que permita evitar la detección en el entorno y momento concretos en el que se realicen las acciones ofensivas. La correcta identificación del antivirus empleado por la organización resultará de gran importancia para poder realizar pruebas en un entorno de laboratorio.

Un error muy común cuando se realizan pruebas para evadir antivirus es subir los archivos a servicios de análisis de malware como Virus Total. Esto es un error, dado que ese tipo de servicios comparten las muestras subidas con los desarrolladores de antivirus, por lo que aunque no sea detectado en este momento podría serlo en un breve plazo de tiempo. La mejor manera de probar la detección es instalar el antivirus en un equipo no conectado a Internet.