Tag Archives: DNS

DNSRecon, Yet Another DNS Informations Gathering Tool

DNSRecon, outil développé en ruby par Carlos Perez (aka Darkoperator), développeur pour le projet MetaSploit et membre de la team PaulDotCom, est tous comme Fierce, ou DNSEnum, un outil de récupération d’informations par le biais des DNS.

Tous comme DNSEnum, DNSRecon effectue une récupération par le biais des “reverses lookup” d’adresses IP. Mais à la différence de DNSEnum qui va découvrir de part lui même les réseaux associés à un nom de domaine, il faut spécifier à DNSRecon une adresse IP de départ et une adresse IP de fin pour la récupération des “reverses lookup”. Cette option est intéressante, car DNSEnum, dans un certain sens, ne nous laisse pas le choix des réseaux à scanner, tandis que DNSRecon nous donnera cette liberté.

ruby dnsrecon.rb -r adresse_ip_de_depart adresse_ip_de_fin serveur_de_dns_alternatif

Une fonctionnalité que par exemple DNSEnum, ou Fierce, n’ont pas est la récupération d’information automatique sur tous les TLD associé à un nom. DNSRecon va automatiquement regarder si un nom de domaine existe pour un certaine liste de TLD, et fournir directement le ou les adresses IP associées. Il est possible facilement de rajouter des TLD à DNSRecon en modifiant le code (par exemple, DNSRecon n’intègre pas le TLD .lu dans sa liste)

82 "com", "org", "net", "edu", "mil", "gov", "uk", "af", "al", "dz",
83 "as", "ad", "ao", "ai", "aq", "ag", "ar", "am", "aw", "ac","au",
84 "at", "az", "bs", "bh", "bd", "bb", "by", "be", "bz", "bj", "bm",
85 "bt", "bo", "ba", "bw", "bv", "br", "io", "bn", "bg", "bf", "bi",
86 "kh", "cm", "ca", "cv", "ky", "cf", "td", "cl", "cn", "cx", "cc",
87 "co", "km", "cd", "cg", "ck", "cr", "ci", "hr", "cu", "cy", "cz",
88 "dk", "dj", "dm", "do", "tp", "ec", "eg", "sv", "gq", "er", "ee",
89 "et", "fk", "fo", "fj", "fi", "fr", "gf", "pf", "tf", "ga", "gm",
90 "ge", "de", "gh", "gi", "gr", "gl", "gd", "gp", "gu", "gt", "gg",
91 "gn", "gw", "gy", "ht", "hm", "va", "hn", "hk", "hu", "is", "in",
92 "id", "ir", "iq", "ie", "im", "il", "it", "jm", "jp", "je", "jo",
93 "kz", "ke", "ki", "kp", "kr", "kw", "kg", "la", "lv", "lb", "ls",
94 "lr", "ly", "li", "lt", "lu", "mo", "mk", "mg", "mw", "my", "mv",
95 "ml", "mt", "mh", "mq", "mr", "mu", "yt", "mx", "fm", "md", "mc",
96 "mn", "ms", "ma", "mz", "mm", "na", "nr", "np", "nl", "an", "nc",
97 "nz", "ni", "ne", "ng", "nu", "nf", "mp", "no", "om", "pk", "pw",
98 "pa", "pg", "py", "pe", "ph", "pn", "pl", "pt", "pr", "qa", "re",
99 "ro", "ru", "rw", "kn", "lc", "vc", "ws", "sm", "st", "sa", "sn",
100 "sc", "sl", "sg", "sk", "si", "sb", "so", "za", "gz", "es", "lk",
101 "sh", "pm", "sd", "sr", "sj", "sz", "se", "ch", "sy", "tw", "tj",
102 "tz", "th", "tg", "tk", "to", "tt", "tn", "tr", "tm", "tc", "tv",
103 "ug", "ua", "ae", "gb", "us", "um", "uy", "uz", "vu", "ve", "vn",
104 "vg", "vi", "wf", "eh", "ye", "yu", "za", "zr", "zm", "zw", "int",
105 "gs", "info", "biz", "su", "name", "coop", "aero" ]

