[PYTHON] Utilisation et intégration de "Shodan"

Dans cet article, je parlerai de ** "Shodan" **, de son fonctionnement et de son intégration dans les outils et les scripts.

Ce que Shodan peut faire

Shodan détecte les appareils connectés à Internet à tout moment, l'emplacement de ces appareils et l'utilisateur actuel. Ces dispositifs peuvent être présents dans presque tous les types de systèmes, y compris les réseaux d'entreprise, les caméras de surveillance, les systèmes de contrôle industriel (ICS) et les maisons intelligentes. Shodan est la première étape importante des tests d'intrusion, car essayer d'obtenir la bannière du système permet d'identifier directement le système vulnérable. Il peut également faire plus en prenant en charge l'opérateur booléen et en fournissant des filtres pour améliorer l'efficacité de la recherche. Le moteur de recherche propose 50 résultats gratuitement et propose des abonnements payants pour un plus large éventail de résultats.

Comment ça fonctionne

Il existe trois façons d'utiliser Shodan.

--Interface Web

Pour ce tutoriel, nous utiliserons Alibaba Cloud Elastic Compute Service (ECS). Afin de sécuriser l'instance, vous devez la configurer en conséquence.

Après avoir effectué les deux configurations ci-dessus, vous pouvez installer Apache sur ECS et y accéder avec un navigateur Web pour le tester.

Interface Web Shodan

Shodan, comme la plupart des autres moteurs de recherche, est accessible en accédant à shodan.io avec un navigateur Web. Je peux. image.png

Je voudrais savoir combien de serveurs utilisent Apache dans le monde. Entrez simplement le mot-clé "apache". image.png

Comme vous pouvez le voir sur l'image, les résultats montrent que 25 544 783 serveurs fonctionnent sur Internet.

Shodan a de nombreuses autres fonctionnalités, mais vous devez vous inscrire pour les utiliser. Une erreur s'est produite lors d'une tentative d'analyse approfondie sans compte, comme indiqué ci-dessous. image.png

Maintenant, disons que vous avez créé un compte avec succès et vous êtes connecté. L'une des fonctionnalités de Shodan est le filtre, mais voyons ce que vous pouvez en faire.

Les filtres sont des mots clés spéciaux que Shodan utilise pour filtrer les résultats de recherche en fonction des métadonnées du service ou de l'appareil. Le format de saisie du filtre est

filtername:value

Par exemple

Par exemple, supposons que vous souhaitiez effectuer une recherche précise en recherchant tous les serveurs Apache avec Tomcat.

Le mot clé est "product:" apache to mcat "". Les résultats sont dans la capture d'écran ci-dessous.

image.png

En conséquence, nous avons constaté qu'il existe 1 445 150 serveurs exécutant Apache Tomcat dans le monde.

Vous pouvez affiner davantage votre recherche en recherchant tous les serveurs Apache Tomcat en Chine.

Product:"apache tomcat" country:cn

Ce que j'ai fait, c'est demander à Shodan de rechercher un serveur Apache à Tomcat en Chine.

image.png

Les résultats montrent qu'il existe 409 609 serveurs Apache avec Tomcat en Chine.

Supposons maintenant que vous exécutiez un service sur l'un des ECS et que vous souhaitiez voir ce qui se passe. Dans mon cas, j'utilise Alibaba ECS comme exemple, comme mentionné ci-dessus.

Pour faire la tâche, nous devons utiliser un filtre réseau et la valeur sera notre adresse IP.

Net: adresse IP

Supposons que vous ayez installé Apache, étant donné que votre groupe de sécurité n'a pas créé de règle pour autoriser le trafic entrant et sortant. Lorsque j'essaye d'y accéder en saisissant mon adresse IP dans le navigateur, je ne vois rien car Alibaba Cloud limite le trafic par défaut. Cela permet de garantir la sécurité du serveur ECS même si vous n'avez créé aucune règle pour le groupe de sécurité.

image.png

Comme vous pouvez le voir sur cette image, le serveur fonctionne sur Alibaba et l'IPS est Aliyun Computing. Puisque nous utilisons deux ports (80 443), nous avons deux services en cours d'exécution sur le serveur et la technologie Web utilisée est jQuery. Cela fera partie des informations que les pirates collectent sur le serveur pour voir s'il existe des vulnérabilités telles que les versions SSL. ..

