logo seela

Comment réussir un CTF comme un pro ? Exemple COMPLET pas à pas

août 1, 2023

Temps de lecture : 5 min

Sommaire

Pour comprendre ce qu’est une compétition CTF, quoi de mieux que de faire un exercice réel ?

Je vais donc vous présenter la mission “Welcome” de BattleHack. Dans cette passionnante aventure de hacking éthique, vous serez plongé au cœur d’un environnement virtuel rempli de défis stimulants. La mission “Welcome” est conçue pour les débutants. Vous pourrez tester vos compétences en résolution de problèmes, votre capacité à rechercher des vulnérabilités.

Soyez prêt à vous plonger dans le monde captivant des CTF et à développer vos compétences en sécurité informatique tout en vous amusant. Alors, préparez-vous à relever le défi et à devenir un véritable maître du CTF avec la mission “Welcome” de BattleHack !

logo battlehack

Dans cette première mission, votre instructeur vous guidera pas à pas pour vous donner un aperçu du jeu... Pour participer à la compétition, vous devrez démontrer vos compétences. Pouvez-vous vous connecter à cette machine ? Cela devrait être facile, mais nous sommes gentils, alors voici les informations que nous connaissons à ce sujet : Le nom d'utilisateur doit être seela. Le mot de passe utilisé est faible.

📡 Etape 1 : Le scanning

Le scanning fait référence à la pratique de recherche et d’exploration des systèmes informatiques cibles pour identifier les services et les ports ouverts. C’est une étape cruciale lors de la préparation d’une attaque ou de la résolution de défis en CTF. Cela nous permet de voir par où commencer pour attaquer la machine.

Pour ça, nous allons utiliser NMAP, l’outil le plus populaire en matière de scan réseau

				
					nmap -sC -sV <IP_MACHINE>
				
			

Cette commande nous permet de scanner tout ce qui se trouve sur la machine cible. Pour faire simple :

  1. Le paramètre -sC est utilisé pour effectuer un “scan de scripts par défaut”. Lorsqu’il est activé, Nmap exécute une série de scripts prédéfinis qui permettent de détecter automatiquement des vulnérabilités et des informations spécifiques sur les services ouverts sur les hôtes cibles. Ces scripts fournissent des informations supplémentaires sur les cibles et peuvent aider à identifier des failles potentielles dans les services en cours d’exécution.

  2. Le paramètre -sV est utilisé pour effectuer un “scan de version”. En activant cette option, Nmap tente d’identifier les versions des services réseau qui s’exécutent sur les ports ouverts des cibles. Cela peut être utile pour déterminer les versions spécifiques des logiciels utilisés, ce qui peut être crucial pour évaluer les vulnérabilités connues et déterminer la meilleure approche pour une exploitation réussie.

exemple nmap

On voit que le port 22 SSH est ouvert ! Nous allons donc essayer de trouver comment se connecter à la machine via ce protocole.

🔤 Etape 2 : L'énumération

L’énumération consiste à collecter activement des informations sur les cibles potentielles, telles que les hôtes, les services et les utilisateurs, afin de découvrir des vulnérabilités et des points d’entrée pour mener une attaque. Cela implique de rechercher de manière systématique et ciblée des informations qui pourraient être utiles pour progresser dans le CTF, comme des noms d’utilisateurs, des mots de passe faibles, des numéros de version de logiciels, des partages de fichiers, etc. L’énumération joue un rôle clé pour planifier une approche stratégique et efficace lors de la résolution de défis en CTF.

Ici, l’auteur de la mission nous a donné un indice, le nom d’utilisateur pour se connecter en SSH est seela

Sans cet indice, nous aurions dû chercher à droite à gauches des informations pour retrouver ce nom d’utilisateur.

On peut essayer de se connecter avec une attaque par bruteforce pour tester tous les mots de passe d’un dictionnaire. Et c’est dans la phase suivante que nous allons mettre notre plan à exécution. 

🛠 Etape 3 : L'exploitation

L’exploitation consiste à utiliser les failles et les vulnérabilités découvertes lors de l’énumération pour prendre le contrôle des cibles ou accéder à des informations sensibles. Cela implique de mettre en œuvre des attaques ciblées et des techniques spécifiques pour exploiter les points faibles et résoudre les défis du CTF. L’exploitation est la phase finale cruciale où les participants démontrent leur expertise en sécurité informatique en utilisant les failles trouvées pour atteindre les objectifs du CTF, tels que l’obtention de drapeaux ou de récompenses spécifiques.

Nous allons donc essayer de nous connecter via une attaque par bruteforce. Pour ça, nous allons utiliser l’outil Hydra, et le dictionnaire de mot de passe rockyou.txt, qui regroupe l’ensemble des mots de passe les plus utilisés. 

