Blog de Miguel Díaz » Informática forense http://www.blogdemigueldiaz.com Blog sobre Informática, programación y diseño Web Fri, 14 Jun 2013 19:00:38 +0000 es-ES hourly 1 http://wordpress.org/?v=3.6.1 Técnicas de evasión frente antivirus o cómo burlar un antivirus – Parte 1 – Firmas http://www.blogdemigueldiaz.com/2012/02/por-que-los-antivirus-son-inutiles-o-como-burlar-un-antivirus-parte-1/?utm_source=rss&utm_medium=rss&utm_campaign=por-que-los-antivirus-son-inutiles-o-como-burlar-un-antivirus-parte-1 http://www.blogdemigueldiaz.com/2012/02/por-que-los-antivirus-son-inutiles-o-como-burlar-un-antivirus-parte-1/#comments Thu, 23 Feb 2012 22:54:36 +0000 Miguel Díaz http://www.blogdemigueldiaz.com/?p=1550 Continuar leyendo ]]> 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.

]]>
http://www.blogdemigueldiaz.com/2012/02/por-que-los-antivirus-son-inutiles-o-como-burlar-un-antivirus-parte-1/feed/ 3
El peligro de de la información almacenada en memoria y otros lugares temporales http://www.blogdemigueldiaz.com/2011/12/el-peligro-de-de-la-informacion-almacenada-en-memoria-y-otros-lugares-temporales/?utm_source=rss&utm_medium=rss&utm_campaign=el-peligro-de-de-la-informacion-almacenada-en-memoria-y-otros-lugares-temporales http://www.blogdemigueldiaz.com/2011/12/el-peligro-de-de-la-informacion-almacenada-en-memoria-y-otros-lugares-temporales/#comments Thu, 29 Dec 2011 14:35:48 +0000 Miguel Díaz http://www.blogdemigueldiaz.com/?p=1395 Continuar leyendo ]]> Como ya sabemos toda la información que pasa por nuestro equipo es almacenada, unas veces de forma fija, por ejemplo en documentos o ficheros y otras veces de forma temporal, por ejemplo en la memoria RAM o ficheros temporales.

Esto es bueno por que permiten que las aplicaciones accedan a esa información de una manera rápida mientras usamos las aplicaciones. Pero ¿Qué pasa si una aplicación se cierra? ¿Se elimina esa información? La respuesta es NO, o al menos en la mayoría de los casos.

Cuando un programa deja de usar un determinado espacio en la memoria el sistema operativo simplemente libera ese espacio, pero generalmente no se elimina su contenido. La razón es bastante lógica: Si el sistema además de liberar ese espacio se dedicará a restablecer cada byte a 0 el proceso sería mucho mas lento que solo liberar el espacio para que otros programas puedan sobreescribirlo. Pero esto tiene un problema de privacidad ya que si esa información se guarda en la memoria y ese espacio se vuele disponible para cualquier programa podríamos obtener información comprometida, para entenderlo vamos a poner un caso práctico.

Obtener la contraseña de un servidor FTP o WordPress

Bajo este título un tanto comercial se esconde la explicación básica a este procedimiento, es algo muy usado en informática forense y sorprende a mucha gente de lo fácil que puede ser obtener contraseñas de todo tipo. En nuestro ejemplo hemos usado una máquina virtual, con Windows XP y el servidor bytehost.com pero podemos probar con otras configuraciones, protocolos y programas.

En el primer ejemplo veremos como conseguir la contraseña de un servidor FTP al que un usuario haya accedido desde la misma máquina.

El primer paso es que el usuario abra un servidor FTP, en nuestro caso lo hemos hecho con ftp://ftp.byethost33.com, introduciremos nuestras credenciales y una vez ha terminado de trabajar con el lo cierra, podemos si queremos además cerrar la sesión, no importa.

Ahora nosotros vamos a tratar de averiguar que credenciales ha usado para entrar, para ello vamos a usar una utilidad forense, en este caso FTK Imager y vamos a realizar una imagen de nuestra memoria RAM, para ello abrimos el programa y vamos a File>Capture Memory.

Seleccionamos una ruta de destino y un nombre para el archivo, el programa hará una imagen exacta byte a byte de nuestra memoria RAM para posteriormente examinarlo.

Una vez el proceso ha terminado debemos abrir la imágen, podemos usar un editor hexadecimal o simplemente ir a File>Add Evicende Item, cuando lo tengamos abierto realizaremos una búsqueda con el contenido “PASS ” y coincidencia de mayúsculas: ahí tenemos la contraseña.

Si quisiéramos el usuario solo tendríamos que escribir “USER”. Como os he dicho esto se puede llevar a otros campos, como identificación en Webs, etc.

Por ejemplo, si quisieramos averiguar la contraseña del panel de control de WordPress podríamos utilizar el string de búsqueda “pwd=”

Y no solo haciendo volcados de memoria, también mediante análisis del disco podremos obtener ficheros eliminados, cookies, historiales y demás información sensible con la particularidad de que ademas el disco duro no borra su contenido solo con reiniciar.

Reflexionemos: mas del 80% de las personas utilizan la misma contraseña para todo y sino es así lo mas probable es que el resto de servicios tengan una genial opción para recordar la contraseña la cual envíe una nueva a su e-mail.

¿Cuantos ordenadores públicos son utilizados por diferentes personas sin antes reiniciar el equipo? ¿Cuantas veces has dejado tu ordenador a un amigo para ver cualquier cosa sin reiniciar? Seguro que a partir de ahora ninguna mas.

]]>
http://www.blogdemigueldiaz.com/2011/12/el-peligro-de-de-la-informacion-almacenada-en-memoria-y-otros-lugares-temporales/feed/ 2