La reconnaissance lors d'un pentest

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 cible

    • l’option -p permet de spécifier un ou plusieurs ports

    • l’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 à Nmap

    • l’option -sV de Nmap pour active la détection des services et leurs versions sur les ports ouverts

    • l’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.

Did you find this article valuable?

Support FIKARA BILAL by becoming a sponsor. Any amount is appreciated!