Voyons maintenant comment utiliser Shodan en utilisant l'interface de ligne de commande (CLI).

Interface de ligne de commande Shodan

L'interface de ligne de commande (CLI) de Shodan est fournie avec la bibliothèque officielle Python pour Shodan. Pour installer un nouvel outil, exécutez-le simplement.

$ easy_install shodan

Après avoir installé l'outil, vous devez l'initialiser avec la clé API.

$ shodan init YOUR_API_KEY

À https://account.shodan.io Accédez à la clé API de votre compte. Il sera affiché dans le coin supérieur droit du bouton Mon compte. Une fois l'API_KEY initialisée, vous pouvez maintenant commencer à utiliser les commandes de Shodan.

Vous pouvez vérifier les informations du compte.

Maintenant, imaginez que vous êtes dans une instance d'ECS et que vous voulez savoir quelle est votre adresse IP publique. Avec ifconfig, Alibaba Cloud protège le service par défaut, vous ne connaissez donc que l'adresse IP privée. Si vous souhaitez connaître votre adresse IP publique, entrez simplement la commande Shodan my ip.

$ shodan myip

image.png

Le résultat montre mon IP publique 47.89.249.0.

Si vous souhaitez avoir des informations sur un hôte, nous pouvons maintenant utiliser Shodan, par exemple où se trouve un tel hôte, quel port est ouvert, quelle organisation possède l'adresse IP, etc. Disons que 42.120.226.13 est notre serveur et que nous voulons le tester pour voir ce qui fonctionne.

$ shodan host 42.120.226.13

image.png

Notre serveur est en Chine, dernière mise à jour 2019-01-21, 2 ports fonctionnent (80, 443), le résultat nous a donné plusieurs versions, alors vérifiez la version SSL besoin de le faire.

La CLI possède d'autres fonctionnalités telles que l'analyse du réseau, les modules complémentaires maltego et les plug-ins de navigateur, mais vous devrez mettre à niveau votre compte de plan pour en profiter.

Shodan du script

Shodan fournit une API de développeur pour accéder par programme aux informations collectées. Tous les sites Web et outils, y compris le site principal de Shodan, utilisent cette API. Tout ce que vous pouvez faire via un site Web peut être réalisé à partir de votre propre code.

L'API est divisée en deux parties. "REST API" et "Streaming API". L'API REST fournit diverses méthodes utilitaires pour rechercher Shodan, rechercher des hôtes, obtenir des informations récapitulatives pour les requêtes et faciliter le développement. L'API Streaming fournit un flux brut et en temps réel des données que Shodan collecte actuellement. Vous pouvez vous abonner à plusieurs flux, mais vous ne pouvez pas rechercher de données ni interagir avec elles d'une autre manière.

Restrictions d'utilisation

Il existe trois méthodes d'API qui sont limitées par le plan d'API.

1, ** Recherche **: Shodan utilise des crédits de requête pour limiter le nombre de recherches pouvant être effectuées en un mois. Les crédits d'une requête sont utilisés lorsque vous effectuez une recherche qui inclut un filtre ou lorsque vous passez la première page. Par exemple, si vous recherchez "apache", aucun crédit de requête ne sera utilisé. De plus, si vous recherchez "apache country: US", 1 crédit de requête sera utilisé. De même, si vous recherchez des résultats de recherche sur la deuxième page avec "apache", utilisez 1 crédit de requête. Enfin, la requête de recherche sur la deuxième page de "apache country: US" utilise également 1 crédit de requête.

2, ** Analyse **: l'API d'analyse à la demande utilise des crédits d'analyse pour limiter le nombre d'hôtes que Shodan peut demander à analyser chaque mois. Déduisez 1 crédit de scan pour tous les hôtes pour lesquels vous demandez un scan Shodan.

3, ** Alertes réseau **: Le nombre d'adresses IP pouvant être surveillées à l'aide d'alertes est limité en fonction de votre abonnement API. Seuls les clients payants peuvent accéder à cette fonctionnalité. De plus, vous ne pouvez pas créer plus de 100 alertes pour votre compte.

** Remarque **: les crédits de requête et d'analyse seront réinitialisés au début de chaque mois.

Pour installer la bibliothèque Shodan pour Python, exécutez la commande suivante:

$ easy_install shodan

Si vous l'avez déjà installé et que vous souhaitez passer à la dernière version.

$ easy_install -U shodan

La première chose à faire est d'initialiser l'objet API Shodan.

