diff --git a/Rapport.md b/Rapport.md deleted file mode 100644 index 0e8bc1b..0000000 --- a/Rapport.md +++ /dev/null @@ -1,22 +0,0 @@ -# Protocole Cryptographique -## Introduction -Le projet a pour but de réaliser une attaque ARP dit 'ARP Spoofing' sur un serveur web. L'attaque ARP Spoofing consiste à envoyer des paquets ARP falsifiés à une machine cible pour lui faire croire que l'attaquant est la passerelle par défaut. Ainsi, l'attaquant peut intercepter le trafic entre la machine cible et la passerelle. - -## Réflexion sur la mise en place -Pour réaliser cette démonstration, nous utilisons docker pour créer un réseau local de deux machines. La première machine est le serveur web et la deuxième machine est l'attaquant. La machine hôte joue le rôle de la victime qui se connecte au mauvais serveur web. - -## Mise en place -### Prérequis -- Docker -- Docker-compose - -### Lancement -Pour lancer le projet, il suffit de ce placer dans le dossier du projet et de lancer la commande suivante: -```bash -docker-compose up --build -``` -Cette commande lancera les deux containers et les reliera entre eux. Le serveur web est accessible à l'adresse `http://localhost:8080`. Puis pour lancer l'attaque, il suffit de lancer le script `arp_spoof.py` dans le container de l'attaquant. - -## Démonstration - - diff --git a/Rapport/.gitignore b/Rapport/.gitignore new file mode 100644 index 0000000..0f91e10 --- /dev/null +++ b/Rapport/.gitignore @@ -0,0 +1,5 @@ +*.pdf +*.aux +*.lof +*.log +*.toc \ No newline at end of file diff --git a/Rapport/images/logo_ensibs.jpg b/Rapport/images/logo_ensibs.jpg new file mode 100644 index 0000000..4a23389 Binary files /dev/null and b/Rapport/images/logo_ensibs.jpg differ diff --git a/Rapport/images/spoof.png b/Rapport/images/spoof.png new file mode 100644 index 0000000..d1c400e Binary files /dev/null and b/Rapport/images/spoof.png differ diff --git a/Rapport/images/website.png b/Rapport/images/website.png new file mode 100644 index 0000000..f3613c4 Binary files /dev/null and b/Rapport/images/website.png differ diff --git a/Rapport/lib/cr.sty b/Rapport/lib/cr.sty new file mode 100644 index 0000000..a1d97d4 --- /dev/null +++ b/Rapport/lib/cr.sty @@ -0,0 +1,80 @@ +\usepackage{graphicx} +\usepackage{geometry} +\usepackage[french]{babel} +\usepackage[T1]{fontenc} +\usepackage{xparse} +\usepackage{hyperref} + +\graphicspath{{images/}} +\geometry{ + a4paper, + left=2.5cm, + right=2.5cm, + top=1.5cm, + bottom=1.5cm +} + +\newcommand{\subtitle}[1]{\def\@subtitle{#1}} +\newcommand{\@subtitle}{} + +\newcommand{\coverpage}[3] { + \begin{titlepage} + + \begin{figure}[h] + \centering + \includegraphics[width=0.20\textwidth]{#2} + \end{figure} + + \begin{center} + \large #1 + + \vspace{0.5cm} + + \rule{\textwidth}{1pt} + + \Huge \@title + + \large \@subtitle + + \rule{\textwidth}{1pt} + + \large Par \@author + + \large Le \today + \end{center} + + \vspace{0.5cm} + + \begin{figure}[h] + \centering + \includegraphics[width=0.75\textwidth]{#3} + \end{figure} + + \end{titlepage} +} + +\NewDocumentCommand{\crfigure}{O{0.75\textwidth} m m}{ + \begin{figure}[h] + \centering + \includegraphics[width=#1]{#2} + \caption{#3} + \end{figure} +} + +\NewDocumentCommand{\twofigures}{O{0.75\textwidth} m m m m}{ + \begin{figure}[h] + \centering + \begin{minipage}[t]{0.45\dimexpr#1} + \centering + \includegraphics[width=\textwidth]{#2} + \caption{#3} + \end{minipage} + \hspace{0.05\textwidth} + \begin{minipage}[t]{0.45\dimexpr#1} + \centering + \includegraphics[width=\textwidth]{#4} + \caption{#5} + \end{minipage} + \end{figure} +} + diff --git a/Rapport/makefile b/Rapport/makefile new file mode 100644 index 0000000..27f8470 --- /dev/null +++ b/Rapport/makefile @@ -0,0 +1,10 @@ +name=CR_TP3_Protocole_Cryptographique + +make: + pdflatex -jobname=$(name) src/source.tex + pdflatex -jobname=$(name) src/source.tex + rm -rf *.lof *.log *.toc *.aux *.out + rm -rf src/*.lof src/*.log src/*.toc src/*.aux + +clean: + rm -rf *.pdf diff --git a/Rapport/src/source.fdb_latexmk b/Rapport/src/source.fdb_latexmk new file mode 100644 index 0000000..df7183e --- /dev/null +++ b/Rapport/src/source.fdb_latexmk @@ -0,0 +1,19 @@ +# Fdb version 3 +["pdflatex"] 1737459327 "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.tex" "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.pdf" "source" 1737459327 + "/etc/texmf/web2c/texmf.cnf" 1727780187 475 c0e671620eb5563b2130f56340a5fde8 "" + "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/./lib/cr.sty" 0 -1 0 "" + "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.aux" 1737459327 8 a94a2480d3289e625eea47cd1b285758 "" + "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.tex" 1737459326 5508 b784d438524158ecb0dcca6e0837fbb6 "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1580683321 20023 e427dd9e17e239bf926ef3aab67fe35e "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo" 1580683321 8447 5c4b8ee712f8e349df2722115bc8c513 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/usr/share/texmf/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1727850466 8256687 0ab32530cd61ac827b7b341df2f6aaf3 "" + "lib/cr.sty" 0 -1 0 "" + "source.tex" 1737459326 5508 b784d438524158ecb0dcca6e0837fbb6 "" + (generated) + "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.pdf" + "/home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.log" + "source.log" diff --git a/Rapport/src/source.fls b/Rapport/src/source.fls new file mode 100644 index 0000000..e5cf3ee --- /dev/null +++ b/Rapport/src/source.fls @@ -0,0 +1,13 @@ +PWD /home/student/Documents/Protocole_Crypto/TP3/Rapport/src +INPUT /etc/texmf/web2c/texmf.cnf +INPUT /usr/share/texmf/web2c/texmf.cnf +INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT /home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.tex +OUTPUT /home/student/Documents/Protocole_Crypto/TP3/Rapport/src/source.log +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size12.clo +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size12.clo +INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm diff --git a/Rapport/src/source.tex b/Rapport/src/source.tex new file mode 100644 index 0000000..4e97982 --- /dev/null +++ b/Rapport/src/source.tex @@ -0,0 +1,120 @@ +\documentclass[12pt, a4paper]{article} +\usepackage{./lib/cr} + +\title{Compte-rendu TP ARP Spoofing} +\author{Lukian LEIZOUR, Jérémy DEMON, Titouan DIARD} +\date{\today} + +\begin{document} + +\coverpage{ICE - Informatique et Cybersécurité (Cybersécurité du logiciel)}{logo_ensibs}{logo_ensibs} +\tableofcontents +\listoffigures +\newpage + + +\section{Introduction} +Le projet a pour but de réaliser une attaque ARP dit 'ARP Spoofing' sur un serveur web. L'attaque ARP Spoofing consiste à envoyer des paquets ARP falsifiés à une machine cible pour lui faire croire que l'attaquant est la passerelle par défaut. Ainsi, l'attaquant peut intercepter le trafic entre la machine cible et la passerelle. + + +\section{Méthodologie} +Pour réaliser cette démonstration, nous utilisons docker pour créer un réseau local de deux machines. La première machine est le serveur web et la deuxième machine est l'attaquant. La machine hôte joue le rôle de la victime qui se connecte au mauvais serveur web. + +Après les trois heures de TP, nous avons pas pu terminer la partie 1 car l'architecture docker ne fonctionnait pas correctement. La partie 1 ne sera donc pas totalement traiter dans ce rapport. + +\section{Prérequis} +Pour réaliser ce TP, il est nécessaire d'avoir installé docker et docker-compose sur la machine hôte. Il est également nécessaire d'avoir des connaissances en réseautage et en sécurité informatique. + +\section{Installation} +Pour installer le projet, il suffit de cloner le dépôt git à l'adresse suivante : \url{git@git.leizour.fr:CyberFlingues/arp-spoofing.git}. + +Si vous souhaitez lancer l'ARP Spoofing, il suffit de lancer la commande \texttt{docker-compose up} dans le répertoire "apache". +Si vous souhaitez lancer la partie de sécurisation RSA, il suffit de lancer la commande \texttt{docker-compose up} dans le répertoire "rsa". + + +\section{Partie 1 : ARP Spoofing} + +\subsection{Configuration du réseau} +Nous avons commencer par créer les docker avec les fichiers docker-compose.yml et Dockerfile. Le docker compose crée trois containers : un serveur web, un attaquant et une victime. Le serveur web est un serveur apache qui sert une page web. L'attaquant est un container debian avec les outils nécessaires pour le réseautage. La victime est un container debian qui se connecte au serveur web. + +Voici les identités des machines: + +\begin{table}[h!] + \centering + \begin{tabular}{|c|c|c|} + \hline + \textbf{Machine} & \textbf{Adresse IP} & \textbf{Adresse MAC} \\ + \hline + Serveur web & 172.21.0.2 & 02:42:ac:15:00:02 \\ + \hline + Attaquant & 172.21.0.3 & 02:42:ac:15:00:03 \\ + \hline + Victime & 172.21.0.4 & 02:42:ac:15:00:04 \\ + \hline + \end{tabular} + \caption{Identités des machines dans le réseau} + \label{tab:identites} +\end{table} + +\subsection{Configuration du serveur web} +Le serveur web est un container apache qui sert une page web. Pour cela, nous avons créé un fichier index.html dans le répertoire /var/www/html du container. Le serveur web est accessible en localhost depuis le pc hote des containers. +On génère une clé privée et un certificat auto-signé pour le serveur web avec la commande \texttt{openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt}. +On configure ensuite le serveur apache pour qu'il utilise le certificat auto-signé avec les commandes suivantes: +\begin{verbatim} + a2enmod ssl + a2ensite default-ssl + service apache2 restart +\end{verbatim} + +On modifie les fichiers 000-default.conf et default-ssl.conf pour qu'ils utilisent le certificat auto-signé puis on redémarre le serveur apache. + +\begin{figure}[h!] + \centering + \includegraphics[width=0.8\textwidth]{images/website.png} + \caption{Page web du serveur apache sécurisé} + \label{fig:website} +\end{figure} + +\subsection{ARP Spoofing} +A ce moment là, le serveur web fonctionne correctement et la victime et l'attaquant peuvent se connecter au serveur web. +Avec la commande \texttt{arpspoof -i eth0 -c host -t 172.21.0.4 -r 172.21.0.2}, l'attaquant envoie des paquets ARP à la victime pour lui faire croire que l'attaquant est la passerelle par défaut. Ainsi, l'attaquant peut intercepter le trafic entre la victime et le serveur web. + +\begin{figure}[h!] + \centering + \includegraphics[width=0.8\textwidth]{images/spoof.png} + \caption{Résultats obtenus lors de l'attaque ARP Spoofing} + \label{fig:arpspoof} +\end{figure} + +On observe que la table ARP de la victime est modifiée pour associer l'adresse IP du serveur web à l'adresse MAC de l'attaquant. + + + +\begin{table}[h!] + \centering + \begin{tabular}{|c|c|c|c|c|} + \hline + \textbf{Address} & \textbf{HWtype} & \textbf{HWaddress} & \textbf{Flags} & \textbf{Iface} \\ + \hline + attacker & ether & 02:42:ac:15:00:03 & C & eth0 \\ + \hline + webserver & ether & 02:42:ac:15:00:03 & C & eth0 \\ + \hline + \end{tabular} + \caption{Résultats obtenus lors de l'attaque ARP Spoofing} + \label{tab:resultats} +\end{table} + +On s'est arrêté à ce stade car malgré plusieurs tentatives, la victime a ça table ARP empoisonnée mais il peut toujours accéder au serveur web. Il y a une interception des packets mais la victime n'est pas redirigée vers une page web malveillante. + +\section{Partie 2 : Sécurisation des communications avec RSA} + + + + + + + + + +\end{document} \ No newline at end of file