Cahier 2016 groupe n°10 : Différence entre versions
(→Séance 7 (28/11/2016)) |
(→Séance 7 (28/11/2016)) |
||
Ligne 212 : | Ligne 212 : | ||
'''Sécurisation des données''' | '''Sécurisation des données''' | ||
+ | |||
On commence par créer les trois partitions : | On commence par créer les trois partitions : | ||
lvcreate -L 1G -n /dev/virtual/wolverine-1 -v | lvcreate -L 1G -n /dev/virtual/wolverine-1 -v | ||
lvcreate -L 1G -n /dev/virtual/wolverine-2 -v | lvcreate -L 1G -n /dev/virtual/wolverine-2 -v | ||
lvcreate -L 1G -n /dev/virtual/wolverine-3 -v | lvcreate -L 1G -n /dev/virtual/wolverine-3 -v | ||
+ | |||
+ | On ajoute ces partitions dans notre fichier /etc/xen/Wolverine.cfg | ||
+ | 'phy:/dev/virtual/wolverine-1,xvdd,w', | ||
+ | 'phy:/dev/virtual/wolverine-2,xvde,w', | ||
+ | 'phy:/dev/virtual/wolverine-3,xvdf,w', | ||
===Références=== | ===Références=== |
Version du 24 novembre 2016 à 14:03
Schématisation du réseau
Tâche particulière
Présentation
Notre tâche particulière consiste en la configuration d'un point d'accès Wifi avec filtrage des adresses MAC.
Matériel utilisé
Cisco Aironet 2600
Avancement du travail
Nous commencerons par réaliser notre tâche particulière, celle-ci étant nécessaire pour l'ensemble de la promotion.
Séance 1 (03/10/2016)
- Prise de connaissance du sujet et lecture de celui-ci
- Répartition des tâches particulières entre les différents groupes
- Connexion via le port série au point d'accès Cisco (grâce à minicom)
- Configuration : ajout de l'adresse IP 172.26.79.5 dans l'interface bvl 1
Séance 2 (10/10/2016)
- Configuration du ssid
ap(config)#dot11 ssid Wolverine ap(config-ssid)#authentication open ap(config-ssid)#guest-mode
- Configuration de l'interface radio dot11Radio0
ap(config)#interface dot11Radio0 ap(config-if)#ssid Wolverine ap(config-if)encryption vlan 1 key 2 size 40 0123456789 transmit-key ap(config-if)#encryption vlan 1 mode ciphers wep40 ap(config-if)#no shutdown
Séance 3 (13/10/2016)
- Création de la machine virtuelle
On se connecte d'abord sur le serveur cordouan
ssh root@cordouan.insecserv.deule.net
On créé ensuite la machine avec tous les renseignements souhaités
xen-create-image --hostname=Wolverine --ip=193.48.57.170 --netmask=255.255.255.240 --gateway=193.48.57.172 --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie
On démarre la machine virtuelle
xl create /etc/xen/Wolverine.cfg
Et nous la lançons
xl console Wolverine
En parallèle, nous avons réservé notre nom de domaine sur Gandi : robico.space
Séance 4 (24/10/2016)
- Reconfiguration du point d'accès via l'interface web
- Installation des paquets nécessaires sur l'eeePC
- Craquage de la clé wep (non-terminé)
Séance 5 (07/11/2016)
- Ajout d'un filtrage par adresse MAC : seuls la moitié de la classe peut s'associer à notre point d'accès wifi
Si on remplace notre adresse MAC par une adresse non-autorisée, l'association n'est plus possible. Autrement dit, le filtrage par adresse MAC n'est pas du tout efficace pour sécuriser le Wifi.
Cassage clé wep
Wep intro
Wep est un protocole cryptographique dont l’abréviation est Wired Equivalent Privacy. Cette dénomination soulignerait la « robustesse » du cryptage des données et le désir d’assurer des communications sans fil aussi sécurisés que par liens filaires. Pour essayer de répondre à cette objectif, WEP se base sur un checksum pour contrôler l’intégrité de la trame et sur un algorithme de type RC4 pour chiffrer les données. RC4 est constitué d'un générateur de données pseudo-aléatoire dont la sortie dépend d'une clé de 64 ou 128 bits avec lequel on l'initialise. Pour le chiffrement, un XOR est réalisé entre la sortie du RC4 et la trame à chiffrer. Pour déchiffrer les données il suffit de refaire un XOR entre ce flux arrivant et la même sortie du RC4. On voit déjà là un problème, en effet, les trames chiffrées et non chiffrées sont exactement de même taille. Comme on utilise des XOR, il faudra donc réinitialiser RC4 à chaque envoi de trame pour éviter la réutilisation des clés. La solution a été de découper la clé RC4 en deux. La première partie de la clé est transmise en claire en entête (24 bits) appelé vecteur d'initialisation (IV). La seconde partie de la clé, sera une clé fixe connue par l’utilisateur et le point d’accès (de 40 ou 104 bits). Mais pour que le client puisse déchiffrer les paquets il lui faut le même vecteur d’initialisation, c’est pourquoi les 24 premiers bits (bien qu’aléatoire à la base) sont envoyé en clair.
Lors de l'identification, une phrase P est envoyée en clair par le point d’accès et le client renvoie une réponse cryptée C. L’opération suivante est réalisée C = RC4(IV||clé_WEP) (+) P . Maintenant que l’on comprend globalement le fonctionnement de WEP, nous allons utiliser un outil qui exploite les failles de WEP afin de récupérer la clé fixe.
Crack wep
Pour cela, nous avons à disposition un EeePC équipé d’un module WiPi. L’appareil n’étant pas configurer il nous a fallu réaliser les diverses configurations suivantes. La première chose a été de connecter le PC à Internet.
Dans /etc/network /interfaces on ajoute les lignes suivantes : Auto eth0 Iface eth0 inet static Address 172.26.79.24 Netmask 255.255.240.0 Gateway 172.26.76.254
On relance avec ces nouvelles règles /etc/init.d/network restart
Toutefois cela ne permet pas encore de se connecter à internet, en effet l’horloge interne du PC est dérèglée et ne permet pas de rendre valide les certificats des sites web. Pour cela on écrit les lignes suivantes :
date -s hh:mm:ss date -s mm/dd/yyyy hwclock --systohc
Ensuite une fois cela réalisé nous pouvons installer la suite aircrack-ng.
apt-get install aircrack-ng
Maintenant pour sniffer le réseau, il faut utiliser le module WiPi en mode monitoring. Un nouveau problème apparaît car le module n’est pas reconnu. On observe alors les différents messages d’erreur à travers la commande dmesg. On en déduit qu’il faut installer le driver de ce module. On effectue la commande suivante :
apt-get install firmware-ralink
Le module est maintenant reconnu en tant que wlan0 et le crackage peut commencer. On débute en vérifiant qu’aucun processus pourrait gêner le mode monitor du module avec :
airmon-ng check (s’il y a des processus gênant -> airmon-ng check kill)
Passons maintenant notre WiPi en mode monitoring:
airmon-ng start wlan0 la commande nous indique que l’interface mon0 a été créé pour le monitoring (on parle toujours du même module)
Maintenant nous allons un peu observer le traffic et cibler notre recherche en n’observant que les point d’accès utilisant wep avec :
airodump-ng –encrypt wep mon0
On observe donc les SSID, le canal d’échange et les adresses MACs des différents point d’accès. Cracotte05 sera notre victime pour cet exercice. Maintenant nous récupérons tous les paquets associés à Cracotte05 avec :
airodump-ng –w cracotte05 –c 2 –bssid 04:DA:D2:9C:50:54 mon0
Enfin avec la commande aircrack-ng cracotte05-01.cap nous obtenons la clé fixe.
- Installations des paquets ssh, apache2 et bind9 sur notre machine virtuelle
- Configuration du serveur DNS
Modification du fichier /etc/bind/named.conf.local :
zone "robico.space" { type master; file "/etc/bind/zones/robico.space.db"; }; zone "57.48.193.in-addr.arpa" IN { type master; file "/etc/bind/zones/db.57.48.193.in-addr.arpa"; };
Création des fichiers /etc/bind/zones/robico.space.db et /etc/bind/zones/db.57.48.193.in-addr.arpa :
$TTL 604800 @ IN SOA ns.robico.space. root.robico.space. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.robico.space. @ IN NS ns6.gandi.net. ns IN A 193.48.57.170 www IN A 193.48.57.170 @ IN A 193.48.57.170 ns IN AAAA 2001:660:4401:60ba:216:3eff:fea6:173a www IN AAAA 2001:660:4401:60ba:216:3eff:fea6:173a @ IN AAAA 2001:660:4401:60ba:216:3eff:fea6:173a
$TTL 604800 @ IN SOA robico.space. root.robico.space. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; 57.48.193.in-addr.arpa. IN NS ns.robico.space. 57.48.193.in-addr.arpa. IN NS ns6.gandi.net. 170 IN PTR robico.space.
- Sécurisation de serveur DNS par DNSSEC
Nous commençons par créer les clés KSK et ZSK
dnssec-keygen -a RSASHA1 -r /dev/urandom -b 2048 -f KSK -n ZONE robico.space dnssec-keygen -a RSASHA1 -r /dev/urandom -b 1024 -n ZONE robico.space
Nous incluons les clés publiques dans notre fichier de zone
$include /etc/bind/robico.space.dnssec/robico.space-ksk.key $include /etc/bind/robico.space.dnssec/robico.space-zsk.key
Nous signons les enregistrements de la zone (on se place dans le dossier où se trouve nos clés)
dnssec-signzone -o robico.space -k robico.space-ksk ../robico.space.db robico.space-zsk
Nous modifions le fichier named.conf.local afin d'utiliser la zone signée
zone "robico.space" { type master; file "/etc/bind/zones/robico.space.db.signed"; };
Enfin, il nous reste à communiquer la partie publique de la KSK à gandi.net. Cependant, lorsque nous avons réalisé le test sur dns viz en fin de séance, nous avons obtenu de nombreuses erreurs. L'erreur vient probablement du fait que nous avons omis d'incrémenter le numéro de version de la zone et également du fait que nous avons choisi le mauvais algorithme de signature lorsque nous avons communiqué la clé à gandi.net.
Séance 6 (14/11/2016)
Cassage de clé WPA
Introduction du WPA
WPA (Wi-Fi protected access) est un protocole de sécurité créé comme solution intermédiaire pour palier les problèmes de WEP en attendant la norme 802.11i. Pour cet exemple nous parlerons du protocole WPA-PSK (Pre-Shared Key) à destination des particuliers. De même que WEP, WPA utilise l’algorithme RC4 pour chiffrer les trames. De plus, il a été mis en place le protocole TKIP (Temporal Key Integrity Protocol) qui confère la principale sécurité à WPA. La faille de TKIP que l’on va exploiter pour cette attaque nécessite de récupérer le 4-way Handshake. Cette étape est réalisée à la connexion entre une station et un AP comme l’illustre cette image.
La PSK est une chaîne de caractères de 256 bits ou une phrase secrète comprise entre 8 et 63 caractères et peut être égale à la PMK si l’on n’utilise pas de serveur d’authentification. On peut extraire la chaîne de caractères par l’algorithme PSK= PMK = PBKDF2 (phrase secrète, SSID, longueur du SSID, 4096, 256) où 4096 est le nombre de hachage successifs et 256 la taille de la sortie. La PTK est dérivée de la PMK et donc sa force repose uniquement sur la valeur de la PMK. Après la transmission du second message, l'attaquant connait ANonce et SNonce et peut commencer à essayer une PSK pour calculer la PTK et dériver les clés temporelles. Ensuite on teste la PSK pour que le MIC (fonction de @dest, @src, PMK et des données) du second message soit obtenu avec la KCK correspondante.
Crack WPA
De la même manière nous passons notre interface en mode monitoring. Nous intéressons aux AP utilisant wpa avec:
airodump-ng --encrypt wpa mon0
Nous retrouvons notre cracotte05 qui sera de nouveau notre victime et l'on récupère dans un fichier de capture.
airodump-ng –w cracotte05 –c 13 –bssid 04:DA:D2:9C:50:54 mon0
Par pur hasard, nous voyons qu'une station est connecté à l'AP. Grâce à cela nous allons pouvoir récupérer le 4-way handshake nécessaire à notre attaque. Pour accélérer sa récupération, dans deux nouveaux shells, nous allons le forcer à se déconnecter et se reconnecter grâce à:
aireplay-ng -0 0 -a 04:DA:D2:9C:50:54 -c station mon0 aireplay-ng -0 0 -a 04:DA:D2:9C:50:54 mon0
Nous observons que le handshake a bien été récupéré. Il ne nous reste plus qu'à réaliser un dictionnaire avec l'utilitaire crunch:
crunch 8 8 0123456789 -o dico.txt
Maintenant nous pouvons tester des clés par bruteforce en hors-ligne avec
aircrack-ng -w dico.txt cracotte05-01.cap
Séance 7 (28/11/2016)
DNSSEC
Nous avons corrigé l'erreur que nous avions lors de la séance précédente (à savoir incrémenter le numéro de version du fichier de zone°. Désormais, cela fonctionne comme on peut le voir ici https://www.zonemaster.fr/test/95f88fcf940ea52c
Sécurisation des données
On commence par créer les trois partitions :
lvcreate -L 1G -n /dev/virtual/wolverine-1 -v lvcreate -L 1G -n /dev/virtual/wolverine-2 -v lvcreate -L 1G -n /dev/virtual/wolverine-3 -v
On ajoute ces partitions dans notre fichier /etc/xen/Wolverine.cfg
'phy:/dev/virtual/wolverine-1,xvdd,w', 'phy:/dev/virtual/wolverine-2,xvde,w', 'phy:/dev/virtual/wolverine-3,xvdf,w',
Références
http://www.hsc.fr/ressources/articles/hakin9_wifi/hakin9_wifi_FR.pdf