ruby dnsrecon.rb -tld zataz serveur_de_dns_alternatif

De nouveau, tous comme DNSEnum ou Fierce, DNSRecon propose une récupération d’informations “brute force” par le biais d’un fichier contenant tous les sous-domaines que vous désirez tester. Malheureusement, comme Fierce, DNSRecon ne propose pas une mise à jour du fichier contenant tous les sous-domaines qui auraient pu être découverts par les autres options de DNSRecon.

ruby dnsrecon.rb -b zataz.com dns.txt serveur_de_dns_alternatif

Une autre fonctionnalité de DNSRecon est la récupération d’informations basée sur les entrées NS, entrées SOA et entrées MX associées au nom de domaine cible.

ruby dnsrecon.rb -s zataz.com serveur_de_dns_alternatif

Une tentative de transfert de zone est aussi possible par le biais de DNSRecon, tous comme pour DNSEnum ou Fierce.

ruby dnsrecon.rb -axfr zataz.com

ICANN mets un frein à la pratique du Domain Tasting

Vous avez sûrement tous déjà navigué sur des sites dédiés à la publicité jouant avec les pratiques du “Typosquatting” ou encore du “Domain Hijacking“. Une autre technique utilisée par les “domainers” (oups faut pas dire ce mots, ils aiment pas cela) se nomme le “Domain Tasting“, qui consiste à acheter un nom de domaine et tester sa popularité et sa rentabilité sur une période de 5 jours. Si le nom de domaine n’est pas populaire, donc pas rentable, au bout de 5 jours, le “domainers” pourra alors invoquer le principe “Add Grace Period” auprès de son registrar pour se faire rembourser le coût total du nom de domaine.

Ce principe de “Add Grace Period” a été mis en place par l’ICANN afin de donner une chance à l’acheteur du nom de domaine pour pouvoir se le faire rembourser en cas d’erreur dans l’orthographe du domaine.

Malheureusement, de nombreuses personnes (“domainers”) mal intentionnées ont exploités cette faille, permettant d’avoir un nom de domaine gratuit pendant 5 jours. Cette “période de grâce” leurs permettait d’enregistrer des noms de domaine en masse, de tester leurs popularités et leurs rentabilités publicitaire. Si un nom de domaine enregistré réussissait à rembourser son coût d’achat avant la période de 5 jours, celui-ci était conservé par le domainer, tous les autres domaines moins rentables étaient tous simplement rendus au “registrar” en invoquant le principe de “Add Grace Period”.

Le 17 Décembre 2008, l’ICANN ne supportant plus cette situation, le principe de “Add Grace Period” a été revu, demandant depuis au “registrar” de payer 6,75$ par nom de domaine qui ne serait pas conservé. Le “registrar” bien sûr a répercuter ce coût sur les “domainers” et tous naturellement la technique de “Domain Tasting” c’est réduite de 99.7% !!! Comme quoi l’argent, c’est le nerf de la guerre

Scan de domaines par Fierce

Fierce est un outil de reconnaissance et de récupération d’informations sur une cible. Cet outil, développé en PERL, scan les différentes informations récupérables sur un nom de domaine, et ceci par le biais de différentes techniques.
L’approche de Fierce est de d’abord récupérer les serveurs de domaine du domaine cible par le biais du serveur de DNS local (celui configuré sur votre poste local). Une fois ces serveurs de DNS récupérés, Fierce les utilises afin de commencer à récupérer les informations relatives au domaine cible. Un transfert de zone sera alors tenté sur chaque serveur de DNS du domaine cible, qui risque d’échouer dans la plupart des cas. Si ce transfert de zone échoue, une attaque du type “brute force” sur les serveurs de DNS du domaine cible sera effectué pour deviner les entrées enregistrées. Cette attaque du type “brute force” est basé sur un dictionnaire de base fournis avec le logiciel. Ce dictionnaire peut bien sûr être alimenté manuellement afin d’y rajouter ses propres entrées. A la différence de DNSEnum les résultats récoltés ne sont pas repris à la demande dans le dictionnaire.

