\graphicspath{{imgs/vm2/}}

\chapter{Deuxième machine virtuelle}

\section{Synthèse}

Le test d’intrusion de la deuxième machine virtuelle a permis de mettre en évidence dix-huit vulnérabilités dont la criticité varie de mineure à critique. Les critères de disponibilité, d’intégrité et de confidentialité sont concernés par ces vulnérabilités. {\color{red}Le niveau de sécurité de la machine virtuelle considéré comme \underline{\textit{\textbf{faible}}} au regard du niveau de criticité et de l’impact des vulnérabilités découvertes.}

{\color{okgreen}L’application des recommandations pour les vulnérabilités majeures et critiques permettrait de rapidement atteindre un niveau de sécurité considéré comme \underline{\textit{\textbf{bon}}}.} Il est important de noter qu’aucune recommandation n’implique d’actions conséquentes ou fortement complexes.

L’exploitation des vulnérabilités majeures et critiques mettent fortement en péril la sécurité de la machine. En exploitant ces vulnérabilités, un attaquant pourrait notamment parvenir à :
\begin{itemize}
    \item rendre indisponible l’application ;
    \item télécharger la totalité des fichiers de la machine, comprenant le code source des applications les fichiers de configuration contenant des informations critiques ;
    \item prendre le contrôle total du système d’exploitation, voire des machines voisines sur le réseau interne.
\end{itemize}

