
Snoopy: Un framework distribuido de seguimiento e interceptación de datos
| || | | || || || || | | |
| _____|| |_| || _ || _ || _ || |_| |
| |_____ | || | | || | | || |_| || |
|_____ || _ || |_| || |_| || ___||_ _|
_____| || | | || || || | | |
|_______||_| |__||_______||_______||___| |___|
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:
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:
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.
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 diagrama de red se ve así:
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
Walter escribió una interfaz web para Snoopy. Se puede acceder a ella desde http://your-snoopy-server.com:5000/
Existen varias transformaciones de Maltego para explorar gráficamente los datos recopilados (ver más abajo para más información).
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.
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ú: