AntiVirus, Heurística y algo más!

Desde un punto de vista meramente personal creo que continuaremos siempre existirá debate sobre los mismos pilares a la hora de hablar de malware o software malicioso; técnicas, metodologías y procedimientos, qué utiliza un software determinado para una plataforma o fin especifico. 

Un malware ingresa en ese tipo de categorías de software malicioso, adapta su comportamiento dependiendo el sistema en donde deba correr, demuestra su accionar e intenciones para su beneficio y lograr los cometidos programados. Estos mecanismos van desde, patrones de ejecuciones en ciertos horarios o idioma, elimina a la “competencia”, detecta software de análisis y no ejecuta sus actividades, también cifran unidades locales y/o USB para ejecutar su código, desde algún punto de la memoria, y vuelve al estado anterior borrando huellas. Y podríamos enumerar mas ejemplos, es lo “bonito” de este debate.

El punto a destacar es la evolución que se observa sobre estas practicas y el “aprendizaje” que tenemos, tanto en sistemas de protección como ser:  Software Anti Virus, Firewall, AntiPhishing, WAF, SIEM, Filtrado de Contenido/Web, Sistema de Detecciones de Amenazas Avanzadas.

Incluso en las técnicas que el analista debe llevar a cabo para poder estudiar las nuevas muestras, debe lidiar con trafico encriptado, comunicaciones con distintos dominios legítimos aun no denunciados, ejecuciones de sentencias y script’s que llaman a las APIS originales o bien software nativo del sistema. (cmd, powershell, vbs, dll, etc).

En el sitio https://www.exploit-db.com/https://cve.mitre.org/ podrán encontrar fuentes originales para su mejor lectura y compresión. Actualmente EXPLOIT DB aloja 38.500 exploits y CVE ORG 95.200

En las escritas siguientes pretenderán dar a conocer una visión general sobre el desarrollo de aplicaciones antivirus, heurística y motores de detección que pretenden proteger nuestro sistema, y poner las cosas mas complejas al código malicioso -aunque algunas de las técnicas que utilizan entre casas antivirus sean idénticas entre sí, y acarre errores durante el proceso de erradicar amenazas,  también comentaremos el tipo de estrategia que lleva a cabo el software malicioso para persistir y ocultarse dentro del sistema operacional infectado.

Hoy tomaremos como guía para este post, un análisis hecho por un estimado amigo, forma parte del staff de administradores del sitio www.indetectables.net , tiene gran conocimiento en el área. En conjunto acordamos utilizar su investigación para una de mis entradas, le he sumado contenido para tener contexto en base a sus detalles técnicos y comprendamos, espero sea del agrado de todos.

Interrogantes y especulaciones a tratar:

A) ¿ Los antivirus dan prestaciones de seguridad reales ante las amenazas existentes ? (persistencia en UEFI, BIOS, Certificados legítimos y firmados, ejecuciones anómalas relacionadas a procesos y funciones originales del sistema empleado.

B) ¿ Que mejoras efectivas han desarrollado las casas antivirus para prevenir y evitar ? (documentación de fuentes técnicas, reales y confiables sobre sus desarrollos, roadmap futuro disponible para la comunidad de clientes, white pappers sobre sus motores y bases de heurística, actividades de análisis, etc…).

C) ¿Que lleva a determinar si un programa es legítimo o contiene código malicioso ? (¿comparten sus bases de heurística entre sí?, ¿Las metodologías de revisión de código son las correctas? ¿A qué tipo de pruebas son sometidos los AV?, ¿Si reporta uno, reportamos todos?)

Métodos que emplean:

Firmas o “cadena de búsqueda” Como su nombre indica, consiste en identificar un offset que tenga registrado en una base de datos de detecciones. Las firmas funcionan de forma similar a las del PEiD admitiendo comodines y varios operadores.

Según la documentación del ClamAV, que al ser un antivirus de código fuente abierto es el único que da algo de información al respecto, las firmas también pueden ser hashes MD5 del ejecutable o de una sección específica dentro de él.

offset-firmas                               Las firmas comúnmente son cadenas dentro del archivo.

Decisión Heurística y evaluaciones retrospectivas:

Definición del acto de “encontrar o descubrir” en el caso aplicado a los antivirus, contienen una base de reglas y compara el contenido del binario para determinar si lo que está analizando es un potencial código malicioso. El motor consulta a esa base con los patrones de malware predefinidos y asigna un porcentaje cuando existe un parecido con otra muestra.

Las determinaciones las ejecuta en base a 3 lógicas: Firmas genéricas, Desensamblado y Desempaquetamiento. (wikipedia)

Para comprobar la efectividad de la heurística y su método pro-activo de detección, el motor de actualizaciones se detiene por un lapso de tiempo (de 1 a 3 meses), logran acumular distintas muestras sin registrar, nuevos elementos aparecerán y de esa forma al ser analizados se pueden comprobar si es efectivo el diagnostico. Al no existir registros previos de ese elemento solo cuenta con su heurística para determinar si es malicioso o no.

Debajo les compartiré artículos verdaderamente interesantes sobre heurística aplicada al software antivirus.

Un analista humano de malware también desarrolla las mismas actividades a la hora de examinar un elemento, ejecuta y toma acción en base a los comportamientos encontrados de las actividades sospechosas dentro de un archivo (en el caso que actué, o bien estimula su ejecución, llevándolo al entorno para el cual fue desarrollado). Este patrón es programable y se puede aplicar, del siguiente modo;

1) Firmas genéticas. Cuando se desarrolla malware hay casos en los que se reutiliza código de otras versiones para hacer software nuevo. Eso hace que existan semejanzas entre ambos haciendo posible crear una firma genérica que los detecte.  Las detecciones por este método se suelen mostrar como “una variante de” en los resultados de los antivirus.

2) Análisis estático (o pasivo). Se analiza el archivo sin ejecutarlo buscando señales que indiquen si es malicioso. En este caso se usan varias estrategias que van desde desensamblar para ver que hace en su inicio, revisar la tabla de importaciones buscando el uso de apis sospechosas y analizar si el archivo está comprimido por algún packer para intentar descomprimirlo y analizarlo.

3) Análisis activo (pro activa). Este sería el método más moderno y el más interesante. En su arsenal usa hooks a las principales apis usadas para el malware, también técnicas de emulación y sandbox. Con esas herramientas logra saber si un archivo es malicioso mientras el mismo está siendo ejecutado.

runPE

Técnicas conocidas para evitar estos métodos

Existen técnicas para saltar estos métodos de detección y conseguir ser “indetectable”, algunas son muy conocidas en el ambiente. A modo de introducción vamos a enumerar algunas de estas;

Anteriormente solo bastaba abrir un editor hexadecimal e ir modificando bytes del contenido, en el pasado todo ese archivo .exe era un md5 completo, y al cambiar esos valores también modificaban el dicho hash, bastante simple por aquel entonces. (Muy resumidamente).

Como veremos más adelante, el utilizar apis de windows también “complica la lectura de los motores AV, incluso también podríamos ser detectados fácilmente usándolas, depende que estrategia que se quiera seguir para el desarrollo. (Ejemplo: URLDownloadToFileA utilizada por Droppers).

La teoría indica que deberíamos de llamar a otras funciones para “ofuscar o camuflar” las llamadas que ejecuta la dll, binario, macro, etc, ese tipo de peticiones en lo posible debieran estar cifradas, utilizando algoritmos como ser: Caesar o XOR, si se lee la documentación acorde, explica que las funciones alternativas a utilizar serian: LoadLibrary() y GetProcAddress().

El proceso continúa su ejecución cargándose en memoria y las instrucciones que tiene originalmente la función URLDownloaderToFile, pero sin quedar escritas en “texto plano” dentro del binario. El equipo de FluProject explica la teoría/practica simple en documentación de su proyecto. (data 2013).

