Shodan est un moteur de recherche qui indexe les appareils connectés à Internet. Cet outil permet d’identifier les vulnérabilités potentielles des infrastructures et de tout appareil connecté.
Guide d'utilisation de Shodan avec un compte gratuit
En indexant les appareils connectés à Internet plutôt que les sites web permet notamment de découvrir quels appareils sont connectés à Internet, où ils se trouvent, qui les utilise et les failles de sécurité potentielles. Cet outil est précieux pour les professionnels de la cybersécurité pour identifier les vulnérabilités potentielles dans leurs infrastructures.
Cet article décrit les principales fonctionnalités de base et avancées de Shodan accessibles avec un compte gratuit, afin de :
- Comprendre comment les entreprises peuvent être exposées sur Internet.
- Identifier les bonnes pratiques en matière de sécurité.
- Sensibiliser aux risques liés aux appareils mal configurés.
Cet article est écrit à des fins de sensibilisation à la cybersécurité. Les informations recueillies via Shodan ne doivent jamais être utilisées pour des activités illégales ou non éthiques. Il est rappelé qu’il ne faut jamais accéder à des systèmes sans autorisation explicite du propriétaire et que toute intrusion illicite peut-être tracée et l’auteur retrouvé.
1. Créer un compte Shodan gratuit
Utiliser un compte gratuit que l’on va créer permet d’accéder à certaines fonctionnalités, cependant celle-ci restent limitées. Pour obtenir des fonctionnalités plus importantes et plus intéressantes il faudra accéder à un compte payant. Pour créer un compte gratuit :
- Aller sur https://account.shodan.io/register.
- Remplir le formulaire (adresse e-mail et mot de passe).
- Confirmer l’adresse e-mail en cliquant sur le lien reçu.
2. Interface web de Shodan
2.1 - Recherches de base
L'interface web de Shodan sur https://www.shodan.io/ permet d'effectuer des recherches simples. Avec un compte gratuit il y a un nombre limité de requêtes qu’il faut donc utiliser judicieusement.
Exemples de recherches de base :
- webcam : recherche des webcams connectées
- apache : recherche des serveurs utilisant Apache
- country:FR : limite les résultats à la France
- port:22 : recherche les appareils avec le port SSH ouvert
2.2 - Filtres avancés (compte gratuit)
Voici les principaux filtres utilisables avec un compte gratuit :
- country:code : code pays (ex : FR, US, DE)
- city:nom : nom de la ville
- port:numéro : numéro de port spécifique
- os:système : système d'exploitation (Windows, Linux, etc.)
- hostname:nom : nom d'hôte ou domaine
- net:adresse/masque : plage d'adresses IP (ex : 192.168.1.0/24)
2.3 - Syntaxe des requêtes
- Utilisation des opérateurs booléens :
- apache AND country:FR : serveurs Apache en France
- webcam NOT password : webcams sans protection par mot de passe
- "Server: Apache" port:8080 : recherche les serveurs Apache sur le port 8080
3. Commandes Shodan CLI (compte gratuit)
Le CLI (Command Line Interface) de Shodan offre des fonctionnalités supplémentaires. Voici comment l'installer et l'utiliser avec un compte gratuit :
3.1 – Command line interface
- Installation du CLI : pip install shodan
- Il est possible qu’un ou plusieurs messages (warnings) demandent de mettre le chemin dans les variables d’environnement.
- Configuration du CLI : shodan init « CLE_API ».
Pour récupérer sa clé API, se connecter à son compte Shodan et aller sur «Account".
Si l’initialisation de Shodan ne fonctionne pas et qu’une erreur comme « ModuleNotFoundError: No module named 'pkg_resources » s’affiche c’est qu'il manque un module Python nécessaire. Voici comment résoudre ce problème :
- Essayer d'installer le module manquant avec pip : pip install setuptools
- Si cela ne fonctionne pas, essayer alors : pip install --upgrade setuptools
- Réessayer d'initialiser SHODAN : shodan init "ma_clé_API".
- Si le problème persiste, vérifier la version de Python utilisée avec SHODAN. Ce genre d'erreur peut se produire quand plusieurs versions de Python sont installées. Une solution alternative peut être de réinstaller complètement le CLI SHODAN en faisant : pip uninstall shodan et ensuite : pip install shodan.
Exemple de commande : shodan host 8.8.8.8 on obtient :
PS C:\Users\root_Orion> shodan host 8.8.8.8
8.8.8.8
Hostnames: dns.google
City: Mountain View
Country: United States
Organization: Google LLC
Updated: 2025-04-03T10:48:12.821013
Number of open ports: 2
Ports:
53/tcp
53/udp
443/tcp
|-- HTTP title: Google Public DNS
|-- Cert Issuer: C=US, CN=WR2, O=Google Trust Services
|-- Cert Subject: CN=dns.google
|-- SSL Versions: -SSLv2, -SSLv3, -TLSv1, -TLSv1.1, TLSv1.2, TLSv1.3
PS C:\Users\root_Orion>
3.2 - Commandes de base
- Recherche d'informations: shodan search apache
- Compte d'hôtes: shodan count apache country:FR
- Informations sur une IP spécifique : shodan host 8.8.8.8
- Conversion de requêtes : shodan convert --filters apache country:FR port:80
- Recherche DNS : shodan domain example.com
4. Exemples de cas d'utilisation
4.1 - Identifier les appareils IoT exposés
La requête : "Server: Arduino" port:80 montre comment des appareils IoT peuvent être exposés accidentellement à Internet sans protection adéquate.
Pour rechercher des appareils IoT Arduino avec une clé API gratuite, voici comment formuler correctement la requête :
shodan search "Server: Arduino" port:80
Si cette requête génère une erreur 403 (limites du compte gratuit), essayer de la simplifier comme ceci :
shodan search "Arduino" --limit 10
Avec une API gratuite, on peut également explorer d'autres approches :
Utiliser la commande shodan stats pour voir des statistiques sur les résultats sans les afficher tous : shodan stats "Server: Arduino" port:80
Utiliser un filtrage par pays pour réduire le nombre de résultats : shodan search "Server: Arduino port:80 country:FR"
Utiliser l'interface web de SHODAN pour les recherches, elle pourrait offrir plus de fonctionnalités avec un compte gratuit.
Il faut bien noter que les comptes gratuits de SHODAN ont des limitations significatives, notamment sur les types de requêtes et le nombre de résultats. En cas d’utilisation régulière il vaut mieux envisager un abonnement payant.
4.2 - Trouver des instances de bases de données non sécurisées
La requête : "MongoDB Server Information" port : 27017 illustre l'importance de sécuriser les bases de données avec au minimum une authentification.
4.3 - Découvrir des interfaces d'administration
La requête : http.title:"Dashboard" port:80,8080,8443 montre comment des interfaces d'administration peuvent être accessibles sans authentification conforme.
4.4 - Surveiller sa propre infrastructure
Shodan peut être utilisé pour auditer sa propre empreinte sur Internet et identifier des failles potentielles.
5. Limites du compte gratuit et bonnes pratiques
5.1 - Limites du compte gratuit
- Les résultats sont généralement limités à 100 résultats par recherche.
- Le nombre de requêtes est limité à un certain quota par mois.
- L’accès aux données historiques est limité ou indisponible.
- L’export de données a des fonctionnalités limitées.
5.2 - Bonnes pratiques d'utilisation
- En raison des limites il est nécessaire de planifier soigneusement ses requêtes.
- Il faut utiliser des filtres précis pour obtenir des résultats pertinents.
- Documenter ses découvertes à des fins pédagogiques mais sans exposer d'informations sensibles.
- Respecter l'éthique en n'exploitant jamais les vulnérabilités découvertes sans autorisation.
6 - Tableaux de commandes utiles
6.1 - Tableau des filtres courants
Filtre |
Description |
Exemple |
country |
Code pays ISO |
country:FR |
city |
Nom de ville |
city:Paris |
port |
Numéro de port |
port:22 |
os |
Système d'exploitation |
os:Linux |
product |
Nom du produit/service |
product:nginx |
version |
Version du service |
version:1.14.0 |
net |
Plage d'adresses IP |
net:192.168.0.0/24 |
hostname |
Nom d'hôte/domaine |
hostname:example.com |
http.title |
Titre de la page web |
http.title:"Dashboard" |
http.status |
Code de statut HTTP |
http.status:200 |
has_ssl |
Présence de SSL/TLS |
has_ssl:true |
6.2 - Tableau des commandes CLI de base
Commande |
Description |
|
Exemple |
shodan search |
Recherche dans la base de données |
shodan search apache |
|
shodan host |
Informations sur une IP |
shodan host 8.8.8.8 |
|
shodan count |
Compte le nombre de résultats |
shodan count port:22 |
|
shodan scan |
Lance un scan (limité) |
shodan scan submit 192.168.1.0/24 |
|
shodan domain |
Informations sur un domaine |
shodan domain example.com |
|
shodan convert |
Convertit une requête |
shodan convert --filters apache |
|
shodan stats |
Statistiques sur une recherche |
shodan stats --facets country port:22 |
|
shodan download |
Télécharge des résultats |
shodan download results apache |
7 - Exemple de recherche de caméras web exposées
Ce qui suit montre comment trouver des caméras de surveillance mal protégées sur Internet dans le but de sensibiliser aux risques et encourager la mise en place de bonnes pratiques de sécurité. Ceci est à utiliser uniquement pour ses propres caméras et systèmes. Accéder à des flux vidéo sans autorisation du propriétaire est illégal et peut faire l’objet de poursuites.
7.1 - Recherche de caméras exposées via l'interface web
7.1.1 - Requêtes de base pour identifier des caméras
- Recherche générale de webcams
- Dans la barre de recherche de Shodan, taper simplement : webcam
- On peut affiner par pays : webcam country:FR
- Recherche par marques populaires
- Hikvision : product:hikvision
- Dahua : dahua
- Axis : product:"AXIS"
- Foscam : product:"foscam"
- Recherche par protocole
- RTSP (streaming) : port:554 has_screenshot:true
- Caméras HTTP sans authentification : webcam http.component:basic-auth -401.
- Recherche par titres spécifiques
- title:"webcam" has_screenshot:true
- title:"surveillance" has_screenshot:true
- title:"camera" has_screenshot:true
7.1.2 - Navigation dans les résultats
- Cliquer sur un résultat pour voir les détails.
- Dans la page de détails, on peut voir selon les cas :
- Une capture d'écran (si disponible avec le compte)
- Les ports ouverts
- Les services en cours d'exécution
- Les bannières (qui révèlent souvent le modèle exact)
- Pour les caméras mal sécurisées, on peut voir :
- Un lien direct vers l'interface web
- Des informations sur le flux RTSP
- Des identifiants par défaut non changés
7.2 - Recherche avancée via CLI
Pour des recherches plus précises, utiliser le CLI de Shodan:
- Recherche de caméras Hikvision en France : shodan search "product:hikvision country:FR" --fields ip_str,port,org,hostnames
- Recherche de caméras avec capture d'écran disponible : shodan search "webcam has_screenshot:true" --fields ip_str,port,http.title
- Recherche de caméras utilisant des identifiants par défaut : shodan search "webcam "200 OK" "Server: IP Camera"" --fields ip_str,port
7.3 - Identification des marques et modèles spécifiques
Hikvision
- product:hikvision
- http.title:"Hikvision" -401
- "Server: Hikvision-Webs" -401
Dahua
- product:dahua
- "Server: Dahua" -401
- http.title:"dahua" -401
Axis
- product:"AXIS" http.title:"AXIS"
- product:"AXIS" http.component:basic-auth -401
Foscam et générique
- product:"foscam"
- "NetSurveillance"
7.4 - Accès aux interfaces d'administration
Pour les caméras identifiées, on peut trouver différents types d’interfaces :
- Interface web directe
- Accessible via http://IP:PORT mentionné dans les résultats Shodan
- Souvent sur les ports 80, 8080, 8000, 8081, 9000, etc.
- Flux RTSP
- Format général : rtsp://IP:PORT/stream ou rtsp://IP:PORT/ch01/main/av_stream.
- Pour Hikvision: rtsp://IP:554/Streaming/Channels/1.
- Pour Dahua: rtsp://IP:554/cam/realmonitor?channel=1&subtype=0.
- Flux MJPEG
- Généralement accessible via : http://IP:PORT/video.mjpg ou http://IP:PORT/videostream.cgi.
7.4 - Vérification de la sécurité de ses caméras personnelles
- 1 : Identifier son adresse IP publique: Consulter un site comme "https://www.my-ip-finder.fr/" pour connaître son adresse IP publique.
- 2 : Rechercher sa propre adresse IP sur Shodan : shodan host MON_IP_PUBLIQUE. Examiner les résultats pour voir si ses caméras sont exposées.
- 3 : Recherche par nom de domaine: Si on a un nom de domaine pointant sur son votre réseau : shodan domain MON_DOMAINE.com
- 4 : Recherche par plage d'adresses IP : en connaissant la plage d'adresses IP : shodan search net:192.168.1.0/24. Remplacer par la plage d'adresses IP publiques.
8 - Mesures de protection à adopter
En cas de découverte d’exposition de ses caméras, voici les mesures à prendre :
- Modifier immédiatement les identifiants par défaut : 1changer les noms d'utilisateur et mots de passe d'usine.
- Limiter l'accès : configurer un VPN pour accéder à ses caméras depuis l'extérieur.
- Utiliser un pare-feu pour bloquer l'accès direct depuis Internet
Mettre à jour le firmware : vérifier et installer les dernières mises à jour de sécurité.
Utiliser HTTPS et authentification forte : activer HTTPS s’il est disponible. Utiliser l'authentification à deux facteurs si elle est supportée.
Segmenter le réseau : Placer les caméras sur un VLAN ou un réseau séparé.
Désactiver les services inutiles : désactiver les protocoles non utilisés (RTSP, ONVIF, UPnP).
9 - Exemple d’audit de sécurité d'un système de vidéosurveillance
1 : Inventaire : Lister toutes ses caméras, leurs marques, modèles et adresses IP internes.
2 : Vérifier sur Shodan : utiliser les commandes précédentes pour vérifier si ses caméras sont exposées.
3 : Test d'accès externe : depuis un réseau externe (par exemple en utilisant les données mobiles d'un smartphone), essayer d'accéder à ses caméras en utilisant son adresse IP publique et les ports suspectés.
4 : Documentation : documenter toutes les vulnérabilités trouvées pour y remédier.
5 : Remédiation : appliquer les mesures de protection décrites précédemment.
10 - Conclusion
Shodan est un outil puissant pour comprendre l'exposition des systèmes sur Internet. Même avec un compte gratuit, il offre des fonctionnalités précieuses pour la sensibilisation à la cybersécurité.
Utilisé de manière éthique et responsable, il permet de sécuriser ses systèmes et met en évidence l'importance de la sécurisation des systèmes d'information.
Ressources supplémentaires
- Documentation officielle : https://developer.shodan.io/api
- Cheat sheet Shodan: https://www.shodan.io/search/filters
- Forums de la communauté : https://help.shodan.io