Je viens de regarder un discours intéressant de Glen Glenn Wilkinson intitulé: Les machines qui ont trahi leurs maîtres.
Il a dit que votre téléphone diffuse constamment tous les SSID auxquels il s'est connecté. Comment un attaquant pourrait-il capturer ces requêtes wifi?
Assez facile pour être honnête, tout ce que vous avez à faire est d'écouter les demandes de sonde. Il y a un joli blog expliquant comment configurer un ordinateur avec BT5 pour les écouter ici .
Avec une carte réseau qui prend en charge le "mode moniteur", vous pouvez prendre ce que l'on appelle des "demandes de sonde". Une fois que la carte réseau est configurée pour être en mode moniteur, vous pouvez utiliser quelque chose comme aircrack , cableshark ou hoover pour capturer les demandes de sonde.
Par exemple, lorsque vous utilisez Ubuntu et Wireshark, définissez la carte réseau en mode moniteur:
Sudo ifconfig wlan0 down
Sudo iwconfig wlan0 mode monitor
Sudo ifconfig wlan0 up
Démarrez maintenant Wireshark et définissez le filtre sur "wlan.fc.type_subtype eq 4".
Voilà, maintenant vous pouvez voir tous les SSID sondés autour de vous.
Par exemple, en utilisant le grand aircrack-ng, en particulier l'utilitaire airodump-ng de celui-ci. Les informations que vous recherchez apparaîtront sous "Sondes" dans la section inférieure.
Cela devrait fonctionner pour la plupart des Linux:
Sudo apt-get install aircrack-ng
Sudo airmon-ng start <card>
Sudo airodump-ng mon0
Cela génère une liste de ce à quoi tous les appareils tentent de se connecter. Certains appareils ne sondent que les réseaux disponibles, cependant, comme vous le soupçonniez, les smartphones sondent tous les réseaux qu'ils connaissent, qu'ils soient disponibles ou non ·
Après avoir mis votre carte réseau sans fil en mode moniteur comme mentionné dans les autres réponses, vous pouvez faire quelque chose comme ce qui suit pour imprimer les adresses MAC et ssid. Ce code dépend de la bibliothèque/outil scapy.
#!/usr/bin/env python
from scapy.all import *
conf.iface = "mon0"
def handle_pkt(pkt):
if Dot11 in pkt and pkt[Dot11].type == 0 and pkt[Dot11].subtype == 4:
hwaddr = pkt[Dot11].addr2
ssid = pkt[Dot11Elt][0].info
print hwaddr, repr(ssid)
sniff(prn=handle_pkt)
Piratage heureux
L'alternative à airmon-ng est d'utiliser iwconfig pour mettre la carte en mode moniteur (si elle la prend en charge) - L'inconvénient de cette méthode est que vous ne pouvez pas vous associer à un point d'accès tout en reniflant des paquets sans fil bruts.
ifconfig wlan0 down
iwconfig wlan0 mode Monitor
iwconfig wlan0 channel 1
ifconfig wlan0 up
Mon approche a consisté à utiliser un périphérique OpenWRT (cela pourrait être fait avec DDwrt ou d'autres projets similaires) (un TPlink 3600) et à n'utiliser que tcpdump et le mode moniteur (pas airodump). L'utilisation de TCPdump vous permet de voir tout le trafic (pour profiler l'activité de la zone ainsi que pour détecter les balises/sondes) L'avantage d'utiliser un appareil dédié est qu'ils sont peu coûteux, utilisent peu d'électricité et disposent de deux radios qui fonctionnent indépendamment. J'ai utilisé un lecteur flash monté sur/media/drive1 pour contenir les fichiers. Les commandes ci-dessous surveilleront le canal 11 sur les bandes b/g/n et le canal 149 sur les bandes a/n, évidemment cela peut être modifié pour répondre aux besoins locaux. Avec cette exécution au démarrage, vous pouvez déplacer l'appareil dans la zone souhaitée, le brancher, attendre, puis le débrancher et consulter les fichiers du lecteur flash sur votre PC. Les scénarios d'audit de sécurité sans fil possibles avec cette plate-forme sont nombreux.
En outre, pour clarifier votre thèse initiale selon laquelle "les téléphones diffusent les SSID de tous les réseaux auxquels ils se sont connectés", cela est un peu simpliste: les appareils enverront des sondes pour tout réseau actuellement dans leur configuration Wi-Fi, ce qui pour la plupart les utilisateurs sont tous les réseaux auxquels ils se sont connectés par le passé, mais vous pouvez facilement supprimer les entrées inutilisées de cette liste pour réduire les informations divulguées par votre appareil. Une option comme "associer uniquement aux SSID diffusés, ne pas sonder" serait souhaitable, mais hélas, c'est vraiment une faible priorité en matière de sécurité, par rapport à d'autres problèmes sur la plupart des appareils mobiles.
/usr/sbin/iw phy phy0 interface add mon0 type monitor;
/sbin/ifconfig mon0 up;
/usr/sbin/iw mon0 set channel 11;
/usr/sbin/iw phy phy1 interface add mon1 type monitor;
/sbin/ifconfig mon1 up;
/usr/sbin/iw mon1 set channel 149;
capdir="/media/drive1/`date +%Y%m%d-%H%M`";
mkdir $capdir;
echo "starting with $capdir" >> /tmp/capstartup
/usr/sbin/tcpdump -i mon0 -C 50 -w $capdir/mon0.pcap &> /tmp/error.myprog0 &
/usr/sbin/tcpdump -i mon1 -C 50 -w $capdir/mon1.pcap &> /tmp/error.myprog1 &
Non seulement votre appareil envoie des demandes de sonde aux réseaux auxquels il est connecté (sauf s'il est déjà connecté), mais dans certains cas, il semble que lorsque vous usurpez l'adresse MAC d'un autre appareil dans votre environnement (et celui-ci est fermé) vers le bas), il peut même répliquer l'envoi de demandes de sonde à des points d'accès auxquels il n'a jamais été connecté et sont hors de portée en même temps. Au moins, c'était mon observation déroutante: Comment l'usurpation d'une certaine adresse MAC peut-elle permettre d'envoyer des requêtes de sonde auxquelles je n'ai jamais été connecté?