Una herramienta bastante útil para buscar estos patrones sobre la memoria ram, es volatility (memory forencis framework – http://www.volatilityfoundation.org/ ), por lo que es viable que en algún string del análisis se vea expresada la intención de conexión o bien algún proceso previo de índole sospechosa. Por ejemplo: Procesos con nombres parecidos a los del sistema  operativo “rundll123.exe” arrancando desde el directorio del usuario. (%LocalAppData%\Temp %WinDir%\TEMP\)

FirmasLa forma más rápida es ir encontrando las firmas rompiendo el ejecutable y analizando si es detectado, para ello se usa herramientas como el AVFucker o el DSplit para ir arrinconando las firmas. Luego se termina usando las técnicas de RIT y XOR para que la firma quede rota sin que el ejecutable deje de ser funcional. Esta metodología de trabajo tiene casi una década.

offset-tool

Heurística y documentación:

Por la naturaleza de las estrategias usadas en la heurística, lo más práctico para saltarlas es tener en cuenta que busca cada una a la hora de la concepción del malware cuando se lo está programando.

La documentación de la CIA liberada por WikiLeaks habla al respecto. Entre los documentos filtrados hay uno muy interesante llamado “Development Tradecraft DOs and DON’Ts”, de los que voy a copiar algunos puntos interesantes:

  • DO NOT decrypt or de-obfuscate all string data or configuration data immediately upon execution.
  • DO strip all debug symbol information, manifests(MSVC artifact), build paths, developer usernames from the final build of a binary.
  • DO NOT explicitly import/call functions that is not consistent with a tool’s overt functionality (i.e. WriteProcessMemory, VirtualAlloc, CreateRemoteThread, etc – for binary that is supposed to be a notepad replacement).
  • DO make all reasonable efforts to minimize binary file size for all binaries that will be uploaded to a remote target (without the use of packers or compression). Ideal binary file sizes should be under 150KB for a fully featured tool.
  • DO NOT write plain-text collection data to disk.
  • DO NOT assume a “free” PSP product is the same as a “retail” copy. Test on all SKUs where possible.
  • DO test PSPs with live (or recently live) internet connection where possible.
  • NOTE: This can be a risk vs gain balance that requires careful consideration and should not be haphazardly done with in-development software. It is well known that PSP/AV products with a live internet connection can and do upload samples software based varying criteria.

También hay varias listas de comportamientos que son detectados:

  • Decryption loop detected
  • Reads the cryptographic machine GUID
  • Contacts random domain names
  • Reads the windows installation date
  • Drops executable files
  • Found potential IP address in binary memory
  • Modifies proxy settings
  • Installs hooks/patches the running process
  • Injects into explorer
  • Injects into remote process
  • Queries process information
  • Sets the process error mode to suppress error box
  • Unusual entropy
  • Possibly checks for the presence of antivirus engine
  • Monitors specific registry key for changes
  • Contains ability to elevate privileges
  • Modifies software policy settings
  • Reads the system/video BIOS version
  • Endpoint in PE header is within an uncommon section
  • Creates guarded memory regions
  • Spawns a lot of processes
  • Tries to sleep for a long time
  • Unusual sections
  • Contains ability to start/interact device drivers

    Fiabilidad más allá de lo técnico

    Una vez que se entiende cómo funcionan los medios usados para la detección y qué técnicas se emplean para saltarlos surge una pregunta interesante. ¿Es realmente fiable cómo hacen las firmas? ¿Constituye realmente un antivirus una solución completa de seguridad?

    macAfee

Creación de firmas:

Viendo la imagen anterior, es interesante observar como antivirus diferentes cometieron el mismo error. Esto nos hace suponer que podría existir el caso en que una nueva firma sea copiada entre motores lo que significaría que también pueden copiar los errores.

En febrero de 2010, para probar si esto realmente estaba sucediendo, Kaspersky creó veinte ficheros inocentes y marcaron diez de ellos como detecciones en sus motores. Luego de estos hubo 20 muestras a VirusTotal y esperaron.

En ese momento se activó el mecanismo que tiene VirusTotal donde las muestras detectadas fueron enviadas a todos los motores de la página para su análisis.

Al poco tiempo, varios motores detectaban también las muestras y confirmó dos cosas; que se sospechaban desde hace tiempo; que realmente existía la copia de firmas y que se estaba creando una tendencia de aumentar los falsos positivos por el mal uso de VirusTotal.

Los antivirus como vector de ataque:

No hay ninguna duda que realmente el peor escenario sería usar una solución de seguridad para lograr encontrar un vector de ataque. Para encontrar la forma más rápida basta con mirar los CVE al respecto.

searchresultav

Viendo los resultados se puede observar que fallas como denegación de servicio, elevación de privilegios y de ejecución de código remoto son posibles haciendo que la probabilidad de ataques, más allá de un malware, como vector en si es posible.

Conclusión

Los antivirus por si solos no deben ser tomados como una única medida de seguridad, inclusive muchas veces su elección pasa netamente por un tema monetario dejando lo técnico y la seguridad en un segundo plano.

Dada la constante búsqueda de nuevos métodos para evitarlos e inclusive para explotarlos es recomendado en ambientes corporativos complementar la seguridad con diferentes capas, ya sean, por ejemplo, filtrados de red y e-mails más agresivos y políticas elaboradas de Active Directory. Esto da lugar a que puedan existir inclusive ciertas medidas de contingencia en caso de que se logre una infección por parte de malware.

Hasta la próxima !

Referencias:

Que es la Heurística ? (2010)

Análisis proactivo de Amenazas (2013)

Analisis heuristico detectando malware desconocido

Antivirus detección proactiva de Malware (2014)

Técnicas de evasión Parte 1 (2013)

Técnicas de evasión Flu Project (2013)

Sistema de ofuscacion de malware para el evasion e NIDS (2013 España)

Detecciones Heuristicas Kaspersky Lab

WikiLeaks (2017). Vault 7: CIA Hacking Tools Revealed.

Security by default (03/02/2010). Kaspersky monta revuelo en la industria del malware

Security and the Net (10/11/2008). AVG virus scanner removes critical Windows file

Open security (18/02/2009). Bitdefender y GData identifican por error un componente de Windows.

Qore (30/07/2014). REPORTE: los antivirus tienen severas fallas de seguridad.

Ensilo (07/12/2015). You’re so predictable: the AV vulnerability that bypasses mitigations.

The conversation (29/06/2016). As more vulnerabilities are discovered. Is it time to uninstall antivirus software?

Autor: malwargsecurity

malwargsecurity un proyecto personal, sin fines de lucro y para la comunidad.

Un comentario en “AntiVirus, Heurística y algo más!”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s