Búsqueda de servicios DNS con Transferencia de Zona abierta (AXFR)

Ya vimos que los servidores mal configurados que permiten realizar transferencias de zona sin restricciones desde cualquier IP son muchos.

Para saber si un servidor DNS es “vulnerable” a este tipo de ataque usamos la herramienta dig, primero obtenemos los dns que estan asociados al dominio, para este ejemplo usaremos el dominio zerial.org.

$ dig NS zerial.org
; < <>> DiG 9.7.3 < <>> NS zerial.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 64152
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 6

;; QUESTION SECTION:
;zerial.org. IN NS

;; ANSWER SECTION:
zerial.org. 86400 IN NS ns1.linode.com.
zerial.org. 86400 IN NS ns3.linode.com.
zerial.org. 86400 IN NS ns2.linode.com.
zerial.org. 86400 IN NS ns5.linode.com.
zerial.org. 86400 IN NS ns4.linode.com.

Ya tenemos la lista de los servidores dns de zerial.org, para probar la transferencia de zona cambiamos NS por AXFR y forzamos que use el DNS que nosotros elijamos, en este caso probaremos ns3.linode.com:

$ dig AXFR zerial.org @ns3.linode.com

; < <>> DiG 9.7.3 < <>> AXFR zerial.org @ns3.linode.com
;; global options: +cmd
; Transfer failed.

Failed. No hemos logrado transferir la zona desde ns3.linode.com, lo que nos indica que aparentemente se encuentra bien configurado.
Otro ejemplo usando un dominio que sepamos que tiene esta falla: finanzas.gov.ar.
Obtenemos los dos:

$ dig NS finanzas.gov.ar

; < <>> DiG 9.8.0-P4 < <>> NS finanzas.gov.ar
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 38476
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;finanzas.gov.ar. IN NS

;; ANSWER SECTION:
finanzas.gov.ar. 7006 IN NS ns3.zoneedit.com.
finanzas.gov.ar. 7006 IN NS ns9.zoneedit.com.

Probamos el segundo dns, ns9.zoneedit.com.

$ dig AXFR finanzas.gov.ar @ns9.zoneedit.com

; < <>> DiG 9.8.0-P4 < <>> AXFR finanzas.gov.ar @ns9.zoneedit.com
;; global options: +cmd
finanzas.gov.ar. 7200 IN SOA ns3.zoneedit.com. soacontact.zoneedit.com. 2011266765 2400 360 1209600 300
finanzas.gov.ar. 7200 IN NS ns3.zoneedit.com.
finanzas.gov.ar. 7200 IN NS ns9.zoneedit.com.
finanzas.gov.ar. 7200 IN A 201.253.123.35
finanzas.gov.ar. 7200 IN MX 10 ALT1.ASPMX.L.GOOGLE.COM.
finanzas.gov.ar. 7200 IN MX 10 ALT2.ASPMX.L.GOOGLE.COM.
finanzas.gov.ar. 7200 IN MX 0 ASPMX.L.GOOGLE.COM.
finanzas.gov.ar. 7200 IN MX 20 ASPMX2.GOOGLEMAIL.COM.
finanzas.gov.ar. 7200 IN MX 20 ASPMX3.GOOGLEMAIL.COM.
finanzas.gov.ar. 7200 IN MX 20 ASPMX4.GOOGLEMAIL.COM.
finanzas.gov.ar. 7200 IN MX 20 ASPMX5.GOOGLEMAIL.COM.
mail.finanzas.gov.ar. 7200 IN CNAME ghs.google.com.
googleffffffff85ca3fa2.finanzas.gov.ar. 7200 IN CNAME google.com.
asignaciones.finanzas.gov.ar. 7200 IN A 186.136.205.252
docs.finanzas.gov.ar. 7200 IN CNAME ghs.google.com.
www.finanzas.gov.ar. 7200 IN A 201.253.123.35
mapas.finanzas.gov.ar. 7200 IN A 201.253.123.35
finanzas.gov.ar. 7200 IN SOA ns3.zoneedit.com. soacontact.zoneedit.com. 2011266765 2400 360 1209600 300
;; Query time: 355 msec
;; SERVER: 66.240.231.42#53(66.240.231.42)
;; WHEN: Thu Aug 11 13:49:31 2011
;; XFR size: 18 records (messages 18, bytes 1138)

La transferencia de zona se hizo de forma exitosa.

Para poder analizar de forma automatica un listado de dominios, hice un script en bash que usa DIG para obtener los dns de cada dominio y prueba realizar AXFR por cada dominio en todos sus dns.

#!/bin/bash

digcmd=$(which dig)
domain=$1
echo -n "[+] Getting NS domains from $1 ..."
ns_domains=$(dig NS $domain @4.2.2.2|grep ^$domain|awk {'print $5'}|sed 's/.$//g')
echo -e "\t[OK]"
for ns in $ns_domains; do echo "[-] Found: "$ns; done
for ns in $ns_domains
do
	echo -n "Trying Zone Transfer from $ns: "
	$digcmd AXFR $domain @$ns|egrep 'Transfer failed|timed out|end of file'>/dev/null
	if [ $? -eq 1 ]
	then
		echo -e "\tSuccess."
	else
		echo -e "\tFail."
	fi
