
Snoopy : Un cadre de suivi distribué et d'interception de données
| || | | || || || || | | |
| _____|| |_| || _ || _ || _ || |_| |
| |_____ | || | | || | | || |_| || |
|_____ || _ || |_| || |_| || ___||_ _|
_____| || | | || || || | | |
|_______||_| |__||_______||_______||___| |___|
V0.1
« Amy, la technologie n’est pas intrinsèquement bonne ou mauvaise. C’est l’usage qu’on en fait. Comme le Rayon de la Mort. »
- Professeur Farnsworth
Bienvenue dans Snoopy ; un framework de pistage et de profilage distribué. Snoopy est un travail en cours, alors n’hésitez pas à soumettre des suggestions et/ou corrections. Ce document décrit l’utilisation de base. Pour mieux comprendre le contexte, jetez un œil aux éléments suivants :
Le logiciel côté client s’exécute sur ce que nous appelons des « Drones ». Un Drone peut être n’importe quel appareil sous Linux doté d’une interface WiFi (avec des pilotes d’injection) et d’une connectivité Internet sortante. Snoopy a été testé sur un Nokia N900 et un ordinateur portable exécutant BackTrack. Les Drones effectuent les deux opérations suivantes :
Les requêtes de sondage collectées (par exemple, l’iPhone de Bob cherchant BTHomeHub-4123) sont téléchargées vers le serveur Snoopy à intervalles réguliers. Tous les appareils qui s’associent au point d’accès Rogue voient leur Internet servi via le serveur Snoopy.
Le serveur peuple toutes les requêtes de sondage dans une base de données, utilise Wigle pour déterminer les coordonnées GPS, et Google Maps pour déterminer les adresses postales (et les photos Street View). Cela signifie que si vous sondez votre réseau domestique, je pourrais obtenir une photo de votre maison.
Chaque Drone se connecte au serveur via OpenVPN et possède son propre sous-réseau. Les clients associés reçoivent une adresse IP du Drone et acheminent le trafic via celui-ci. Cela signifie que sur le serveur, nous pouvons faire correspondre les adresses IP des clients (et donc leurs adresses MAC) à leur activité Internet.
Sur le serveur, les actions suivantes ont lieu :
Le schéma réseau est le suivant :
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 a écrit une interface web pour Snoopy. Elle est accessible depuis http://votre-serveur-snoopy.com:5000/
Plusieurs transformations Maltego existent pour explorer graphiquement les données collectées (voir ci-dessous pour plus d’informations).
INSTALLATION ================ L’installation du serveur devrait être simple. Elle n’a été testée que sur une installation standard d’Ubuntu 12.04 LTS 32 bits. Des modifications sont apportées à plusieurs composants du serveur, il est donc fortement recommandé d’exécuter le script d’installation sur une installation de base, et de ne pas faire grand chose d’autre sur cette machine (si possible). En cas de doute, parcourez le fichier install.sh et effectuez les modifications manuellement. Sinon, exécutez simplement l’installateur (./install.sh).
UTILISATION ======== Une fois l’installation terminée, vous devriez pouvoir taper 'snoopy' pour charger le menu du serveur. Sinon (ou en cas de doute), allez dans le répertoire personnel de l’utilisateur créé lors de l’installation. Dans le répertoire 'snoopy/server/', il y a un fichier 'snoopy.sh' que vous pouvez exécuter. Voici le menu :