dimanche 9 mars 2008

[PENTESTING] [DNS] Look for subdomains

Lors de notre dernière mission, nous avons étudié un outil permettant de trouver les domaines pertinents comme les entreprises en relation avec notre cibles. Une fois cette liste en notre possession, nous allons essayer pour chaque élément d'aller aussi loin que possible. Pour cela, le DNS sera notre arme pivot. pour l'exploiter, nous utiliserons le couteau suisse pour ce genre d'attaque, dnsenum.


I - Installation de l'outil

Tout d'abord, téléchargez l'utilitaire ici. Il s'agit donc d'un script PERL. Avant de pouvoir l'installer, il nous faut installer un certain nombre de modules comme indiqué dans le fichier README.txt :
  • Net::IP
  • Net::DNS
  • Net::Netmask
  • Net::Whois::IP
  • HTML::Parser
  • WWW::Mechanize
  • threads
  • threads::shared
  • Thread::Queue
Les modules peuvent être installés de deux manières (exemple avec Net::IP) :

1ère méthode : manuellement

A noter que les modules perl se trouvent sur le site http://www.cpan.org/modules.
  1. Télécharger le tarball ici ;
  2. Le décompresser :
    1. $ tar -zxvf Net-IP-1.25.tar.gz
  3. Installer le module :
$ cd Net-IP-1.25/
$ perl Makefile.PL
$ make
$ make install

A noter si vous rencontrez des problèmes pour installer le module HTML::Parser (comme moi ;)), vérifier que le gcc est à jour et/ou que libc-dev est installé et à jour (sur Debian) :

$ dpkg -l | grep gcc
$ dpkg -l | grep libc-dev

Et éventuellement :

$ apt-get install gcc libc-dev


2e méthode, l'installation automatique :

$ perl -MCPAN -e 'install "Net::IP"'


II - Utilisation de l'outil

Nous sommes prêts ! L'outil va étudier la cible en plusieurs étapes. Ce que nous allons voir tout de suite.


Lancement de l'attaque :

Pour utiliser toutes les possibilités, nous utiliserons la commande suivante :

$ perl dnsenum.pl -v -f dns.txt domaine_cible

avec :

  • -v : verbose ;
  • -f : bruteforce. Le fichier peut être dns.txt - fourni avec l'outil mais qui devrait être personnalisé - contient un dictionnaire de noms DNS probables comme dns1. Le but est de trouver de nouveau sous-domaines ;
  • domaine_cible : par exemple, google.com

Déroulement de l'attaque :

Comme nous allons le voir, la plupart des étapes pourraient être effectuées manuellement. Nous en verrons donc les commandes (certainement déjà connues) ainsi que le résultat pour chacune. Pour exemple, notre "cible" sera lemonde.fr.

1 - Obtention de l'adresse IP

Commande manuelle équivalente ?

$ dig lemonde.fr

Résultat ?

lemonde.fr. 550 IN A 195.154.120.129

2 - Trouver les serveurs DNS primaires (champs NS)

Commande manuelle équivalente ?

$ dig NS lemonde.fr

Résultat ?

$ ns2.te-dns.net. 304 IN A 62.210.64.52
$ ns1.te-dns.net. 304 IN A 212.83.156.82

3 - Trouver les serveurs de messagerie (champs MX)

Commande manuelle équivalente ?

$ dig MX lemonde.fr

Résultat ?

smtp0.lemonde.fr. 600 IN A 194.3.81.5
smtp1.lemonde.fr. 600 IN A 194.3.81.6

4 - Trouver les transferts de zones (champs AXFR)

Commande manuelle équivalente ?

$ host -l lemonde.fr ns1.te-dns.net
$ host -l lemonde.fr ns2.te-dns.net

Résultat ?

Transfer failed


Les transferts de zone ne sont donc pas autorisés pour ce domaine...

5 - Google-scrapping

Commande manuelle équivalente ?

N/A

Résultat ?

N/A


6 - Trouver des sous-domaines supplémentaires par Brute Force (option -f )


Commande manuelle équivalente ?

$ dig .lemonde.fr

Avec , un des mots de la liste contenue dans dns.txt (par exemple).

Résultat ?

blog.lemonde.fr. 241 IN A 195.15.120.132
forum.lemonde.fr. 600 IN CNAME forums.lemonde.fr.
forums.lemonde.fr. 600 IN A 195.154.120.161
...
ftp.lemonde.fr 257 IN A 194.3.81.226
...

Nous pouvons voir certain service dès cette étape très intéressant dans le cadre d'un pentest comme FTP en plus d'un serveur mail (étape 3).

7 - Enumérer les plages d'adresses de classe C et lancer des requêtes WHOIS


Commande manuelle équivalente ?

$ whois lemonde.fr

Résultat ?

194.3.81.0/24
195.154.120.0/24

8 - Lancer des requêtes reverse lookups sur les plages d'adresses récupérées en 8 -, ainsi que les adresses récupérées via WHOIS (toujours en 8 -)

Commande manuelle équivalente (en testant toutes les adresses IP obtenues en 8 -) ?

$ nslookup

Résultat ?

135.120.154.195.in-addr.arpa. 600 IN PTR cacheman.lemonde.fr.
140.120.154.195.in-addr.arpa. 600 IN PTR pan.lemonde.fr.
...

9 - Ecrit l'ensembles des adresses dans un fichiers de type domaineclible_ips.txt

Commande manuelle équivalente ?

N/A

Résultat ?

$ cat lemonde.fr_ips.txt
195.154.120.135/32
...
195.154.120.168/30

Aucun commentaire:

Locations of visitors to this page