Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Snoopy — Snoopy: Ein verteiltes Tracking- und Datenabfang-Framework | Kitploit
Tools/GitHubGitHub/sensepost/snoopy
OSINT (Open-Source-Intelligence)AufklärungWi-Fi-PrüfungNetzwerkkartierungPhishingMalware-AnalyseSocial EngineeringRed Teaming
GitHubsensepost/snoopy

Snoopy

Snoopy: Ein verteiltes Tracking- und Datenabfang-Framework

Repository anzeigen
6131499vor 13 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
"Amy, Technologie ist nicht von Natur aus gut oder böse. Es kommt darauf an, wie sie verwendet wird. Wie der Todesstrahl."
-Professor Farnsworth

Willkommen bei Snoopy; einem verteilten Tracking- und Profiling-Framework. Snoopy ist ein Werk in Arbeit, also zögern Sie nicht, Vorschläge und/oder Korrekturen einzureichen. Dieses Dokument beschreibt die grundlegende Verwendung. Um den Hintergrund etwas besser zu verstehen, werfen Sie einen Blick auf Folgendes:

  • Snoopy: Ein verteiltes Tracking- und Profiling-Framework
  • ZaCon4 - Glenn Wilkinson - Terrorismus, Tracking, Privatsphäre und menschliche Interaktionen
  1. EINFÜHRUNG UND ÜBERSICHT ============================= Snoopy besteht aus vier Komponenten:
  • Clientsoftware (auch Snoopy-Drone-Software)
  • Serversoftware
  • Weboberfläche
  • Maltego-Transforms

a. Snoopy-Drohnen

Die Client-Software läuft auf sogenannten „Drohnen" (Drones). Eine Drohne kann jedes Linux-basierte Gerät mit einer WLAN-Schnittstelle (mit Injektionstreibern) und ausgehender Internetverbindung sein. Snoopy wurde auf einem Nokia N900 und einem Laptop mit BackTrack getestet. Die Drohnen führen die folgenden beiden Vorgänge aus:

  1. Probe-SSIDs von nahe gelegenen kabellosen Geräten sammeln
  2. Einen Rogue Access Point anbieten, mit dem sich nahe gelegene kabellose Geräte verbinden können

Gesammelte Probe Requests (z. B. Bobs iPhone, das nach BTHomeHub-4123 sucht) werden in regelmäßigen Abständen zum Snoopy-Server hochgeladen. Allen Geräten, die sich mit dem Rogue AP verbinden, wird der Internetzugang über den Snoopy-Server bereitgestellt.

b. Serversoftware

Der Server trägt alle Probe Requests in eine Datenbank ein und verwendet Wigle, um GPS-Koordinaten zu bestimmen, sowie Google Maps, um Straßenadressen (und Street-View-Fotos) zu ermitteln. Das bedeutet: Wenn Sie nach Ihrem Heimnetzwerk suchen, könnte ich ein Foto Ihres Hauses erhalten.

Jede Drohne verbindet sich über OpenVPN mit dem Server und besitzt ein eigenes Subnetz. Verbundene Clients erhalten eine IP-Adresse von der Drohne und leiten ihren Datenverkehr über sie. Das bedeutet, dass wir auf dem Server Client-IP-Adressen (und damit MAC-Adressen) der Internetaktivität zuordnen können.

Auf dem Server passiert Folgendes:

  • Der Internetverkehr wird transparent über Squid als Proxy geleitet, das alle Anfragen in MySQL protokolliert
  • SSLStrip versucht, Webseiten ohne HTTPS neu zu schreiben
  • mitmproxy.py erlaubt beliebige Injektionen in Webseiten
  • Verschiedene Skripte laufen, um Social-Media-Daten zu extrahieren (z. B. Facebook-Profile abrufen)

Das Netzwerkdiagramm sieht wie folgt aus:

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. Die Weboberfläche

Walter hat eine Weboberfläche für Snoopy geschrieben. Sie ist unter http://your-snoopy-server.com:5000/ erreichbar.

d. Maltego-Transforms

