(¯`'·.¸(¯`'·.¸_.·´`·._.·´`·.(¯`'·.¸ ¸.·'´¯).·´`·._.·´`·._¸.·'´¯)¸.·'´¯) ) AXFR- Bypass ) 4.5 ( Un ami ( (_¸.·'´(_¸.·'´`·._.·´`·._.·´(_¸.·'´¯`'·.¸_)`·._.·´`·._.·´`'·.¸_)`'·.¸_) 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 ) =)