La reconnaissance (Recon) est une étape du test de pénétration qui consiste à collecter le plus d’informations sur un système, afin d’exploiter de potentielles vulnérabilités.
Dans cet article, nous montrerons quelques outils et moyens utilisés pour la reconnaissance. Ces outils m’ont été présentés lors d’un Workshop de Bsides Montreal 2024 tenu par Jason Haddix.
Check_mdi
Check_mdi un script pyhton qui interroge l’API Microsoft pour énumérer les domaines Microsoft 365 valides à un domaine donné. Il trouve le locataire du domaine et vérifie la présence d'une instance de Microsoft Defender for Identity (MDI). MDI est une solution de sécurité dévéloppée par Micosoft pour les environnements en Active Directory. Vous pouvez trouver le code source sur Github.
Pour utiliser Check_mdi, il faut exécuter la commande suivante:
git clone https://github.com/expl0itabl3/check_mdi.git
cd check_mdi
python3 ./check_mdi.py -d domain.com
Cette commande va cloner le dépôt, naviguer dans le répertoire cloné, et ensuite exécuter le script pour le domaine spécifié.
On voit donc une liste de sous-domaines et de domaines associés aux domaines recherchés, le nom du locataire, et la présence ou non de MDI.
ASN
Un ASN(Autonomous System Number) est un identifiant unique, écrit sous le format ASXXXXX, attribué à un groupe d’adresses IP géré par une même organisation, avec une politique de routage commune. Les ASN permettent aux réseaux de s’identifier de manière unique sur Internet.
Il existe plusieurs moyens et outils pour trouver les ASN associés à un domaine ou une adresse IP.
DNSCHEKER
C’est un outil en ligne (dnschecker.org) qui permet de vérifier les DNS pour un domaine. Il permet aussi de voir l’ASN associé au domaine.
ASRANKCAIDA
ASRank (asrank.caida.org) est un service qui permet d’explorer et d’analyser les relations entre différents ASN. Il fournit des informations détaillées sur l’organisation, les AS voisins et bien d’autres.
En essayant avec l’ASN de CloudFlare, on a des informations comme le positionnemnt de l’AS, le nombre de clients ou de réseaux qui dépendent de CloudFlare. Il y a aussi la liste des ASNs voisins qui montre les autres organisations avec lesquelles CloudFlare interagit. Toutes ces informations peuvent aider à mieux comprendre la topologie d’un réseau.
BGP.HE.NET
BGP.HE.NET est un service internet de Hurricane Eletric qui fournit des informations sur le DNS, l’ASN associé au domaine et les routes BGP utilisées pour atteindre ce domaine.
ASNmap
ASNmap est un outil de reconnaissance qui permet de retrouver les adresses IP associées à un domaine. Il est surtout utilisé pour avoir des infos sur les réseaux ou les serveurs. Le guide d’installation est disponible sur Github.
Installez d’abord Go sur votre machine avec la commande suivante:
sudo apt install golang-go
Clônez ensuite le dépôt depuis GitHub:
go install github.com/projectdiscovery/asnmap/cmd/asnmap@latest
Lors de la première utilisation de ASNmap, il vous faudra créer un compte sur Project Discovery Platform, pour avoir une clé gratuite pour l’utilisation de ASNmap.
Options
ASNmap supporte plusieurs options:
asnmap -a ASXXXX
pour la recherche d’un ASN spécifique,asnmap --ip 192.168.2.0
pour une adresse IP,asnmap -d domain.com
pour interroger un nom de domaine,asnmap -org ORGANIZATION
pour une organisation.
Il est possible d’avoir plusieurs options dans une même commande. Toute la documentation est disponible sur Project Discovey Blog.
En faisant une recherche sur le domaine facebook.com avec l’option -j
(affichage en format JSON), on obtient des informations comme l’ASN, le nom et le pays associé à l’AS, et aussi les plages d’adresses IP.
L’option jq
ci-dessus, permet de formater et manipuler les données au format JSON
Pour les scans, l’outil le plus connu est peut être Nmap. Mais il en existe d’autres qui sont beaucoup plus rapides et efficaces.
Naabu
Naabu est un scanner de ports devéloppé par Project Discorvery et écrit en lagange Go, pour identifier les services ouverts sur une machine ou un réseau. Il est connu pour être plus rapides avec beaucoup d’options, comme le fait de pouvoir exclure des ports, scanner toute une liste de ports ou encore le combiner avec Nmap pour avoir des résultats plus détaillés. Vous pouvez l’installer directement via Github.
Installez d’abord Go sur votre machine avec la commande suivante:
sudo apt install golang-go
Installez ensuite Naabu
go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
Options
L’option
-p
permet de scanner un port spécifique, et l’option-exclude-ports
, exclut ici, les ports 22 et 80.naabu -host [DOMAIN or IP] -exclude-ports 22,80
L’option
-list
ou-l
effectue un scan avec un fichier contenant une liste de domaines ou d’adresses IP.naabu -list domains.txt -p 22,80
Cette commande va scanner les hôtes à l’intérieur du fichier domains.txt, mais juste les ports 22 et 80
L’option
-json
permet d’avoir les résultats en format JSON. On peut ajouter l’option-o
pour sauvegarder les résultats dans un fichier.naabu -host [DOMAIN] -o output.json -json
L’option
-nmap-cli
permet d’exécuter la commande nmap directement sur les résultats obtenus. Nmap doit être déjà installé pour que ca fonctionne.naabu -host [DOMAIN] -p [PORTS] -nmap-cli 'nmap -sV -Pn'
Cette commande exécute Naabu pour scanner les ports spécifiés sur le domaine puis lance le service nmap sur chaque port.
Il est aussi possible de combiner Naabu avec ASNmap;
asnmap -a ASXXXX -silent | naabu -p 22,80 -silent
Cette commande va d’abord récupérer les plages d’adresses IP associées à l’ASN en mode silent et ensuite scanner les ports 22 et 80 avec Naabu.
Rustscan
RustScan est aussi un scanner de ports, écrit en langage Rust, beaucoup plus rapide et capable d’intégrer des outils comme Nmap pour des analyses plus détaillées.
Vous pouvez accéder au dépôt depuis la biliothèque officiel sur Github.
Téléchargement sur Kali Linux
Téléchargez le fichier d’installation depuis le terminal
wget https://github.com/RustScan/RustScan/releases/download/2.0.1/rustscan_2.0.1_amd64.deb
Se déplacer vers le dossier Downloads et modifiez les permissions du fichier installé en le rendant exécutable.
cd Downloads
sudo chmod +x rustscan_2.0.1_amd64.deb
Installez le package Debian
sudo dpkg -i rustscan_2.0.1_amd64.deb
En cas de problèmes, exécutez la commande suivante:
sudo apt update
sudo apt upgrade
Si vous rencontrez des problèmes de dépendances, exécutez la commande suivante :
sudo apt-get install -f
RustScan devrait être maintenant installé .
Options
rustscan -a [DOMAINE/IP] -p [PORT,PORT] -b -g
l’option
-a
spécifie l’adresse ou le domine ciblel’option
-p
permet de spécifier un ou plusieurs portsl’option
-b
limite la bande passante et éviter de surcharger le réseau pendant le scan.l’option
-g
simplifie l’analyse qui n'affiche que les ports ouverts détectés, sans les détails de Nmap
rustscan -a [DOMAINE/IP] -- -sV --script vuln
l’option
--
termine les arguments de RustScan. Tous les argument suivants sont directement passés à Nmapl’option
-sV
de Nmap pour active la détection des services et leurs versions sur les ports ouvertsl’option
--script vuln
détecte les vulnérabilités sur les services
Ici on scan les ports 22,80 et 445 de l’adresse 192.168.2.96. Le double-tiret indique les options sont passées à Nmap, avec l’option -sV, pour détecter la version des services.
Pour finir, ces différents outils offrent des fonctionnalitées utiles lors de la reconnaissance dans un test de pénétration. Cependant, il est important de rappeler que l'utilisation de ces outils doit toujours se faire dans un cadre légal.