Es gibt mehrere Maltego-Transforms, um gesammelte Daten grafisch zu untersuchen (weitere Informationen siehe unten).

  1. INSTALLATION ================ Die Serverinstallation sollte unkompliziert sein. Sie wurde nur auf einer Standardinstallation von Ubuntu 12.04 LTS 32bit getestet. Es werden Änderungen an mehreren Serverkomponenten vorgenommen, daher wird dringend empfohlen, das Installationsskript auf einer Basisinstallation auszuführen und auf dieser Maschine nichts Weiteres zu betreiben (falls überhaupt). Im Zweifelsfall gehen Sie die Datei install.sh durch und nehmen Sie die Änderungen manuell vor. Andernfalls führen Sie einfach das Installationsprogramm (./install.sh) aus.

  2. VERWENDUNG ======== Sobald die Installation abgeschlossen ist, sollten Sie einfach 'snoopy' eingeben können, damit das Servermenü geladen wird. Falls nicht (oder im Zweifelsfall), gehen Sie in das Home-Verzeichnis des Benutzers, der während der Installation angelegt wurde. Im Verzeichnis 'snoopy/server/' befindet sich eine Datei 'snoopy.sh', die Sie ausführen können. Unten sehen Sie das Menü:

    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. Drohnen-Pakete erstellen Mit Option [3] im Menü können Sie clientseitige 'Pakete' für Ihre Drohnen-Geräte erstellen. Jede Drohne erhält ihre eigenen OpenVPN- und SSH-Schlüssel, DHCP-Bereiche und Routing-Tabellen. Für jedes Drohnen-Gerät erhalten Sie eine Download-URL. Stellen Sie sicher, dass Server und Drohne die Uhrzeit korrekt eingestellt haben, da sich sonst die VPN-Verbindung nicht aufbaut.

Auf jede Snoopy-Entität können verschiedene Transforms angewendet werden. Ziehen Sie die Entität 'Snoopy' auf Ihren Graphen, um zu beginnen. Wenn Sie in den Eigenschaften der Entität kein Start- oder Enddatum angeben, werden standardmäßig die Ergebnisse der letzten 5 Minuten abgerufen (dieser Wert kann im Serverkonfigurationsmenü geändert werden).

Die Snoopy-Maschinen ermöglichen es Ihnen, Transforms automatisch zu sequenzieren und Knoten basierend auf Anforderungen zu filtern/löschen. Der Quellcode/die Kommentare sollten ausreichend beschreiben, wie sie funktionieren.

  1. RECHTLICHE HINWEISE ======================= Einige oder alle Snoopy-Komponenten könnten an Ihrem Wohnort illegal sein. Bitte informieren Sie sich, bevor Sie die Software verwenden. Im Vereinigten Königreich ist die Probe-Sammelkomponente aufgrund des Broadcast-Charakters des Datenverkehrs legal. Die Rogue-Access-Point-Komponente jedoch ist in den meisten Regionen höchstwahrscheinlich illegal. SensePost übernimmt keine Verantwortung dafür, wenn Sie durch die Nutzung dieses Tools in Schwierigkeiten geraten.

  2. SICHERHEITSHINWEISE ========================== Jedes 'Drone-Paket' enthält OpenVPN- und SSH-Schlüssel. Wenn eine Drohne kompromittiert wird (durch Diebstahl oder anderweitig), kann dies ein Sicherheitsrisiko für Ihren Server darstellen. Es wird dringend empfohlen, dass Ihr Snoopy-Server ausschließlich für seinen Zweck betrieben wird. Dem auf dem Server angelegten Benutzer wird für ein wenig zusätzliche Sicherheit automatisch Folgendes zur Datei .ssh/authorized_hosts hinzugefügt:

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

  3. ZUKÜNFTIGE ARBEITEN =============== Es gibt noch viele Dinge zu tun / hinzuzufügen. Diese Version ist eher ein PoC.

  • ToR-Unterstützung integrieren
  • Filter hinzufügen, um andere Datenverkehrsaufzeichnungen einfach zu ergänzen (z. B. mDNS)
  • aGPS-Hacking einbauen (da wir die DNS der Opfer bereits kontrollieren)
  • Evilgrade
  • Bluetooth/GSM-Tracking
  • WLAN-Deauth / 3G-Stören
  • Kamera mit Gesichtserkennung
  • Plugin-Loader für gestohlene Cookies in Firefox
  • Upload-Prozess für Daten ersetzen (derzeit synchronisieren alle Drohnen per rsync mit demselben Benutzer).
  1. BEKANNTE PROBLEME / FEHLER ======================
  • SSIDs mit ungewöhnlichen Zeichen können Probleme verursachen
  • Derzeit werden alle Probe Requests erfasst und in eine Datenbank eingetragen. Die Datenbank wird recht schnell groß, besonders in belebten Gebieten. Die Datenbank sollte normalisiert werden, und es sollte entschieden werden, ob alle Probes aufbewahrt werden sollen oder nicht.
  • Ursprünglich wurde das Probe-Sniffing mit Scapy durchgeführt, aber durch einen tshark-Einzeiler ersetzt (weil Scapy den 802.11-Signalstärkeparameter nicht lesen kann). Eine entdeckte Einschränkung der alten tshark-Version auf dem N900 ist, dass sie die Epochenzeit nicht ausgeben kann, sondern nur die lokale Zeit. Das bringt Zeitzonen völlig durcheinander. Wenn jemand ein neues tshark für das N900 kompilieren könnte, wäre das großartig (hier schaue ich dich an, PwnieExpress). Der Punkt ist: Stellen Sie vorerst sicher, dass sich Server/Drohnen alle in derselben Zeitzone befinden.
  1. KONTAKT ============== Der Code wurde von Glenn geschrieben (mit Ausnahme von Walters Weboberfläche). Sie können ihn per E-Mail unter [email protected] erreichen oder ihm auf Twitter folgen: @glennzw. Glenn ist kein Entwickler und entschuldigt sich für seinen schlechten Code. Er ist ein Hacker, und dieses Tool ermöglicht es ihm, Sie zu hacken.

Danksagungen

Dank für Hilfe/Ratschläge/Input an:

  • Die SensePost-Crew (ein cooler Arbeitsplatz).
  • DocScrutinizer und den Rest der #maemo-Gang auf Freenode für die N900-Hilfe.

ANHANG A1. ANGRIFFSSZENARIEN (nicht befürwortet oder ermutigt)

Den Spion fangen

F. Wir wissen, dass ein ausländischer Spion am 11. November in Heathrow ankommt, aber wir wissen nicht, wann oder mit welchem Flug. Unseren Erkenntnissen zufolge wird er nach der Ankunft im Hilton übernachten, und am 14. einen Flug vom Flughafen Luton nehmen (auch hier wissen wir weder Zeit noch Ziel). Er ist ein Meister der Verkleidung. Wie können wir ihn identifizieren?

A. Setzen Sie Snoopy-Drohnen in Heathrow, Hilton und Luton ein. Der Maltego-Transform 'CommonLocation' erfasst die Schnittmenge aller Geräte, die an diesen drei Orten vorhanden sind. Hoffentlich gibt es nur ein Ergebnis – unser menschliches Ziel. Sobald er entdeckt ist, können wir Google Maps und Street-View-Fotos der Orte untersuchen, an denen unser Spion unterwegs war. Seine Identität könnte aufgedeckt werden, wenn sein(e) Gerät(e) dazu verleitet werden, sich mit dem Snoopy-Rogue-Access-Point zu verbinden (z. B. über sein Facebook, Twitter oder seine E-Mail).

Unerwünschte Personen identifizieren

Bitten Sie Snoopy, alle Personen zu erfassen, die sich in bestimmten sandigen^W unerwünschten Ländern mit einem WLAN-Hotspot verbunden haben.

Kunden verfolgen

Setzen Sie Snoopy in Ihren 10 Kaufhäusern ein. Erfassen Sie Personenverkehr, Stammkunden und Kundentypen.

Malware-Verteilung

Fügen Sie bösartigen Code ein, um Client-Geräte zu übernehmen und Malware zu installieren. Exploits können aufgrund der Routing-Tabellen direkt vom Server an verbundene Opfer gesendet werden.

Die Londoner U-Bahn

TfL könnte in jeder Londoner U-Bahn eine Snoopy-Drohne einsetzen. Sie könnten den Personenverkehr überwachen, Spitzen- und Nebenzeiten/-tage erfassen und das Personal entsprechend zuweisen bzw. reduzieren.

Menschenverfolgung in großem Maßstab

Setzen Sie 500 Snoopy-Drohnen in ganz London ein. Überwachen Sie die Bewegungen von Menschen, wenn sie an einer Drohne vorbeigehen. Über Wochen/Monate angewendet, werden sich sicherlich interessante Bewegungsmuster von Menschen manifestieren.


ANHANG A2. HARDWARE-HINWEISE

Für einen Linux-basierten Desktop/Laptop ist die Karte Alfa AWUS036H durchschnittlich. Eine zuverlässigere Karte ist die Ubiquity SR-71. Rückmeldungen darüber, was bei Ihnen in Bezug auf die Injektionstreiber-Unterstützung funktioniert oder nicht, wären willkommen.

Beim N900 werden Sie feststellen, dass das Laden der Injektionstreiber die Akkulaufzeit erheblich reduziert. Das TecNet 6600mAh-Akkupack hielt im Test etwa 6-8 Stunden. Sie benötigen jedoch einen Adapter, um das N900 an ein beliebiges Akkupack anzuschließen. Auch die Reduzierung (oder Deaktivierung) der GPS-Abfragefrequenz verbessert die Akkulaufzeit.

Tipps zum Verbinden Ihres N900 mit Ihrem Laptop über USB (für SSH) finden Sie hier.

Ich teste derzeit auf dem RaspberryPi, dem Alfa-R36-Mini-AP und dem SheevaPlug. Ergebnisse folgen.


ANHANG A3. SNOOPY-MALTEGO-SKRIPTING

Sie können eigene Maltego-Transforms erstellen, um gesammelte Daten zu untersuchen. Die mitgelieferten dienen hauptsächlich zur Veranschaulichung der Möglichkeiten. Sehen Sie sich den Quellcode an und lesen Sie:

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

Kontaktieren Sie [email protected], wenn Sie Fragen haben (oder fragen Sie die großartigen Maltego-Leute).


ANHANG A4. SNOOPY-WEBINTERFACE-SKRIPTING

Einführung

Der Code der Web-UI ist über folgenden Pfad zugänglich: ~user/snoopy/server/bin/snoopy/src/snoopy/

Voraussetzungen (bereits installiert)

Python-Pakete

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

Plug-ins

Plug-ins bestehen aus zwei Teilen:

  • Backend (Databereitstellung)-Teil, geschrieben in Python
  • Frontend (Anzeige)-Teil, geschrieben in JavaScript (optional)

Backend

Ein Plug-in ist ein aufrufbares Objekt, das von der Snoopy-Anwendung dynamisch geladen wird. Beginnen wir mit einem Beispiel:

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()

Nun zur Schritt-für-Schritt-Erklärung...

root@kitploit:~
from snoopy import db, pluginregistry

Wir benötigen db, um auf die Snoopy-Datenbank zuzugreifen, und pluginregistry, um unser Plug-in zu registrieren.

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

So registrieren wir unser Plug-in (das ein beliebiges aufrufbares Objekt sein kann). Das erste Argument gibt den Namen der Gruppe an, in die dieses Plug-in fällt. Wir haben client-data angegeben, da dieses Plug-in eine MAC-Adresse akzeptiert und Daten zur Anzeige in einem Client-Datenfenster zurückgibt. Neben client-data gibt es auch die Gruppe session-data von Plug-ins, die mit Näherungssitzungen arbeiten. Der zweite Parameter ist der Plug-in-Name. Dieser Name dient nur internen Zwecken und sollte JSON-freundlich sein. Der dritte Parameter ist der Plug-in-Titel. Im Wesentlichen entspricht er dem Namen, aber der Titel wird in der GUI angezeigt. Genauer gesagt ist dies der Titel des Datenbereichs im Client-Daten- fenster.

