How to fuck up da AXFR who say the lame message Query Refused
==============================================================

================================
DISC OF DA LAMER
================================

Ce texte est fait uniquement pour démontrer les problèmes de sécurités
présents sur les serveurs DNS ainsi que ( si possible ) une manière d'y
remèdier, l'auteur NE POURRA ETRE EN AUCUN CAS  tenu responsable d'une
quelconque utilisation de ces procédés de démonstrations a des fins
crapuleuses . Pour plus d'informations je vous laisse donc vous reporter aux
code pénal article 323-1 323-2 323-3 323-4 et 323-5 .
Il est aussi à noter que l'auteur ne peut être tenu responsable du contenu
de ce document du fait que des informations ont pu être ajoutés ou retirés .
Merci d'en tenir compte . 
Il est privé et donc ne concerne que l'auteur et son
destinataire donc si vous n'êtes pas autorisé à lire ce texte pour une
quelconque raison ne le lisez pas !

Si vous n'êtes pas d'accord avec ces terms ne continuer pas la lecture de ce
document .

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







Salut tous =)

L'utilisation des techniques présentés ici demande quelques petites
connaissances du protocol DNS pour cela je vous laisse vous reporter aux
excellents RFC ou DNS-Howto qui expliquent trés bien ce que sont les caches,
les entrées, les reverses les zones in-addr.arpa ...

Donc avant de commencer à lire ce texte si vous ne comprennez pas les
quelques mots précédents et bien j'utiliserai la célèbre réplique 
Read The Fine Manuel . =)


bon déja un AXFR c'est koi ?
============================

Un domain ( exemple security-bogus.com ) est composé de différente entrées
dans son fichier de configuration,

exemple : IN A ; IN MX; IN CNAME; IN NS ; IN HINFO <-- plus rare ...

Donc si l' on peut récupérer ces informations, on peut aussi récupérer pleins
d'informations intéréssante sur le réseau par exemple les noms + adresses ip
des machinnes, les servers de mail contenant les utilisateurs, les serveurs
DNS , et même parfois des informations sur les machinnes installés (HINFO).

Bon voila comment normallement on fait une requete AXFR sur un domain 
( exemple security-bogus.com )

[nobody@security-bogus /]$ host -l security-bogus.com
security-bogus.com name server ns1.security-bogus.com
security-bogus.com name server ns2.security-bogus.com
security-bogus.com has address 127.0.0.1
linux.security-bogus.com has address 192.168.1.2
mail.security-bogus.com has address 192.168.1.3
ns1.security-bogus.com has address 192.168.1.5
ns2.security-bogus.com has address 192.168.1.7
grosse-pomme.security-bogus.com has address 192.168.1.1

Ce que je vien de faire va générer le message suivant dans les logs du
server :

Apr 29 20:07:54 security-bogus.com named[1407]: approved AXFR from [127.0.0.1].9611
for "security-bogus.com"

Là on voit que tout passe niquel ... On peut meme downloader la conf :

[nobody@security-bogus /]$ host -l -v -t any security-bogus.com 
rcode = 0 (Success), ancount=1
Found 1 addresses for ns1.security-bogus.com
Trying 127.0.0.1
security-bogus.com      86400 IN        SOA     ns1.security-bogus.com
root.localhost(
                        1997022700      ;serial (version)
                        28800   ;refresh period
                        14400   ;retry refresh this often
                        3600000 ;expiration period
                        86400   ;minimum TTL
                        )
security-bogus.com      86400 IN        NS      ns1.security-bogus.com
security-bogus.com      86400 IN        NS      ns2.security-bogus.com
security-bogus.com      86400 IN        A       127.0.0.1
security-bogus.com      86400 IN        MX      1 mail.security-bogus.com
linux.security-bogus.com        86400 IN        A       192.168.1.2
mail.security-bogus.com 86400 IN        A       192.168.1.3
ns1.security-bogus.com  86400 IN        A       192.168.1.5
ns1.security-bogus.com  86400 IN        HINFO   Pentium 200
ns2.security-bogus.com  86400 IN        A       192.168.1.7
grosse-pomme.security-bogus.com 86400 IN        A       192.168.1.1
grosse-pomme.security-bogus.com 86400 IN        HINFO   CISCO   IOS
security-bogus.com      86400 IN        SOA     ns1.security-bogus.com root.localhost(
                        1997022700      ;serial (version)
                        28800   ;refresh period
                        14400   ;retry refresh this often
                        3600000 ;expiration period
                        86400   ;minimum TTL
                        )
