Incident Response, Security and Forensics"

.

martes, 25 de agosto de 2009

Forensics en P2P ( Bittorrent-Bitcomet ) - Parte I


Hola lectores,

De todos es conocido la utilización de las redes P2P con objeto de compartir o descargarse alguna 'copia de seguridad' de algún programa 'necesario' o visualizar algún vídeo de las fiestas del pueblo. ;-)

Por otro lado el mal uso de este tipo de programas puede provocar fugas de información o accesos no deseados a nuestra máquina. También en España hay casos sonados sobre la mala utilización de las redes P2P, como el caso de CCOO

Hoy vamos a ver como analizar algunos de los productos más utilizados en las redes P2P basándonos en un caso real.

Hace poco nos ha llegado el caso de analizar una máquina de un cibercafé que supuestamente ha realizado descargas de ficheros con pornografía infantil. En un principio todo apunta a la utilización de redes 'peer to peer' y se sospecha del uso de Bittorrent dado que está instalado en la máquina.

La recopilación de pruebas se ha realizado obteniendo una copia integra del disco con 'dd' y en un entorno de explotación (vmware) para el posterior análisis en linea.

El objetivo de este tipo de pruebas es obtener direcciones IP, ficheros descargados, carpetas compartidas, usuarios, etc.

Con el conjunto de evidencias recogidas le tocará al fiscal presentar las pruebas pertinentes y a partir de ese punto, quedará pendiente del juicio.

Bittorrent


BitTorrent es un protocolo pensado para el intercambio de ficheros entre iguales (peer to peer o P2P). El protocolo Bit Torrent está basado en software libre.

A diferencia de los sistemas de intercambio de ficheros tradicionales, su principal objetivo es el distribuir un mismo archivo a un grupo de personas, forzando a todos los que descargan un fichero a compartirlo también con otros. La distribución se realiza por medios convencionales como un pequeño fichero con extensión .torrent. Este fichero es estático, por lo que a menudo se encuentra en sitios web.

Un fichero 'torrent' contiene la dirección de un servidor de búsqueda, el cual se encarga de localizar posibles fuentes con el fichero o parte de él.

Normalmente, el nombre de un archivo torrent, tiene el sufijo “.torrent”. Los archivos torrent tiene una parte llamada “mostrado o anuncio”, la cual especifica la dirección o URL del tracker, y una sección “información”, la cual contiene los nombres de los archivos, sus tamaños, longitud de piezas utilizadas, y la huella SHA1; toda esta información es usada por los clientes para verificar la integridad de los datos recibidos.

Cuando un usuario comienza la descarga de un fichero, BitTorrent no comienza por el principio del fichero, sino que se baja por partes de forma aleatoria. Luego los usuarios se conectan entre sí para bajar el fichero.

Algunos de los clientes basados en Software que utilizan este protocolo son: Ares, Azureus, Ktorrent, Bitcomet, utorrent.

Introducción a los Ficheros .torrent

Si abrimos con un editor de texto un archivo .torrent nos encontramos con un diccionario que contiene las siguientes claves:




  • announce: cadena que representaLa URL del tracker
  • created by: (cadena opcional) Nombre y versión del programa usado para crear el archivo torrent.
  • creation date: (entero opcional) La fecha de creación del torrent en formato de época UNIX.
  • encoding: Formato de codificación del fichero
  • files: Sólo aparecerá en el caso de que sea un torrent multi archivo. Es una lista de diccionarios (uno para cada archivo, pero con una estructura diferente a info). Cada uno de estos diccionarios contendrá a su vez información sobre la longitud del archivo, la suma MD5 y una ruta (path) en donde debe ubicarse el archivo en la jerarquía de directorios.
  • length: (entero) Longitud del archivo en bytes.
  • path: (cadena o entero) El nombre del archivo o directorio donde se almacenarán los archivos
  • name: El nombre del archivo
  • piece length: Este parámetro es un entero que representa el número de bytes de cada pieza. Piezas demasiado grandes causan ineficiencia y piezas demasiado pequeñas forman un archivo .torrent más pesado. Actualmente se aconseja fijar el tamaño de cada pieza en 512 KB o menos para archivos de varios GBs.
  • pieces: Cadena que representa la concatenación de la lista de claves hash de cada parte del fichero compartido. Las claves hash son generadas utilizando SHA-1 con un resumen de 160 bits y un tamaño máximo por parte de 2^64 bits. Este conjunto de claves se utiliza como mecanismo para asegurar la integridad y consistencia de una parte, una vez ha sido completada la descarga de dicha parte.
Bien, con esta introducción empezamos a realizar nuestro análisis.

¡¡EMPEZAMOS!!

Como disponemos de la copia en formato dd, vamos a utilizar Mount Image pro (también empleamos FTK Imager) para montar el disco virtual y acceder al fichero NTUSER.DAT

Lo que vamos hacer es revisar el software instalado, para ello importaremos este fichero a la utilidad WRR (Windows Registry Recovery) de MITEC, siendo este el resultado:



En la anterior pantalla vemos la ruta donde se ha instalado un cliente. En este caso es Bitcomet.

Siguiendo con la revisión, en la siguiente pantalla vemos dos claves muy reveladoras.

