Firesheep n’exploite aucune faille de sécurité révolutionnaire mais utilise juste des principes connus depuis des années et les simplifie à l’extrême.
Beaucoup de sites Internet se basent en effet sur les cookies de session pour maintenir la connexion de l’utilisateur : ce n’est heureusement pas le mot de passe qui est stocké dans les cookies mais souvent un identifiant de session complexe que l’on retrouvera sur le serveur pour confirmer que l’utilisateur est bien connecté.
Si on arrive à récupérer le cookie du site, et si le site n’embarque pas de sécurité complémentaire, on se retrouvera donc avec une session valide qui correspond à la navigation de notre victime.
Pour que ça fonctionne, on voit que plusieurs choses sont nécessaires :
Pouvoir atteindre les paquets envoyés par la victime sur le réseau : cela suppose d’être connecté sur le même réseau local quelle, pouvoir lire et déchiffrer ses paquets : cela suppose que les paquets soient en clair (http et non https) et que notre carte réseau puisse lire des paquets destinés à d’autres (Promiscuous mode),
que le site n’utilise pas d’autres paramètres que le cookie de session pour reconnaître un utilisateur.
Le point 1 signifie que l’on doit être sur un réseau Wifi avec la victime ou sur un réseau de type Ethernet mais composé uniquement de hubs et non de switchs (avec un switch seuls les paquets qui vous sont destinés arrivent sur votre interface réseau, avec un hub tous les paquets sont envoyés sur toutes les interfaces du hub), ce qui tend à disparaitre complètement.
Pour le point 2, sous Windows il faudra télécharger et installer WinPcap sur ce lien pour que Firesheep puisse utiliser le mode promiscuous de votre carte réseau. Attention, toutes les cartes réseaux ne sont pas compatibles avec ce mode, à vous de tester avec votre carte.
Pour le point 3, vous n’aurez pas trop à vous en soucier puisque pour l’instant Firesheep n’est compatible qu’avec une sélection de sites : Amazon, Basecamp, bit.ly, Enom, FaceBook, FourSquare, Github, Google, Hacker News, Harvest, The New York Times, Pivotal Tracker, Twitter, ToorCon: San Diego, Evernote, Dropbox, Windows Live, Cisco, Slicehost, Gowalla et Flickr .
A venir : Yahoo, eBay, LinkedIn, Disqus, IntenseDebate, Digg, Reddit, Gravatar, Scribd, Wikipedia/mediawiki ?, TripIt, Blogger, GoDaddy, Posterous, Tumblr, Netflix, , ISC2, Slashdot, MobileMe, Paypal, Salesforce, Craigslist, Myspace, Match, AOL et Hyves.
Bon alors, comment qu’on pique le Facebook de la petite soeur pour raconter des obscénités sur sa timeline maintenant ?
Si vous êtes sous Windows, ouvrer tout d’abord WinPcap.
Puis pour Windows ou Mac OS : télécharger Firefox (attention pas la version 4, mais une version 3 à jour), et télécharger firesheep-0.1-1.xpi sur cette page. Faites ensuite glisser le .xpi dans la fenêtre de Firefox pour installer l’extension.
Une fois Firefox redémarré, lancer le panneau latéral de Firesheep : Affichage -> Panneau Latéral -> Firesheep. Cliquer ensuite sur Start Capturing.
Il ne vous reste plus qu’à attendre de voir de belles sessions Facebook ou Flickr s’afficher.
Alors maintenant, comment on peut se protéger de ce genres d’attaques de sidejacking ? Et comment sécuriser ses sites Web contre ce genre d’attaques ?
En fait la réponse n’est pas si simple. Pour les utilisateurs, il faut utiliser des connexions https dès que possible, mais ce n’est pas forcément suffisant. En https, le cookie sera illisible pour un autre utilisateur donc le problème s’arrête là… sauf si vous naviguez également sur des pages en http du site, et si le cookie est envoyé sur ces pages également.
En fait, lorsqu’un site positionne un cookie via un SetCookie, il peut soit le faire pour tous les protocoles, soit le faire pour le https seulement avec l’option secure. Si le cookie n’est pas secure, alors il sera envoyé sur le réseau lors d’une connexion en http. Il faudrait donc que toute la navigation soit en https (ce qui est très rarement le cas) ou alors que les données d’authentification ne soient nécessaires que sur certaines pages ciblées, ce qui paraît difficile pour un site comme Facebook par exemple.
Pour Firefox, il est possible de forcer l’utilisation du https sur les sites qui le permettent et ne pas passer en http par erreur avec les extensions Force-TLS ou HTTPS EveryWhere.
Les autres solutions peuvent vite devenir compliquées pour le grand public (tunnel SSH, VPN, etc.), heureusement qu’hadopi est là pour nous former ^^.
Côté serveur, on peut limiter les risques en envoyant un nouvel identifiant de session avec chaque requête et en positionnant des durées de session courtes, ou en couplant la session avec d’autres données du client : User Agent, adresse IP, etc.
Mais attention ces mesures en sont pas forcément sans conséquence : pour l’IP c’est même une mauvaise idée puisque beaucoup de grandes entreprises utilisent des proxys internet avec du load balancing, ce qui provoque un changement d’IP pour les clients au cours de la navigation. Si l’IP est une donnée d’authentification, la session de l’utilisateur sera alors perdue.
Le SSL complet semble donc la seule solution, mais cela ne vient pas sans inconvénient également.
Et si vous voulez vous amusez à observer les paquets qui passent sur votre réseau, c’est WireShark qu’il vous faut.
Lien de téléchargement firesheep : https://github.com/codebutler/firesheep/downloads
Lien de téléchargement Force-TLS : https://addons.mozilla.org/en-US/firefox/addon/12714/
Lien de téléchargement HTTPS EveryWhere : https://www.eff.org/https-everywhere
Lien de téléchargement wireshark
Article sous licence: