Rappel : L’article qui va suivre contient des techniques et méthodes qui peuvent s’avérer être illégales et dangereuses si elles sont utilisées à mauvais escient. Ce tutoriel a été construit dans un but pédagogique et doit en aucun cas être utilisé contre un particulier, une entreprise, une organisation à but non lucratif ou une administration publique de quelconque pays. le-guide-du-sysops.fr se dédouane de toute responsabilité en cas de problèmes ou d’incidents de quelque nature que ce soit après le visionnage de cet article.

Bonjour à tous, aujourd’hui nous allons mettre en œuvre une attaque DNS Enumeration. Cette manœuvre consiste à brute forcer un nom de domaine afin de découvrir d’éventuels sous-domaines, dans le but de cartographier le réseau d’une entreprise. C’est une des premières choses à faire lors de la réalisation d’un pentest. (notamment lors d’une attaque en mode « boite noire »)

Pour cela, nous allons utiliser le non moins célèbre dnsrecon. Cet outil a été développé par Carlos Perez en 2006. Il a été écrit à l’origine en Ruby, mais a maintenant un portage Python. Il est toujours utilisé en 2020, et il est disponible par défaut dans kali linux 2020.

Environnement de travail

  • Kalilinux 2020.4, disposant d’apache2 et dnsrecon.

Pour ce tutoriel, j’utilise un serveur web pour requêter un fichier .xml post attaque. Cela est facultatif pour réaliser cette attaque. Certaines données ont été masqués, pour des raisons évidente de confidentialité.

Nous allons créer un dossier « test » à la racine de notre serveur web, afin d’y concentrer deux fichiers que nous allons créer plus tard.

cd /var/www/html 
mkdir test

Ensuite lancez l’attaque avec cette commande. La sortie de celle-ci sera sauvegardée dans un fichier au format .xml, que nous allons requeter avec un petit script .js maison. (Le dictionnaire de nom de domaines est celui utilisé par défaut par dnsrecon)

dnsrecon -d mondomaine.com -D /usr/share/dnsrecon/namelist.txt -t brt -x output-dns-records.xml
Suite à l’attaque brute force, 15 sous domaines ont été identifiés ! Ils ont été masqués, pour des raisons évidente de confidentialité.
cp /usr/share/dnsrecon/output-dns-records.xml /var/www/html/test/output-dns-records.xml

Une fois que l’attaque est finit, copier le fichier output-dns-records.xml dans votre dossier que vous avez créer au seins de votre serveur web.

Créer un fichier index.html, et placez dans le répertoire test de votre serveur web, et collez le contenu du bloc de code suivant.

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "output-dns-records.xml", true);
xhttp.send();

function myFunction(xml) {
    var x, i, xmlDoc, txt;
    xmlDoc = xml.responseXML;
    txt = "";
    x = xmlDoc.getElementsByTagName('record');
    for (i = 0; i < x.length; i++) { 
	    if (x[i].getAttribute('address') === null) {
		console.log("Attribut address is not present on line",i, "content of the line : ",x[i])
	    }
	    else{
		txt += x[i].getAttribute('address') + "<br>";
		document.getElementById("demo").innerHTML = txt; 
	    }
    }
}</script>

</body>
</html>

Accédez au fichier, depuis votre navigateur. Vous y verrez l’ensemble des IPs, de manière plus claire.

Listes des IPs associés aux sous domaines ! Elles ont été masqués, pour des raisons évidente de confidentialité.

Rendez-vous sur le site suivant, afin de faire une géolocalisation groupé de votre pool d’@ IP trouvé, pour cartographier les sous domaines.

https://app.ipapi.co/bulk/

Collez les IPs
Mise en relief de la géolocalisation des @ ip trouvé précédemment. Elles ont été masqués, pour des raisons évidente de confidentialité.

Voilà un rapide aperçu de cette méthode qui constitue un des premiers reflexe a adopter lors d’une attaque en mode « boite noire ». Celle-ci est primordiale pour réaliser une topologie DNS approfondie de l’entité visée. À partir des résultats que donneront cette énumération, nous pourrons alors envisager d’autres angles d’attaque.

++

Geoffrey pour Le guide du sysops.


Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"