Petit sommaire
- Qu’est-ce qu’un CTF
- À quoi s’attendre lors d’un CTF ?
- Quel matériel préparer pour un CTF ? a. Kali Full Headless b. Activer la recherche rapide sur Metasploit
- Comment devenir meilleur ?
Qu’est-ce qu’un CTF
Petit rappel si vous vous êtes retrouvé ici par hasard. CTF est l’abbreviation de _Capture The Flag_ (Capture de Drapeau). Il s’agit d’un mode de jeu dans lequel plusieurs attaquants doivent voler un drapeau et le ramener chez eux. Le but du défenseur (qui n’est autre que l’organisateur du CTF, en général) est de protéger ses drapeaux.
Les CTF existent aussi en informatique, dans le domaine de la sécurité : les organisateurs mettent en place plusieurs épreuves et les participants doivent s’introduire dans un système afin de récupérer le drapeau (flag).
Ceci s’apparente à une intrusion dans un système réel, avec vol de données … sauf qu’ici le drapeau n’a pas de valeur monétaire, et personne ne vous en voudra.
Les CTF les plus célèbres sont ceux organisés par les grands groupes (par exemple : le CTF Google) ou lors de conférences dédiées à la sécurité (Defcon, le wargame de la NuitDuHack …).
Chaque épreuve validée rapporte des points selon sa difficulté estimée par les organisateurs. À la fin du CTF, un classement est établi et des récompenses peuvent être données aux meilleurs participants.
À quoi s’attendre lors d’un CTF ?
Un CTF est en général composé de plusieurs épreuves réparties dans différentes catégories et pour différents niveaux, du plus facile au plus difficile. Savoir dans quelle catégorie se trouve un challenge peut aider à l’appréhender.
Les catégories que l’on retrouve en général; avec un exemple de challenge
- Binary Analysis/Reverse Engineering : on vous fournit un executable et vous devez extraire le drapeau. Il peut s’agir d’un mot de passe à trouver en inversant le fonctionnement du programme.
- Web** : un site web est accessible et vous devez trouver un truc intéressant qui pourrait s’apparenter à un drapeau. Un mot de passe ? Le contenu du fichier nommé flag ?
- Forensic : une machine a été compromise, on vous fournit RAM/Disque/Logs/… et vous devez trouver une information précise dedans (nom de la personne qui a compromis la machine ?).
- Réseau : votre réseau a subi une attaque DoS et vous devez trouver qui l’a attaqué et comment.
- Cryptographie : Steve a implémenté un algorithme de chiffrement, il s’est sans doute trompé à un moment (réutilisation d’un nonce ?) et vous devez exploiter cette faille.
- Mobile Security : un employé s’est rendu compte que son téléphone était peut-être infecté par un mouchard. Vous devez trouver quelle application est responsable, le FLAG est dans l’application.
- Stéganographie : une information est cachée dans une image, à vous de la retrouver.
- Physique (plus rare) : vous devez vous introduire dans un local fermé; vous avez une clé USB et devez extraire une information cachée dessus.
Selon votre niveau dans chaque catégorie, vous aurez peut-être envie d’ignorer totalement certaines épreuves. Libre à vous, mais gardez en tête que les épreuves simples peuvent l’être vraiment ;-)
Gardez bien en tête la consigne (s’il y en a une) afin de savoir quoi chercher. Certains flags seront évidents, comme NDH{....}
… d’autres le seront moins (par exemple trouver le nom d’un utilisateur ou le mot de passe d’un compte).
Attaquez les épreuves en considérant qu’il s’agit de vrais systèmes, et qu’ils ont été mis en place avec les mêmes erreurs que vous feriez : un dossier .git
accessible, mauvaises permissions attribuées, mot de passe du compte admin est admin
…
Quel matériel préparer pour un CTF ?
Le matériel dépendra du CTF … s’il se déroule en ligne votre ordinateur suffira, sinon prévoyez au minimum un câble ethernet afin de vous joindre à la fête.
Les outils parfaits pour réaliser un pentest sont globalements les mêmes pour participer à un CTF : une machine Linux de préférence, encore mieux si c’est Kali Linux.
Des liste d’outils utiles pour les CTF sont disponibles : github.com/zardus/ctf-tools et awesome-ctf. N’hésitez pas à les consulter pour avoir une idée des armes à votre disposition.
Beaucoup d’entre eux sont déjà intégrés à Kali Linux.
Kali Full Headless
J’utilise Kali Full car il contient les outils nécessaires pour ce que je souhaite faire : sqlmap
, nmap
, binwalk
, … et je ne galère pas le jour de l’épreuve à l’installer.
J’ai retiré l’interface graphique : les outils en ligne de commande me suffisent :
$ apt remove gnome-*
$ nano /etc/default/grub
Mettre GRUB_CMDLINE_LINUX_DEFAULT="text"
et GRUB_TIMEOUT=0
pour booter plus rapidement
$ update-grub
On nettoie et on met tout à jour :
$ apt-get autoremove
$ apt update
$ apt upgrade
Enfin, on active SSH :
systemctl enable ssh
systemctl start ssh
Activer la recherche rapide sur Metasploit
Si vous utilisez metasploit, celui-ci vous indiquera ceci et les recherches seront (très) lentes.
$ msfconsole
msf > search wordpress
[!] Module database cache not built yet, using slow search
Afin d’accélérer ceci, il suffit d’activer PostgreSQL et de reconstruire le cache.
$ systemctl start postgresql
$ msfdb init
$ msfconsole
msf > db_rebuild_cache
[*] Purging and rebuilding the module cache in the background...
Quelques minutes plus tard, le cache est construit et les recherches sont rapides \o/ !
Comment devenir meilleur ?
La seule solution pour devenir meilleur : s’entrainer. Il y a plusieurs moyens de s’entrainer, passifs ou actifs.
Participer à beaucoup de CTF, et oui, c’est aussi simple que ça. :D
Divers sites recensent les CTF passés et à venir : CTFtime par exemple. Bien souvent, un CTF peut être terminé mais toujours accessible, profitez en !
Participer en groupe, chacun apporte ses compétences et les autres peuvent apprendre grâce à lui.
S’entrainer sur des sites spécialisés, comme par exemple Root-Me.org qui propose de résoudre des challenges accessibles en permanence…
Participer à des Bugs-Bounties, qui ne sont rien de plus que des CTF sur de vrais systèmes… avec des enjeux supplémentaires.
Lire beaucoup de Write-Ups, qui sont les résumés écrits par les participants ou organisateurs sur la démarche à suivre pour résoudre un CTF. _CTFtime_ et root-me.org recensent les solutions. Les write-ups sont souvent une mine d’informations utiles pour mieux comprendre et résoudre les challenges. Lire les signalements publiés sur HackerOne peut être instructif aussi.
Être curieux, les CTF s’inspirent souvent de cas réels. Être informé des failles existantes dans un système permet d’avoir une vision globale et donc une longueur d’avance.
Et surtout, n’oubliez pas : PRENEZ DU PLAISIR !
Les CTF sont des challenges régulièrement organisés et les meilleures équipes sont souvent les mêmes (parfois dans le même ordre !). N’ayez pas peur d’échouer et persévérez. Si vous bloquez, changez d’épreuve, et revenez dessus plus tard.
Psst, on se retrouve à la NuitDuHack dans deux semaines ?