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.