Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Snoopy — Snoopy: Un framework distribuido de seguimiento e interceptación de datos | Kitploit
Herramientas/GitHubGitHub/sensepost/snoopy
OSINT (Inteligencia de Fuentes Abiertas)ReconocimientoAuditoría Wi-FiMapeo de RedesPhishingAnálisis de MalwareIngeniería SocialRed Teaming
GitHubsensepost/snoopy

Snoopy

Snoopy: Un framework distribuido de seguimiento e interceptación de datos

Ver Repositorio
61314910hace 13 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
"Amy, la tecnología no es intrínsecamente buena ni mala. Depende de cómo se use. Como el Rayo de la Muerte."
-Profesor Farnsworth

Bienvenido a Snoopy; un framework distribuido de seguimiento y perfilado. Snoopy es un trabajo en curso, así que no dudes en enviar sugerencias y/o correcciones. Este documento describe el uso básico. Para entender un poco más los antecedentes, echa un vistazo a lo siguiente:

  • Snoopy: un framework distribuido de seguimiento y perfilado
  • ZaCon4 - Glenn Wilkinson - Terrorismo, seguimiento, privacidad e interacciones humanas
  1. INTRODUCCIÓN Y DESCRIPCIÓN GENERAL ============================= Snoopy consta de cuatro componentes:
  • Software cliente (también conocido como software Snoopy Drone)
  • Software del servidor
  • Interfaz web
  • Transformaciones de Maltego

a. Drones Snoopy

El software del lado del cliente se ejecuta en lo que llamamos "Drones". Un Drone puede ser cualquier dispositivo basado en Linux que tenga una interfaz WiFi (con controladores de inyección) y conectividad saliente a Internet. Snoopy ha sido probado en un Nokia N900 y en una laptop con BackTrack. Los Drones realizan las siguientes dos operaciones:

  1. Recolectar SSID de sondas (Probe SSIDs) de dispositivos inalámbricos cercanos
  2. Ofrecer un Punto de Acceso Rogue (Rogue Access Point) al que puedan conectarse los dispositivos inalámbricos cercanos

Las solicitudes de sonda recolectadas (p. ej., el iPhone de Bob buscando BTHomeHub-4123) se suben al servidor Snoopy a intervalos regulares. Todos los dispositivos que se asocian al Rogue AP reciben su Internet a través del servidor Snoopy.

b. Software del servidor

El servidor introduce todas las solicitudes de sonda en una base de datos, y usa Wigle para determinar las coordenadas GPS, y Google Maps para determinar direcciones de calles (y fotografías de street view). Esto significa que si estás sondeando tu red doméstica, podría obtener una fotografía de tu casa.

Cada Drone se conecta al servidor a través de OpenVPN y tiene su propia subred. Los clientes asociados reciben una dirección IP del Drone y enrutan su tráfico a través de él. Esto significa que en el servidor podemos asociar las direcciones IP de los clientes (y por tanto las direcciones MAC) con la actividad de Internet.

En el servidor ocurre lo siguiente:

  • El tráfico de Internet se proxifica de forma transparente a través de Squid, que registra todas las solicitudes en MySQL
  • SSLStrip intenta reescribir las páginas web sin HTTPS
  • mitmproxy.py permite la inyección arbitraria en páginas web
  • Se ejecutan varios scripts para extraer datos de redes sociales (p. ej., obtener perfiles de Facebook)

El diagrama de red se ve así:

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. La interfaz web

Walter escribió una interfaz web para Snoopy. Se puede acceder a ella desde http://your-snoopy-server.com:5000/

d. Transformaciones de Maltego

