Mostrando entradas con la etiqueta p2p. Mostrar todas las entradas
Mostrando entradas con la etiqueta p2p. Mostrar todas las entradas

lunes, 31 de enero de 2011

El P2P como herramienta de recolección de inteligencia


Hace pocos días Bloomberg publicaba un artículo en el que se afirmaba que Wikileaks no se limitó a recibir filtraciones, sino que se ha dedicado a buscarlas activamente en Internet y más específicamente en redes P2P. Lo cierto es que estas noticias difícilmente se pueden catalogar de sorpresa para los que alguna vez hemos realizado auditorias de fugas de información en redes P2P o desarrollo de metodologías de ciberinteligencia. Con bastante más frecuencia de lo que se podría imaginar ficheros de carácter claramente confidencial acaban en este tipo de redes, incluso documentación policial, militar o de sectores privados críticos.




En ocasiones los usuarios de P2P , entre los que se encuentra personal con acceso a información sensible, de forma accidental comparten sus ficheros privados al hacer uso de este tipo de redes o bien los ponen a disposición de otros usuarios bajo la suposición que al no ser conocidos en sitios de descarga no van a ser localizados por terceros.

Nos encontraríamos ante la versión digital de las pérdidas de información accidental que han existido siempre . Aunque también se han dan casos en los que se filtran intencionalmente en redes P2P ficheros confidenciales, ya sea por parte de empleados descontentos o intrusos que extraen los datos de sistemas comprometidos. Un ejemplo seria la reciente publicación del código fuente del antivirus Kaspersky.

Según el artículo de Bloomberg la empresa Tiversa , una empresa de monitorización de redes P2P, habría identificado computadoras suecas asociadas a Wikileaks que habrían realizado búsquedas y descargas de documentos sensibles militares norteamericanos expuestos en la red , incluyendo información del U.S. Navy’s Space and Naval Warfare Systems Center. Ahora bien ¿hasta que punto este tipo de situaciones podría afectar a nuestro país? En esta entrada vamos a ver cuáles son las técnicas básicas de búsqueda, mostrando ejemplos reales sobre información sensible de origen español para ilustrar el nivel de riesgo y finalmente enumeraremos que tareas se deberían llevar a cabo para prevenir estas filtraciones.

Puesto que en redes P2P se comparten gran cantidad de archivos de todo tipo, necesitamos una metodología de localización de información así como el uso de herramientas apropiadas, de otra forma seria como buscar una aguja en un pajar. No obstante para nuestros ejemplos será suficiente esta sencilla pero efectiva técnica de búsqueda usando únicamente clientes habituales de P2P.

  • Determinar una lista de palabras clave relacionadas con el objetivo de nuestra búsqueda y a ser posible que tengan un significado únicamente dentro del contexto de nuestra investigación, por ejemplo terminología especifica , nombres de programas o sistemas, etc. Esto evitara que tengamos que seleccionar, descargar y revisar entre ficheros compartidos que no tengan relación con nuestra investigación.
  • Localizar de entre los ficheros devueltos por las búsquedas basadas en los términos anteriores cuales corresponden con el tipo de información que estamos buscando.
  • Identificar si existe un patrón en los ficheros localizados, tales como formato de fichero, nombre de fichero siguiendo un patrón, nueva terminología identificada, etc.
  • Realizar nuevas búsquedas para confirmar nuestra hipotesis.


Veamos un ejemplo práctico y real, realizaremos búsquedas en la red Emule con el fin de localizar ficheros con documentación de carácter policial, para ellos iniciamos búsquedas con términos específicos. Seleccionamos por ejemplo como termino SIRDEE, nombre de la red de radio digital estatal de emergencias usada por CNP y GC. Realizada una búsqueda descubrimos un fichero con el título “Informe SIRDEE.wpd” (formato Wordperfect). Realizando una nueva busqueda mediante “informe wpd” localizamos un buen numero de ficheros compartidos. Informes relativos a tareas de seguridad ciudadana con casi total seguridad originarios de la Guardia Civil (adviértase entre los nombres las referencias a las 5 y 6 Compañías de Madrid).


