Blog

DNS gathering: Transferencia de zona, Shodan + resolución inversa, ataque de diccionario y Maltego

Después de que Juan Carlos Tirado hablara de como funciona el DNS en una primerasegunda parte y diera una aproximación teórica a la transferencia de zona y sus herramientas, he hecho una entrada prática del uso de varias de ellas, mezclandolo con algunas curiosidades

Cuando queremos comprometer un dominio o servidor, el primer paso que debemos realizar es recolectar informacion sobre el mismo. Para ello tendremos que inspeccionar el servidor DNS encargado de traducir el nombre de dominio (www.elpais.com) a la ip correspondiente (91.216.63.241) que contenga el servidor web.

/***************************************************************

  1. Transferencia de zona desde Gnu/Linux
  2. Transferencia de zona desde Windows
  3. Shodan + Resolución inversa (PTR) y ataque de diccionario a DNS
  4. Maltego

****************************************************************/

Transferencia de zona desde Gnu/Linux:

¿Qué es la transferencia de zona?

Una transferencia de zona es el procedimiento mediante el cual el “contenido de zona DNS” se copia desde un servidor DNS principal a un servidor DNS secundario.

Las causas por las que se puede producir una transferencia de zona son:

  • Un servidor DNS secundario es arrancado
  • Cuando finaliza el tiempo de actualización de una zona (digamos que caduca la información)
  • Cuando se produce un cambio en una zona y es necesario que se actualice en el resto
  • Cuando un administrador o “atacante malicioso” lo provoca 😉

Si el servidor DNS estuviera bien configurado solo debería permitir la transferencia de zona DNS entre aquellos servidores DNS de confianza de la red privada. Una petición de transferencia de zona que no provenga de un servidor DNS autorizado no debería ser servida, pero vamos a comprobar que esto no pasa siempre .

La herramienta que vamos a usar en GNU/Linux para comprobar que un DNS tenga la transferencia de zona activa es “dig”.

Para sacar el nombre de los servidores DNS usaremos la siguiente sintáxis:

 dig NS <nombre de dominio>

Ejemplo:

 dig NS uam.es 

dig NS uam.es

Imagen 1

En este caso los nombres de los servidores DNS son: ns2.uam.es, ns.uam.es y ns0.uam.es .

Para comprobar si tiene la transferencia de zona activada deberemos usar las opciones “AXFR” en la posición en la que antes teníamos “NS”.

 dig AXFR <nombre de dominio> @<nombre del servidor DNS>

Ejemplo:

 dig AXFR uam.es @ns.uam.es

transferencia de zona kali uam.es

Imagen 2

No siempre hay tanta suerte de que este servicio este habilitado. Si no lo está, aparecera un mensaje de “Transfer failed” como vemos en la imagen 3.

transferencia de zona fail

Imagen 3

Transferenia de zona desde Windows:

Desde Windows voy a mostrar como hacerlo con una herramienta que viene incluida en el OS: nslookup.

nslookup

Escribiremos en el terminal de windows:

 nslookup
server <ip del servidor DNS>
set type = any
ls <nombre del dominio>

nslookup uam

Imagen 4

Y si nos funciona veremos el listado completo de la información como se ve en la imagen 5.

nslookup windows uam.es

Imagen 5

Resolución inversa (PTR) y ataque de fuerza bruta a DNS:

Como no siempre tenemos la suerte que la transferencia de zona esta activada, tenemos que recurrir a otros métodos como la resolución inversa o fuerza bruta para conseguir un listado de los servidores.

¿Qué es la resolución inversa?

Es el proceso mediante el cual, dada una IP obtenemos el nombre de dominio que la corresponde (el proceso inverso al que suele realiar un DNS). Existe un dominio “in-addr.arpa” donde las IPs que contiene el DNS aparecen listadas de manera inversa (así, si quisieramos buscar la IP 1.2.3.4 buscaríamos 4.3.2.1.in-addr.arpa) y mediantes busquedas al registro PTR con esta IP “especial” obtendremos esta “información inversa”.

Buscando por la red he encontrado una aplicación bastante completa que se llama PenTBox v1.5; sólo tendremos que descargárnosla del servidor y ejecutarla poniendo “ruby ” delante.

Lo que más me ha llamado la atención es que utiliza Shodan en una primera fase de recolección de IPs dentro del área objetivo para luego ejecutar la resolución inversa y así conseguir una mayor cantidad de Nombres de dominio. Hay más documentación en este .pdf.

DNS -> búsqueda en shodan del dominio -> recolección de IPs -> petición PTR a cada IP

Después de esta primera fase, se realiza un ataque basado en diccionario sobre el servidor DNS. La propia herramienta trae incluido un pequeño diccionario para hacer ataques de fuerza bruta “por defecto”.

Seleccionamos la opción Network Tools (2) y DNS and host gathering (5):

PentBox 1.5 DNS gathering

Imagen 6

En el ejemplo que he puesto en la imagen 7, Shodan ha encontrado que esas IPs hacen referencia al dominio thegoatgroup.com, pero cuando hemos hecho la resolución inversa no hemos tenido éxito encontrando nuevos dominios. Inmediatamente depués se ha iniciado el ataque por diccionario descubriendo algunos dominios adicionales.

