DNS Cache Snooping consiste en realizar una serie de peticiones de resolución de nombres de dominio a la caché de un servidor DNS, con la finalidad de conocer si los usuarios de ese servidor han visitado esos dominios. Hay que tener en cuenta que las entradas en la caché tienen un tiempo de caducidad, y si durante ese tiempo no ha habido una petición a un dominio, éste es eliminado.

Para conocer qué servidores DNS hay bajo un dominio:

$ nslookup -type=ns google.com

Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
google.com  nameserver = ns2.google.com.
google.com  nameserver = ns1.google.com.
google.com  nameserver = ns4.google.com.
google.com  nameserver = ns3.google.com.

Authoritative answers can be found from:
ns4.google.com  internet address = 216.239.38.10
ns1.google.com  internet address = 216.239.32.10
ns3.google.com  internet address = 216.239.36.10
ns2.google.com  internet address = 216.239.34.10

Del resultado, nos interesará los que vienen identificados como nameserver, por ejemplo, ns1.google.com.

Para saber si algún usuario que realiza las peticiones de resolución de nombres a este DNS ha visitado una página concreta, por ejemplo yahoo.com:

$ nslookup -type=a -norecurse yahoo.com ns1.google.com

Server:     ns3.google.com
Address:    216.239.36.10#53
** server can’t find yahoo.es: REFUSED

En este caso, Google bloquea este tipo de peticiones. Probemos con el servidor DNS de otro dominio:

$ nslookup -type=a -norecurse yahoo.com ns1.renfe.es

Server:     ns1.renfe.es
Address:    213.144.33.254#53
Non-authoritative answer:
_*_ Can’t find yahoo.com: No answer

Este servidor sí ha respondido: nadie ha visitado yahoo.com, al menos en el tiempo de caducidad de una entrada en la caché del servidor DNS. Hacemos una prueba más:

$ nslookup -type=a -norecurse google.com ns1.renfe.es

Server:     ns1.renfe.es
Address:    213.144.33.254#53

Non-authoritative answer:
Name:   google.com
Address: 74.125.39.106
Name:   google.com
Address: 74.125.39.147
Name:   google.com
Address: 74.125.39.99
Name:   google.com
Address: 74.125.39.103
Name:   google.com
Address: 74.125.39.104
Name:   google.com
Address: 74.125.39.105

Ahora sí, vemos que google.com sí ha sido visitado.

Vamos a automatizar el proceso de comprobación de cada página en el script dns-cache-snooping.sh. Primero, supongamos que tenemos un fichero con una lista de páginas a comprobar. La metemos en una lista:

$ urls=()
$ f="sites.txt"
$ if [ -r $f ]; then
>     while read line; do
>         urls+=( $line )
>     done > "$f"
> fi

Recorrermos la lista realizando las peticiones y mostrando el resultado en verde o rojo, según si ha sido encontrada la página en la caché o no:

$ ns=ns1.renfe.es
$ for url in ${urls[*]}; do
>     if [ -n "$(nslookup -type=a -norecurse $url $ns | grep 'Name:')" ]; then
>         echo $url
>     fi
> done

» Inspirado en un artículo de El maligno » Más información: DNS Cache Snooping


Entradas relacionadas


Published

Category

hack

Tags

Contacto