Avant de lancer l’attaque brute force, Fierce va vérifier que le domaine ne possède pas de DNS wildcard. Si un DNS wildcard est trouvé, le nombre de faux positifs sera important, car chaque entrée du dictionnaire sera alors résolue.

Les résultats retournés par l’attaque brute force contiendront le, ou les, FQDN (Full Qualifie Domain Name) trouvés, ainsi que les adresses IP associées.

A partir de ces adresses IP les réseaux associés seront devinés afin de pouvoir, de par la suite, éventuellement effectuer une approche par le biais de nmap.

  • Invoquer l’aide de Fierce

perl fierce.pl -h

  • Lancement de base de Fierce

perl fierce.pl -dns domain.xxx

Attention, dans le cas présent, aucune attaque du type bruteforce ne sera effectuée. Uniquement la récupération des serveurs de noms de domaine et la tentative de transfert de zone seront effectués.
  • Enregistrer les résultats dans un fichier
perl fierce.pl -dns domain.xxx -file results.txt
  • Enregistrer les résultats dans un fichier et ne pas afficher les résultats à l’écran
perl fierce.pl -dns domain.xxx -file results.txt -suppress
  • Spécifier un serveur de DNS particulier pour les lookups DNS
perl fierce.pl -dns domain.xxx -dnsserver xxx.xxx.xxx.xxx
  • Spécifier une liste de serveurs de DNS particuliers pour les lookups DNS
perl fierce.pl -dns domain.xxx -dnsfile dnsservers.txt
Le fichier dnsservers.txt contiendra une liste (un serveur de DNS par ligne) des serveurs de DNS sur lesquels seront effectués les lookups DNS.
  • Utiliser le dictionnaire pour l’attaque brute force DNS
perl fierce.pl -dns domain.xxx -wordlist dns.txt
  • Stopper le scan de Fierce dans le cas ou le transfert de zone ai réussi
perl fierce.pl -dns domain.xxx -wordlist dns.txt -stop

perl fierce.pl -dns domain.xxx

Attention, dans le cas présent, aucune attaque du type bruteforce ne sera effectuée. Uniquement la récupération des serveurs de noms de domaine et la tentative de transfert de zone seront effectués

  • Enregistrer les résultats dans un fichier

perl fierce.pl -dns domain.xxx -file results.txt

  • Enregistrer les résultats dans un fichier et ne pas afficher les résultats à l’écran

perl fierce.pl -dns domain.xxx -file results.txt -suppress

  • Spécifier un serveur de DNS particulier pour les lookups DNS

perl fierce.pl -dns domain.xxx -dnsserver xxx.xxx.xxx.xxx

  • Spécifier une liste de serveurs de DNS particuliers pour les lookups DNS

perl fierce.pl -dns domain.xxx -dnsfile dnsservers.txt

Le fichier dnsservers.txt contiendra une liste (un serveur de DNS par ligne) des serveurs de DNS sur lesquels seront effectués les lookups DNS. • Utiliser le dictionnaire pour l’attaque brute force DNS

perl fierce.pl -dns domain.xxx -wordlist dns.txt

  • Stopper le scan de Fierce dans le cas ou le transfert de zone ai réussi

perl fierce.pl -dns domain.xxx -wordlist dns.txt -stop

DNSEnum énumère les informations relatives aux noms de domaine

DNSEnum est un outil développé en PERL permettant l’énumération et la récupération d’informations relatives aux noms de domaine.

L’utilisation de DNSEnum nécessitera l’installation de module PERL supplémentaire :

– perl-Net-Netmask
– perl-Net-Whois-IP
– perl-WWW-Mechanize

  • Utilisation de base

./dnsenum.pl domain.xxx

L’exécution de base permettra de récupérer l’adresse IP de host, les serveurs de noms de domaine, et les entrées MX associés au TLD.

De plus une tentative de transfert de zone “AXFR” sera effectuée sur chaque serveurs de DNS récupérés.

Par défaut, la récupération de ces informations s’effectuera sur le serveur de nom de domaine spécifié dans la configuration de votre machine.

  • Enregistrer les sous-domaines découverts dans un fichier dédié