{\color{red}Il est cependant important de préciser que la réussite de ces attaques repose sur l’exploitation d'une vulnérabilité critique, et que la corriger pourrait suffire à durcir le système.}

\newpage

\subsection{Vulnérabilités observées}
\begin{table}[!htbp]
\begin{tabularx}{\textwidth}{@{}|c|c|X|@{}}
\hline
\rotatebox{90}{Identifiant} &
\rotatebox{90}{Criticité} &
Description de la vulnérabilité \\ 
\hline

V00 &
Critique &
Système hôte obsolète \\

V01 &
Important &
Service d'accès à distance accessible \\

V02 &
Mineur &
Serveur web Apache non configuré \\

V03 &
Important &
Pas de pare-feu sur la machine \\

V04 &
Critique &
Faille dans Samba permettant un accès à distance privilégié \\

\hline
\end{tabularx}
\caption{Récapitulatif des vulnérabilités}
\end{table}

\subsection{Recommandations proposées}

\begin{table}[!htbp]
\begin{tabularx}{\textwidth}{@{}|c|p{1.4cm}|X|c|c|@{}}
\hline
\rotatebox{90}{Identifiant} &
\rotatebox{90}{Vulnérabilités} \rotatebox{90}{couvertes} & 
Description de la recommandation &
\rotatebox{90}{Priorité de} \rotatebox{90}{traitement} &
\rotatebox{90}{Difficulté de} \rotatebox{90}{mise en œuvre} \\
\hline

R00 &
V00 &
Mettre à jour le système d'exploitation &
Élevée &
Difficile \\

R01&
V01 V02 &
Filtrer les flux n'étant pas nécessaires au fonctionnement de l'application &
Haute &
Faible \\

R02 &
V03 &
Installation et configuration d'un pare-feu &
Haute &
Moyenne \\

R03 &
V04 &
Mettre à niveau Samba &
Haute &
Critique \\

\hline
\end{tabularx}
\caption{Récapitulatif des recommandations}
\end{table}

\section{Tests d'intrusion}
\subsection{Reconnaissance active}
\subsubsection{Identification du système d'exploitation}
\begin{figure}[!htbp]
  \centering
  \includegraphics[width=15cm]{nmap_1}
  \caption{Identification de système d'exploitation et scan de ports ouverts sur le système cible}
\end{figure}

Nous avons de prime abord scanné la machine cible afin d'identifier les services tournant dessus et la version du système d'exploitation. Nous avons identifié une machine RedHat obsolète et de fait vulnérable en autre à des attaques locales d'élévation de privilèges. Dans l'éventualité où des services vulnérables tourneraient sur la machine, des élévations de privilège sont possibles et permettraient aux attaquants de prendre le contrôle total de la machine.

{\color{red} La sécurité du système n'est de ce fait pas assurée.}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|c|}
  \hline
  \textbf{Vulnérabilité 3} & \textbf{Système hôte obsolète} & \textbf{CVSS \color{red}10/10} \\
  \hline
  \multicolumn{3}{|p{0.95\textwidth}|}{La machine fonctionne sous un vieux noyau Linux âgé de plus de treize ans, de nombreuses failles faciles à mettre en œuvre sont éprouvées pour obtenir les accès super-utilisateur.} \\
  \hline
  \textbf{Nature} & \textbf{Facilité d'exploitation} & \textbf{Impact} \\
  \hline
  Technique & Moyenne & Critique \\
  \hline
\end{tabularx}
\end{table}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|}
  \hline
  \textbf{Recommandation 3} & \textbf{Mettre à jour le système} \\
  \hline
  \multicolumn{2}{|p{0.95\textwidth}|}{Mettre à jour le système et \textit{de facto} les services sur la machine (risque de cassage de configuration), ou bien transférer le site web vers un hôte plus à jour.} \\
  \hline
  \textbf{Priorité de traitement} & \textbf{Difficulté de mise en œuvre} \\
  \hline
  Haute & Difficile \\
  \hline
\end{tabularx}
\end{table}

\subsubsection{Identification des services}
Le scan réseau grâce à \texttt{nmap} avec identification de service nous donne plusieurs services : un accès à distance SSH, un serveur web Apache et un Samba. {\color{red}Laisser le service SSH accessible publiquement est un manquement à la sécurité du système.}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|c|}
  \hline
  \textbf{Vulnérabilité 1} & \textbf{Service d'accès à distance accessible} & \textbf{CVSS \color{red}4.5/10} \\
  \hline
  \multicolumn{3}{|p{0.95\textwidth}|}{Le service d'administration à distance, même s'il présente une authentification, doit être filtré et protégé d'un accès public immédiat.} \\
  \hline
  \textbf{Nature} & \textbf{Facilité d'exploitation} & \textbf{Impact} \\
  \hline
  Technique & Difficile & Important \\
  \hline
\end{tabularx}
\end{table}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|}
  \hline
  \textbf{Recommandation 1} & \textbf{Filtrer les flux n'étant pas nécessaires au fonctionnement de l'application} \\
  \hline
  \multicolumn{2}{|p{0.95\textwidth}|}{Mettre en place ou configurer un pare-feu pour interdire l'accès depuis l'extérieur à un tel outil.} \\
  \hline
  \textbf{Priorité de traitement} & \textbf{Difficulté de mise en œuvre} \\
  \hline
  Haute & Moyenne \\
  \hline
\end{tabularx}
\end{table}

Le scan nous montre aussi à première vue un service web non sécurisé. Après visite il s'agit d'un apache déployé dans sa configuration par défaut. {\color{red} Laissé un service tourner avec sa configuration par défaut n'est pas sûr.}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|c|}
  \hline
  \textbf{Vulnérabilité 3} & \textbf{Serveur web Apache non configuré} & \textbf{CVSS \color{red}2.3/10} \\
  \hline
  \multicolumn{3}{|p{0.95\textwidth}|}{Laisser un service avec sa configuration par défaut peut fournir une porte d'entrée potentielle aux attaquants.} \\
  \hline
  \textbf{Nature} & \textbf{Facilité d'exploitation} & \textbf{Impact} \\
  \hline
  Technique & Difficile & Mineur \\
  \hline
\end{tabularx}
\end{table}

Nous obtenons aussi des informations sur les ports ouverts et fermés, qui traduisent une absence de filtrage. On peut en déduire que {\color{red}la machine ne possède pas de pare-feu}, ce qui est une vulnérabilité.

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|c|}
  \hline
  \textbf{Vulnérabilité 3} & \textbf{Aucun pare-feu installé} & \textbf{CVSS \color{red}6.5/10} \\
  \hline
  \multicolumn{3}{|p{0.95\textwidth}|}{Pas de pare-feu installé sur la machine, ce qui laisse de la marge de manœuvre à un attaquant pour utiliser les flux qu'il souhaite. En outre, cela laisse la porte ouverte à des services qui auraient pu être masqués de l'extérieur.} \\
  \hline
  \textbf{Nature} & \textbf{Facilité d'exploitation} & \textbf{Impact} \\
  \hline
  Technique & Difficile & Important \\
  \hline
\end{tabularx}
\end{table}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|}
  \hline
  \textbf{Recommandation 2} & \textbf{Installer et configurer un pare-feu} \\
  \hline
  \multicolumn{2}{|p{0.95\textwidth}|}{Installer et configurer un pare-feu tel que \texttt{iptables} pour bloquer tous les flux non nécessaires au fonctionnement de l'application et pour bloquer l'accès depuis l'extérieur à certains services.} \\
  \hline
  \textbf{Priorité de traitement} & \textbf{Difficulté de mise en œuvre} \\
  \hline
  Haute & Moyenne \\
  \hline
\end{tabularx}
\end{table}

\subsection{Exploitation}
La machine a très peu de surface exposée vulnérable à première vue, c'est pourquoi nous avons cherché à déterminer la version du serveur Samba hébergé. L'utilitaire \texttt{enum4linux} nous fournit une indication plus précise sur la version de Samba que netcat ; {\color{red}la version est dans la gamme 2.2.X, qui est obsolète}.

Nous constatons qu'il existe une vulnérabilité avec une haute probabilité de succès pour ces versions, et qui permet une exploitation à distance : {\url{https://www.exploit-db.com/exploits/10}}. Une fois l'utilitaire compilé et exécuté, nous obtenons directement un invite de commande avec les privilèges super-utilisateur sur la machine. {\color{red}Cette vulnérabilité est très facilement exploitable puisque le code est mis en ligne à la disposition de tous. Elle offre un contrôle total à la machine pour un attaquant.}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|c|}
  \hline
  \textbf{Vulnérabilité 4} & \textbf{Faille dans Samba permettant un accès à distance privilégié} & \textbf{CVSS \color{red}9.6/10} \\
  \hline
  \multicolumn{3}{|p{0.95\textwidth}|}{Vulnérabilité critique dans le service Samba qui offre la possibilité de prendre le contrôle total de la machine suite à l'exécution de commandes arbitraires pour un attaquant.} \\
  \hline
  \textbf{Nature} & \textbf{Facilité d'exploitation} & \textbf{Impact} \\
  \hline
  Technique & Facile & Critique \\
  \hline
\end{tabularx}
\end{table}

\begin{table}[!htbp]
\centering
\begin{tabularx}{\textwidth}{|c|C|}
  \hline
  \textbf{Recommandation 3} & \textbf{Mettre à niveau Samba} \\
  \hline
  \multicolumn{2}{|p{0.95\textwidth}|}{Il est nécessaire d'installer une version plus récente du service Samba ne présentant plus cette vulnérabilité.} \\
  \hline
  \textbf{Priorité de traitement} & \textbf{Difficulté de mise en œuvre} \\
  \hline
  Haute & Facile \\
  \hline
\end{tabularx}
\end{table}

L'accès root obtenu, la machine était entièrement sous notre contrôle.

\section{Obtention du drapeau}
\begin{wrapfigure}{r}{5cm}
  \vspace{-\intextsep}
  \includegraphics[width=5cm]{flag_1}
  \caption{Drapeau de la \sout{dictature} République Française trouvé sur la machine}
\end{wrapfigure}

Une fois en possession des pleins pouvoirs (exécutif, \sout{législatif}, etc), un fichier nommé \texttt{flag.png} nous attendait dans le répertoire personnel, pique relatée\footnote{\textit{pic related}}. Après avoir pensé à un défi de stéganographie, et appliqué diverses méthodes basiques dans ce sens, comme le changement des couleurs, de contraste, ou l'utilisation d'outils spécifiques, nous nous sommes aperçus que le défi n'était pas là.

Nous avons donc testé la méthode consistant à lister toutes les chaînes de caractères grâce à la commande \textit{strings}, puis nous avons eu des résultats intéressants (voir capture d'écran).

\begin{figure}[!htbp]
  \centering
  \includegraphics[width=8cm]{flag_2}
  \caption{Chaînes de caractères dans l'image \texttt{flag.png}}
\end{figure}

Il y a donc des messages cachés dans les métadonnées EXIF de l'image, comme nous le révèle le résultat de la commande. Il reste à savoir dans quel champ des métadonnées se trouve le bon \textit{drapeau} (sous forme de chaîne de caractères). Grâce à la suite logicielle ImageMagick fournissant des outils d'analyse d'image, nous avons pu les visionner et obtenir le nom du champ dans lequel se trouvait le drapeau. Le drapeau final est donc \textbf{6w3D36WrkB4pqWRBNt2f89uf7X}.

\begin{figure}[!htbp]
  \centering
  \includegraphics[width=10cm]{flag_3}
  \caption{Données EXIF de l'image \texttt{flag.png}}
\end{figure}
