[PYTHON] Verwendung und Integration von "Shodan"

In diesem Artikel werde ich über ** "Shodan" ** sprechen, wie es funktioniert und wie man es in Tools und Skripte integriert.

Was Shodan kann

Shodan erkennt Geräte, die zu einem bestimmten Zeitpunkt mit dem Internet verbunden sind, den Standort dieser Geräte und den aktuellen Benutzer. Solche Geräte können in nahezu jeder Art von System vorhanden sein, einschließlich Unternehmensnetzwerken, Überwachungskameras, industriellen Steuerungssystemen (ICS) und Smart Homes. Shodan ist der erste wichtige Schritt beim Testen von Eindringlingen, da der Versuch, das Systembanner direkt abzurufen, dabei hilft, das anfällige System zu identifizieren. Er kann auch mehr tun, indem er den Booleschen Operator unterstützt und Filter zur Verbesserung der Sucheffizienz bereitstellt. Die Suchmaschine bietet 50 kostenlose Ergebnisse und kostenpflichtige Abonnements für eine größere Auswahl an Ergebnissen.

Wie es funktioniert

Es gibt drei Möglichkeiten, Shodan zu verwenden.

Für dieses Tutorial verwenden wir die Alibaba Cloud Elastic Compute Service (ECS). Um die Instanz zu sichern, müssen Sie sie entsprechend konfigurieren.

