jump to navigation

Atacando un Antivirus – Parte II Mayo 13, 2008

Posted by fids in Seguridad, Uncategorized.
Tags: , , ,
trackback

Continuando con el post anterior, terminamos el artículo “Attacking Antivirus” escrito por Feng Xue (Technical Lead, Nevis Labs). Repasamos en esta ocasión la búsqueda de vulnerabilidades en software antivirus, y las técnicas que son capaces de explotar dichas fallas.

3. Buscando Vulnerabilidades en un Antivirus

Básicamente, hay 4 tipos de vulnerabilidades que se han observado en los software antivirus

  • Escalación local de privilegios
  • Relacionados con los ActiveX
  • Basados en el Motor Antivirus
  • Interfaz de Administración

Las metodologías para auditar los procesos mencionados en los antivirus difieren bastante uno de otro.

3.1 Auditar escalación local de privilegios

3.1.1 Problemas DACL
Auditar problemas DACL (lista de control de acceso discrecional) es una de las cosas más sencillas y a veces puede ser hecha manualmente sin la ayuda de herramienta alguna. La lista de control de acceso discrecional (DACL) es un objeto de núcleo determina qué usuarios tienen acceso al objeto.

Para verificar si un directorio de instalación de un antivirus es vulnerable a problemas DACL solo debemos verificar si en el Tab de Seguridad de dicho directorio, el Grupo “Todos” tiene asignado los permisos de “Control Total”. De ser así, tenemos una vulnerabilidad al descubierto.

Verificar las ACL de los servicios es diferente, puede ser realizado utilizando sc.exe de la siguiente manera (como usuario no privilegiado)

C:\sc config “servicio antivirus” binpath=D:\ataque\virus.exe

Si el error #5 no aparece, felicitaciones. Anotar que “servicio antivirus” es el nombre del servicio que el atacante quiere explotar y binpath es la ruta del archivo binario (que puede ser un virus, troyano, rootkit, etc).

Después de efectuar este comando, el atacante habrá cambiado el path del binario del servicio de Windows suplantado, que resultará ser el binario del atacante con privilegios elevados (usualmente con privilegios SYSTEM)

3.2 Manejador de Driver IOCTL

IOCTL (Abreviación de Input/Output Control o Control de Entrada/Salida)

Su problema es a causa del espacio de verificación de direcciones insuficientes lo que hace que auditar el driver IOCTL sea sencillo a través de técnicas Fuzzing. Muchos fuzzers para Win32 IOCTL estas disponibles entre ellos:

Kartoffel (http://kartoffel.reversemode.com/downloads.php)

Lo único que se necesita es hacer fuzzing a los drivers del antivirus instalado e investigar cuidadosamente cada BSOD (Blue Screen of Death -> Pantalla Azul de la Muerte)

3.2 Auditar problemas ActiveX

Esto podemos realizarlo sin problemas con técnicas Fuzzing o a través de una auditoria manual. Se llama fuzzing a las diferentes técnicas de testeo de software capaces de generar y enviar datos secuenciales o aleatorios a una o varias áreas o puntos de una aplicación, con el objeto de detectar defectos o vulnerabilidades existentes en el software auditado.

2 populares fuzzers son:

AxMan (http://www.metasploit.com/users/hdm/tools/axman)
ComRaider (http://labs.idefense.com/software/fuzzing.php#more_comraider)

3.3 Auditar el motor del software antivirus

El motor antivirus es el componente más complejo del software antivirus, por lo que auditarlo será muy difícil. Básicamente hay 3 maneras de auditarlo

  • Ingeniería Inversa
    Consiste en analizar el código ensamblador directamente y buscar potenciales vulnerabilidades. El objetivo al aplicar esta técnica se centra en los componentes responsables del parsing de todos los formatos de archivos. Esos componentes usualmente son implementados como plug-ins independientes. Ejemplos de ellos tenemos:

    Kaspersky: Arj.ppl base64.ppl cab.ppl lha.ppl rar.ppl, etc.
    Bitdefender: arc.xmd arj.xmd bzip2.xmd cab.xmd docfile.xmd, etc.

    Auditar un software a través de la ingeniería inversa es extremadamente tedioso y lento. Felizmente tenemos a Hex-rays (http://www.hex-rays.com) que hace de la descompilación un proceso mucho más sencillo

  • Fuzzing
    Fuzzing es una técnica asombrosa, y ha acelerado bastante la seguridad de software en los años anteriores.

    Desafortunadamente, no hay muchas herramientas para hacer fuzzing a los antivirus, entre las pocas tenemos a:

    xvfuzz ( http://dev.gentoo.org/~taviso/files/vxfuzz-0.01.tar.gz)

3.4 Auditar Interfaz de Administración

  • Administración Cliente/Servidor
    Muchos protocolos de administración Cliente/Servidor son propietarios, lo que significa que ningún RFC o documento está disponible. De esta manera, es muy difícil saber de que están hablando el Cliente y e Servidor solo capturando paquetes. El tráfico parecerá muy aleatorio o será encriptado de alguna manera.

    Fuzzing es una buena elección en esta situación y para ello estan las siguiente plataformas fuzzing:

    Spike (http://www.immunitysec.com/resources-freesoftware.shtml) y
    Sulley (http://code.google.com/p/sulley)

  • Interfaz Web
    Desde que muchos sistemas de administración vía web fueron desarrollados por vendedores antivirus, estos tal vez no han sido bien auditados y analizados.

    Para ello, hacer fuzzing es siempre útil. Existen muchos web fuzzers disponibles, ente ellos Webfuzz (http://www.fuzzing.org/wp-content/WebFuzz.zip)


CONCLUSION

En este artículo, hemos examinado las técnicas para encontrar vulnerabilidades en software antivirus así como las técnicas para explotarlas. Esto no quiere decir que los antivirus sean inservibles, sino que es una sugerencia para que los fabricantes de antivirus pongan especial atención en el hecho de que las vulnerabilidades en los sistemas antivirus son una amenaza real.

Fuente: Nevis Networks

Comentarios»

No comments yet — be the first.