Existen varias transformaciones de Maltego para explorar gráficamente los datos recopilados (ver más abajo para más información).

  1. INSTALACIÓN ================ La instalación del servidor debería ser sencilla. Solo se ha probado en una instalación estándar de Ubuntu 12.04 LTS 32bit. Se realizan cambios en varios componentes del servidor, por lo que es muy recomendable ejecutar el script de instalación en una instalación base, y no ejecutar mucho más en esa máquina (si acaso algo). En caso de duda, revisa el archivo install.sh y haz los cambios manualmente. De lo contrario, simplemente ejecuta (./install.sh) el instalador.

  2. USO ======== Una vez que la instalación haya terminado, deberías poder escribir 'snoopy' para que se cargue el menú del servidor. Si no es así (o en caso de duda), ve al directorio de inicio del usuario creado durante la fase de instalación. Dentro del directorio 'snoopy/server/' hay un archivo 'snoopy.sh' que puedes ejecutar. A continuación se muestra el 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. Creación de paquetes de drone La opción [3] del menú te permitirá crear 'paquetes' del lado del cliente para tus dispositivos Drone. Cada Drone recibe sus propias claves OpenVPN y SSH, rangos DHCP y tablas de enrutamiento. Se te proporcionará una URL de descarga por cada dispositivo Drone. Asegúrate de que el servidor y el drone tengan la hora configurada correctamente, o la conexión VPN no se establecerá.

Cada entidad de Snoopy puede tener diferentes transformaciones aplicadas. Arrastra la entidad 'Snoopy' a tu grafo para empezar. Si no especificas una fecha de inicio o fin en las propiedades de las entidades, se obtendrán los resultados de los últimos 5 minutos por defecto (este valor se puede cambiar en el menú de configuración del servidor).

Las máquinas de Snoopy te permiten secuenciar transformaciones automáticamente y filtrar/eliminar nodos según los requisitos. El código fuente/los comentarios deberían explicar suficientemente cómo funcionan.

  1. CONSIDERACIONES LEGALES ======================= Todos o algunos de los componentes de Snoopy pueden ser ilegales en tu lugar de residencia. Infórmate antes de usar el software. En el Reino Unido, el componente de recolección de sondas es legal debido a la naturaleza de difusión del tráfico. Sin embargo, el componente de punto de acceso no autorizado (rogue access point) es muy probablemente ilegal en la mayoría de las regiones. SensePost no se hace responsable de que te metas en problemas por usar esta herramienta.

  2. CONSIDERACIONES DE SEGURIDAD ========================== Cada 'Drone pack' contiene claves OpenVPN y SSH. Si un Drone se ve comprometido (por robo o de otra forma) puede suponer un riesgo de seguridad para tu servidor. Se recomienda encarecidamente que tu servidor Snoopy se ejecute dedicado a su propósito. Al usuario creado en el servidor se le añade automáticamente lo siguiente al archivo .ssh/authorized_hosts file, para un poco más de seguridad:

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

  3. TRABAJO FUTURO =============== Quedan muchas cosas por hacer / añadir. Esta versión es más bien una prueba de concepto (PoC).

  • Integrar soporte para ToR
  • Añadir filtros para incorporar fácilmente otras capturas de tráfico (p. ej., mDNS)
  • Incorporar la explotación de aGPS (ya que controlamos el DNS de las víctimas)
  • Evilgrade
  • Seguimiento por Bluetooth/GSM
  • Desautenticación WiFi / interferencia 3G
  • Cámara con identificación facial
  • Cargador de plugin de Firefox para cookies robadas
  • Reemplazar el proceso de subida de datos (actualmente todos los drones usan rsync con el mismo usuario)
  1. PROBLEMAS / ERRORES CONOCIDOS ======================
  • Los SSID con caracteres inusuales pueden causar problemas
  • Actualmente todas las solicitudes de sonda se capturan y se introducen en una base de datos. La BD se hace grande bastante rápido, especialmente en zonas transitadas. La base de datos debería normalizarse, y tomar una decisión sobre si conservar todas las sondas o no.
  • Originalmente el olfateo de sondas se hacía con Scapy, pero se reemplazó por un one-liner de tshark (debido a la incapacidad de Scapy de leer el parámetro de intensidad de señal 802.11). Una advertencia descubierta con la versión antigua de tshark disponible en el N900 es que no soporta emitir el tiempo epoch, solo la hora local. Esto desbarata seriamente las zonas horarias. Si pudieras compilar un tshark nuevo para el N900 sería genial (aquí te miramos a ti, PwnieExpress). En resumen, asegúrate de que tu servidor/drones estén todos en la misma zona horaria por ahora.
  1. CONTACTO ============== El código fue escrito por Glenn (con la excepción de la interfaz web de Walter). Puedes enviarle un correo a [email protected] o bug^H^H^H seguirlo en Twitter: @glennzw. Glenn no es desarrollador, y se disculpa por su pobre código. Es un hacker, y esta herramienta le permitió hackearte.

Agradecimientos

Gracias por la ayuda/consejos/aportaciones a:

  • El equipo de SensePost (un lugar genial para trabajar).
  • DocScrutinizer, y el resto de la banda de #maemo en Freenode por la ayuda con el N900.

APÉNDICE A1. ESCENARIOS DE ATAQUE (no respaldados, ni fomentados)

Cazando al espía

P. Sabemos que un espía extranjero llega a Heathrow el 11 de noviembre, pero no sabemos cuándo ni en qué vuelo. Nuestra inteligencia sugiere que se alojará en el Hilton tras llegar, y que cogerá un vuelo desde el aeropuerto de Luton el 14 (de nuevo, no sabemos a qué hora ni destino). Es un maestro del disfraz. ¿Cómo podemos identificarlo?

R. Despliega drones Snoopy en Heathrow, el Hilton y Luton. La transformación 'CommonLocation' de Maltego anotará la intersección de todos los dispositivos presentes en esas tres ubicaciones. Con suerte, solo un resultado: nuestro objetivo humano. Una vez descubierto, podemos examinar Google Maps y las fotografías de street view de a dónde ha viajado nuestro espía. Su identidad podría revelarse si sus dispositivos son engañados para conectarse al punto de acceso no autorizado de Snoopy (como su Facebook, Twitter o correo electrónico).

Identificación de indeseables

Pide a Snoopy que registre a todos los individuos que se hayan conectado a un punto WiFi en ciertos países arenosos^W indeseables.

Seguimiento de clientes

Despliega Snoopy en tus 10 grandes almacenes. Registra el tráfico de personas, clientes recurrentes, tipos de clientes.

Distribución de malware

Inyecta código malicioso para tomar el control de los dispositivos de los clientes e instalar malware. Los exploits pueden lanzarse directamente desde el servidor a las víctimas conectadas, gracias a las tablas de enrutamiento.

El metro de Londres

TFL podría desplegar un Snoopy Drone en cada estación del metro de Londres. Podrían monitorizar el tráfico de personas, anotando horas/días punta y valle, y asignar/reducir personal en consecuencia.

Seguimiento humano a gran escala

Despliega 500 Snoopy Drones por todo Londres. Monitoriza los movimientos de las personas cuando pasan cerca de un Drone. Seguro que aparecerán patrones interesantes de movimiento humano si se aplica durante semanas/meses.


APÉNDICE A2. NOTAS DE HARDWARE

Para un escritorio/portátil basado en Linux, la tarjeta Alfa AWUS036H tiene un rendimiento medio. Una tarjeta más fiable es la Ubiquity SR-71. Se agradecerá cualquier comentario sobre lo que te funciona o no en cuanto a soporte de controladores de inyección.

En el N900, notarás que la carga de los controladores de inyección reduce severamente la duración de la batería. El paquete de batería TecNet 6600mAh proporcionó alrededor de 6-8 horas en las pruebas. Sin embargo, necesitarás un adaptador para conectar el N900 a cualquier paquete de batería. Reducir (o deshabilitar) la frecuencia de sondeo del GPS también ayudará a la duración de la batería.

Puedes encontrar consejos sobre cómo conectar tu N900 a tu portátil por USB (con el fin de usar SSH) aquí

Actualmente estoy probando con la RaspberryPi, el mini AP Alfa R36 y la SheevaPlug. Resultados próximamente.


APÉNDICE A3. SCRIPTING DE SNOOPY MALTEGO

Puedes crear tus propias transformaciones de Maltego para explorar los datos recopilados. Las proporcionadas son en su mayoría para demostrar lo que se puede hacer. Revisa el código fuente y lee:

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

Contacta con [email protected] si tienes alguna duda (o pregúntale a los increíbles chicos de Maltego).


APÉNDICE A4. SCRIPTING DE LA INTERFAZ WEB DE SNOOPY

Introducción

El código de la interfaz web es accesible a través de ~user/snoopy/server/bin/snoopy/src/snoopy/

Requisitos (ya instalados)

Paquetes Python

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

Plugins

Los plugins constan de dos partes:

  • Parte de back-end (proveedora de datos), escrita en Python
  • Parte de front-end (de visualización), escrita en JavaScript (opcional)

Back-end

Un plugin es un elemento invocable que la aplicación Snoopy carga dinámicamente. Comencemos con un ejemplo:

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

Ahora, paso a paso...

root@kitploit:~
from snoopy import db, pluginregistry

Necesitamos db para acceder a la base de datos de Snoopy y pluginregistry para registrar nuestro plugin.

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

Así es como registramos nuestro plugin (que puede ser cualquier invocable). El primer argumento especifica el nombre del grupo al que pertenece este plugin. Nosotros especificamos client-data, ya que este plugin acepta una dirección MAC y devuelve datos para mostrarse en una ventana de datos del cliente. Aparte de client-data, también existe el grupo de plugins session-data, que operan sobre sesiones de proximidad. El segundo parámetro es el nombre del plugin. Este nombre es solo para uso interno y debe ser compatible con JSON. El tercer parámetro es el título del plugin. Esencialmente es lo mismo que el nombre, pero el título se muestra en la GUI. Más específicamente, este es el título de la sección de datos en la ventana de datos del cliente.

Todos los argumentos de palabra clave después del título se guardan como opciones. Aunque el sistema de plugins no requiere opciones, Snoopy soporta la opción js. Esta opción especifica la URL (desde el lado del navegador, no desde el lado de Snoopy/del servidor) del componente JavaScript de este plugin.

root@kitploit:~
def ssid_list(mac):

Este plugin es una función simple. Acepta una cadena de dirección MAC, según la definición de los plugins de client-data. El nombre del invocable no se utiliza.El cuerpo de este complemento de ejemplo simplemente realiza una consulta SQLAlchemy que básicamente hace SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac y devuelve los resultados como una lista. Los valores de retorno de los complementos normalmente se añaden como parte de una respuesta JSON. Por lo tanto, los resultados tienen la limitación de que deben ser compatibles con JSON (según lo admitido por la función jsonify() de Flask).

¡Así de simple!

Front-end

Los complementos de front-end para datos de cliente se denominan manejadores de datos de cliente. Se registran mediante la función Snoopy.registerPlugin(sectionName, dataHandler). sectionName es el nombre de la sección de datos que el manejador de datos quiere gestionar. Este nombre es el mismo que el nombre del complemento de back-end que generó los datos. El dataHandler debe ser una función con la siguiente firma: function($section, clientData) {...}. $section es un objeto jQuery del elemento div donde el manejador de datos puede mostrar datos o efectuar cambios. Los datos de cliente (generados por el complemento de back-end) se proporcionan en el parámetro clientData.

Dado que la única salida permitida del manejador de datos son cambios en el div dado ($section), no es necesario ningún valor de retorno.

Descargar herramienta
  • Instalación y ejecución de Snoopy en el Drone Puedes tener hasta 100 drones (si quieres más, revisa el código fuente o envíame un correo, no hay una limitación real). La instalación consiste en descargar el paquete de configuración del paso anterior y ejecutar el script de configuración correspondiente. Para el Nokia N900 se colocará un icono en tu escritorio. Por ejemplo:

    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
    
  • Consulta de ubicaciones de SSID Crea una cuenta en www.wigle.net y configura tus credenciales mediante 'Configure server options'

  • Interfaz web Puedes acceder a la interfaz web a través de http://your-snoopy-server:5000/. Puedes escribir tus propios plugins para recorrer y mostrar datos. Walter lo ha hecho fácil para ti (consulta el apéndice de este documento).

  • Exploración de datos con Maltego En el menú del servidor Snoopy ve a 'Configure Server Options' > 'Maltego'. Aquí verás URLs para descargar entidades y máquinas de Snoopy, y URLs para las transformaciones. Para usar las transformaciones de Maltego necesitarás:

    • Añade las entidades de Snoopy a Maltego
    • Crea una cuenta en http://cetas.paterva.com/TDS/
    • Inicia sesión en cetas.paterva.com/TDS/
    • Crea una semilla (seed) en cetas.paterva.com/TDS/
    • Añade las URLs de las transformaciones a la semilla creada
    • Añade la semilla en Maltego (Manage > Discover Transforms (Advanced)
    • Introduce el nombre como 'Snoopy', y la URL de la semilla como tu semilla
    • Añade las máquinas de Snoopy a la sección de máquinas