Alle Schlüsselwortargumente nach dem Titel werden als Optionen gespeichert. Obwohl das Plug-in- System keine Optionen erfordert, unterstützt Snoopy die Option js. Diese Option gibt die URL (aus Sicht des Browsers, nicht aus Snoopys-/der Serverseite) der JavaScript-Komponente dieses Plug-ins an.

root@kitploit:~
def ssid_list(mac):

Dieses Plug-in ist eine einfache Funktion. Es akzeptiert eine MAC-Adresszeichenfolge, wie in der Definition der client-data-Plug-ins. Der Name des aufrufbaren Objekts wird nicht verwendet.Der Hauptteil dieses Beispiel-Plug-ins führt einfach eine SQLAlchemy-Abfrage aus, die im Grunde SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac ausführt, und gibt die Ergebnisse als Liste zurück. Die Rückgabewerte von Plug-ins werden normalerweise als Teil einer JSON-Antwort hinzugefügt. Daher unterliegen die Ergebnisse der Einschränkung, dass sie JSON-kompatibel sein müssen (wie von der jsonify()-Funktion von Flask unterstützt).

So einfach ist das!

Frontend

Frontend-Plug-ins für Client-Daten werden als Client-Daten-Handler bezeichnet. Sie werden über die Funktion Snoopy.registerPlugin(sectionName, dataHandler) registriert. sectionName ist der Name des Datenabschnitts, den der Daten-Handler verarbeiten möchte. Dieser Name ist derselbe wie der Name des Backend-Plug-ins, das die Daten erzeugt hat. Der dataHandler muss eine Funktion mit der folgenden Signatur sein: function($section, clientData) {...}. $section ist ein jQuery-Objekt des Div-Elements, in dem der Daten-Handler Daten anzeigen oder Änderungen vornehmen darf. Die Client-Daten (vom Backend-Plug-in erzeugt) werden im Parameter clientData übergeben.

Da die einzige erlaubte Ausgabe des Daten-Handlers Änderungen am übergebenen Div ($section) sind, ist kein Rückgabewert erforderlich.

Tool herunterladen
  • Snoopy auf der Drohne installieren und ausführen Sie können bis zu 100 Drohnen betreiben (wenn Sie mehr möchten, sehen Sie in den Quellcode oder schreiben Sie mir eine E-Mail; es gibt keine echte Begrenzung). Die Installation besteht daraus, das Konfigurationspaket aus dem vorherigen Schritt herunterzuladen und das zugehörige Setup-Skript auszuführen. Beim Nokia N900 wird ein Symbol auf Ihrem Desktop platziert. z. B.:

    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
    
  • SSID-Standorte nachschlagen Erstellen Sie ein Konto auf www.wigle.net und hinterlegen Sie Ihre Zugangsdaten über 'Configure server options'.

  • Weboberfläche Sie können die Weboberfläche über http://your-snoopy-server:5000/ aufrufen. Sie können eigene Plug-ins schreiben, um Daten zu durchsuchen und anzuzeigen. Walter hat es Ihnen leicht gemacht (siehe Anhang zu diesem Dokument).

  • Daten mit Maltego untersuchen Gehen Sie im Snoopy-Servermenü zu 'Configure Server Options' > 'Maltego'. Dort sehen Sie URLs zum Herunterladen von Snoopy-Entitäten, -Maschinen sowie URLs für Transforms. Um Maltego-Transforms zu verwenden, müssen Sie:

    • Snoopy-Entitäten zu Maltego hinzufügen
    • Ein Konto auf http://cetas.paterva.com/TDS/ erstellen
    • Bei cetas.paterva.com/TDS/ anmelden
    • Einen Seed auf cetas.paterva.com/TDS/ erstellen
    • Die Transform-URLs zum erstellten Seed hinzufügen
    • Den Seed in Maltego hinzufügen (Manage > Discover Transforms (Advanced)
    • Als Namen 'Snoopy' und als Seed-URL Ihren Seed eingeben
    • Die Snoopy-Maschinen zum Maschinenbereich hinzufügen