click sobre la imagen para ampliar


Contra lo que pudiera pensarse este caso no es aislado y a lo largo de los años han estado expuestos en diversas redes P2P decenas de Manuales del Ejército de Tierra Español y de Infantería de Marina, además de Informes y Circulares de Guardia Civil, Policía Nacional así como Policías Locales en este último caso incluso Atestados conteniendo datos personales de ciudadanos.

Con la profusión de las descargas directas las redes P2P han perdido protagonismo y por tanto han descendido el numero de usuarios. Con ello afortunadamente también ha disminuido el numero de ficheros sensibles compartidos, aun así a día de hoy es posible encontrar documentos como estos.


Nótese en el caso del manual militar que se trata de un documento clasificado, si bien pertenece a uno de los niveles más bajos “Difusión Limitada” desde luego no debería en ningún caso haber acabado en las redes P2P. Ademas en el caso de este documento particular desde P2P obtuvo gran difusión por su temática sensible y a día de hoy se puede encontrar incluso en algunas Web.

No solo los organismos gubernamentales se encuentran expuestos a este tipo de filtraciones, casos similares se han dado y se dan con información de todo tipo de empresas y sectores. Desde seguridad privada a generación de energía.

Por ello todas las organizaciones que manejen información sensible deberían implantar algunas medidas de protección para evitar este tipo de casos.

  • Crear una política de seguridad que prohíba expresamente el uso de redes P2P por parte de los usuarios dentro de la organización.
  • Tareas de concienciación de los riesgos de P2P en su uso a nivel personal.
  • Implantar las medidas técnicas de filtrado que impidan el uso de estas redes.
  • Utilizar herramientas técnicas para comprobar que efectivamente no se hace uso de este tipo de redes. Este tema lo hemos tratado anteriormente: Detección de agentes P2P: Emule/Edonkey
  • Evaluar periódicamente la exposición de documentos realizando investigación de P2P en busca de fugas de información.
  • En los casos en los que se identificaran fugas se podrian poner en marcha sistemas para prevenir la distribución, posiblemente hablemos de ello en futuras entradas.

Nota del Autor: En la preparación de este articulo hemos tenido en cuenta la necesidad de una actuación responsable y por ello el ejemplo de la red Emule pertenece a una única fuente actualmente desaparecida, mientras que los ejemplos de ficheros presentemente compartidos desde varias fuentes han sido censurados para evitar contribuir a su mayor difusión. Creíamos que era importante dar a conocer esta problemática pues el artículo sobre Wikileaks demuestra que actualmente existen adversarios explotando activamente las redes P2P como fuente de inteligencia y es necesaria una concienciación de los usuarios para prevenir posibles filtraciones de información sensible.

jueves, 20 de enero de 2011

Detección de agentes P2P: Emule/Edonkey

La detección de agentes P2P no autorizados es una tarea importante en un entorno corporativo pero más importante aun en entornos gubernamentales.

Un agente o cliente P2P no controlado implica una serie de riesgos:
- Puede ser utilizado por un usuario para compartir intencionadamente o accidentalmente documentos sensibles.
- Puede ser una vía de entrada a la red si el software utilizado presenta vulnerabilidades.
- Algunas variantes de malware permiten utilizar redes P2P como canal de control.

Sin olvidar que una vía habitual de infección por malware es la descarga de versiones pirata infectadas de software popular compartidas maliciosamente en redes P2P. Este era por ejemplo uno de los medios de infección de la Botnet Mariposa

Uno de los clientes P2P más popular en España en los últimos años ha sido Emule, derivado del original Edonkey. Emule permite utilizar 2 protocolos: ED2K (Edonkey 2000) y KAD.

ED2K: es el protocolo original de Edonkey. Utiliza una red semicentralizada basada en servidores que realizan labores de interconexión y búsqueda de archivos. Este protocolo trabaja normalmente sobre TCP.

Un cliente de Edonkey puede realizar 2 tipos de conexiones:
- Al servidor para realizar búsquedas.
- Directamente a otro cliente principalmente para transferir archivos.

