Ghost AcademyGhostOffensive · Ghost Academy
GhostOffensiveMódulo 11Con laboratorio

Evasión de antivirus

Un antivirus decide si un fichero es sospechoso aplicando reglas. Entender cómo son esas reglas explica dos cosas a la vez: por qué a veces marcan como maliciosa una herramienta legítima de pentesting, y por qué las reglas mal diseñadas se dejan engañar con cambios triviales. Este módulo trabaja el lado conceptual, con un motor de juguete, para que veas los dos ángulos.

Enfoque de esta unidad. No se ataca ningún antivirus real ni se genera nada dañino. El laboratorio usa un motor propio de análisis estático (GhostAV) y ficheros completamente inofensivos. El objetivo es doble: comprender los límites de la detección por firmas (útil sobre todo para escribir mejores reglas defensivas) y saber por qué una herramienta legítima puede dar un falso positivo.
Objetivos

1. Cómo decide un antivirus: tres enfoques

Un motor de seguridad no usa un solo criterio, sino una combinación de tres formas de mirar un fichero o un proceso:

Análisis estáticoAnálisis dinámicoHeurística / comportamiento
Qué haceExamina el fichero sin ejecutarlo (texto, bytes, estructura)Lo ejecuta en una zona de aislamiento (sandbox) y observa qué haceVigila acciones sospechosas en tiempo real, aunque el fichero fuera "limpio"
CosteMuy bajo, instantáneoAlto: hace falta una sandboxContinuo, en el propio equipo
Se engaña conCambios de forma: renombrar, codificar, reordenarDetectar la sandbox y no actuar; retrasosEs lo más difícil de evadir: mira lo que haces, no cómo te escribes

GhostAV, el motor del laboratorio, es puramente estático: nunca ejecuta lo que analiza. Por eso todas sus debilidades son de forma, y por eso es el punto de partida perfecto para entender los límites de la detección por firmas. Un producto real añade las otras dos capas, y ahí la cosa se complica mucho para el atacante.

2. Las heurísticas de firma más comunes

El análisis estático se apoya en firmas: patrones que identifican lo malo conocido. Las más habituales, cada una con su talón de Aquiles:

HeurísticaIdeaPunto débil
Firma de cadenaBuscar un texto concreto de muestras conocidasBasta cambiar o partir esa cadena
Firma por hashComparar el hash del fichero con una lista negraCambiar un solo byte cambia el hash entero
Combinación de APIsSospechar cuando aparecen juntas ciertas llamadasUsar una API alternativa que hace lo mismo
EntropíaSospechar de contenido muy "aleatorio" (cifrado/codificado)Falsos positivos; y ofuscar de más delata igual
Nombre de ficheroMarcar nombres sospechososTrivial: renombrar
Metadatos / comentariosLeer texto revelador dejado en el ficheroLimpiar los comentarios

Un detalle del sector que conviene conocer: la regla estándar de la industria para escribir firmas se llama YARA. Cuando leas que "hay una regla YARA para esta familia de malware", se refiere exactamente a esto: patrones de cadenas y condiciones que un motor comprueba contra los ficheros.

3. Por qué el hash es la firma más frágil

Un hash como SHA-256 cambia por completo si se modifica un solo byte (es el efecto avalancha que se ve en el módulo de contraseñas). Para un antivirus, una firma por hash solo detecta el fichero exacto que ya conocía: cualquier variante, por mínima que sea —un comentario, un espacio, un byte de relleno—, produce un hash distinto que no está en la lista negra. Por eso las firmas por hash se complementan siempre con reglas más generales (de cadena, de comportamiento): el hash solo es útil para lo idéntico.

4. Entropía: la ofuscación también delata

La entropía de Shannon mide cómo de "impredecible" es el contenido de un fichero, en bits por byte (de 0 a 8). El código fuente o un ejecutable normal tienen una entropía moderada (texto y estructura repetitivos); un bloque cifrado, comprimido o codificado en base64 tiene una entropía alta, cercana al máximo, porque se parece a ruido aleatorio. Por eso un umbral de entropía es un buen detector de contenido ofuscado o empaquetado.

Pero tiene doble filo, y es una lección importante para el atacante: ofuscar de más para esconder una cadena dispara precisamente esta heurística. Cifrar un payload lo hace ilegible para una firma de cadena, sí, pero sube su entropía y lo delata ante el detector de entropía. A menudo la mejor evasión no es esconder la técnica sospechosa, sino no necesitarla: reescribir el código para que haga lo mismo sin el elemento que se marca.

5. El otro lado: EDR y defensa en capas

El modelo de "antivirus que compara firmas" se ha quedado corto. Los entornos serios usan EDR (Endpoint Detection and Response): en lugar de mirar solo el fichero, vigilan el comportamiento del sistema en tiempo real y envían telemetría a un servidor central. Un EDR no pregunta "¿este .exe está en mi lista negra?", sino "¿por qué Word acaba de lanzar PowerShell que se conecta a una IP rara y toca la memoria de otro proceso?". Eso es mucho más difícil de evadir, porque las acciones maliciosas se parecen entre sí aunque el código que las produce sea distinto cada vez.

De ahí la conclusión doble del módulo. Para el defensor: las buenas reglas apuntan a lo que un programa hace, no a cómo se escribe; y la detección seria es en capas (estático + dinámico + comportamiento + telemetría), no una sola firma. Para el pentester: evadir una firma estática no es "ser invisible" —solo has superado la capa más débil—, y esto también explica por qué tus propias herramientas legítimas disparan falsos positivos (comparten patrones con muestras maliciosas conocidas).

Para profundizar
🧰 Herramientas relacionadas (Ghost Academy)

Guías y laboratorios ya publicados en Ghost Academy sobre las herramientas de este módulo:

ClamAV · Obfuscación inversa

Laboratorio: GhostAV

⬇ Descargar laboratorio (ZIP)

Descomprime, lee el LEEME.md y lanza startlab.sh. En tareas/ hay 8 scripts inofensivos (cada uno solo imprime un TAREAN_OK) que GhostAV marca por cómo están escritos. Reescríbelos para que sigan haciendo lo mismo y GhostAV los dé por limpios; cada uno limpio revela una flag GO{...}. Verifícalas en http://localhost:8888/verificador.

La tarea 8 combina varias heurísticas: hay que evadirlas todas a la vez.

¿Atascado o ya terminado? La solución paso a paso muestra cada evasión. Úsala cuando lo hayas intentado.

Autoevaluación

  1. Diferencia entre análisis estático, dinámico y de comportamiento. ¿Cuál es el más difícil de evadir y por qué?
  2. ¿Por qué una firma por hash solo detecta el fichero exacto y no sus variantes?
  3. Da un ejemplo de dos formas distintas de ejecutar un comando que engañarían a una regla que busca una combinación de APIs concreta.
  4. ¿Por qué ofuscar de más (cifrar el payload) puede ser contraproducente frente al detector de entropía?
  5. ¿Qué vigila un EDR que un antivirus clásico de firmas no mira?
  6. Desde el punto de vista defensivo, ¿a qué debería apuntar una buena regla de detección en vez de a la forma del código?