
Snoopy v2.0 - framework modulare di tracciamento digitale terrestre
SensePost presenta:
/$$$$$$
/$$__ $$
| $$ \__/ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$
| $$$$$$ | $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$| $$ | $$
\____ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ | $$
/$$ \ $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$
| $$$$$$/| $$ | $$| $$$$$$/| $$$$$$/| $$$$$$$/| $$$$$$$
\______/ |__/ |__/ \______/ \______/ | $$____/ \____ $$
| $$ /$$ | $$
| $$ | $$$$$$/
|__/ \______/
Version: 2.0
Code: [email protected] // @glennzw
Visit: www.sensepost.com // @sensepost
License: Non-commercial use
Benvenuto in Snoopy Versione 2.0!
Per installare e configurare Snoopy:
bash install.sh
Per salvare localmente i dati dei plugin wireless, sysinfo e heartbeat:
snoopy -v -m wifi:mon=True -m sysinfo -m heartbeat -d myDrone -l London
Per sincronizzare i dati da un client a un server:
Server:
snoopy_auth --create myDrone # Create account
snoopy -v -m server # Start server plugin
Client:
snoopy -v -m wifi:mon=True -s http://<server>:9001/ -d myDrone -l London -k <key>
INTRODUZIONE E PANORAMICA ============================= Snoopy è un framework distribuito per sensori, raccolta dati, intercettazione, analisi e visualizzazione. È scritto in formato modulare, consentendo la raccolta di dati arbitrari da varie fonti tramite plugin Python.
Architettura
Ogni istanza di Snoopy può eseguire più plugin simultaneamente. Un plugin raccoglie dati, che vengono interrogati dal processo principale di Snoopy e scritti in un database locale. Snoopy può sincronizzare i dati tra client (droni) e un server, e i client (droni) possono anche scaricare repliche dei dati da un server. Ogni istanza di Snoopy può eseguire i plugin appropriati alla sua posizione nel quadro generale. Ecco un diagramma che illustra una possibile configurazione:
Drone01 Server01
+---------------+ +--------------+
| Plugins: | | Plugins: |
| * WiFi | | *Server |
| * Bluetooth |====3G====>| |<=========================\
| * GSM | | | ||
| * FitBit | | | ||
+---------------+ +--------------+ ||
||
Drone02 Server02 Server03 ||
+---------------+ +--------------+ +-------------+ ||
| Plugins: | | Plugins: | | Plugins: | ||
| * WiFi | | * Server | | * Server | ||
| * Cookie |=====Xbee==>| * Heartbeat |==3G==>| * Wigle |<==\
| thief | || | | | * DataViz | ||
| * GPS | || | | | | ||
+---------------+ || +--------------+ +-------------+ ||
|| Internet
Drone03 || Laptop01 ||
+---------------+ || +--------------+ ||
| Plugins: | || | Plugins: | ||
| * Thermal | || | *RemotePull | ||
| * Camera |===/ | |====/
| * Heat | | Run: |
| | | *Maltego |
+---------------+ +--------------+
Nell'illustrazione sopra, ci sono tre droni che eseguono e sincronizzano i loro dati verso due server separati. Uno sincronizza via 3G, gli altri due via Xbee. Il secondo server sincronizza i suoi dati con un terzo server. Infine, un client (laptop) scarica tutti i dati dal primo e dal terzo server ed esegue Maltego per esplorare i dati.
Eseguire 'sh install.sh' nella directory snoopy-ng.git installerà tutti i pacchetti richiesti. Offre la possibilità di installare aircrack dal sorgente, necessario per le distribuzioni che non includono questo pacchetto (la suite aircrack è usata per i plugin wireless). Non possiamo raccomandare abbastanza Maltego per l'esplorazione dei dati: una community edition (con alcune restrizioni) può essere scaricata gratuitamente dal sito Paterva all'indirizzo http://paterva.com.
Per vedere tutte le flag e le opzioni disponibili, abbiamo preparato due comandi per te:
root@kali:~# snoopy --help (shorthand -h)
Questo comando mostra tutte le opzioni disponibili, ad esempio a quale server sincronizzare, il nome del drone e la sua posizione. Inoltre, introduce anche come eseguire i vari plugin.
root@kali:~# snoopy --list (shorthand -i)
Questo comando elenca tutti i plugin disponibili e i parametri richiesti da ciascun plugin per funzionare correttamente. Per ottenere informazioni più dettagliate su ogni plugin, usa '-ii' o '-iii'. Per informazioni su un plugin specifico usa '-i -m '.
I plugin possono essere specificati con l'opzione --plugin (o l'abbreviazione -m). Si possono specificare più plugin, che verranno avviati nell'ordine in cui sono inseriti. Ogni plugin avrà 60 secondi per indicare il proprio stato di prontezza; dopo questo timeout verrà avviato il plugin successivo. Questo può essere utile se i plugin successivi dipendono dalle azioni di quelli precedenti.
Ogni plugin può accettare numerosi parametri (come indicato nell'output di --list) sotto forma di coppie chiave-valore separate da virgola. Di seguito usiamo il plugin 'example', che genera semplicemente numeri casuali.
snoopy --plugin example:x=1,v=True
Se le opzioni drone / posizione non vengono fornite, vengono usati valori predefiniti. In alternativa, possono essere specificate come di seguito.
snoopy --plugin example:x=1,v=True --drone myDrone --location Cansas
I dati possono essere sincronizzati su una macchina remota specificando l'opzione --server (-s). La macchina remota deve eseguire il plugin server (--plugin server). Prima di tutto va generata una chiave per un nome di drone. Di seguito è illustrato il procedimento.
Server
root@server:~# snoopy_auth --create myDrone01 --verbose
[+] Creating new Snoopy server sync account
[+] Key for 'myDrone01' is 'GWWVF'
[+] Use this value in client mode to sync data to a remote server.
root@kali:~# snoopy --plugin server
[+] Running webserver on '0.0.0.0:9001'
[+] Plugin server caught data for 2 tables.
Client
root@client:~# snoopy --plugin example:x=1 --drone myDrone --key GWWVF --server http://<server_ip>:9001/ --verbose
[+] Starting Snoopy with plugins: example
[+] Plugin example created new random number: 21
[+] Snoopy successfully sunc 2 elements over 2 tables.
Recupero Remoto dei Dati