Par le biais de l’option “–subfile” il est possible d’enregistrer les sous-domaines découverts dans un fichier dédié, afin de pouvoir les analyser de part la suite.

./dnsenum.pl domain.xxx –subfile results.txt

  • Spécifier un autre serveur de DNS pour la récupération des informations

Il arrive parfois que le serveur de DNS sur lequel vous allez effectuer vos résolutions ait un cache pouvant fausser les résultats (TTL). Nous vous conseillons donc de lancer la première fois DNSEnum avec comme “resolver” votre serveur de DNS local, et ensuite de récupérer le, ou les, serveurs de DNS spécifiques au nom de domaine cible, et de refaire les mêmes tests pour chaque serveurs de DNS trouvés.

Il arrive aussi parfois que les serveurs de DNS hébergeant le nom de domaine aient des entrées différentes, et qui peuvent apporter des informations supplémentaires intéressantes.

Afin de pouvoir spécifier un serveur de résolution spécifique lors de l’exécution de DNSEnum, il suffit d’utiliser l’option “–dnsserver“.

./dnsenum.pl –dnsserver xxx.xxx.xxx.xxx domain.xxx

  • Attaque de base brute force DNS par le biais de DNSEnum

L’option “-f” vous permettra de spécifier le dictionnaire de sous domaines que vous désirez utiliser pour effectuer l’attaque brute force DNS.

Le fichier “dns.txt” fournit de base avec DNSEnum contient environ 95 sous domaines.

./dnsenum.pl -f dns.txt domain.xxx

Les résultats supplémentaires qui seront fournis sont :

  1. Toutes les résolutions des noms de domaine qui ont été détectés par le biais de la méthode du type brute force
  2. Les classes C des différents noms de domaine qui ont été détectés
  3. Les “reverses lookup” de toutes les adresses IP de toutes les classes C découvertes.
  4. Les blocks IP des différentes classes C découvertes.
  • Affiner le brute forcing et les résultats obtenus avec l’option WHOIS

DNSEnum propose par le biais de son option “-w“, d’effectuer un WHOIS sur les différentes classes C découvertes, afin de valider et de fournir les véritables “net ranges” se cachant derrière et ainsi d’affiner les découvertes “reverses lookup” et l’identification des différents blocks IP.

./dnsenum.pl -f dns.txt domain.xxx -w

  • Découverte de sous domaines par le biais Google

DNSEnum donne aussi la possibilité de recherche automatiquement dans Google la présence d’autres sous domaines.

L’option “–enum” lancera 5 threads DNSEnum qui effectueront les WHOIS et les parsing des résultats retournés par Google.
Le nombre de résultats maximum qui seront extraits du parsing Google sera de 20 sur un total de 20 pages de recherches parcourues.

./dnsenum.pl -f dns.txt domain.xxx –enum

Vous pouvez bien sûr customiser votre recherche Google par le biais des options suivantes :

-p : Nombre de pages qui seront parcourues (par défaut 20), l’option -s est obligatoire.
-s : Nombre maximum de résultats qui seront extraits.

./dnsenum.pl -f dns.txt domain.xxx -s 200

  • Alimenter son dictionnaire brut force DNS avec les résultats obtenus

DNSEnum donne la possibilité d’alimenter son dictionnaire avec les résultats obtenus lors d’une exécution de base, d’une attaque du type brute force, et par le biais de résultats retournés par le “scraping” Google.

Afin de pouvoir mettre à jour son dictionnaire, il suffit d’ajouter l’option “-u” et de lui spécifier des arguments.

a – Mise à jour du dictionnaire par le biais de tous les résultats
g – Mise à jour du dictionnaire uniquement par le biais des résultats du Google scraping
r – Mise à jour du dictionnaire uniquement par le biais des résultats des “reverses lookup”
z – Mise à jour du dictionnaire uniquement par le biais des résultats du transfert de zone

./dnsenum.pl -f dns.txt –subfile results.txt -s 200 -w -u a domain.xxx