pentest thegoatgroup.com

Imagen 7

En la imagen 8 he puesto un ejemplo en el que la conexión inversa ha funcionado y podemos ver como se han descubierto algunos subdominios.

DNS PTR pentbox uam.es

Imagen 8

Si buscamos en Shodan “uam.es” vemos que las IPs coinciden en orden con la busqueda DNS inversa (PTR) que realiza la herramienta.

Utilizar Shodan para esta recolección de IPs es una buena forma de afinar la búsqueda frente a lo que sería el “método bruto” de hacer una petición PTR a cada una de las 65.535 IPs que RIPE nos dice (150.244.0.0 – 150.244.255.255) que tiene el la universidad autónoma de Madrid (que si se tiene tiempo se puede hacer, pero mejor si priorizamos 😛 ).

Maltego:

Si el DNS no tiene habilitada la transferencia de zona, el PTR no ha dado resultado y el ataque por diccionario tampoco, todavía nos queda un último recurso; Maltego. Maltego es como un pequeño espía automatizado al que tu le vas haciendo preguntas (seleccionando “transformadas”) y éste busca y saca  la información de una variedad de fuentes públicas según los patrones que tiene definidos para esa “pregunta” (transformada). No hay que fiarse de todo lo que dice Maltego porque en sus búsquedas produce muchos Falsos Positivos, y por tanto requiere de que los vayas mirando con detenimiento. Por otro lado, no detecta algunos resultados Buenos porque es una máquina y no se da cuenta de cosas que un humano si.

Para correr el programa teneis que dar vuestro email para descargar una licencia de la comunidad y ahorraros el comprarlo.

La interfaz es muy sencilla, simplemente arrastraremos el icono de dominio al “lienzo” y introduciremos el nombre del dominio. Pulsaremos botón derecho sobre el “objeto” dominio y nos saldra una lista de transformaciones en la primera opción. Si somos muy Vagos seleccionaremos “ejecutar todas las transformaciones” y el programa ejecutara todas las opciones disponibles para ese objeto. No recomiendo hacer esto porque saca muchos falsos positivos, y de golpe tenemos un monton de información buena mezclada con bastante ruido; es mejor ir de transformada en transformada una a una ejecutando según lo que queramos obtener.

En el ejemplo y en casi todas las pruebas que hago voy de una en una (transformada), pero estaba cansado y he acabado pulsado ejecutar todas; así veis un poco del ruido en la información que produce maltego.

En la imagen 9 vemos como los hosts que nos han salido coinciden con los que hemos encontrao por ataque de diccionario nosotros.

Maltego thegoatgroup.com

Imagen 9

En la imagen 10 aparecen otras webs que al parecer tienen algo que ver con el dominio objetivo, por lo que podríamos rearrancar la busqueda desde el principio con esas webs.

Vemos también como aparecen 2 número de telefonos que muy posiblemente sean falsos positivos, al igual que dos de las personas que ha encontrado el programa.

Maltego thegoatgroup.com 2

Imagen 10

Bueno, y hasta aquí ha llegado la recolección de información relativa a un Dominio y su DNS.
Espero que os haya gustado 🙂

Carlos Rebollo – @charliesec
carlos@highsec.es

  1. BTshell
    BTshell07-04-2013

    El post está cojonudo, pero en la operación con Kali Linux, ¿no sería más facil y rapido simplemente hacer un dnsenum dominio.com? y así ahorrarnos tiempo con el comando dig, solo doy mi opinión como buen ignorante que soy :), por lo demás como ya he dicho, un post cojonudo 😉

  2. Carlos Rebollo Rodríguez
    Carlos Rebollo Rodríguez07-04-2013

    Si jejeje; Estuve haciendo pruebas con dnsenum y saca sin problemas la misma información que digg con una simple llamada.
    Acabé por poner el ejemplo con dig porque me pareció más sencillo ir paso a paso, pero sí, se podría usar cualquiera de las herramientas que incluye Kali =P

  3. Snifer
    Snifer07-04-2013

    Es mejor todo hacerlo artesanalmente! mil veces luego recién hacer uso de herramientas excelente entrada Carlos, pero una duda como se llama la herramienta que viene en Kali la que usas con Shodan, lo indico porque no puedo virtualizar en mi ordenador Kali, ni instalarlo U_U

    Regards,
    Snifer

    • Carlos Rebollo Rodríguez
      Carlos Rebollo Rodríguez07-05-2013

      La herramienta se llama PentBox; en concreto yo he usado la versión 1.5 que es la más nueva.
      Está escrita en ruby y no está incluida en Kali por lo que hay que descargarsela si la quieres probar.
      He puesto un link arriba justo a la versión 1.5. Te dejo si quieres aquí otro link con todas las releases que han tenido: http://download.pentbox.net/releases/

      Me alegro que os haya gustado 🙂

  4. r0dw3
    r0dw307-04-2013

    Gracias Carlos!! 🙂

Leave a Reply

*

    No Twitter Messages