( On peut noter qu'en réalité le DNS file n'est pas aussi complexe mais que
lorsqu'on le recupère via un AXFR il le devient ... )

Voila la on a le fichier config avec quelques infos MAIL (MX) DNS ( NS )
Informations ( HINFO )

PS : on aurait pu obtenir ces derniere infos avec :

host -t mx security-bogus.com ( pour avoir les mails servers )
host -t A security-bogus.com ( pour avoir les entrées standarts )
host -t ns security-bogus.com ( pour avoir les dns servers )
            etc ...


Approfondissons le mécanisme avant de passer au Secure DNS Bypassing =)

Bon pour ceux qui ont lu le DNS howto & co j'explique, ils comprendront :
au moment où le server de nom primaire ( ns1 ) est démarré, il copie les
informations sur les entrés ( A; NS; MX ... ) vers ( ns2 , le secondaire )
via ce que l'on appel un transfert de zone ... 

Donc si on suit mon raisonnemment, les informations de zone ( A, NS, MX,
HINFO ...) sont aussi consultables depuis le NS2

===================================================
Passons a l'attaque !
===================================================

Bon maintenant imaginons que l'AXFR soit refusé sur security-bogus.com

[nobody@security-bogus /]$ host -l security-bogus.com
Server failed: Query refused  <-- This is da fucking Query Refused !
[nobody@security-bogus /]$
 
Quoi !@!@!@! ? C'est à moi qu'il m'exprime lui !@!@! =)

Regardons de plus prés ...
Bon ce genre de messager signifie que le DNS était protégé contre les AXFR

Mais si on regarde d eplus prés, on voit que certainnes requêtes sont
toujours autorisés ! Et oui, les entrées NS et MX sont toujours lisibles !
Car sans elle le DNS ne pourrait meme pas convertir les hosts de
security-bogus.com en IP ou encore permettre la réception de mail .

allé prtit test =)

[nobody@security-bogus /]$ host -t ns security-bogus.com
security-bogus.com name server ns1.security-bogus.com
security-bogus.com name server ns2.security-bogus.com
[nobody@security-bogus /]$

La on voit que les deux servers de DNS sont ns1.security-bogus.com et
ns2.security-bogus.com alors on va faire le petit truc magique ...

[nobody@security-bogus /]$ host ns1.security-bogus.com
ns1.security-bogus.com has address 192.168.1.5
[nobody@security-bogus /]$ 

[nobody@security-bogus /]$ host ns2.security-bogus.com
ns1.security-bogus.com has address 192.168.1.7
[nobody@security-bogus /]$


Bon désormé on a les IP des deux DNS alors c'est la que sa se joue :

echo " " > /etc/resolv.conf ( on enleve sa propre conf DNS )
echo " " >> /etc/resolv.conf
echo "nameserver 192.168.1.5" >> /etc/resolv.conf
echo " " >> /etc/resolv.conf

voila et là on essaye =)

[nobody@security-bogus /]$ host -l security-bogus.com
Server failed: Query refused
[nobody@security-bogus /]$

Grrr sa marche pas !

Bon alors on essaye le DNS suivant :
echo " " > /etc/resolv.conf
echo " " >> /etc/resolv.conf
echo "nameserver 192.168.1.7" >> /etc/resolv.conf
echo " " >> /etc/resolv.conf

Vla et la on retest

[nobody@security-bogus /]$ host -l security-bogus.com
security-bogus.com name server ns1.security-bogus.com
security-bogus.com name server ns2.security-bogus.com
security-bogus.com has address 127.0.0.1
linux.security-bogus.com has address 192.168.1.2
mail.security-bogus.com has address 192.168.1.3
ns1.security-bogus.com has address 192.168.1.5
ns2.security-bogus.com has address 192.168.1.7
grosse-pomme.security-bogus.com has address 192.168.1.1

Et voila comment j'ai fait fait pour bypasser la protection contre les AXFR,
j'ai juste utilisé le DNS secondaire, non protégé contre la lecture pour
lire les infos prises sur le premier .

Bon ce que j'ai expliqué ne marche pas ?


============================================
Attaque n°2
============================================

Un DNS bien configuré par un bon administrateur gère les reverses c a dire
qu'une adresse IP pointe vers un nom par exemple si j'essaye de résoudre
192.168.1.7 sa me pointe vers ns2.security-bogus.com ( en rélité il ne regarde
pas le reverse de 192.168.1.7 mais plutot le PTR  c'est a dire l'entrée :
7.1.168.192.in-addr.arpa IN PTR ns2.security-bogus.com. )

Bon revenons dans le cas où même aprés la première attaque : toujours rien