KAD: es un protocolo de búsqueda descentralizado basado en Kademlia (un tipo de red DHT). KAD trabaja normalmente sobre UDP.

Para detectar clientes Emule o derivados de Edonkey podemos utilizar dos mecanismos:

Análisis del tráfico de red: La forma más sencilla de detectar clientes P2P consiste en realizar capturas del tráfico saliente hacia Internet y buscar señales que indiquen el uso de protocolos de este tipo a menos que el usuario haya tomado medidas para evitar su detección.

El protocolo original de Edonkey no incluía la opción de ofuscar el tráfico. Emule a partir de la versión 0.47b si incluye la opción de realizar ofuscación de protocolo, aunque esta opción no está activada por defecto. Otros clientes P2P basados en Edonkey no soportan esta funcionalidad.

El usuario también podría encapsular su tráfico sobre una red TOR o sobre una VPN para dificultar su detección.

En caso contrario podemos buscar los 2 protocolos que utiliza de la siguiente forma:
  • Búsqueda basada en dirección IP de destino: ED2K se basa en una red de servidores fijos. Podemos obtener un listado de las direcciones IP de estos servidores y si algún equipo de nuestra red hace una conexión a alguno de ellos, sabremos que tiene un cliente P2P instalado.

Una lista medianamente actualizada y bastante extensa puede encontrarse en: http://ed2k.2x4u.de/gl8wmw7k/max/server.met

Por otra parte KAD utiliza una red descentralizada de forma que no podemos realizar la detección basándonos en una lista prefijada de direcciones IP.

  • Búsqueda basada en puerto de origen o destino: Versiones antiguas de Emule utilizaban puertos de escucha fijos; el 4662/TCP para ED2K y el 4672/UDP para KAD. Pero las nuevas versiones asignan estos puertos aleatoriamente de forma que no es un método fiable para detectar trafico P2P.

  • Búsqueda basada en la firma del protocolo: Wireshark incorpora un disector del protocolo Edonkey aunque no es muy completo.

Para detectar tráfico ED2K podemos analizar el principio del payload de un stream TCP. El primer byte debe ser 0xE3 (OP_EDONKEYPROT).

Para detectar tráfico KAD el primer byte de un payload UDP debe ser 0xE4 (OP_KADEMLIAPROT) o 0xE5 (OP_KADEMLIAPACKEDPROT) si el paquete va comprimido.

Barrido de puertos: Otra forma de detectar agentes P2P en una red consiste en realizar un barrido de puertos de los equipos que sospechemos que tienen este tipo de software instalado.

Este enfoque es más limitado ya que necesitamos realizar un barrido completo de todos los puertos TCP y UDP posibles, tarea normalmente lenta. Además el equipo puede tener filtrados los puertos correspondientes al software de P2P de forma que no seremos capaces de detectarlos correctamente.

Si optamos por esta opción, deberemos primeramente utilizar un scanner de puertos para hacer el barrido de los 65535 puertos TCP y UDP. Y proceder a identificar todos los servicios abiertos.

Algunas herramientas permiten realizar el fingerprint de un servicio durante el escaneo, como por ejemplo Nmap. Otras como Amap nos permiten hacer el fingerprint posteriormente. Pero por desgracia a día de hoy ninguna de ellas soporta detección de ED2K o de KAD, de forma que tendremos que hacer el fingerprint a mano para comprobar que realmente el puerto detectado corresponde a un agente P2P.

Para detectar un servicio de ED2K lo más sencillo es hacer un pequeño programa que construya y lance un paquete de saludo (OP_HELLO) y ver si se obtiene respuesta. A continuación tenéis un pequeño ejemplo en C de cómo se construiría el paquete:



Detectar mediante un barrido de puertos un servicio de KAD es más complejo ya que se basa en UDP. Aun así podemos programar nuestro propio scanner para que lance una petición de saludo (KADEMLIA_HELLO_REQ) a modo de barrido. Para terminar un pequeño ejemplo en C de cómo se construiría y enviaría cada paquete: