El blog de Miguel Díaz
Siguiente

RoboCAUpy

Copia eficiente de archivos, toda la potencia de robocopy con una interfaz sencilla y fácil de usar. Herramienta perfecta para migraciones de equipos y copia masiva de ficheros.Saber mas

Screenshot RoboCAUpy

mRemoto

Administra remotamente equipos, controlalos gráficamente o través de la línea de comandos, envía y recibe archivos, habla con el usuario y mucho mas sin ningún tipo de configuración previa.Saber mas

Screenshot mRemoto
screenshot mRemoto

DNSPropagationChecker

Controla la propagación DNS de cualquier dominio. Con un solo clic conocerás al instante si se ha propagado en los diferentes servidores DNS existentes.Saber mas

Acortador de nombres

Detecta ficheros con nombres largos, acortalos de forma masiva y reduce el tamaño de la ruta a la cantidad de carácteres que quieras.
Saber mas

screenshot Acortador Nombres
Anterior
Viernes 24 de febrero del 2012

Todos sabemos qué es un antivirus, cuales son sus funciones y qué forma tienen de proteger nuestros equipos. Lo que explicaré en este y otros dos artículos es el funcionamiento interno de los mismos para que sepamos cómo funciona un antivirus, de que forma detectan las amenazas y por qué no son útiles frente ataques dirigidos. Además pondré casos prácticos con ejemplos de cómo burlarlos.

En esta parte comentaremos como funciona la detección de malware mediante firmas, la forma mas utilizada desde el nacimiento de los antivirus.

¿Cómo se diferencia un virus de un archivo que no lo es?

Como todos sabemos algo que diferencia unos antivirus de otros es la cantidad de firmas que contiene, es decir la cantidad de virus que tiene catalogados en su base de datos y es capaz de identificar. Pero ¿Qué son las firmas?

Como todos sabemos un archivo está formado por una cantidad de bytes los cuales en conjunto dicen qué hacer al sistema operativo, por tanto cada programa tiene una secuencia de bytes distinta al resto, no hay dos programas distintos que usen la misma secuencia de bytes.

Sabiendo todo esto es lógico pensar que si tenemos una base de datos donde figure una copia de los bytes de los diferentes virus luego podríamos comparar cada archivo con ella y determinar si es un virus en caso de que exista en la base de datos. Pero esto no es del todo así ya que una base de datos que contenga integramente todos los bytes de los miles y miles de virus que hay sería totalmente inviable por su tamaño.


Parte del código del virus Walker.

Lo que se hace en realidad es tomar fragmentos del código en lugar de todo el mismo y almacenarlo en la base de datos.

Cuando el programa antivirus empiece a analizar ficheros buscara en cada fichero coincidencias en su código con los almacenados en la base de datos si encuentra una coincidencia lo catalogará como una amenaza y cuanto mas coincidencias mas indudable para el será que es un virus.

El análisis mediante firmas a priori parece muy fiable pero si lo pensamos concienzudamente nos damos cuenta de lo frágil que es, pensemos que si logramos detectar  cuales son las partes (en adelante firmas)  modificarlos y que este continue funcionando el antivirus será incapaz de detectarlo.

Caso práctico: Burlando un antivirus con el virus Walker.

El virus Walker es uno de los virus de antaño mas conocidos que existen, originario de Estambul y creado en el año 1992, los efectos de este virus son graciosos y es que muestra un hombrecillo caminando por la pantalla cada cierto tiempo. Como todos podéis suponer este es un virus que deberían tener mas que trillado todos los antivirus.

Para el ejemplo que voy a poner voy a usar en todo momento el antivirus Microsoft Security Essentials, como veis detecta sin problemas la amenaza y es capaz de desinfectarla.

Paso uno: Averiguar qué partes del código está tomando el antivirus como firmas

Como hemos dicho antes el antivirus compara partes del código con su base de datos para decidir que es un virus o que no lo es, por tanto tenemos que detectar dichas partes, para ello dividiremos el virus en partes y las examinaremos con el antivirus para ver con cual (o cuales de ellas salta). En mi ejemplo usaré el programa HJSplit que permite definir el tamaño de cada parte.

En nuestro caso, puesto que el virus es pequeño (solo 6Kb) vamos a dividirlo en dos partes de 3Kb. Una vez dividido pasamos el antivirus a cada parte y obtenemos los resultados:

Como vemos en la imagen el antivirus está detectando la primera parte del archivo por lo cual el resto del código podemos dejarlo como está ya que no es detectado por nuestro antivirus, si quisieramos afinar mas dónde está la firma podriamos dividir la primera parte en otras y volver a analizarlas hasta tener un fragmento mínimo. Pero puesto que nuestro ejemplo es muy pequeño y la parte detectada es de solo 3Kb lo dejaremos así.

Paso 2: Modificando el código para hacer a Walker indetectable.

Esta es quizás la parte mas compleja de todo el ejemplo y puede variar dependiendo de muchos factores, en las próximas partes comentaremos otros modos de edición.

Lo primero es abrir la parte que detecta el antivirus con un editor hexadecimal, esto nos mostrará sus bytes en código hexadecimal y podremos identificar de una manera mas o menos sencilla las partes editables. Nosotros usaremos HxD pero podéis utilizar cualquier otro.

Una vez abierto lo mas fácil es ojear un poco el código en su parte derecha para buscar cadenas de texto

Lo que vamos a hacer es editar estas cadenas de texto que como vemos son dedicaciones, etc, por otro, en nuestro caso serán puntos dejandolo así, debemos buscar bien y cambiar la mayor parte posible del código, en nuestro caso tendremos otra cadena de texto similar un poco mas abajo la cual también sustituiremos con puntos.

Una vez hecho los cambios analizaremos de nuevo la parte para ver si ya no lo detecta, en caso deque lo detectase deberiamos seguir cambiando código.

Paso 3: Volver a montar los ficheros y probarlo.

Es una parte lógica, volver a montar los ficheros mediante el mismo programa que hemos usado para partirlos. Como vemos, tras analizarlo no se debería encontrar ninguna amenaza

Y a pesar de que nuestro antivirus ya no lo ve peligroso, veamos que ocurre si lo ejecuta una máquina.

  • Tweet

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Informática forense, Internet, Pentesting, Programación, Seguridad, Windows.

3 comentarios en Por qué los antivirus son inútiles o cómo burlar un antivirus – Parte 1

  1.  Carlos dice:

    jajajaja muy bueno este tema, nunca me imagine que los antivirus tomasen solo una parte de los archios para asi reconocerlo.

    •  Miguel Díaz dice:

      Si, básicamente ese es el sistema de firmas. Los antivirus actuales se definen de dos sistemas, el de firmas que es el mostrado aquí y el heurístico que intenta identificar amenazas en base a comportamientos (llamadas a API del sistema, etc) pero este está muy verde aún aunque lo veremos en la tercera entrega ;-)

      •  ERic dice:

        pero podrias explicar un poco mejor como identificar lar firmas de los virus xq es dificil identificar las cadenas de texto

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Blog de Miguel Díaz
Diseño Web por Miguel Díaz.