viernes, 10 de septiembre de 2010

Information Gathering - DNS Cache Snooping

Como ya hemos visto en alguna ocasión, a la hora de realizar una auditoría o una prueba de pentest lo primero y más importante es reunir cuanta información sea posible acerca del objetivo, es la fase que se denomina "information gathering".

Probablemente nos interese saber qué clase de webs visitan los usuarios de dicha empresa, quizá para realizar un ataque de ingeniería social relacionado con alguno de los dominios cacheados, o realizar un ataque de evilgrade para comprometer equipos. La mejor manera de saber los dominios visitados es comprobar si se puede realizar un "snooping" sobre la caché del servidor DNS.
¿Y cómo sabemos si se puede realizar? Muy fácil, debido al funcionamiento jerárquico del protocolo DNS si nosotros realizamos una consulta DNS e indicamos al servidor que es una consulta no recursiva (el servidor DNS no intentará escalar la consuta) y se nos devuelve la entrada de dicha consulta querrá decir que el servidor permite realizar consultas a la caché y que dicho dominio ya se ha solicitado con anterioridad.

Hace un tiempo cree un pequeño script en python para poder realizar dicho trabajo de una forma sencilla. Para obtener una lista de dominios que probar lo más fácil es acudir a Alexa y extraer los dominios que nos interesen, incluso tienen un csv con el top 1 millón de webs en el ránking. Dependiendo de la finalidad buscada se pueden usar distintas categorías:
  • 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 :)
  • Y un sinfín de posibilidades, os animo a comentar más posibilidades.
A continuación os dejo unos pantallazos del script:

El script al ejecutarse sin parámetros y la ayuda del mismo


El script al ejecutarlo con el parámetro -c que comprueba si los servidores DNS correspondientes a un dominio permiten resolución no recursiva.

La forma en la que comprueba si un servidor es susceptible de dicha enumeración es pidiendo primero unas direcciones muy comunes como puedan ser google, youtube, facebook, etc.
(He quitado el dominio por si acaso a alguien se le ocurre tirarle la lista de Alexa entera o algo así...)

Aquí el programa con el parámetro -s y los primeros resultados de la lista de Alexa

Bueno, aquí os dejo el código, espero que os sirva.

Un saludo a todos y hasta la próxima!

No hay comentarios:

Publicar un comentario