 |
ODBParser |
In breve
ODBParser è uno strumento per cercare PII esposti in database aperti.
DA USARE SOLO per identificare PII esposti e avvisare i proprietari dei server di una manutenzione irresponsabile del database
OPPURE per interrogare database a cui hai il permesso di accedere!
PER FAVORE, USA IN MODO RESPONSABILE
Cos'è?
L'ho scritto perché volevo creare uno strumento OSINT tutto-in-uno per cercare, analizzare e analizzare database aperti al fine di identificare fughe di PII su server di terze parti. Altri strumenti sembrano o cercare solo database aperti o scaricarli una volta identificati e poi raccogliere dati indiscriminatamente. È cresciuto da una o due funzioni a ciò che è in questo repo, quindi il codice non è così pulito e bello come potrebbe essere.
Caratteristiche
Per identificare database aperti puoi:
- interrogare Shodan e BinaryEdge usando tutti i parametri possibili (filtra per paese, numero porta, qualsiasi cosa)
- specificare un singolo indirizzo IP
- caricare un file con un elenco di indirizzi IP
- incollare un elenco di indirizzi IP dagli appunti
Opzioni di dump:
- analizza tutti i database/collezioni per identificare i dati che specifici
- prendi tutto ciò che è ospitato sul server
- prendi solo un indice/collezione
- Usa ctrl+c per saltare il dump di un determinato indice
Post-elaborazione:
- converti dump JSON in CSV
- rimuovi colonne inutili dai CSV
Altre funzionalità:
- tiene traccia di tutti gli indirizzi IP e database che hai interrogato insieme alle informazioni su ciascun server.
- mantiene un file di statistiche con il numero di IP interrogati, numero di database analizzati e numero di record scaricati
- converti dump JSON già in tuo possesso in CSV
- per ogni database con un numero totale di record superiore al tuo limite, lo script crea una voce in un file speciale insieme a 5 record di esempio in modo che tu possa esaminare e decidere se vale la pena prenderlo
- L'output predefinito è un file JSON separato da righe con un oggetto JSON su ogni riga. Puoi scegliere di avere un file JSON "corretto" usando il flag "properjson"
- Puoi convertire i file in CSV al volo oppure convertire solo determinati file dopo il completamento dell'esecuzione (consiglio quest'ultimo). I file JSON convertiti verranno spostati in una cartella chiamata "JSON backups" nella stessa directory. NOTA: Quando si converte in CSV, lo script elimina le righe duplicate esatte e rimuove le colonne e le righe in cui tutti i valori sono NaN, perché è quello che volevo fare. Sentiti libero di modificare la funzione se preferisci una copia esatta del file JSON.
- Solo Windows Se lo script restituisce un numero enorme di indici che hanno il campo che ti interessa, lo script elenca i nomi dei db, si ferma e ti dà dieci secondi per decidere se vuoi procedere a prendere tutti i dati da ogni indice, poiché ho scoperto che se troppi database vengono restituiti anche dopo aver specificato i campi che desideri, c'è una buona possibilità che i dati siano falsi o log inutili e di solito puoi capire dal nome se è il caso. Se non agisci entro 10 secondi, lo脚本 procederà a scaricare ogni indice.
- come avrai notato, molte persone stanno scansionando database MongoDB e tenendoli in ostaggio, spesso cambiando il nome in qualcosa come "TO_RESTORE_EMAIL_XXXRESTORE.COM". Lo scraper MongoDB ignorerà tutti i database e le collezioni che sono stati compromessi controllando il nome del DB/collezione rispetto a un elenco di stringhe che indicano un compromissione
- lo script è piuttosto verbose (forse troppo) ma mi piace vedere cosa sta succedendo. Sentiti libero di silenziare le dichiarazioni di stampa se preferisci.
Personalizzazione
Vedi il file odbconfig.py per specificare i tuoi parametri, perché in realtà il nome del gioco è esporre i dati che TI interessano. Ho fornito alcuni esempi nel file di configurazione. Giocaci!
Puoi:
- specificare quali indici o nomi di collezione vuoi raccogliere specificando sottostringhe nel file di configurazione. Ad esempio, se hai il termine "client", lo script prenderà l'indice chiamato "clients" o "client_data." Raccomando di tenere queste liste vuote poiché non sai mai come si chiameranno i database che ti interessano e invece specificare i campi che ti interessano.
- specificare quali campi ti interessano: se vuoi solo prendere indici ES che hanno "email" nel nome del campo, ad esempio "user_emails", puoi farlo. Se vuoi assicurarti che l'indice abbia almeno 2 campi che ti interessano, puoi farlo anche tu. Oppure se vuoi semplicemente prendere tutto indipendentemente dai campi presenti, puoi farlo anche tu.
- specificare quali indici NON vuoi, ad esempio nomi di indici di sistema e altri generalmente usati per il logging di base. Esempi forniti nel file di configurazione.
- sovrascrivere la configurazione e prendere tutto su un server
- specificare l'output (predefinito è JSON, puoi scegliere CSV)
- impostare la dimensione minima e massima del database che lo script scaricherà per impostazione predefinita e puoi impostare un flag per sovrascrivere il limite massimo di documenti caso per caso.
Installazione e Requisiti
- Clona o scarica sulla macchina
- Ottieni le chiavi API per Shodan e/o BinaryEdge
- configura i parametri nel file ODBconfig.py
- installa i requisiti dal file
Suggerisco di creare un ambiente virtuale per ODBParser in modo da non avere problemi con versioni errate dei moduli.
Nota: Testato SOLO su Python 3.7.3 e su Windows 10.
PER FAVORE, USA IN MODO RESPONSABILE
Prossimi Passi e Problemi Noti
- ripulire un po' di più il codice
- multi-thread per vari processi.
- espandere ad altri tipi di database
- aggiungere altri motori di ricerca di directory aperte (Zoomeye, ecc.)
- impossibile scorrere oltre la prima pagina per alcune istanze ES a causa del modo in cui funziona ES <2.0. Apprezzo qualsiasi aiuto! Abbastanza sicuro di aver risolto questo problema. Apri un ticket se ricevi errori scrollid
Utilizzo
Esempi: 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
Danni ad oggi: 0 server analizzati | 0 database scaricati | 0 record estratti
_____________________________________________________________________________
argomenti opzionali:
-h, --help mostra questo messaggio di aiuto e esci
Opzioni di interrogazione:
--shodan, -sh Aggiungi questo flag se usi Shodan. Specifica ES o MDB con i flag.
--binary, -be Aggiungi questo flag se usi BinaryEdge. Specifica ES o MDB con i flag.
--ip , -ip Interroga un server. Aggiungi la porta così '192.165.2.1:8080' o userà le porte predefinite per ogni tipo di database. Aggiungi i flag ES o MDB per specificare il parser.
--file , -f Carica IP separati da riga da un file. Aggiungi la porta o assumerà le porte predefinite per ogni tipo di database. Aggiungi i flag ES o MDB per specificare il parser.
--paste, -v Interroga IP separati da riga dagli appunti. Aggiungi la porta o assumerà le porte predefinite per ogni tipo di database, ad esempio 9200 per ES. Aggiungi i flag ES o MDB per specificare il parser.