DNSSnoopy – Herramienta para hacer DNS Cache Snooping
A la hora de realizar una auditoría de seguridad el primer paso es obtener y recolectar la mayor cantidad de información posible acerca del objetivo que nos pueda ser de utilidad.
Entre dicha información se encuentran los dominios con los que los empleados de la entidad se relacionan de un método u otro, actualizaciones de software, envío de correos electrónicos, visitas a páginas web, etc.
La utilidad que le podemos dar a esta información es diversa dependiendo del tipo de dominio obtenido:
Es precisamente este comportamiento el que nos permite hacer el ataque de “snooping”, en la petición DNS podemos indicarle al servidor que no use recursividad, si no tiene la entrada en su tabla de DNS y/o caché no escalará la petición y devolverá una respuesta negativa. Debido a ello, cualquier petición no recursiva contra el servidor DNS y a un dominio del que no es autoritativo indicará que ese dominio se encuentra cacheado.
Para poder explotar esta vulnerabilidad de una forma sencilla y automatizada he desarrollado la herramienta DNSSnoopy (http://code.google.com/p/dns-snoopy/). El funcionamiento de la herramienta es el siguiente:
Esperamos que os resulte de interés y utilidad en alguna auditoría o simplemente para trastear, además el código está en Python y es open source, por lo que es muy fácil modificarlo para vuestras necesidades.
Entre dicha información se encuentran los dominios con los que los empleados de la entidad se relacionan de un método u otro, actualizaciones de software, envío de correos electrónicos, visitas a páginas web, etc.
La utilidad que le podemos dar a esta información es diversa dependiendo del tipo de dominio obtenido:
- Direcciones de actualización para realizar ataques de evilgrade
- Dominios de malware para saber si algún equipo está contactando con un servidor de malware (existen multitud de dominios de malware, pero puede ser útil para comprobar algunos en concreto)
- Un atacante con fines lucrativos podría buscar ciertos dominios “para adultos” con el fin de chantajear
- Búsqueda de redes sociales y profesionales. Por ejemplo, para buscar en ellas más información acerca de los empleados.
- Para buscar tus propios dominios y saber si la empresa se ha interesado por tí. Por ejemplo, una entidad de gestión visitando páginas p2p o de detectives privados
Es precisamente este comportamiento el que nos permite hacer el ataque de “snooping”, en la petición DNS podemos indicarle al servidor que no use recursividad, si no tiene la entrada en su tabla de DNS y/o caché no escalará la petición y devolverá una respuesta negativa. Debido a ello, cualquier petición no recursiva contra el servidor DNS y a un dominio del que no es autoritativo indicará que ese dominio se encuentra cacheado.
Para poder explotar esta vulnerabilidad de una forma sencilla y automatizada he desarrollado la herramienta DNSSnoopy (http://code.google.com/p/dns-snoopy/). El funcionamiento de la herramienta es el siguiente:
- Primero obtiene los servidores DNS del dominio solicitado.
- Comprueba si alguno de ellos es vulnerable al ataque de snooping, para ello se solicita un listado de los dominios más comunes hasta que se encuentra alguno cacheado o se acaba la lista.
- Si se ha obtenido uno o más servidores vulnerables se procede a probar una lista de dominios que se indique para encontrar los cacheados con anterioridad.
- Trata de calcular el tiempo que hace que se cacheó en el servidor vulnerable, para ello compara el TTL obtenido del servidor cacheado con el TTL original.
Esperamos que os resulte de interés y utilidad en alguna auditoría o simplemente para trastear, además el código está en Python y es open source, por lo que es muy fácil modificarlo para vuestras necesidades.