Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Snoopy — Snoopy: Un framework distribuito per il tracciamento e l'intercettazione dei dati | Kitploit
Strumenti/GitHubGitHub/sensepost/snoopy
OSINT (Open Source Intelligence)RicognizioneAuditing Wi-FiMappatura della RetePhishingAnalisi MalwareIngegneria SocialeRed Teaming
GitHubsensepost/snoopy

Snoopy

Snoopy: Un framework distribuito per il tracciamento e l'intercettazione dei dati

Vedi Repository
613149213 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
"Amy, la tecnologia non è intrinsecamente buona o cattiva. Dipende da come viene usata. Come il Raggio della Morte."
-Professor Farnsworth

Benvenuto in Snoopy; un framework distribuito di tracciamento e profilazione. Snoopy è un lavoro in corso, quindi sentiti libero di inviare suggerimenti e/o correzioni. Questo documento illustra l'uso di base. Per comprendere meglio il contesto, dai un'occhiata a quanto segue:

  • Snoopy: A distributed tracking and profiling framework
  • ZaCon4 - Glenn Wilkinson - Terrorism, tracking, privacy and human interactions
  1. INTRODUZIONE E PANORAMICA ============================= Snoopy è composto da quattro componenti:
  • Software client (noto anche come software Snoopy Drone)
  • Software server
  • Interfaccia web
  • Trasformazioni Maltego

a. Droni Snoopy

Il software lato client gira su quelli che chiamiamo "Droni". Un Drone può essere qualsiasi dispositivo basato su Linux dotato di interfaccia WiFi (con driver di injection) e connettività Internet in uscita. Snoopy è stato testato su un Nokia N900 e su un laptop con BackTrack. I Droni eseguono le due operazioni seguenti:

  1. Raccogliere gli SSID dei Probe dai dispositivi wireless vicini
  2. Offrire un Access Point Rogue a cui i dispositivi wireless vicini possano connettersi

