Effectuer une Reconnaissance efficace avec SpiderFoot
Hey, what's going on guys?
Bienvenue dans cette leçon dans laquelle on va voir comment mener une reconnaissance passive et active avec un outil qui s'appelle SpiderFoot.
Comme vous pouvez le voir à l'écran, SpiderFoot est en train d'effectuer un scan sur une cible.
Mais avant de vous montrer comment utiliser SpiderFoot, j'aimerais vous présenter les différents outils disponibles sur Kali Linux pour réaliser la phase de reconnaissance.
Si vous allez dans le menu « Information Gathering » (Collecte d'informations) de Kali Linux, vous trouverez une multitude d'outils qui vous permettent de faire de la reconnaissance passive et active sur un réseau ou un système cible.
Par exemple, dans la première section « DNS Analysis », vous trouverez des outils comme dnsenum, dnsrecon ou Fierce, qui permettent de faire des recherches spécifiques sur le protocole DNS (Domain Name System), responsable de la traduction des noms de domaine en adresses IP.
Vous avez aussi une section « IDS/IPS Identification ».
Les IDS (Intrusion Detection System) servent à détecter les attaques sur un réseau ou un système, tandis que les IPS (Intrusion Prevention System) sont conçus pour bloquer ces attaques.
Vous trouverez dans cette section des outils pour identifier si ces systèmes de protection ou des pare-feu protègent votre cible.
Par exemple, WafW00f permet de détecter si un site web utilise un WAF (Web Application Firewall).
Dans la section « Live Host Identification », des outils comme Masscan, fping ou hping3 permettent de déterminer si une cible ou un serveur est actif.
Par exemple, vous pouvez essayer de pinger une machine en utilisant la commande `ping`.
Cependant, sur Windows, par défaut, le pare-feu bloque les requêtes ICMP (les pings).
Ainsi, si une machine Windows ne répond pas au ping, cela ne signifie pas nécessairement qu'elle est hors ligne.
Prenons un exemple en ouvrant l'invite de commandes (CMD) sur ma machine hôte Windows.
Si je tape `ipconfig`, je vois l'adresse IP de ma machine Windows.
Si j'ouvre ensuite un terminal sur Kali Linux (dont je peux voir l'adresse IP locale avec `ifconfig`), et que je tente de pinger ma machine Windows (à l'adresse `192.168.95.70` par exemple), le ping ne répond pas.
C'est une protection par défaut de Microsoft pour éviter que les attaquants ne détectent facilement les machines actives sur le réseau.
Cet exemple montre bien que si une machine ne répond pas au ping, elle peut tout de même être active.
Essayons maintenant avec une autre machine virtuelle Kali Linux.
Si je regarde sa configuration réseau et que je la mets en mode « Bridged Adapter » (Accès par pont) au lieu de « NAT », elle se retrouve sur le même réseau physique que ma machine Windows hôte, ce qui leur permet de communiquer directement.
Si la machine virtuelle était restée en mode NAT, elle serait isolée sur un réseau privé virtuel géré par l'hyperviseur et ne pourrait pas communiquer directement avec l'hôte sur le même sous-réseau.
En configurant la machine virtuelle en mode Pont, on lui attribue une adresse IP de mon réseau local.
Si je lance ensuite un ping de Kali Linux vers cette autre machine virtuelle Kali, celle-ci répond normalement car, contrairement à Windows, elle autorise les requêtes ICMP par défaut.
Cela confirme que l'hyperviseur gère bien la communication sur le réseau local.
Dans la section « Network & Port Scanners », nous trouvons des outils très connus comme Nmap et Masscan.
Nmap est l'outil de référence que nous étudierons en détail dans une prochaine leçon.
Masscan est similaire, mais il est particulièrement réputé pour sa rapidité lors du scan de très grandes plages d'adresses IP.
Nous avons ensuite la section « OSINT Analysis ».
L'OSINT (Open Source Intelligence) consiste à collecter des informations publiques disponibles sur Internet.
Des outils comme SpiderFoot permettent d'automatiser cette tâche.
SpiderFoot va interroger de nombreuses sources publiques (moteurs de recherche, bases de données, APIs tierces) pour collecter des adresses IP, des e-mails, des sous-domaines, etc., et stocker toutes ces données.
Vous trouverez également des sections comme « Route Analysis » pour cartographier le chemin des paquets sur le réseau (essentiel pour le pentest réseau), « SMB Analysis » avec des outils comme enum4linux, nbtscan et smbmap (très utiles car le protocole SMB dans les environnements Windows présente souvent des failles), ou encore « SMTP Analysis » et « SSL Analysis » pour auditer les protocoles de messagerie ou analyser les certificats SSL/TLS d'un serveur web (par exemple pour recommander au client de mettre à jour une ancienne version de SSL/TLS obsolète).
Plus vous récoltez d'informations sur votre cible, plus vous aurez d'options pour la phase d'exploitation et de recommandations pertinentes pour votre rapport.
Intéressons-nous maintenant à SpiderFoot, qui est installé par défaut sur Kali Linux.
Pour l'utiliser, nous pouvons le lancer en ligne de commande ou démarrer son interface web.
Pour lancer le serveur web de SpiderFoot, ouvrez un terminal, passez en root avec `sudo su`, puis lancez la commande `spiderfoot -l 192.168.95.70:80` (en indiquant l'adresse IP de votre machine d'attaque et le port souhaité, par exemple le port 80 ou le port par défaut 5001).
Ouvrez ensuite l'URL indiquée dans votre navigateur.
Vous arriverez sur l'interface web de SpiderFoot, que je trouve très réussie et épurée.
Le terminal continue de fonctionner en arrière-plan pour gérer les processus.
Pour démarrer un nouveau scan, allez dans l'onglet « New Scan », donnez un nom à votre scan (par exemple le nom du client « X-Corp ») et entrez la cible (un nom de domaine, une adresse IP ou une plage réseau comme un `/24`).
Les scans peuvent prendre pas mal de temps selon la taille de la cible.
Par exemple, j'ai lancé un scan sur mon site `hackinggeek.com` et il tourne déjà depuis 20 minutes.
Soyez patient, car plus la cible est importante, plus le processus est long.
SpiderFoot vous permet de choisir les types d'informations à collecter.
Vous pouvez choisir d'effectuer une reconnaissance purement passive (l'outil rassemble les informations publiques sans jamais envoyer de requêtes directement à la cible ou à ses serveurs), ou d'activer tous les modules (la reconnaissance passive et active) pour interroger directement le système cible.
Vous pouvez également sélectionner précisément les données recherchées ou les modules à utiliser.
SpiderFoot s'appuie sur de nombreux services tiers comme Google Maps, host.io, Twilio pour les numéros de téléphone, VirusTotal pour la réputation de sécurité, ou encore HackerOne pour le bug bounty.
Si vous cliquez sur le scan en cours pour `hackinggeek.com`, vous accéderez au tableau de bord.
Dans l'onglet « Browse », vous pouvez voir les éléments trouvés (plus de 200 dans mon cas) : des certificats SSL, des adresses IPv6, des plages de pays, ou encore des sous-domaines découverts.
L'onglet « Graph » propose une visualisation graphique très intéressante qui montre les relations entre votre cible principale et les éléments découverts.
Par exemple, SpiderFoot a trouvé des sous-domaines comme `school.hackinggeek.com` (un ancien sous-domaine aujourd'hui supprimé), `cours.hackinggeek.com` (utilisé pour héberger mes formations et mes livres), `www.hackinggeek.com`, ou des enregistrements DNS et adresses IP associés.
Il a également identifié des sous-domaines techniques comme `cpcontacts.hackinggeek.com` ou `cpcalendars.hackinggeek.com`, un ancien domaine `dojo.hackinggeek.com`, ainsi que le serveur de messagerie `mail.stack`.
Il a même détecté des configurations SPF révélant l'utilisation passée de la plateforme d'envoi d'e-mails Mailkitchen.
Toutes ces informations sont précieuses et peuvent être intégrées dans votre rapport.
L'onglet « Browse » liste ces résultats sous forme de tableau, tandis que le graphique illustre visuellement la topologie des informations collectées.
SpiderFoot est donc un outil fantastique pour automatiser la phase de reconnaissance.
Vous le lancez généralement en arrière-plan au début de votre pentest pour qu'il travaille pendant que vous effectuez d'autres tâches.
On se retrouve dans la prochaine leçon !