Utiliser Shodan pour l’Audit de Sécurité : La Puissance de l’OSINT Réseau
Publié par Bastien Brousse • Temps de lecture : 7 min
Savoir utiliser Shodan pour l’audit de sécurité est aujourd’hui une compétence incontournable en OSINT (Open Source Intelligence) et en reconnaissance offensive ou défensive. Contrairement à un moteur de recherche classique comme Google qui indexe du contenu web, Shodan scanne en permanence Internet pour répertorier les machines connectées, leurs ports ouverts et leurs bannières de service.
Dans cet article, nous allons explorer la puissance brute de cet outil, comprendre son fonctionnement et apprendre à utiliser Shodan pour l’audit de sécurité de vos propres infrastructures réseau. Pour découvrir mes autres travaux et projets en cybersécurité, vous pouvez consulter mes projets de recherche et d’audit.
1. Pourquoi utiliser Shodan pour l’audit de sécurité de son infrastructure ?
La surface d’attaque d’une entreprise ou d’un laboratoire personnel évolue rapidement. Une simple erreur de configuration de pare-feu, un serveur Redis exposé sans mot de passe ou un service SSH accessible sur un port non standard peuvent suffire à compromettre un réseau. C’est là qu’intervient Shodan.
En interrogeant Shodan, un auditeur ou un administrateur système peut obtenir une cartographie exacte de ce qui est visible depuis le web public sans émettre le moindre paquet directement vers la cible (reconnaissance passive). Pour approfondir vos connaissances sur les concepts de reconnaissance et de scanning, n’hésitez pas à lire la documentation officielle de Shodan.
2. Les filtres essentiels pour maîtriser la recherche Shodan
Pour exploiter pleinement la puissance de l’outil et éviter le bruit dans les résultats, il faut utiliser des filtres syntaxiques avancés. Voici les plus utiles lors d’une phase de reconnaissance :
net:: Restreint la recherche à un bloc d’adresses IP ou un sous-réseau CIDR (ex:net:192.168.1.0/24).hostname:: Filtre par nom de domaine ou FQDN (ex:hostname:target.com).port:: Cible un port réseau spécifique (ex:port:22,port:3389).org:: Filtre selon l’organisation ou le fournisseur d’accès (ex:org:"OVH SAS").product:: Recherche une technologie ou un logiciel précis (ex:product:"Nginx",product:"Apache httpd").vuln:: Filtre les hôtes affectés par une vulnérabilité CVE spécifique (requiert un compte premium/académique).
3. Cas pratiques : Détecter les mauvaises configurations
L’une des principales raisons d’utiliser Shodan pour l’audit de sécurité est d’identifier les services critiques laissés ouverts par inadvertance. Voici quelques requêtes type utilisées en audit :
A. Repérer les bases de données exposées sans authentification
product:MongoDB "metrics" -authenticationCette requête permet d’identifier les instances MongoDB qui répondent sans exiger d’authentification préalable.
B. Identifier les interfaces de gestion industrielles ou IoT
title:"Dashboard" port:8080 org:"VotreEntreprise"
💡 Retour d’expérience : Mon approche lors d’un audit OSINT
Lors de mes projets de cartographie d’infrastructure et d’outils OSINT (notamment autour de la veille sur les fuites de données), j’utilise Shodan en première intention pour établir l’empreinte externe (footprinting) sans générer de trafic suspect vers la cible.
Ma méthodologie privilégie la corrélation des bannières SSL/TLS (recherche par hash JA3 ou empreinte de certificat) plutôt que la simple recherche par IP. Cela permet de retrouver des serveurs de rebond ou des environnements de dev oubliés même s’ils ont changé d’adresse IP.
4. L’API Shodan : Automatiser la veille de votre surface d’attaque
Au-delà de l’interface web, Shodan propose une API REST très complète (ainsi qu’une bibliothèque Python) permettant d’intégrer des alertes automatisées dans vos workflows de sécurité.
import shodan
API_KEY = "VOTRE_CLE_API"
api = shodan.Shodan(API_KEY)
try:
# Recherche passive sur un domaine ou une IP
results = api.search('net:XX.XX.XX.XX/24')
print(f"Total d'hôtes trouvés : {results['total']}")
for service in results['matches']:
print(f"IP: {service['ip_str']} | Port: {service['port']} | Organisation: {service.get('org', 'N/A')}")
except shodan.APIError as e:
print(f"Erreur : {e}")En automatisant ce script, vous pouvez être alerte dès qu’un nouveau port est détecté comme ouvert sur la plage d’IP de votre organisation.
🔒 Conseil de Sécurisation :
Si vous découvrez vos propres équipements sur Shodan, appliquez la règle du moindre privilège : fermez les ports inutiles sur vos routeurs, mettez en place un VPN pour l’accès aux interfaces d’administration et configurez un reverse proxy chiffré. Pour en savoir plus sur ma vision de la défense en profondeur, consultez ma page à propos.
Mon script de veille passive d’exposition
Dans le cadre de mes travaux sur la sécurité des systèmes et la surveillance d’infrastructures, j’ai développé des scripts d’alerte automatisés exploitant l’API Stream de Shodan. L’objectif : être notifié en temps réel dès qu’un service non autorisé est exposé sur une plage IP surveillée.
# Exemple de monitoring passif d'exposition réseau
import shodan
API_KEY = "VOTRE_CLE_API"
api = shodan.Shodan(API_KEY)
def monitor_infrastructure(cidr_range):
"""
Scanne de façon passive l'exposition d'un sous-réseau
et alerte en cas d'ouverture de port critique.
"""
try:
results = api.search(f'net:{cidr_range}')
print(f"[+] Analyse de {cidr_range} : {results['total']} hôte(s) détecté(s)")
for host in results['matches']:
ip = host['ip_str']
port = host['port']
product = host.get('product', 'Inconnu')
print(f" └─ Hôte : {ip}:{port} | Service : {product}")
except shodan.APIError as e:
print(f"[-] Erreur API Shodan : {e}")
# Surveillance de sous-réseau
monitor_infrastructure("192.168.1.0/24")
Conclusion : Intégrer Shodan dans vos processus d’audit
Apprendre à utiliser Shodan pour l’audit de sécurité permet de passer d’une posture réactive à une démarche proactive. En voyant votre infrastructure exactement comme un attaquant la voit sur Internet, vous pouvez corriger les vulnérabilités et les erreurs de configuration avant qu’elles ne soient exploitées.
