 |
ODBParser |
TL;DR
ODBParser ist ein Tool zur Suche nach personenbezogenen Daten (PII), die in offenen Datenbanken offengelegt werden.
NUR um offengelegte personenbezogene Daten zu identifizieren und Serverbetreiber über unverantwortliche Datenbankwartung zu warnen,
ODER um Datenbanken abzufragen, für die Sie Zugriffsberechtigung haben!
BITTE VERANTWORTUNGSVOLL NUTZEN
Was ist das?
Habe dies geschrieben, da ich ein All-in-One-OSINT-Tool erstellen wollte, um offene Datenbanken zu durchsuchen, zu parsen und zu analysieren, um Datenlecks von PII auf Drittanbieter-Servern zu identifizieren. Andere Tools scheinen entweder nur nach offenen Datenbanken zu suchen oder sie zu dumpen, sobald man sie identifiziert hat, und dann wahllos Daten zu sammeln. Aus einer oder zwei Funktionen wurde das, was in diesem Repo ist, daher ist der Code nicht so sauber und hübsch, wie er sein könnte.
Funktionen
Um offene Datenbanken zu identifizieren, können Sie:
- Shodan und BinaryEdge mit allen möglichen Parametern abfragen (nach Land, Portnummer usw. filtern)
- eine einzelne IP-Adresse angeben
- eine Datei mit einer Liste von IP-Adressen laden
- eine Liste von IP-Adressen aus der Zwischenablage einfügen
Dump-Optionen:
- parst alle Datenbanken/Sammlungen, um die von Ihnen angegebenen Daten zu identifizieren
- alles auf dem Server gehostete abgreifen
- nur einen Index/eine Sammlung abgreifen
- Verwenden Sie Strg+C, um das Dumpen eines bestimmten Index zu überspringen
Nachbearbeitung:
- JSON-Dumps in CSV konvertieren
- unnötige Spalten aus CSV entfernen
Weitere Funktionen:
- behält den Überblick über alle IP-Adressen und Datenbanken, die Sie abgefragt haben, zusammen mit Informationen zu jedem Server.
- führt eine Statistikdatei mit der Anzahl der abgefragten IPs, der Anzahl der geparsten Datenbanken und der Anzahl der gedumpten Datensätze.
- konvertiert bereits vorhandene JSON-Dumps in CSV
- Für jede Datenbank, deren Gesamtzahl der Datensätze über Ihrem Limit liegt, erstellt das Skript einen Eintrag in einer speziellen Datei zusammen mit 5 Beispieldatensätzen, damit Sie prüfen und entscheiden können, ob die Datenbank es wert ist, abgegriffen zu werden.
- Die Standardausgabe ist eine zeilenweise getrennte JSON-Datei mit einem JSON-Objekt pro Zeile. Sie können die Ausgabe als „echte“ JSON-Datei ausgeben lassen, indem Sie das Flag „properjson“ verwenden.
- Sie können die Dateien direkt in CSV konvertieren oder nur bestimmte Dateien nach Abschluss des Laufs konvertieren (ich empfehle Letzteres). Konvertierte JSON-Dateien werden in einen Ordner namens „JSON backups“ im selben Verzeichnis verschoben. HINWEIS: Bei der Konvertierung in CSV entfernt das Skript exakte doppelte Zeilen sowie Spalten und Zeilen, in denen alle Werte NaN sind, weil ich das so wollte. Sie können die Funktion gerne bearbeiten, wenn Sie lieber eine exakte Kopie der JSON-Datei hätten.
- NUR Windows Falls das Skript eine große Anzahl von Indizes zurückgibt, die das gewünschte Feld enthalten, listet das Skript die Namen der Datenbanken auf, pausiert und gibt Ihnen zehn Sekunden Zeit zu entscheiden, ob Sie alle Daten aus jedem Index abrufen möchten. Ich habe festgestellt, dass, wenn zu viele Datenbanken zurückgegeben werden, selbst nachdem Sie die gewünschten Felder angegeben haben, die Wahrscheinlichkeit hoch ist, dass die Daten gefälscht oder nutzlose Protokolle sind, und Sie können dies normalerweise am Namen erkennen. Wenn Sie nicht innerhalb von 10 Sekunden handeln, wird das Skript jeden Index dumpen.
- Wie Sie vielleicht bemerkt haben, haben viele Leute nach MongoDB-Datenbanken gescannt und sie als Geisel genommen, oft mit Namen wie „TO_RESTORE_EMAIL_XXXRESTORE.COM.“ Der MongoDB-Scraper ignoriert alle Datenbanken und Sammlungen, die kompromittiert wurden, indem er den Namen der DB/Sammlung mit einer Liste von Strings abgleicht, die auf Kompromittierung hinweisen.
- Das Skript ist recht ausführlich (vielleicht zu ausführlich), aber ich mag es zu sehen, was passiert. Sie können die Print-Anweisungen gerne stummschalten, wenn Sie dies bevorzugen.
Anpassung
Siehe die Datei odbconfig.py, um Ihre Parameter festzulegen, denn der eigentliche Sinn des Spiels ist es, die Daten zu exponieren, an denen SIE interessiert sind. Ich habe einige Beispiele in der Konfigurationsdatei bereitgestellt. Spielen Sie damit herum!
Sie können:
- Geben Sie an, welche Index- oder Sammlungsnamen Sie sammeln möchten, indem Sie Teilstrings in der Konfigurationsdatei angeben. Wenn Sie z.B. den Begriff „client“ haben, ruft das Skript den Index „clients“ oder „client_data“ ab. Ich empfehle, diese Listen leer zu lassen, da Sie nie wissen, wie die Datenbanken heißen, die Sie betreffen, und stattdessen die Felder anzugeben, die Sie interessieren.
- Geben Sie an, welche Felder Sie interessieren: Wenn Sie nur ES-Indizes abrufen möchten, die „email“ in einem Feldnamen haben, z.B. „user_emails“, können Sie das tun. Wenn Sie sicherstellen möchten, dass der Index mindestens 2 Felder hat, die Sie interessieren, können Sie das auch. Oder wenn Sie einfach alles abrufen möchten, egal welche Felder vorhanden sind, können Sie das auch.
- Geben Sie an, welche Indizes Sie NICHT möchten, z.B. Systemindexnamen und andere, die normalerweise für grundlegendes Logging verwendet werden. Beispiele finden Sie in der Konfigurationsdatei.
- Konfiguration überschreiben und alles auf einem Server abrufen
- Ausgabe festlegen (Standard ist JSON, CSV kann gewählt werden)
- Legen Sie die minimale und maximale Größe der Datenbank fest, die das Skript standardmäßig dumpen wird, und Sie können ein Flag setzen, um die maximale Dokumentzahl von Fall zu Fall zu überschreiben.
Installation und Anforderungen
- Klonen oder herunterladen auf den Rechner
- API-Schlüssel für Shodan und/oder BinaryEdge besorgen
- Parameter in der Datei ODBconfig.py konfigurieren
- Anforderungen aus der Datei installieren
Ich empfehle, eine virtuelle Umgebung für ODBParser zu erstellen, um Probleme mit falschen Modulversionen zu vermeiden.
Hinweis: Nur getestet mit Python 3.7.3 und Windows 10.
BITTE VERANTWORTUNGSVOLL NUTZEN
Nächste Schritte und bekannte Probleme
- Code etwas mehr bereinigen
- verschiedene Prozesse multithreaden
- auf andere Datenbanktypen erweitern
- andere Suchmaschinen für offene Verzeichnisse hinzufügen (Zoomeye, etc.)
- Kann bei bestimmten ES-Instanzen nicht über die erste Seite hinaus scrollen, aufgrund der Funktionsweise von ES <2.0. Freue mich über jede Hilfe! Habe das ziemlich sicher behoben. Öffne ein Issue, wenn Scroll-ID-Fehler auftreten
Nutzung
Examples: python ODBParser.py -cn US -p 8080 -t users --elastic --shodan --csv --limit 100
python ODBParser.py -ip 192.168.2:8080 --mongo --ignorelogs --nosizelimits
Damage to-date: 0 servers parsed | 0 databases dumped | 0 records pulled
_____________________________________________________________________________
optional arguments:
-h, --help show this help message and exit