Le richieste di probe raccolte (ad es. l'iPhone di Bob in cerca di BTHomeHub-4123) vengono caricate sul server Snoopy a intervalli regolari. Tutti i dispositivi che si associano all'AP Rogue ottengono l'accesso a Internet tramite il server Snoopy.

b. Software server

Il server inserisce tutte le richieste di probe in un database e usa Wigle per determinare le coordinate GPS e Google Maps per determinare gli indirizzi civici (e le foto Street View). Questo significa che se stai facendo probe per la tua rete di casa, potrei ottenere una foto della tua abitazione.

Ogni Drone si connette al server tramite OpenVPN e ha la propria sottorete. I client associati ricevono un indirizzo IP dal Drone e instradano il traffico attraverso di esso. Questo significa che sul server possiamo abbinare gli indirizzi IP dei client (e quindi gli indirizzi MAC) all'attività Internet.

Sul server accade quanto segue:

  • Il traffico Internet viene proxyato in modo trasparente tramite Squid, che registra tutte le richieste su MySQL
  • SSLStrip tenta di riscrivere le pagine web senza HTTPS
  • mitmproxy.py consente l'iniezione arbitraria nelle pagine web
  • Vari script vengono eseguiti per estrarre dati dai Social Media (ad es. recuperando profili Facebook)

Il diagramma di rete è il seguente:

root@kitploit:~
     Client1                        Drone1                                  Snoopy Server
    +----------+            +-----------------------+               +-----------------------+
    |    wlan0-|<---WiFi--->|-at0                   |               |                   eth0|<-squid-sslstrip-mitmproxy->Internet
    |          |    |       | 10.2.0.1              |               |            11.22.33.44|    |
    | dhclient |    |       |                       |               |                       |    Traffic inspection
    |          |    |       |                  tap0-|<-openvpn----->|-tap0                  |    Social media analysis
    +----------+    |       |          192.168.42.2 |           +--/| 192.168.42.1          |
    10.2.0.2        |       +-----------------------+           |   +-----------------------+
                    |                                           |
                    |                                           | route 10.2.0.0 via 192.168.42.2
                    |                                           | route 10.3.0.0 via 192.168.42.3
      Client2       |                                           |
    +----------+    |                                           |
    |    wlan0-|<---+                                           |
    |          |                                                |
    | dhclient |                                                |
    |          |                                                |
    +----------+                                                |
    10.2.0.3                                                    |
                                                                |
                                                                |
                                                                |
      Client3                       Drone2                      |      
    +----------+            +-----------------------+           |
    |    wlan0-|<---WiFi--->|-at0                   |           |
    |          |    |       | 10.3.0.1              |           |
    | dhclient |    |       |                       |           |
    |          |    |       |                  tap0-|<-openvpn--+
    +----------+    |       |          192.168.42.3 |       
    10.3.0.2        |       +-----------------------+       
                    |
                    |       
                    |
      Client4       |                                       
    +----------+    |                                       
    |    wlan0-|<---+                                       
    |          |                                            
    | dhclient |                                            
    |          |                                            
    +----------+
    10.3.0.3

c. L'interfaccia web

Walter ha scritto un'interfaccia web per Snoopy. È accessibile all'indirizzo http://your-snoopy-server.com:5000/

d. Trasformazioni Maltego

Esistono diverse trasformazioni Maltego per esplorare graficamente i dati raccolti (vedi sotto per maggiori informazioni).

  1. INSTALLAZIONE ================ L'installazione del server dovrebbe essere semplice. È stata testata solo su un'installazione standard di Ubuntu 12.04 LTS 32bit. Vengono apportate modifiche a diversi componenti del server, quindi è vivamente consigliato eseguire lo script di installazione su un'installazione di base e non eseguire molto altro su quella macchina (se non altro). In caso di dubbi, esamina il file install.sh e apporta manualmente le modifiche. In alternativa, esegui semplicemente l'installer (./install.sh).

  2. UTILIZZO ======== Una volta terminata l'installazione, dovresti poter digitare 'snoopy' per caricare il menu del server. In caso contrario (o in caso di dubbi), vai nella home directory dell'utente creato durante la fase di installazione. All'interno della directory 'snoopy/server/' c'è un file 'snoopy.sh' che puoi eseguire. Di seguito il menu:

    root@kitploit:~
     +---------------------------------------------------------------+
     |                    Welcome to Snoopy V0.1                     |
     |                        SERVER SIDE                            |
     |                                                               |
     |              SensePost Information Security                   |
     |         [email protected] / www.sensepost.com            |
     +---------------------------------------------------------------+
     Date: Thu Nov  1 16:37:08 CET 2012
     Snoopy Server Status: Stopped
     Connected Drones: 0
     Wigle User: setYourWigleAccount
    
     Would you like to:
     [1] (Re)Start Snoopy server components
     [2] Stop Snoopy server components
     [3] Manage drone configuration packs
     [4] Configure server options
     [5] Set web traffic injection string
     [6] Observe logs
     [X] Exit
    
     [?] Help
    
  3. Creazione dei pacchetti drone L'opzione [3] del menu ti permette di creare 'pacchetti' lato client per i tuoi dispositivi Drone. Ogni Drone riceve le proprie chiavi OpenVPN e SSH, i propri range DHCP e le proprie tabelle di routing. Ti verrà fornito un URL di download per ciascun dispositivo Drone. Assicurati che server e drone abbiano l'ora impostata correttamente, altrimenti la connessione VPN non si stabilirà.

Ogni entità Snoopy può avere diverse trasformazioni applicate. Trascina l'entità 'Snoopy' sul tuo grafo per iniziare. Se non specifichi una data di inizio o fine nelle proprietà dell'entità, verranno recuperati i risultati degli ultimi 5 minuti per impostazione predefinita (questo valore può essere modificato nel menu di configurazione del server).

Le macchine Snoopy ti permettono di sequenziare automaticamente le trasformazioni e di filtrare/eliminare i nodi in base ai requisiti. Il codice sorgente/i commenti dovrebbero illustrare a sufficienza come funzionano.

  1. CONSIDERAZIONI LEGALI ======================= Tutti o alcuni dei componenti di Snoopy potrebbero essere illegali dove vivi. Informati prima di usare il software. Nel Regno Unito il componente di raccolta dei probe è legale grazie alla natura broadcast del traffico. Tuttavia, il componente rogue access point è molto probabilmente illegale nella maggior parte delle regioni. SensePost non si assume alcuna responsabilità se finisci nei guai usando questo strumento.

  2. CONSIDERAZIONI SULLA SICUREZZA ========================== Ogni 'Drone pack' contiene chiavi OpenVPN e SSH. Se un Drone viene compromesso (a causa di furto o altro), potrebbe rappresentare un rischio per la sicurezza del tuo server. È altamente consigliato che il tuo server Snoopy sia dedicato esclusivamente a questo scopo. All'utente creato sul server viene automaticamente aggiunta la seguente riga al file .ssh/authorized_hosts file, per un po' di sicurezza in più:

    "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/bin/rsync ${SSH_ORIGINAL_COMMAND#* }""

  3. LAVORI FUTURI =============== Ci sono ancora molte cose da fare / da aggiungere. Questa versione è più che altro una PoC.

  • Integrare il supporto a ToR
  • Aggiungere filtri per integrare facilmente altre catture di traffico (es. mDNS)
  • Integrare l'hacking aGPS (visto che controlliamo già il DNS delle vittime)
  • Evilgrade
  • Tracciamento Bluetooth/GSM
  • Deauth WiFi / jamming 3G
  • Fotocamera con identificazione facciale
  • Loader di plugin Firefox per cookie rubati
  • Sostituire il processo di caricamento dati (attualmente tutti i droni usano rsync con lo stesso utente).
  1. PROBLEMI NOTI / BUG ======================
  • Gli SSID con caratteri insoliti possono causare problemi
  • Attualmente tutte le richieste di probe vengono catturate e inserite in un db. Il db diventa grande piuttosto in fretta, soprattutto nelle aree affollate. Il database dovrebbe essere normalizzato e andrebbe presa una decisione se conservare o meno tutti i probe.
  • Originariamente lo sniffing dei probe veniva fatto con Scapy, ma è stato sostituito con un one-liner di tshark (a causa dell'incapacità di Scapy di leggere il parametro dell'intensità del segnale 802.11). Un'avvertenza scoperta con la vecchia versione di tshark disponibile sul N900 è che non supporta l'output del tempo epoch, ma solo l'ora locale. Questo crea seri problemi con i fusi orari. Se potessi compilare un nuovo tshark per il N900 sarebbe fantastico (sto guardando te, PwnieExpress). In sostanza, per ora assicurati che server/droni siano tutti nello stesso fuso orario.
  1. CONTATTI ============== Il codice è stato scritto da Glenn (con l'eccezione dell'interfaccia web di Walter). Puoi scrivergli un'email all'indirizzo [email protected] o bug^H^H^H seguirlo su Twitter: @glennzw. Glenn non è uno sviluppatore e si scusa per il suo codice scadente. È un hacker, e questo strumento gli ha permesso di hackerare te.

Ringraziamenti

Grazie per l'aiuto/i consigli/il contributo di:

  • Il team di SensePost (bel posto dove lavorare).
  • DocScrutinizer e il resto della gang #maemo su Freenode per l'aiuto con il N900.

APPENDICE A1. SCENARI DI ATTACCO (non approvati, né incoraggiati)

Catturare la spia

D. Sappiamo che una spia straniera arriva a Heathrow l'11 novembre, ma non sappiamo quando né con quale volo. Le nostre informazioni suggeriscono che dopo l'arrivo soggiornerà all'Hilton e prenderà un volo dall'aeroporto di Luton il 14 (anche qui non sappiamo né l'ora né la destinazione). È un maestro del travestimento. Come possiamo identificarlo?

R. Distribuisci droni Snoopy a Heathrow, all'Hilton e a Luton. La trasformazione Maltego 'CommonLocation' rileverà l'intersezione di tutti i dispositivi presenti in quei tre luoghi. Si spera che ci sia un solo risultato: il nostro bersaglio umano. Una volta scoperto, possiamo esaminare Google Maps e le foto Street View dei luoghi in cui la nostra spia si è recata. La sua identità potrebbe essere rivelata se i suoi dispositivi vengono indotti a connettersi al rogue access point di Snoopy (come il suo Facebook, Twitter o email).

Identificare gli indesiderabili

Chiedi a Snoopy di annotare tutti gli individui che si sono connessi a un hotspot WiFi in certi paesi sabbiosi^W indesiderabili.

Tracciamento dei clienti

Distribuisci Snoopy nei tuoi 10 grandi magazzini. Nota il traffico di persone, i clienti abituali, i tipi di clienti.

Distribuzione di malware

Inietta codice malevolo per prendere il controllo dei dispositivi client e installare malware. Gli exploit possono essere lanciati direttamente dal server verso le vittime connesse, grazie alle tabelle di routing.

La metropolitana di Londra

TFL potrebbe distribuire un Drone Snoopy in ogni stazione della metropolitana di Londra. Potrebbero monitorare il traffico di persone, rilevando orari/giorni di picco e di calo, e assegnare/ridurre il personale di conseguenza.

Tracciamento umano su larga scala

Distribuisci 500 Droni Snoopy in tutta Londra. Monitora i movimenti delle persone quando passano vicino a un Drone. Se applicato per settimane/mesi, emergeranno di certo pattern interessanti nel movimento delle persone.


APPENDICE A2. NOTE SULL'HARDWARE

Per Desktop/Laptop basati su Linux, la scheda Alfa AWUS036H offre prestazioni nella media. Una scheda più affidabile è la Ubiquity SR-71. Apprezzeremmo qualsiasi feedback su cosa funziona/non funziona per voi in termini di supporto ai driver di injection.

Con il N900 noterai che il caricamento dei driver di injection riduce notevolmente la durata della batteria. Il pacco batteria TecNet 6600mAh ha fornito circa 6-8 ore nei test. Dovrai però procurarti un adattatore per collegare il N900 a qualsiasi pacco batteria. Ridurre (o disabilitare) la frequenza di polling del GPS contribuirà inoltre a prolungare la durata della batteria.

Suggerimenti su come collegare il tuo N900 al laptop tramite USB (per SSH) sono disponibili qui

Attualmente sto testando su RaspberryPi, Alfa R36 mini AP e SheevaPlug. I risultati seguiranno.


APPENDICE A3. SCRIPTING MALTEGO DI SNOOPY

Puoi creare le tue trasformazioni Maltego per esplorare i dati raccolti. Quelle fornite servono soprattutto a dimostrare cosa si può fare. Controlla il codice sorgente e vai a leggere:

  • http://www.paterva.com/web6/documentation/developer.php
  • http://www.paterva.com/web6/documentation/developer-tds.php

Contatta [email protected] se hai domande (o chiedi ai fantastici ragazzi di Maltego).


APPENDICE A4. SCRIPTING DELL'INTERFACCIA WEB DI SNOOPY

Introduzione

Il codice dell'interfaccia web è accessibile tramite ~user/snoopy/server/bin/snoopy/src/snoopy/

Requisiti (già installati)

Pacchetti Python

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

Plug-in

I plug-in sono composti da due parti:

  • Parte back-end (che fornisce i dati), scritta in Python
  • Parte front-end (di visualizzazione), scritta in JavaScript (opzionale)

Back-end

Un plug-in è un callable caricato dinamicamente dall'applicazione Snoopy. Iniziamo con un esempio:

root@kitploit:~
from snoopy import db, pluginregistry

@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')
def ssid_list(mac):
    with db.SessionCtx() as session:
        query = session.query(
            distinct(db.Probe.probe_ssid) # SELECT DISTINCT probe_ssid FROM probes
        ).filter_by(
            device_mac=mac                # WHERE device_mac=$mac
        ).order_by(
            db.Probe.probe_ssid           # ORDER BY probe_ssid
        )
        return query.all()

Ora il commento passo-passo...

root@kitploit:~
from snoopy import db, pluginregistry

Ci serve db per accedere al database di Snoopy e pluginregistry per registrare il nostro plug-in.

root@kitploit:~
@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')

È così che registriamo il nostro plug-in (che può essere qualsiasi callable). Il primo argomento specifica il nome del gruppo a cui appartiene il plug-in. Abbiamo specificato client-data perché questo plug-in accetta un indirizzo MAC e restituisce i dati da visualizzare in una finestra dati client. Oltre a client-data, esiste anche il gruppo di plug-in session-data che opera sulle sessioni di prossimità. Il secondo parametro è il nome del plug-in. Questo nome è solo per uso interno e dovrebbe essere JSON-friendly. Il terzo parametro è il titolo del plug-in. In sostanza è uguale al nome, ma il titolo viene mostrato nella GUI. Più precisamente, è il titolo della sezione dati nella finestra dati client.

Tutti gli argomenti chiave dopo il titolo vengono salvati come opzioni. Anche se il sistema dei plug-in non richiede opzioni, Snoopy supporta l'opzione js. Questa opzione specifica l'URL (dal lato browser, non dal lato Snoopy/server) del componente JavaScript di questo plug-in.

root@kitploit:~
def ssid_list(mac):

Questo plug-in è una semplice funzione. Accetta una stringa di indirizzo MAC, come da definizione dei plug-in client-data. Il nome del callable non viene utilizzato.Il corpo di questo plug-in di esempio esegue semplicemente una query SQLAlchemy che in pratica fa SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac e restituisce i risultati come lista. I valori di ritorno dei plug-in sono di solito aggiunti come parte di una risposta JSON. Pertanto i risultati hanno il limite di dovere essere compatibili con JSON (come supportato dalla funzione jsonify() di Flask).

Semplice, no?

Front-end

I plug-in front-end per i dati dei client sono denominati gestori di dati client. Vengono registrati tramite la funzione Snoopy.registerPlugin(sectionName, dataHandler). sectionName è il nome della sezione dati che il gestore dati vuole gestire. Questo nome è lo stesso del nome del plug-in back-end che ha generato i dati. Il dataHandler deve essere una funzione con la seguente firma: function($section, clientData) {...}. $section è un oggetto jQuery dell'elemento div in cui il gestore dati può mostrare dati o apportare modifiche. I dati del client (generati dal plug-in back-end) vengono forniti nel parametro clientData.

Poiché l'unico output consentito al gestore dati sono le modifiche al div fornito ($section), non è necessario alcun valore di ritorno.

Scarica lo strumento
  • Installazione ed esecuzione di Snoopy sul Drone Puoi avere fino a 100 droni (se ne vuoi di più, controlla il codice sorgente o scrivimi un'email, non c'è una vera limitazione). L'installazione consiste nello scaricare il pacchetto di configurazione del passaggio precedente e nell'eseguire lo script di setup appropriato. Per il Nokia N900 verrà posizionata un'icona sul desktop. Esempio:

    root@kitploit:~
     haxor@drone001# wget http://snoopy-server.com/secretdir/drone001.tar.gz
     haxor@drone001# tar xzvf drone001.tar.gz
     haxor@drone001# cd snoopy && ./setup_n900.sh
    
  • Ricerca delle posizioni degli SSID Crea un account su www.wigle.net e imposta le tue credenziali tramite 'Configure server options'

  • Interfaccia web Puoi accedere all'interfaccia web all'indirizzo http://your-snoopy-server:5000/. Puoi scrivere i tuoi plugin per esplorare e visualizzare i dati. Walter l'ha reso facile per te (controlla l'appendice di questo documento).

  • Esplorare i dati con Maltego Nel menu del server Snoopy vai su 'Configure Server Options' > 'Maltego'. Qui vedrai gli URL per scaricare entità e macchine Snoopy e gli URL per le trasformazioni. Per utilizzare le trasformazioni Maltego dovrai:

    • Aggiungere le entità Snoopy a Maltego
    • Creare un account su http://cetas.paterva.com/TDS/
    • Accedere a cetas.paterva.com/TDS/
    • Creare un seed su cetas.paterva.com/TDS/
    • Aggiungere gli URL delle trasformazioni al seed creato
    • Aggiungere il seed in Maltego (Manage > Discover Transforms (Advanced)
    • Inserire come nome 'Snoopy' e come seed URL il proprio seed
    • Aggiungere le macchine Snoopy alla sezione delle macchine