[nobody@security-bogus /]$ host -l security-bogus.com
Server failed: Query refused
[nobody@security-bogus /]$

[nobody@security-bogus /]$ host -t ns security-bogus.com
security-bogus.com name server ns1.security-bogus.com
security-bogus.com name server ns2.security-bogus.com
[nobody@security-bogus /]$

[nobody@security-bogus named]$ host -t mx security-bogus.com
security-bogus.com mail is handled (pri=1) by mail.security-bogus.com
[nobody@security-bogus named]$

Bon là, malgrés que l'on ne puisse pas faire de AXFR on a déja 3 hosts regardons
leurs IP :

[nobody@security-bogus named]$ host ns1.security-bogus.com
ns1.security-bogus.com has address 192.168.1.5
[nobody@security-bogus named]$

[nobody@security-bogus named]$ host ns2.security-bogus.com
ns1.security-bogus.com has address 192.168.1.7
[nobody@security-bogus named]$

[nobody@security-bogus named]$ host mail.security-bogus.com
mail.security-bogus.com has address 192.168.1.3
[nobody@security-bogus named]$

Hehe, vous remarquez la même chose que moi, ?, et oui aparement, tout le
réseau security-bogus.com est sur la classe d'IP 192.168.1.X
Sinon vous pouvez aussi vous aidez d'un whois sur le RIPE ou sur l' ARIN
pour connaitre les classes d'ip exactes du réseau attaqué .
Bon bha là, la solution c'est d'essayer d'avoir le reverse de chaques IP du
réseau .


Pour, vous éviter de faire: host 192.168.1.1; host 192.168.1.2; 
host 192.168.1.3 ( jusqu'a 255 ). J'ai fait un petit prog qui génère des suites
d'adresses IP .


/* ----------------------------------  CUT  HERE ------------------------ */
main(int argc, char *argv[]){

int i;

if(argc != 2){
   printf("Usage : %s 192.168.1.\n", argv[0]);
   exit(0);
    }

for(i = 1; i < 255+1; i++){
     printf("%s%d\n", argv[1], i);
        }

}
/*---------------------------------- CUT HERE   --------------------------- */ 

Bon une fois compilé on fait :

./c-ip 192.168.1. | awk '{ print "host " $1}' >> exec-ce-check
host -t ns security-bogus.com >> exec-ce-log
host -t mx security-bogus.com >> exec-ce-log
sh ./exec-ce-check >> exec-ce-log

Et voila, now vous avez récu une partie de la configuration, c'est déja pas
mal !

---------------------------------------------------------------------------

Les solutions a ces differents problemes :

 - Si on protège un NS primaire contre es AXFR, il faut aussi
   protéger les secondaires ...

 - Utilisé BIND 8.1.X et oui de nouvelle fonctionnalités sont venus s'ajouter
   par exemple le fait de pouvoir autorisé certains hotes seulement a faire 
   des transferts de zones .

-  Virer le cache ( si possible ) des NS servant de primaire ou de
   secondaires à un domaine .

-  Lire les howtos concernant la sécurité de DNS =)

---------------------------------------------------------------------------

J'espère vous avoir un peu éclairé sur ce qu'est le Secure DNS bypassing =)

Voila 

La scène doit vivre, non pas avec des passionnées du dimanche mais avec ceux
qui veulent tout comprendre qui passe des journées a babasser pour faire
ceci ou cela . Et j'espère que la scène vivra et que des générations
prendront le relais .

Autre chose, oui toi jeune Jedy, n'oublis pas les bases de l'âme du hacker ...
Tu ne voleras point, tu ne détruiras point.
Et tu ne t'attaqueras pas a des sites aux quels tu n'es VRAIMENT pas autorisé, en 
particulier tout ce qui concerne le gouvernement ...

Greetings To :
<->-<->-<->-<->

- Moi même =)
- BugBuster ( ph34r d4 31337 h4x0r p0w4|-| ) , Next ( phear ), The Cryptel Team, 
  Aaah, va2, Cyber, Tequilla ( phear =) ), drahiin et tout ceux que j'oublis et, 
  évidement, vous les lecteurs.
- Tous ceux qui m'ont éclairé quand je me noyais dans mes débuts,
- aux DNS howto et aux howtos en général
- UNIX Administrateur Système SECRET D'EXEPERTS
- Practical Unix and Internet Security 
- Chevaliers d'Internet et pirates informatiques ( non non je déconne ) =)


----------------------------------------------------------------------r4-------
	      
	      ( tant mieux pour ceux qui comprendront, tampis pour les autres )