IERefUrl: Que contiene el sitio desde donde se ha conectado para obtener el fichero .torrent
IEWbPageTitle: Que contiene el titulo de la ventana del torrent a descargar.

Ambos contenidos de estos valores están codificados en Hexadecimal



Para obtener el resultado del sitio web donde se conecto vamos a convertir de Hexadecimal a Ascii.

El valor truncado en la imágen de la clave IERefUrl es :

68:74:74:70:3a:2f:2f:6c:69:73:74:73:72:76:38:38:2e:70:6c:61:79:2e:63:6f:6d:2f:74:6f:72:72:65:6e:74:73:2d:64:65:74:61:69:6c:73:2e:70:68:70:3f:69:64:3d:34:31:34:39

Para convertirla utilizamos cualquier conversor que dispongamos. Si no tenemos ninguno podemos utilizar de forma 'on-line' este que acabo de utilizar y disponible desde aquí.



Como veis el sitio web 'listsrv88.play.com', es una evidencia muy concreta que nos servirá para su posterior análisis.

NOTA: ¡¡Ojo!! Si instalamos la versión sobre Windows Vista o Windows 7 la clave del registro donde se encuentran estas dos subclaves están en:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\InternetRegistry\REGISTRY\USER\S-1-5-21-2693945775-50245416-85377012-1000\Software\BitComet\BitComet

Si seguimos analizando con la utilidad WRR nos encontramos que la aplicación que por defecto abre los ficheros .torrent es Bitcomet. De esta forma descartamos que otro programa este interactuando con nuestro entorno.



En la siguiente pantalla, comprobaremos en la clave del registro 'RecentDocs' (Documentos recientes), si últimamente ha sido utilizado algún fichero .torrent.
Como vemos la cadena 0 (cero) contiene en hexadecimal el último fichero accedido.



El valor truncado en la imágen anterior del valor 0 (cero) es:

66:6f:72:65:67:69:72:6c:73:2d:66:72:69:65:6e:64:73:2d:6f:6e:6c:79:31:35:2e:64:76:64:31:2e:69:73:6f:2e:74:6f:72:72:65:6e:74

y que una vez convertida por el método anterior nos da el último fichero accedido, es decir este:



Recordamos que en Windows 7 se haya en:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU\torrent

Evidencias en ficheros

Otra forma de obtener evidencias son editando y comprobando los siguientes ficheros:

  • downloads.xml
  • bitcomet.xml
  • my_shares.xml

downloads.xml:

Contiene las descargas actuales en que se encontraba el sistema en ese momento. Una vez más en Windows 7 se encuentra en:
C:\Users\pedro\AppData\Local\VirtualStore\Program Files\BitComet.

El contenido del fichero downloads.xml incorpora lo siguiente:



Como podemos ver en la imagen anterior nos da información del tipo de fichero descargado, fecha, hora y tamaño. Como podemos apreciar no muestra los ficheros ya descargados o eliminados, cuestión importante en este análisis.

Bitcomet.xml:

Contiene la configuración del programa. Se haya la información importante como las carpetas que se comparten, usuario y contraseña (en caso de estar activo), configuración del proxy y servidores a donde se conectaba.





my_shares.xml

Contiene los ficheros compartidos y lo que es más importante, mantiene un histórico de aquellos ficheros que se han descargado, aunque se hayan eliminado.


Conclusiones

Partiendo de que el usuario que se descargó los ficheros con ponográfia infantil habia dejado la máquina tal cual y no había desinstalado ni borrado ningún fichero, fue sencillo obtener la información. Por otro lado deciros que la mayoria de esta gente no se preocupa o desconoce formulas anti-forensics que por supuesto para nosotros es muy obvio, no obstante he aquí algunos de los resultados, otros han sido omitidos por motivos de confidencialidad.

Hemos obtenido la siguiente información:

Usuario: Antoine
Password: p4p3
Servidores a donde estaba conectado (ver imagenes)
Ficheros torrent (compartidos actualmente y borrados)

Haciendo un análisis más profundo y que exceden de este post, sacaremos más información de la máquina como ultimos accesos a páginas web, vídeos e imágenes visualizadas, memoria, paginación . etc, etc...

En próximos post, comentaremos más sobre este tipo de programas haciendo especial incapie en Azureus tema muy discutido por las fuerzas de seguridad, dado que es complicado el análisis forense sobre este producto.

2 comentarios:

Me parece estupendo tu blog pero ... espero que con este artículo no te pase lo mismo que con http://conexioninversa.blogspot.com/2008/10/fraude-en-correo-electrnico-i.html , que me quedé con la intriga de cómo seguia :-p

Bueno, al menos, no he sido capaz de localizar la segunda parte del artículo o no he sido capaz de enlazarlo con otro. ( torpe que es uno )

Solo es una pequeña observación, que nadie interprete que estoy exigiendo que lo publique ni nada por el estilo!! Se que la vida de un blogger no es fácil y eso de sacar tiempo de donde no lo hay, el esfuerzo que hay que dedicar y compartir la información como hace Pedro, ya es "demasiao".

Ale, un saludo de este iniciado en la iniciación de análisis forense y enhorabuena por el blog.

Castaño, te prometo que colgare los post de las segundas partes ;-)
Un saludo