25 noviembre 2010

¿Quien está tocando las rutas?

El tema del routing y 'las maldades' que se pueden hacer no es un asunto nuevo, el hecho de que habitualmente se usen protocolos de routing como BGP que no es especialmente seguro (de hecho existe un S-BGP, de Secure-BGP) hace que implementar ataques a ese nivel sea algo que lleva sucediendo desde hace tiempo.

Lo último que ha saltado a la palestra ha sido la supuesta redirección de tráfico de organismos militares y gubernamentales de EEUU hacia (sorpresa!) China.

Evidentemente este tipo de ataques son complejos de mitigar y evaluar, más desde el punto de vista de un usuario/cliente que necesariamente en algún punto tiene que 'entregar' su tráfico a un router y cruzar los dedos para que haga el camino correctamente.

Lo que si se puede hacer es monitorizar las rutas que un paquete toma y averiguar si hay cambios significativos.

Con esta premisa, hemos desarrollado otro 'juguetito' más, disponible en el repo de SbD en Google. Su nombre: route-ids.

Esta herramienta permite monitorizar la ruta que toma un paquete desde tu equipo hasta otro servidor (como ejemplo, www.facebook.com, pero vale cualquiera) e identificar en qué momento cambia el Path. Adicionalmente, y usando la base de datos GeoIP de MaxMind, se localiza la procedencia geográfica del nuevo router.

Por defecto route-ids te avisará cuando aparezca un nuevo país en el camino que toma un paquete desde tu equipo hasta Facebook, es decir, si el camino es España --> Francia --> UK --> EEUU y de repente cambia a España --> Francia --> Ukrania --> Rusia --> EEUU te avisará que ha cambiado el path y los nuevos paises por los que transita tu tráfico.

Requisitos:
  1. Tener instalado TcpTraceroute
  2. Instalar el modulo Perl Geo::IP
  3. Descargar la base de datos GeoLiteCity
  4. Ejecutarlo como root (necesario para usar tcptraceroute)
Ejemplo de ejecución:
# perl route-ids.pl

        Ruta inicial

Hop [213.229.84.141]  United Kingdom Windsor and Maidenhead Maidenhead
Hop [94.76.244.25]  United Kingdom Windsor and Maidenhead Maidenhead
Hop [92.48.95.10]  United Kingdom Windsor and Maidenhead Maidenhead
Hop [195.66.225.69]  United Kingdom London, City of London
Hop [74.119.78.182]  Canada Ontario Oshawa
Hop [204.15.23.111]  United States California Palo Alto
Hop [74.119.77.45]  Canada Ontario Oshawa
Hop [69.63.190.14]  United States California Palo Alto

Y si algo cambia ..

Alerta nuevo Pais en la ruta: Germany en Hop 3 IP 77.67.67.137

9 comments :

Anónimo dijo...

Pero, digo yo, esto no es una señal necesariamente de un ataque, tal vez sea simplemente que el paquete cambie de ruta ya que uno de los equipos se encuentra saturado. (Siempre y cuando no hablemos de rutas estáticas, no¿?)

Yago Jesus dijo...

@Anónimo, claro no es necesariamente algo peligroso, eres tu el que debes de ponderar el aviso y lo sospechoso que te resulte. Si de repente aparece China o Rusia, no es lo mismo que Italia

Alejandro Nolla dijo...

Buenas, gracias por compartir el código, seguro que a más de uno nos da ideas...

Aparte de que los paquetes pueden ir por distintas rutas también hay que tener en cuenta que una dirección IP puede estar detrás de un servicio estilo Akamai o un balanceado distribuido a nivel geográfico, por lo que pueden aparecer resultados "sospechosos"...

Si os interesa el tema de control de publicaciones BGP la web http://www.routeviews.org/ es un buen punto de partida...

Saludos a todos

Anónimo dijo...

Alejandro,

Una dirección IP solo está en un sitio. Luego de ahí puede ir a otros, pero esa IP solo está en un sitio. Supongo que lo que quieres decir con lo de Akamai es que un nombre de host puede ser resuelto a otros varios diferentes (o a varias IP sin host asociado) al ser un contenido alojado en una CDN.

Saludos

Jordi Prats dijo...

@Anónimo: No exactamente, una IP podría estar en más de un equipo:

http://en.wikipedia.org/wiki/Anycast

Y al parecer Akamai dispone de IPs anycast:

http://www.akamai.com/html/technology/products/enhanced_dns.html

Anónimo dijo...

Que digo yo, ¿y si lo que me preocupa está en España?. Mal apaño.

Anónimo dijo...

Españolito:"Si, ¿está el chino cudeiro?.
Chinorro:"Ahola esta ocupado"
Españolito:"Creo que mi tráfico, ha pasado por su ruter y ha sido esnifado, ¿me lo podría devolver?"
Chinorro:"Peldon mi no entendel :)"

Anónimo dijo...

Jordi Prats: Gracias por el enlace! No conocía el concepto :)

Siempre se aprende algo nuevo aquí en SbD ¿eh? :-)

leo dijo...

no seria lo mismo como usar el comando tracert en Windows y otro que no recuerdo en linux, que en windos > tracert -d www.google.com, y te va mostrando por todos los servidores o router que va pasando y en el pais que estan?