
Snoopy v2.0 - framework modular de seguimiento terrestre digital
SensePost presenta:
/$$$$$$
/$$__ $$
| $$ \__/ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$
| $$$$$$ | $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$| $$ | $$
\____ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ | $$
/$$ \ $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$
| $$$$$$/| $$ | $$| $$$$$$/| $$$$$$/| $$$$$$$/| $$$$$$$
\______/ |__/ |__/ \______/ \______/ | $$____/ \____ $$
| $$ /$$ | $$
| $$ | $$$$$$/
|__/ \______/
Version: 2.0
Code: [email protected] // @glennzw
Visit: www.sensepost.com // @sensepost
License: Non-commercial use
¡Bienvenido a Snoopy Versión 2.0!
Para instalar y configurar Snoopy:
bash install.sh
Para guardar localmente los datos de los complementos inalámbricos, sysinfo y heartbeat:
snoopy -v -m wifi:mon=True -m sysinfo -m heartbeat -d myDrone -l London
Para sincronizar datos de un cliente a un servidor:
Servidor:
snoopy_auth --create myDrone # Create account
snoopy -v -m server # Start server plugin
Cliente:
snoopy -v -m wifi:mon=True -s http://<server>:9001/ -d myDrone -l London -k <key>
INTRODUCCIÓN Y VISIÓN GENERAL ============================= Snoopy es un framework distribuido de sensores, recopilación de datos, interceptación, análisis y visualización. Está escrito en un formato modular, lo que permite la recopilación de datos arbitrarios de diversas fuentes mediante complementos Python.
Arquitectura
Cada instancia de Snoopy puede ejecutar múltiples complementos simultáneamente. Un complemento recopila datos, que son consultados por el proceso principal de Snoopy y se escriben en una base de datos local. Snoopy puede sincronizar datos entre clientes (drones) y un servidor, y los clientes (drones) también pueden extraer réplicas de datos de un servidor. Cada instancia de Snoopy puede ejecutar los complementos adecuados para su posición en el panorama general. Aquí hay un diagrama que muestra una posible configuración:
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 |
+---------------+ +--------------+
En la ilustración anterior, hay tres drones ejecutándose y sincronizando sus datos con dos servidores separados. Uno sincroniza vía 3G, los otros dos vía Xbee. El segundo servidor sincroniza sus datos con un tercer servidor. Finalmente, un cliente (portátil) extrae todos los datos del primer y tercer servidor, y ejecuta Maltego para explorar los datos.
Ejecutar 'sh install.sh' dentro del directorio snoopy-ng.git instalará todos los paquetes necesarios. Ofrece instalar aircrack desde el código fuente, lo cual es necesario para distribuciones sin este paquete (el conjunto de herramientas aircrack se usa para los complementos inalámbricos). No podemos recomendar Maltego lo suficiente para la exploración de datos; se puede descargar una edición comunitaria (con algunas restricciones) de forma gratuita desde el sitio web de Paterva en http://paterva.com.
Para ver todas las opciones y parámetros disponibles, hemos creado dos comandos para ti:
root@kali:~# snoopy --help (shorthand -h)
Este comando te da todas las opciones de ejecución, como el servidor con el que sincronizar, el nombre del dron y su ubicación. Además, también presenta cómo se ejecutarían los distintos complementos.
root@kali:~# snoopy --list (shorthand -i)
Este comando enumera todos los complementos disponibles y los parámetros que requiere cada complemento para funcionar correctamente. Para obtener información más detallada sobre cada complemento, usa '-ii' o '-iii'. Para obtener información sobre un complemento específico, usa '-i -m '.
Los complementos se pueden especificar con la opción --plugin (o su abreviatura -m). Se pueden especificar varios complementos, y se iniciarán en el orden en que se introduzcan. Cada complemento dispondrá de 60 segundos para indicar que está listo, tras lo cual expirará y se iniciará el siguiente complemento. Esto puede ser útil si los complementos posteriores dependen de las acciones de los anteriores.
Cada complemento puede aceptar numerosos parámetros (como se indica en la salida de --list) en forma de pares clave-valor separados por comas. A continuación usamos el complemento 'example', que simplemente genera números aleatorios.
snoopy --plugin example:x=1,v=True
Si no se proporcionan las opciones de dron / ubicación, se usan los valores predeterminados. Alternativamente, se pueden especificar como se muestra a continuación.
snoopy --plugin example:x=1,v=True --drone myDrone --location Cansas
Los datos se pueden sincronizar con una máquina remota proporcionando la opción --server (-s). La máquina remota debe estar ejecutando el complemento de servidor (--plugin server). Antes debe generarse una clave para un nombre de dron. Lo siguiente lo ilustra.
Servidor