Continue TP3

This commit is contained in:
flyingscorpio@clevo 2022-09-21 17:50:21 +02:00
parent 3cc451d036
commit a653026325
4 changed files with 249 additions and 6 deletions

View file

@ -92,6 +92,12 @@
\item Analyser la capture obtenue et expliquer le 4-way handshake.
\emph{%
Le 4-way handshake est un échange de 4 messages entre le supplicant et le point d'accès, initié par le point d'accès.
}
\clearpage
Message 1~:
\begin{lstlisting}[gobble=12]
@ -131,11 +137,19 @@
WPA Key Data Length: 0
\end{lstlisting}
\clearpage
Message 2~:
\begin{lstlisting}[gobble=12]
Frame 758: 137 bytes on wire (1096 bits), 137 bytes captured (1096 bits) on interface any, id 0
Linux cooked capture v1
Packet type: Sent by us (4)
Link-layer address type: Ethernet (1)
Link-layer address length: 6
Source: 02:00:00:00:01:00 (02:00:00:00:01:00)
Unused: 0000
Protocol: 802.1X Authentication (0x888e)
802.1X Authentication
Version: 802.1X-2001 (1)
Type: Key (3)
@ -192,11 +206,19 @@
..0. .... .... .... = Extended Key ID for Individually Addressed Frames: Not supported
\end{lstlisting}
\clearpage
Message 3~:
\begin{lstlisting}[gobble=12]
Frame 760: 171 bytes on wire (1368 bits), 171 bytes captured (1368 bits) on interface any, id 0
Linux cooked capture v1
Packet type: Sent by us (4)
Link-layer address type: Ethernet (1)
Link-layer address length: 6
Source: 02:00:00:00:00:00 (02:00:00:00:00:00)
Unused: 0000
Protocol: 802.1X Authentication (0x888e)
802.1X Authentication
Version: 802.1X-2004 (2)
Type: Key (3)
@ -226,11 +248,20 @@
WPA Key Data: ef3988737eef5c60062066a5f2cfa74485002f72c67af9fe17cb2033e346475649cf185c...
\end{lstlisting}
\clearpage
Message 4~:
\begin{lstlisting}[gobble=12]
Frame 762: 115 bytes on wire (920 bits), 115 bytes captured (920 bits) on interface any, id 0
Linux cooked capture v1
Linux cooked capture v1
Packet type: Sent by us (4)
Link-layer address type: Ethernet (1)
Link-layer address length: 6
Source: 02:00:00:00:01:00 (02:00:00:00:01:00)
Unused: 0000
Protocol: 802.1X Authentication (0x888e)
802.1X Authentication
Version: 802.1X-2001 (1)
Type: Key (3)
@ -265,14 +296,12 @@
\begin{enumerate}
\item Attaque par dictionnaire offline ---
L'attaque par dictionnaire est une méthode utilisée pour pénétrer par effraction dans un ordinateur ou un serveur protégé par un mot de passe, en essayant systématiquement tous les mots d'un dictionnaire donné.
Cette méthode repose sur le fait que de nombreuses personnes utilisent des mots de passe courants (par exemple~: un prénom, une couleur ou le nom d'un animal).
Ce type d'attaque peut également servir à rechercher la clé nécessaire pour déchiffrer un message ou document codé.
Une attaque par dictionnaire offline est réalisée en obtenant un texte chiffré généré à l'aide de la clé dérivée du mot de passe, et en essayant chaque mot de passe contre le texte chiffré.
Cette catégorie d'attaque est invisible pour le KDC et peut être exécutée beaucoup plus rapidement qu'une attaque en ligne.
L'attaque sera généralement beaucoup plus longue avec les types de chiffrement plus récents (en particulier ceux basés sur AES), car ces types de chiffrement utilisent une fonction chaîne à clé beaucoup plus coûteuse.
Cependant, la meilleure défense consiste à refuser à l'attaquant l'accès à un texte chiffré utile.
\item KRACK ---
Dans l'ensemble, cette procédure de prise de contact permet de s'identifier et de se connecter rapidement, ainsi que d'établir une nouvelle clé de chiffrement pour chaque connexion.
C'est ce qui assure la protection des données sur les connexions Wi-Fi.
Toutes les connexions Wi-Fi protégées utilisent la prise de contact en quatre étapes.
L'attaque KRACK affecte la troisième étape de la prise de contact, permettant ainsi à l'attaquant de manipuler et de rejouer la clé de chiffrement WPA2 pour la déjouer en installant une clé déjà en cours d'utilisation.
Lorsque la clé est réinstallée, d'autres paramètres qui lui sont associés (le nombre de paquets de transmission incrémentiel appelé le nonce et le compteur de rejeu) sont définis sur leurs valeurs d'origine.
Plutôt que de passer à la quatrième étape de la prise de contact, le nonce se réinitialise pour continuer à rejouer les transmissions de la troisième étape.
@ -282,4 +311,218 @@
\end{enumerate}
\section{Installation et configuration de FreeRadius}
\begin{enumerate}
\item Installer FreeRadius sur une VM Linux.
\begin{console}[gobble=12]
root@radius:~# apt install freeradius
\end{console}
\begin{itemize}
\item Quel est le répertoire d'installation de FreeRadius~?
\emph{Les fichiers attenant à FreeRadius sont dans \texttt{/etc/freeradius/3.0/}.}
\item Sur quels ports le serveur écoute-t-il les requêtes~?
\emph{Le serveur écoute sur les ports 1812 et 1813 en UDP\@.}
\item Sous quel compte le serveur est lancé et pourquoi~?
\emph{Le serveur est lancé par l'utilisateur \texttt{freerad}, pour respecter le principe du Moindre Privilège.}
\item Lancer FreeRadius en mode debug et vérifier son bon fonctionnement.
\begin{console}[gobble=20]
root@radius:~# systemctl stop freeradius.service
root@radius:~# freeradius -X
\end{console}
\emph{Cela fonctionne~!}
\end{itemize}
\item Ouvrez le fichier de configuration \texttt{clients.conf}.
\begin{itemize}
\item Que déclare-t-on dans ce fichier~?
\emph{Ce fichier est utilisé pour déclarer les clients (réseaux et postes) qui pourront joindre le serveur FreeRadius.}
\item Assurez vous que le client localhost est bien présent.
\emph{\texttt{localhost} est bien présent, noyé au milieu des commentaires explicatifs.}
\item Le paramètre \texttt{secret} est \texttt{testing123} par défaut.
À quoi sert ce paramètre~?
\emph{Il s'agit d'une Pre-Shared Key, que le client devra utiliser pour l'authentification.}
\item Comment s'authentifie le point d'accès auprès du serveur~?
\emph{Grâce au paramètre \texttt{secret} cité précédemment.}
\end{itemize}
\item Ouvrez le fichier \texttt{users} se trouvant dans le même répertoire et rajoutez un nouvel utilisateur.
\begin{itemize}
\item Quelle est la syntaxe de la déclaration de cet utilisateur~?
\emph{La syntaxe minimale pour définir un utilisateur est la suivante, d'autres exemples sont dans les commentaires du fichier.}
\begin{console}[gobble=20]
bob Cleartext-Password := "hello"
Reply-Message := "Hello, %{User-Name}"
\end{console}
\item Peut-on utiliser le fichier \texttt{/etc/passwd} comme source des utilisateurs~?
\emph{Oui~: le module FreeRadius \texttt{passwd} est activé par défaut (dans \texttt{/etc/freeradius/3.0/mods-enabled/passwd}) et permet ce type d'authentification.}
\end{itemize}
\item Relancer votre serveur freeradius en mode debug.
\begin{itemize}
\item Tester l'authentification avec la commande \texttt{radtest}.
\begin{console}[gobble=20]
root@radius:~# radtest bob hello localhost 0 testing123
\end{console}
\item Capturer les paquets et faites une analyse des AVP (Attribute-Value Pair) échangés.
\emph{Requête~:}
\begin{lstlisting}[gobble=20]
Attribute Value Pairs
AVP: t=User-Name(1) l=5 val=bob
AVP: t=User-Password(2) l=18 val=Encrypted
Type: 2
Length: 18
User-Password (encrypted): 6c9776bba39cb185ed3ae15d7142f3d6
AVP: t=NAS-IP-Address(4) l=6 val=192.168.122.41
AVP: t=NAS-Port(5) l=6 val=0
AVP: t=Message-Authenticator(80) l=18 val=2ef7473c4e075d4e549d5784d432dc21
\end{lstlisting}
\emph{%
Nous voyons le User-Name \texttt{bob} en texte clair, mais le mot de passe est hashé.
D'autres paramètres correspondent à ceux fournis en ligne de commande (NAS-IP-Address, NAS-Port, Message-Authenticator).
}
\emph{Réponse~:}
\begin{lstlisting}[gobble=20]
Attribute Value Pairs
AVP: t=Reply-Message(18) l=12 val=Hello, bob
\end{lstlisting}
\emph{On retrouve la \texttt{Reply-Message} définie dans le fichier de configuration \texttt{users}.}
\end{itemize}
\end{enumerate}
\section{Configuration et analyse de WPA-Entreprise}
\begin{enumerate}
\item Configuration du point d'accès AP~:
\begin{itemize}
\item Configurer \texttt{hostapd} pour annoncer WPA-Entreprise aux stations sans fil.
Configurer les paramètres FreeRadius dans hostapd.
\begin{console}[gobble=20]
root@client:~# cat hostapd_wpa-entreprise.conf
interface=wlan0
driver=nl80211
hw_mode=g
channel=1
ssid=efrei-entreprise
wpa=2
wpa_psk_radius=1
wpa_key_mgmt=WPA-EAP
wpa_pairwise=CCMP
rsn_pairwise=CCMP
own_ip_addr=127.0.0.1
ieee8021x=1
auth_algs=3
auth_server_addr=172.16.0.2
auth_server_port=1812
auth_server_shared_secret=testing123
\end{console}
\item Dans quel fichier configure-t-on l'addresse IP de l'AP dans FreeRadius~?
\emph{Cela se configure dans le fichier \texttt{/etc/freeradius/3.0/clients.conf}~:}
\begin{console}[gobble=20]
client private {
ipaddr = 172.16.0.0/24
secret = testing123
}
\end{console}
\end{itemize}
\item Configuration du \texttt{wpa\_supplicant} et capture Wireshark~:
\begin{itemize}
\item Configurer \texttt{wpa\_supplicant} afin de se connecter à votre SSID en utilisant la méthode EAP/PEAP\@.
\begin{console}[gobble=20]
network={
ssid="efrei-entreprise"
scan_ssid=1
key_mgmt=WPA-EAP
eap=PEAP
identity="bob"
password="hello"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}
\end{console}
\end{itemize}
\item FreeRadius est un serveur AAA.
\begin{itemize}
\item Que signifie ce terme~?
\emph{Cet acronyme veut dire que le serveur gère l'Authentification, l'Authorisation et la gestion des comptes (Accounting).}
\emph{%
LAuthentification fait référence à la capacité que léquipement aura de vérifier lidentité de lutilisateur.
Cest un processus qui va décider si un utilisateur donné peut accéder au réseau ou à léquipement sur lequel AAA est configuré.
}
\emph{LAuthorization fait quant à lui référence aux ressources auxquelles lutilisateur va pouvoir accéder, et les opérations quil va être en mesure deffectuer.}
\emph{LAccounting concerne les données et les informations se rapportant au profil de lutilisateur.}
\item Interdire l'accès de votre utilisateur pour une plage horaire de votre choix.
\end{itemize}
\end{enumerate}
\end{document}

Binary file not shown.