web-dev-qa-db-fra.com

Qu'est-ce que le CTF et comment puis-je me préparer en tant que programmeur pour un CTF avec des personnes adaptées aux débutants?

J'ai tendu la main à un vieil ami à moi qui était un excellent programmeur à l'époque de mes études et il m'a invité à assister à l'un des événements de la FCE avec son groupe universitaire.

Ce groupe semble très sympathique pour les débutants et ouvert à tout le monde, mais je crains toujours de ne pas avoir suffisamment de connaissances dans le domaine de la sécurité pour pouvoir participer. Je voudrais donc m'y préparer un peu, savoir exactement ce que c'est et ce que je peux faire pour améliorer au niveau de base. La recherche sur Internet m'a juste donné une idée très vague de ce qu'est un FCT.

Ce que j'ai déjà, c'est des connaissances de base et intermédiaires dans certains langages de programmation dont C #, PHP/Javascript/etc (basique), C (très basique), Java. Je ne sais pas si c'est utile, mais je pensais que ça ne pouvait pas faire de mal.

Qu'est-ce qu'un FCT exactement et comment puis-je, en tant que débutant, me préparer seul à un événement de la FCE?

80
MansNotHot

Les CTF (Capture The Flag) sont comme des cours dans les jeux. Certains sites Web offrent des outils faciles pour apprendre les cordes, avec des défis simples de difficulté croissante. Par exemple http://overthewire.org/wargames/ vous apprendra à utiliser des outils (vidage hexadécimal, vi, même le terminal lui-même) à chaque défi.

L'objectif principal est généralement de trouver du code, soit incorporé dans un fichier (stegano), caché dans un fichier à l'intérieur d'un serveur où vous devrez abuser d'une vulnérabilité connue (CTF standard), ou même exploiter le code source d'un programme pour trouver un mot de passe secret (inversion).

Comme tout défi de programmation, prenez votre temps, apprenez les outils et n'ayez pas peur de chercher de l'aide ou des écritures (évidemment pas sur le CTF que vous essayez de réaliser), mais ils peuvent fournir des informations sur les outils à utiliser, selon le type de défi.

Quelques liens:

https://www.hackthebox.eu/ : Différentes catégories de CTF comme expliqué ci-dessus, allant de facile à difficile, beaucoup d'écritures

http://overthewire.org/wargames/ : Généralement des fichiers CTF réguliers avec un fichier caché dans un serveur, et des règles spécifiques pour le trouver/le décrypter. Bon pour les débutants, vous apprendra les outils de base

84
Elcan

Dire "CTF", c'est un peu comme dire "jeu vidéo". Comment vous préparez-vous pour un jeu vidéo? Eh bien, cela dépend de ce qu'est le jeu! Tetris est très différent de Skyrim, qui est différent de Mario Kart.

Il y a très peu que vous puissiez faire pour vous préparer sans en savoir BEAUCOUP plus d'informations. Dans un CTF, j'avais besoin de comprendre la mise en réseau, TCP/IP, la conception d'applications Web, le chiffrement et la criminalistique de la mémoire. Il n'y a aucun moyen de se préparer à tout cela sans savoir que cela est nécessaire.

La seule chose qui est commune à tous les FFC est qu'il y a généralement beaucoup d'énigmes logiques.

La meilleure façon de se préparer à un FFC est de faire des FFC. La plupart du plaisir d'un FFC n'est pas de savoir ce que vous devez savoir et d'apprendre rapidement ce dont vous avez besoin pour le comprendre.

22
schroeder