import shodan
api = shodan.Shodan('YOUR API KEY')

Ici, votre clé API est la clé API de votre compte et peut être obtenue à partir de: https://account.shodan.io

Maintenant que vous avez toutes les API, vous pouvez effectuer une recherche avec un petit script. image.png

Comme vous pouvez le voir sur cette image, nous écrivons un petit script qui essaie de scanner Internet pour les serveurs et les requêtes. Le code est écrit en python3.

Si vous exécutez le script avec un paramètre appelé Apache, Shodan analysera Internet et vous fournira toutes les informations du serveur Apache.

Exécutons le script et voyons s'il fonctionne et quel sera le résultat. image.png

Le résultat du script ressemble à ce qui précède. Comme vous pouvez le voir, le serveur Apache fonctionne sur l'adresse IP.

Conclusion

À mesure que la technologie évolue, nous devons rester à jour pour nous assurer que notre sécurité n'est pas compromise. En particulier dans les applications IoT où plusieurs appareils sont exposés au Web, la sécurité est importante non seulement pour garantir le bon fonctionnement des actifs, mais également pour protéger la confidentialité. L'un des outils les plus puissants disponibles pour cela est Shodan. Mais comme tous les bons outils, Shodan peut aussi être une épée à double tranchant. Il peut facilement être exploité par des pirates informatiques, mais il vous aide également à mieux comprendre votre réseau. Ce n'est pas l'outil lui-même qui est dangereux, mais plutôt la personne qui l'utilise.

Recommended Posts

Utilisation et intégration de "Shodan"
environnement de développement python -utilisation de pyenv et virtualenv-
Nettoyage des données 3 Utilisation d'OpenCV et prétraitement des données d'image
Utilisation pratique d'ipython
Intégration Vue-Cli et Python
Utilisez SQL Alchemy et le multitraitement
Utilisation gracieuse de MySQLdb
Notes personnelles sur l'intégration de vscode et anaconda
EP 7 Utiliser les compréhensions de liste au lieu de carte et de filtre
Le problème des menteurs et de l'honnêteté
Pré-traitement et post-traitement de pytest
Utilisez pyrtm et RTM CLI
Combinaison de récursif et de générateur
Combinaison de anyenv et direnv
Explication et mise en œuvre de SocialFoceModel
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Différenciation du tri et généralisation du tri
Coexistence de pyenv et autojump
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Le problème des menteurs et de l'honnêteté
Introduction de DataLiner ver.1.3 et comment utiliser Union Append
Occurrence et résolution de tensorflow.python.framework.errors_impl.FailedPreconditionError
Comparaison d'Apex et de Lamvery
Installation source et installation de Python
Introduction et astuces de mlflow.
Je souhaite utiliser à la fois la clé et la valeur de l'itérateur Python
Construction d'environnement de python et opencv
Utilisons usercustomize.py au lieu de sitecustomize.py
Connaissance de base de Linux et des commandes de base
L'histoire de Python et l'histoire de NaN
Explication et mise en œuvre de PRML Chapitre 4
Utilisation correcte de la méthode d'instance et de la méthode de classe
Introduction et mise en œuvre de JoCoR-Loss (CVPR2020)
Avantages et exemples d'utilisation de Rabbit Mq
Explication et implémentation de l'algorithme ESIM
Risque de mélange! ndarray et matrice
Installer SciPy et matplotlib (Python)
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Introduction et mise en œuvre de la fonction d'activation
Résumé de l'utilisation de pandas.DataFrame.loc
[Python / matplotlib] Comprendre et utiliser FuncAnimation
Mémorandum de sauvegarde et modèle de chargement
Utilisons tomotopy au lieu de gensim
Comment utiliser correctement le package de visualisation Python
Lire et utiliser des fichiers Python à partir de Python
Jetez curl et utilisez httpie
Résumé de l'utilisation de pyenv-virtualenv
Malentendus et interprétations des dépendances de Luigi
Tirez pleinement parti de str.format de Python
Explication et mise en œuvre du perceptron simple
Calcul de la classe auto-fabriquée et de la classe existante
[Note] Construction et utilisation du noyau WSL2
Ceci et cela des propriétés python
Comment utiliser .bash_profile et .bashrc
Comment installer et utiliser Graphviz
Enquête pour l'utilisation pratique de BlockChain
Méthode de planification des expériences et optimisation des combinaisons