--Erstellen Sie Regeln, um Datenverkehr in und aus Sicherheitsgruppen zuzulassen --Erstellen Sie eine Pen-Test-Genehmigung Wir werden die Servereinstellungen hier nicht behandeln, aber weitere Informationen finden Sie in der ECS-Dokumentation (https://www.alibabacloud.com/help/ja/product/25365.htm).

Nachdem Sie die beiden oben genannten Einstellungen vorgenommen haben, können Sie Apache auf ECS installieren und mit einem Webbrowser darauf zugreifen, um es zu testen.

Shodan Webinterface

Auf Shodan kann wie auf die meisten anderen Suchmaschinen zugegriffen werden, indem Sie mit einem Webbrowser auf shodan.io zugreifen. Ich kann. image.png

Ich würde gerne wissen, wie viele Server Apache weltweit verwenden. Geben Sie einfach das Schlüsselwort "Apache" ein. image.png

Wie Sie im Bild sehen können, zeigen die Ergebnisse, dass 25.544.783 Server im Internet ausgeführt werden.

Shodan hat viele andere Funktionen, aber Sie müssen sich registrieren, um sie nutzen zu können. Beim Versuch, eine gründliche Analyse ohne Konto durchzuführen, ist ein Fehler aufgetreten (siehe unten). image.png

Angenommen, Sie haben erfolgreich ein Konto erstellt und sich angemeldet. Eine von Shodans Funktionen ist der Filter, aber mal sehen, was Sie damit machen können.

Filter sind spezielle Schlüsselwörter, mit denen Shodan Suchergebnisse basierend auf Dienst- oder Gerätemetadaten filtert. Das Format für die Eingabe des Filters ist

filtername:value

Zum Beispiel

Angenommen, Sie möchten eine genaue Suche durchführen, indem Sie alle Apache-Server mit Tomcat durchsuchen.

Das Schlüsselwort lautet "product:" apache to mcat "". Die Ergebnisse sind im folgenden Screenshot dargestellt.

image.png

Als Ergebnis haben wir festgestellt, dass es weltweit 1.445.150 Server gibt, auf denen Apache Tomcat ausgeführt wird.

Sie können Ihre Forschung weiter verfeinern, indem Sie nach allen Apache Tomcat-Servern in China suchen.

Product:"apache tomcat" country:cn

Ich habe Shodan gebeten, in Tomcat in China nach einem Apache-Server zu suchen.

image.png

Die Ergebnisse zeigen, dass es in China 409.609 Apache-Server mit Tomcat gibt.

Angenommen, Sie führen einen Dienst auf einem der ECS aus und möchten sehen, was gerade passiert. In meinem Fall verwende ich Alibaba ECS als Beispiel, wie oben erwähnt.

Um die Aufgabe zu erledigen, müssen wir einen Netzfilter verwenden und der Wert ist unsere IP-Adresse.

Netz: IP-Adresse

Angenommen, Sie haben Apache installiert, da Ihre Sicherheitsgruppe keine Regel zum Zulassen des Datenverkehrs erstellt hat. Wenn ich versuche, durch Eingabe meiner IP-Adresse im Navigator darauf zuzugreifen, wird nichts angezeigt, da Alibaba Cloud den Datenverkehr standardmäßig einschränkt. Dies dient dazu, die Sicherheit des ECS-Servers zu gewährleisten, auch wenn Sie keine Regeln für die Sicherheitsgruppe erstellt haben.

image.png

Wie Sie in diesem Bild sehen können, läuft der Server auf Alibaba und das IPS ist Aliyun Computing. Da wir zwei Ports (80.443) verwenden, werden zwei Dienste auf dem Server ausgeführt, und die verwendete Webtechnologie ist jQuery. Dies ist Teil der Informationen, die Hacker über den Server sammeln, um festzustellen, ob dieser anfällig ist, z. B. eine SSL-Version. ..

Nun wollen wir sehen, wie Shodan über die Befehlszeilenschnittstelle (CLI) verwendet wird.

Shodan-Befehlszeilenschnittstelle

Shodans Command Line Interface (CLI) ist in der offiziellen Python-Bibliothek für Shodan enthalten. Um ein neues Tool zu installieren, führen Sie es einfach aus.

$ easy_install shodan

Nach der Installation des Tools müssen Sie es mit dem API-Schlüssel initialisieren.

$ shodan init YOUR_API_KEY

An https://account.shodan.io Rufen Sie den API-Schlüssel für Ihr Konto ab. Es wird in der oberen rechten Ecke der Schaltfläche Mein Konto angezeigt. Sobald API_KEY initialisiert ist, können Sie Shodans Befehle verwenden.

Sie können die Kontoinformationen überprüfen.

Stellen Sie sich nun vor, Sie befinden sich in einer Instanz von ECS und möchten wissen, wie Ihre öffentliche IP-Adresse lautet. Mit ifconfig schützt Alibaba Cloud den Dienst standardmäßig, sodass Sie nur die private IP-Adresse kennen. Wenn Sie Ihre öffentliche IP-Adresse wissen möchten, geben Sie einfach den Befehl Shodan my ip ein.

$ shodan myip

image.png

Das Ergebnis zeigt meine öffentliche IP 47.89.249.0.

Wenn Sie Informationen zu einem Host haben möchten, können wir jetzt Shodan verwenden, z. B. wo sich ein solcher Host befindet, welcher Port offen ist, welche Organisation die IP besitzt und so weiter. Angenommen, 42.120.226.13 ist unser Server und wir möchten ihn testen, um zu sehen, was läuft.

$ shodan host 42.120.226.13

image.png

Unser Server befindet sich in China, zuletzt aktualisiert am 21.01.2019, 2 Ports funktionieren (80, 443). Das Ergebnis ergab mehrere Versionen. Überprüfen Sie daher die SSL-Version müssen es tun.

Die CLI verfügt über weitere Funktionen wie Netzwerkanalyse, Maltego-Add-Ons und Browser-Plug-Ins. Sie müssen jedoch Ihr Plan-Konto aktualisieren, um diese nutzen zu können.

Shodan des Drehbuchs

Shodan bietet eine Entwickler-API für den programmgesteuerten Zugriff auf die gesammelten Informationen. Alle Websites und Tools, einschließlich der Hauptwebsite von Shodan, verwenden diese API. Alles, was Sie über eine Website tun können, können Sie mit Ihrem eigenen Code erreichen.

Die API ist in zwei Teile unterteilt. "REST API" und "Streaming API". Die REST-API bietet eine Vielzahl von Dienstprogrammmethoden, um Shodan zu finden, Hosts zu suchen, zusammenfassende Informationen für Abfragen abzurufen und die Entwicklung zu erleichtern. Die Streaming-API bietet einen rohen Echtzeit-Feed der Daten, die Shodan derzeit sammelt. Es gibt mehrere Feeds, die Sie abonnieren können, aber Sie können nicht nach Daten suchen oder auf andere Weise damit interagieren.

Nutzungsbeschränkungen

Es gibt drei API-Methoden, die durch den API-Plan eingeschränkt sind.

1, ** Suchen **: Shodan verwendet Abfrage-Credits, um die Anzahl der Suchvorgänge zu begrenzen, die in einem Monat durchgeführt werden können. Credits mit einer Abfrage werden verwendet, wenn Sie eine Suche mit einem Filter durchführen oder wenn Sie die erste Seite übergeben. Wenn Sie beispielsweise nach "Apache" suchen, werden keine Abfrageguthaben verwendet. Wenn Sie nach "Apache-Land: USA" suchen, wird 1 Abfrageguthaben verwendet. Wenn Sie auf der zweiten Seite mit "Apache" nach Suchergebnissen suchen, verwenden Sie ebenfalls 1 Abfrageguthaben. Schließlich verwendet die Suchabfrage auf der zweiten Seite von "Apache Country: US" auch 1 Abfrageguthaben.

2, ** Scannen **: Die On-Demand-Scan-API verwendet Scan-Credits, um die Anzahl der Hosts zu begrenzen, die Shodan jeden Monat zum Scannen anfordern kann. Ziehen Sie 1 Scan-Guthaben für alle Hosts ab, für die Sie einen Shodan-Scan anfordern.

3, ** Netzwerkwarnungen **: Die Anzahl der IPs, die mithilfe von Warnungen überwacht werden können, ist abhängig von Ihrem API-Abonnement begrenzt. Nur bezahlte Kunden können auf diese Funktion zugreifen. Sie können auch nicht mehr als 100 Benachrichtigungen für Ihr Konto erstellen.

** Hinweis **: Abfrage- und Scan-Credits werden zu Beginn eines jeden Monats zurückgesetzt.

Führen Sie den folgenden Befehl aus, um die Shodan-Bibliothek für Python zu installieren:

$ easy_install shodan

Wenn Sie es bereits installiert haben und auf die neueste Version aktualisieren möchten.

$ easy_install -U shodan

Als erstes müssen Sie das Shodan-API-Objekt initialisieren.

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

Hier ist Ihr API-Schlüssel der API-Schlüssel für Ihr Konto und kann bezogen werden von: https://account.shodan.io

Nachdem Sie alle APIs haben, können Sie mit einem kleinen Skript suchen. image.png

Wie Sie in diesem Bild sehen können, schreiben wir ein kleines Skript, das versucht, das Internet nach Servern und Abfragen zu durchsuchen. Der Code ist in Python3 geschrieben.

Wenn Sie das Skript mit einem Parameter namens Apache ausführen, scannt Shodan das Internet und stellt Ihnen alle Informationen zum Apache-Server zur Verfügung.

Lassen Sie uns das Skript ausführen und sehen, ob es funktioniert und was das Ergebnis sein wird. image.png

Das Ergebnis des Skripts sieht wie oben aus. Wie Sie sehen können, wird der Apache-Server unter der IP-Adresse ausgeführt.

Fazit

Während sich die Technologie weiterentwickelt, müssen wir auf dem neuesten Stand sein, um sicherzustellen, dass unsere Sicherheit nicht beeinträchtigt wird. Insbesondere in IoT-Anwendungen, in denen mehrere Geräte dem Web ausgesetzt sind, ist Sicherheit nicht nur wichtig, um das ordnungsgemäße Funktionieren von Assets sicherzustellen, sondern auch, um die Privatsphäre zu schützen. Eines der mächtigsten Werkzeuge dafür ist Shodan. Aber wie alle guten Werkzeuge kann Shodan auch ein zweischneidiges Schwert sein. Es kann leicht von Hackern ausgenutzt werden, hilft Ihnen aber auch dabei, Ihr Netzwerk besser zu verstehen. Es ist nicht das Werkzeug selbst, das gefährlich ist, sondern die Person, die es benutzt.

Recommended Posts

Verwendung und Integration von "Shodan"
Python-Entwicklungsumgebung - Verwendung von Pyenv und Virtualenv-
Datenbereinigung 3 Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Bequeme Verwendung von Ipython
Vue-Cli- und Python-Integration
Verwenden Sie SQL Alchemy und Multiprocessing
Anmutige Verwendung von MySQLdb
Persönliche Hinweise zur Integration von vscode und anaconda
EP 7 Listenverständnisse anstelle von Karte und Filter verwenden
Das Problem der Lügner und der Ehrlichkeit
Vor- und Nachbearbeitung von Pytest
Verwenden Sie pyrtm und RTM CLI
Kombination von rekursiv und Generator
Kombination von anyenv und direnv
Erklärung und Implementierung von SocialFoceModel
Anwendung von Python: Datenbereinigung Teil 3: Verwendung von OpenCV und Vorverarbeitung von Bilddaten
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Differenzierung der Sortierung und Verallgemeinerung der Sortierung
Koexistenz von Pyenv und Autojump
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Das Problem der Lügner und der Ehrlichkeit
Einführung von DataLiner Version 1.3 und Verwendung von Union Append
Auftreten und Auflösung von tensorflow.python.framework.errors_impl.FailedPreconditionError
Vergleich von Apex und Lamvery
Quellinstallation und Installation von Python
Einführung und Tipps von mlflow.Tracking
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Umgebungskonstruktion von Python und OpenCV
Verwenden wir usercustomize.py anstelle von sitecustomize.py
Grundkenntnisse in Linux und Grundbefehle
Die Geschichte von Python und die Geschichte von NaN
Erläuterung und Implementierung von PRML Kapitel 4
Ordnungsgemäße Verwendung der Instanzmethode und der Klassenmethode
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Vorteile und Beispiele für die Verwendung von Rabbit Mq
Erklärung und Implementierung des ESIM-Algorithmus
Mischgefahr! Ndarray und Matrix
Installation von SciPy und matplotlib (Python)
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Einführung und Implementierung der Aktivierungsfunktion
Zusammenfassung der Verwendung von pandas.DataFrame.loc
[Python / matplotlib] FuncAnimation verstehen und verwenden
Memorandum zum Speichern und Laden des Modells
Verwenden wir Tomotopie anstelle von Gensim
So verwenden Sie das Python-Visualisierungspaket ordnungsgemäß
Lesen und verwenden Sie Python-Dateien aus Python
Locken wegwerfen und httpie verwenden
Zusammenfassung der Verwendung von pyenv-virtualenv
Missverständnisse und Interpretationen von Luigis Abhängigkeiten
Nutzen Sie das str.format von Python in vollem Umfang
Erklärung und Implementierung von einfachem Perzeptron
Berechnung der selbst erstellten Klasse und der vorhandenen Klasse
[Hinweis] Aufbau und Verwendung des WSL2-Kernels
Dies und das von Python-Eigenschaften
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
Untersuchung zur praktischen Anwendung von BlockChain
Versuchsplanungsmethode und Kombinationsoptimierung