logo hydra bruteforce ssh
				
					hydra -l seela -P /usr/share/wordlists/rockyou.txt -t 4 ssh://ip_machine
				
			
  • hydra: C’est le nom de l’outil utilisé pour effectuer l’attaque de force brute.
  • -l seela: Cela spécifie le nom d’utilisateur que l’on souhaite cibler. Dans ce cas, l’utilisateur cible est “seela”.
  • -P /usr/share/wordlists/rockyou.txt: Cela indique le chemin du fichier contenant la liste de mots de passe que l’on souhaite tester lors de l’attaque. Dans cet exemple, le fichier “rockyou.txt” est utilisé, ce qui est courant car il s’agit d’une liste de mots de passe couramment utilisés pour les tests de sécurité.
  • -t 4: Cela indique le nombre de threads (ou processus simultanés) utilisés pour l’attaque. Dans cet exemple, 4 threads seront utilisés pour accélérer le processus.
  • ssh://ip_machine: C’est l’URL de la machine cible, spécifiant le protocole SSH et l’adresse IP de la machine à attaquer.

En résumé, cette commande Hydra tente de se connecter à la machine distante via SSH en utilisant le nom d’utilisateur “seela” et en testant une liste de mots de passe à partir du fichier “rockyou.txt”.

Magnifique, on a trouvé le mot de passe ! C’est tout simplement rockyou. On peut maintenant se connecter en SSH, et voir que nous sommes l’utilisateur seela. 

Mais la mission n’est pas finie, nous n’avons pas encore tous les droits sur la machine, il faut qu’on arrive à se connecter en tant que root !

exemple hydra

🪜 Etape 4 : L'escalade de privilège

L’escalade de privilèges en CTF consiste à obtenir des droits d’accès supérieurs à ceux initialement accordés par le système. Cela signifie passer d’un niveau d’accès restreint à un niveau d’accès plus élevé, permettant ainsi d’accéder à des ressources sensibles ou de prendre le contrôle complet de la machine cible. En résolvant des défis de CTF, l’escalade de privilèges est souvent utilisée comme étape cruciale pour atteindre les objectifs finaux, tels que l’obtention de drapeaux ou la réalisation de la mission donnée.

Pour ça, on peut exécuter la commande “sudo -l”. Cela permet de vérifier quelles commandes spécifiques nous sommes autorisés à exécuter avec les privilèges root (administrateur) en utilisant la commande “sudo”. Cette information est précieuse car elle nous permet de savoir quelles opérations spéciales nous pouvons effectuer sans avoir à connaître le mot de passe du superutilisateur (root).

Une fois que nous connaissons les commandes que nous pouvons exécuter avec “sudo”, nous pouvons chercher des vulnérabilités ou des erreurs de configuration dans ces commandes pour essayer d’exploiter l’une d’elles. Si nous réussissons à exploiter une de ces commandes, nous pourrons obtenir des droits d’accès élevés et atteindre les objectifs du CTF, tels que l’obtention de drapeaux ou la résolution de la mission donnée.

				
					sudo -l
				
			
exemple sudo -l

On voit qu’on peut utiliser find en tant que root.

Si on cherche sur internet, on trouve justement un vulnérabilité avec find.

Si on tape ce code, on aura alors un accès total à la machine en tant que root

				
					sudo find . -exec /bin/sh \; -quit
				
			

Voici comment cela fonctionne :

  • “sudo“: La commande “sudo” est utilisée pour exécuter la commande “find” avec des privilèges root (administrateur), ce qui signifie que nous aurons accès à des fonctionnalités avancées et à des fichiers sensibles.

  • “find .”: Cette partie indique à la commande “find” de commencer à chercher à partir du répertoire courant (“.”) et de parcourir récursivement tous les fichiers et dossiers sous ce répertoire.

  • “-exec /bin/sh ;”: C’est la partie clé de l’exploitation. Elle dit à la commande “find” d’exécuter le shell interactif “/bin/sh” pour chaque fichier trouvé. En exploitant une certaine vulnérabilité de configuration, cela nous permet d’obtenir un shell interactif avec des privilèges élevés.

  • “-quit”: Cette option indique à la commande “find” de s’arrêter dès qu’un fichier est trouvé et que le shell a été exécuté une fois. Cela est important car nous ne voulons pas continuer à parcourir tous les fichiers une fois que nous avons obtenu un shell interactif.

exemple privesc

Et voilà, vous avez réussi votre premier CTF ! Bravo 🍾

Si vous voulez le refaire de votre côté, inscrivez-vous à BattleHack, le mode campagne est gratuit avec plus de 30 missions !

Et si vous souhaitez vous former au CTF, cela se passe directement avec notre formation Ethical Hacker sur CyberTraining.

logo cyber training

Commencez votre formation en cybersécurité !

Lancez votre carrière en cybersécurité et formez-vous au métier qui vous correspond. Notre plateforme en ligne vous permet de vous entraîner à votre rythme pour une montée en compétences rapide et efficace.

100% en ligne

Théorie & Pratique

Personnalisé par niveau

Commencez votre formation en cybersécurité

Formation

Carrière

Cybersécurité

100% en ligne

Donnez un nouveau souffle à votre carrière avec nos formations cybersécurité

Mail

information@seela.io