Plan d'exécution
Lors d'un CTF ou d'un exercice de pénétration quelconque, il faut rester structuré et clair dans notre tête et dans nos notes afin d'avancer de manière optimale en s'assurant de n'être passé à côté de rien de crucial. Voici comment je m'organise :
Le bon setup
Il existe plusieurs setup viables pour les CTF et le pentest de manière générale. Certains aiment avoir leur propre setup configuré selon leurs exigences, que ça soit sous Debian
, Ubuntu
, Parrot
, Kali
, Arch
, BlackArch
, etc.. D'autres aiment utiliser des environnements pré-configurés. Je fais plutôt partie de cette catégorie d'utilisateur. L'utilisation d'une VM ou d'un container est vivement conseillé, surtout pour se connecter aux VPN des sites de CTF. Voici mon choix de setup :
Etapes principales
Scan de reconnaissance et noter toutes les versions des services.
Scan DNS pour avoir des informations sur le serveur et les différents sous-domaines.
Scanner/énumérer les services qui sont scannables pour collecter le plus d'informations sur eux.
Vérifier si les différentes versions des logiciels/plugins trouvés possèdent des vulnérabilités connues.
Chercher pour des inputs d'utilisateur et analyser le comportement du serveur (inputs populaires, fuzzing, provocation d'erreur).
Une fois sur le serveur, analyser le contenu et tout noter. Voir pour de l'escalade de privilèges.
Faire de la récolte de données en tout temps durant le pentesting en gardant en tête les potentielles dissimulations.
Prise de notes
N'importe quel éditeur de texte fait l'affaire mais moi, je préfère largement Obsidian.
Noter le résultat Nmap dans un bloc.
Noter les
user:mdp
trouvés et le service correspondant, tous dans un même tableau.Noter les chemins d'attaques potentiels, tous dans un même bloc.
Noter les informations importantes, toutes dans un même bloc.
Noter dans un bloc par chemin d'attaque, les étapes pour creuser dans l'attaque. Ne pas arrêter tant qu'on a pas terminé, avant de passer à une autre attaque. (Un bloc par attaque permet de ne pas encombrer les autres blocs précisés précédemment afin de ne pas salir notre prise de note.
Découverte d'une nouvelle technologie
Il peut être stressant et intidimant de se retrouver face à une technologie (que ça soit une application, un framework, un protocole, un service) que nous ne connaissons très mal ou bien absolument pas. C'est pour cela que je garde une liste de questions à se poser, dans un ordre précis, afin d'avancer sans perdre de temps.
Qu'est ce que c'est ?
A quel besoin cela répond ?
Comment peut-on y accéder ?
Quelle est l'étendue des choses que l'on peut faire (champ d'interaction) ?
Vulnérabilités connues ?
Dernière mise à jour