Qu'est-ce qu'un FCT? Il s'agit d'un type de compétition de sécurité informatique, appelé CTF parce que vous capturez un "drapeau", une chaîne unique, et le soumettez à l'infrastructure de notation pour les points. Les FFC sont presque toujours limités dans le temps, souvent quelque chose comme 24 à 48 heures (généralement continus pendant un week-end, ce qui donne aux concurrents du monde entier une chance équitable quel que soit le fuseau horaire). Il existe deux principaux types de FFC: la mise en péril et l'attaque/défense. Les FFC de style Jeopardy sont plus faciles à organiser et aussi plus faciles à jouer/moins punissants pour les nouveaux joueurs. Dans un CTF de type péril, les organisateurs écrivent un ensemble de défis (services binaires ou Web vulnérables s'exécutant sur le cloud, défis d'inversion de type crackme, éléments cachés dans des images de disque ou des captures de paquets ou des messages chiffrés), attribuent des valeurs en points à chacun défi et les mettre à la disposition des concurrents (souvent sur une carte comme celle de danger, avec des défis organisés par difficulté et catégorie (exploitation binaire, rétro-ingénierie, exploitation Web, cryptographie et criminalistique étant les catégories typiques)). Lorsque la compétition commence, les candidats ont accès à la grille des défis, vous les résolvez et soumettez des drapeaux pour les points, et à la fin, celui qui a le plus de points gagne (les liens sont généralement rompus par le temps pour atteindre le total des points gagnants - plus vite c'est mieux) .

Dans une attaque/défense CTF, les organisateurs construisent toujours un ensemble de services vulnérables, mais chaque équipe doit exécuter une copie de ces services, qu'elle doit défendre. Vous piratez d'autres équipes pour voler leurs drapeaux et essayez de patcher vos propres services pour empêcher d'autres équipes de vous faire de même. Les FFC A/D impliquent beaucoup de travail supplémentaire de logistique et d'infrastructure pour les organisateurs (VPN, hôtes cibles par équipe, etc.). Ils peuvent également être très démoralisants pour les nouveaux joueurs si vous êtes piétiné (ou si quelqu'un persiste sur votre infrastructure) et que vous ne pouvez rien y faire. Ils peuvent également être très amusants, et ils travaillent des compétences inhabituelles comme les correctifs binaires et exploitent la réflexion.

En termes de préparation: étude, pratique et outillage. Les suggestions de Florent Uguet pour les wargames sont bonnes pour la pratique. Voici d'autres ressources que vous pourriez trouver utiles:

  • Trail of Bits ' CTF Field Guide contient quelques conférences, listes d'outils et procédures pas à pas d'anciens problèmes CTF.
  • picoCTF est un FCT destiné aux élèves du secondaire ayant très peu d'expérience. La compétition est terminée, mais les organisateurs ont laissé les problèmes à la portée des gens. C'est un bon point de départ, et si vous avez de l'expérience en programmation, vous êtes bien en avance sur la courbe et devriez pouvoir passer en revue les premiers éléments assez rapidement. Il y a aussi un nouveau picoCTF à venir en octobre je pense.
  • pwnable.kr a une variété de bons défis d'exploitation binaire à pratiquer.
  • Vous pouvez souvent trouver des comptes rendus des défis des FFC antérieurs en ligne, ce qui est un bon moyen de se familiariser avec des idiomes particulièrement ctfy ou les types de problèmes susceptibles de survenir dans un ctf particulier. ctftime.org agrège les écritures, en plus d'héberger un calendrier des prochains ctfs.

En termes d'outils, un conseil que j'offrirais est de devenir fort dans un langage de script. Le CTF est généralement soumis à une pression temporelle, et la vitesse est plus importante que l'exactitude parfaite. Python semble être le langage de choix le plus courant, et il y a beaucoup de bons outils pour les défis de type ctf dans python ( pwntools , par exemple). Reprenant un peu de familiarité, il pourrait aussi être bon.

17
lorimer

La CTF est fondamentalement ce qu'elle est connue dans les jeux. C'est Capture The Flag, mais au lieu d'un drapeau à voler, vous devez atteindre plusieurs objectifs qui agissent comme des drapeaux.

Par exemple, un indicateur dans la compétition pourrait être de procéder à une rétro-ingénierie d'une validation de clé pour développer un générateur de clé.

Puisque vous connaissez certains langages de programmation et les principes de base de ceux-ci, il serait utile si vous intensifiez votre compréhension logique et vos compétences d'investigation. Regardez les anciens FFC et faites-en quelques-uns. Si vous tombez sur des problèmes, recherchez les sujets et comprenez les mécanismes.

Comme Schroeder l'a déjà dit. C'est très difficile à préparer, car vous ne savez probablement pas quelles seront les tâches.

Conseil personnel: détendez-vous. Vous êtes là avec eux pour apprendre et vous amuser à explorer les failles du système. Essayez de passer un bon moment.

12
Nico

Je remarque que la plupart des réponses semblent éviter votre question "Comment se préparer à un FCT", je vais donc y répondre.

Tout d'abord, vous voudrez faire tous les FFC de l'organisateur, en particulier ceux avec le même titre. Par exemple, dans le récent TokyoWesterns CTF 2019 (CodeBlue Qualifiers) qui s'est tenu le week-end dernier, il y avait une question, "Slack Emoji Converter Kai" qui faisait référence à une autre question CTF dans leur précédent CTF l'année dernière (2018), "Slack Emoji Converter". Cela nécessitait une exploitation similaire à l'aide de Ghostscript et si vous n'aviez pas l'expérience, il aurait fallu un temps inutile pour lire/en savoir plus sur l'exploit.

Deuxièmement, vous voudrez exécuter OSINT sur les organisateurs. Vous voulez savoir qui sont les membres et ce qu'ils ont publié/découvert récemment.

Pourquoi devriez-vous faire ça?
Tout comme dans l'exemple précédent, les rédacteurs de questions de la FCE s'inspirent des exploits qui les entourent. S'ils ne font pas référence à un ancien exploit, ils en ont probablement un nouveau. La question PHPNote en ce que CTF a exigé un exploit deux des membres ont publié conjointement en juin . Les équipes qui en étaient conscientes n'ont mis que quelques heures à réaliser un exploit, tandis que celles qui n'étaient pas préparées ont mis plus de 12 heures à le résoudre. Découvrez leurs CVE récemment acquises et leurs publications récentes.

Enfin, vous voudrez lire tous les exploits de la plus haute gravité au cours des 1 à 2 dernières années (pour les CTF de haut niveau) ou simplement les exploits courants/populaires (pour les CTF débutants).

Notez que cela ne s'applique qu'aux CTF normaux. Je ne connais toujours pas de moyen fiable de préparer les finales DEFCON.

1
Yuu