done

La forma de ejecucion es:

]$ sh zonetransfer.sh finanzas.gov.ar
[+] Getting NS domains from finanzas.gov.ar ... [OK]
[-] Found: ns9.zoneedit.com
[-] Found: ns3.zoneedit.com
Trying Zone Transfer from ns9.zoneedit.com: Success.
Trying Zone Transfer from ns3.zoneedit.com: Success.

Nos indica que es posible realizar una transferencia de zona desde ns3.zoneedit.com y ns9.zoneedit.com para el dominio finanzas.gov.ar.
Tambien podemos pasarle un archivo que contenga una lista de dominios que queramos analizar de forma masiva. Por ejemplo, tenemos un archivo llamado dominios.txt con los dominios:
finanzas.gov.ar
transparencia.cl
gobierno.cl
argentina.gov.ar
gobierno.es
microsoft.com

Ejecutamos:

$ for dom in $(cat dominios.txt); do sh zonetransfer.sh $dom; done
[+] Getting NS domains from finanzas.gov.ar ... [OK]
[-] Found: ns9.zoneedit.com
[-] Found: ns3.zoneedit.com
Trying Zone Transfer from ns9.zoneedit.com: Success.
Trying Zone Transfer from ns3.zoneedit.com: Success.
[+] Getting NS domains from transparencia.cl ... [OK]
[-] Found: ns02.000webhost.com
[-] Found: ns01.000webhost.com
Trying Zone Transfer from ns02.000webhost.com: Fail.
Trying Zone Transfer from ns01.000webhost.com: Fail.
[+] Getting NS domains from gobierno.cl ... [OK]
[-] Found: ga.interior.gov.cl
[-] Found: gb.interior.gov.cl
[-] Found: ns1.presidencia.cl
Trying Zone Transfer from ga.interior.gov.cl: Fail.
Trying Zone Transfer from gb.interior.gov.cl: Fail.
Trying Zone Transfer from ns1.presidencia.cl: Success.
[+] Getting NS domains from argentina.gov.ar ... [OK]
[-] Found: nsii.arcert.gov.ar
[-] Found: nsii.sgp.gov.ar
Trying Zone Transfer from nsii.arcert.gov.ar: Fail.
Trying Zone Transfer from nsii.sgp.gov.ar: Fail.
[+] Getting NS domains from gobierno.es ... [OK]
[-] Found: sun.rediris.es
[-] Found: chico.rediris.es
[-] Found: dns1.mpr.es
[-] Found: dns2.mpr.es
Trying Zone Transfer from sun.rediris.es: Fail.
Trying Zone Transfer from chico.rediris.es: Fail.
Trying Zone Transfer from dns1.mpr.es: Fail.
Trying Zone Transfer from dns2.mpr.es: Fail.
[+] Getting NS domains from microsoft.com ... [OK]
[-] Found: ns3.msft.net
[-] Found: ns4.msft.net
[-] Found: ns1.msft.net
[-] Found: ns2.msft.net
[-] Found: ns5.msft.net
Trying Zone Transfer from ns3.msft.net: Fail.
Trying Zone Transfer from ns4.msft.net: Fail.
Trying Zone Transfer from ns1.msft.net: Fail.
Trying Zone Transfer from ns2.msft.net: Fail.
Trying Zone Transfer from ns5.msft.net: Fail.

Ya tenemos el output del script, donde nos dice que los dns de finanzas.gov.ar y uno de gobierno.cl permite AXFR.

7 comentarios

  1. Excelente artículo, bien explicado y fácil de digerir. Espero que sigas escribiendo mas sobre este protocolo, como por ejemplo detectar dominios maliciosos que hostean rogues, phising etc.. mediante la técnica que has descrito arriba.

    Saludos!!

  2. Muy rascas los del gobierno argentino para usar Zonedit que es gratis! .. si en 5 minutos puedes configurar un DNS server bien… bueno.. alli estan los resultados! 😀 #FAIL

  3. Buenisimo, va para el arsenal

  4. Para nosotros los informaticos lo mas importante es innovar y que dia a dia la tecnologia supere nuestras espectativas y nuestro mundo se haga mas facil y mas acogedor

  5. zerial estube viendo tu blog y me parece bastante bueno sobretodo lo de transferencia de zona.. hay veces en que entramos a servidores y nisiquiera sabemos sobre algunos dominios.. está perfecto el script y si puedes escribir mas sobre esto excelente!

  6. Yo sufri una transferencia electronica sin mi autorizacion a traves de la pagina web del Bancoestado.cl ahora el banco no quiere responder, y necesito fundamento que su pagina no es segura para que me devuelvan mi dinero, alguien me puede ayudar, con antecedentes??? gracias victor-2513@hotmail.com

  7. Buenísimo aporte gracias por la información.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.