SlideShare a Scribd company logo
1 of 42
Eric Gingras, directeur de la R&D
Sébastien Duquette, analyste en sécurité




Le fuzzing et les tests d'intrusions
Objectifs de la présentation
   Être complète en soit
        – à l'exception des vulnérabilités
   Faire l'état de l'art :
        – du fuzzing dans les tests d'intrusions
        – de l'utilisation du fuzzing dans les outils pour
              les tests d'intrusions d'applications Web
   Présenter des exemples concrets




        Hackfest 2009 : Fuzzing et tests d'intrusions     2
Contenu de la présentation
   Le concept de "test d'intrusion"
   Le fuzzing
       – définitions
       – méthodologies
   Les difficultés du fuzzing dans le cadre
    d'un test d'intrusion
   Le fuzzing et les applications Web
   Démo



        Hackfest 2009 : Fuzzing et tests d'intrusions   3
Contenu de la présentation
   Le concept de "test d'intrusion"
   Le fuzzing
       – définitions
       – méthodologies
   Les difficultés du fuzzing dans le cadre
    d'un test d'intrusion
   Le fuzzing et les applications Web
   Démo



        Hackfest 2009 : Fuzzing et tests d'intrusions   4
La définition de "test d'intrusion"
                                 « une   série d'activités effectuées pour
                                 détecter et exploiter les failles de sécurité
                                 afin de déterminer dans quelle mesure il
                                 est facile ou difficile pour un tiers de
                                 déjouer les contrôles de sécurité d'une
                                 organisation ou d'accéder sans autorisation
                                 à son information et à ses systèmes »1
                           Pour évaluer la sécurité (confidentialité,
                           intégrité et disponibilité) d'une organisation
                                    – robustesse des systèmes
                                    – protections
                                    – politiques et procédures
                                      Hackfest 2009 : Fuzzing et tests d'intrusions             5
1 – Source : le Grand Dictionnaire Terminologique de l'OLF (http://www.granddictionnaire.com)
On a besoin de tests d'intrusions
                           Parce que les logiciels deviennent de plus
                            en plus complexes :
                                     – de plus en plus de lignes de code
                                     – ouverture des systèmes (Internet)
                                     – nombre de couches
                                     – logiciels plus puissants
                                     – expertise en sécurité
                                                                               1
                                         informationnelle


                                      Hackfest 2009 : Fuzzing et tests d'intrusions                                            6
1 – SANS (http://www.sans.org/top-cyber-security-risks/) : “60% des problèmes de sécurité sur Internet sont liés aux applications Web”
La méthodologie des tests d'intrusions
    Déroulement d'un test d'intrusion :

    Définition                                     Découverte de    Vérification de
                          Reconnaissance
    de la cible                                    vulnérabilités   l'exploitabilité




    Portée d'un test :
            – Test boîte noire (entrées et sorties)
            – Test boîte blanche (code source)
            – Test boîte grise (exécutable)


             Hackfest 2009 : Fuzzing et tests d'intrusions                       7
Contenu de la présentation
   Le concept de "test d'intrusion"
   Le fuzzing
       – définitions
       – méthodologies
   Les difficultés du fuzzing dans le cadre
    d'un test d'intrusion
   Le fuzzing et les applications Web
   Démo



        Hackfest 2009 : Fuzzing et tests d'intrusions   8
Définition du "fuzzing"
   Une technique de test qui consiste à
    injecter des données :
       – invalides
       – inattendues
       – aléatoires
   Dans le but de générer :
       – une opération erronée
       – une exception
       – un résultat inattendu
       – un crash, etc.

        Hackfest 2009 : Fuzzing et tests d'intrusions   9
Le fuzzing est un paradigme de test
   Buts des méthodes de tests :
       – Tests exhaustifs : trouver toutes les
              failles
       – Méthodes formelles : garantir l'absence
              de failles (assurance de qualité)
       – Fuzzing : trouver des vulnérabilités




        Hackfest 2009 : Fuzzing et tests d'intrusions   10
Le fuzzing Fonctionne
                         2006 : Month of Browser Bugs
                                   – majorité des bugs découverts par fuzzing
                                   – publication de fuzzers : AxMan, Hamachi,
                                           MangleMe, etc.

                         Le fuzzing fait partie du SDL (Security
                               Development Lifecycle) de Microsoft
                         Septembre 2009, découverte d'une
                               vulnérabilité majeure dans SMBv2
                               (Windows Vista & 2008) par L. Gaffié
                                   – trouvée en 3 secondes, 15 paquets ...
                                    Hackfest 2009 : Fuzzing et tests d'intrusions   11
1 - Source : http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
... et 20 lignes de code
from socket import *                              while True:
from time import sleep                             #/Core#
from random import choice                          what = packet[:]
                                                   where = choice(range(len(packet)))
host = "IP_ADDR", 445
                                                   which = chr(choice(range(256)))
#Negotiate Protocol Request                        what[where] = which
packet = [chr(int(a, 16)) for a in """             #/Core#
00 00 00 90 ff 53 4d 42 72 00 00
00 00 18 53 c8 00 00 00 00 00 00 00                #sending stuff @host
00 00 00 00 00 ff ff ff fe 00 00 00 00
                                                   sock = socket()
00 6d 00 02 50 43 20 4e 45 54 57 4f
                                                   sock.connect(host)
52 4b 20 50 52 4f 47 52 41 4d 20 31 2e
30 00 02 4c 41 4e 4d 41 4e 31 2e 30                sock.send(' '.join(what))
00 02 57 69 6e 64 6f 77 73 20 66 6f 72             sleep(0.1) # dont flood it
20 57 6f 72 6b 67 72 6f 75 70 73 20 33             print 'fuzzing param %s' %
2e 31 61 00 02 4c 4d 31 2e 32 58 30 30                (which.encode("hex"))
32 00 02 4c 41 4e 4d 41 4e 32 2e 31
                                                   print 'complete packet %s' %
00 02 4e 54 20 4c 4d 20 30 2e 31 32
                                                      (''.join(what).encode("hex"))
00 02 53 4d 42 20 32 2e 30 30 32 00
""".split()]                                       sock.close()

               Hackfest 2009 : Fuzzing et tests d'intrusions                          12
La Méthodologie du fuzzing
1. Identification de la cible
2. Identification des vecteurs
   d'entrée
3. Génération des données
   pour le fuzzing
4. Exécution des tests
5. Analyse des exceptions générées
6. Analyse de l'exploitabilité des vulnérabilités
   découvertes
      Hackfest 2009 : Fuzzing et tests d'intrusions   13
Cibles du fuzzing
   Interpréteurs de commandes
        – arguments d'une commande
   Variables d'environnement
   Fichiers
   Librairies
   Navigateurs web
        – Javascript, ActiveX, Java
        – Plugins : Flash, Adobe Reader, etc.


         Hackfest 2009 : Fuzzing et tests d'intrusions   14
Cibles du fuzzing (suite)
   Protocoles réseau
       – Protocoles simples
                  • ASCII
                  • peu d'authentification
                  • échanges linéaires

       – Protocoles complexes
                  • binaires
                  • sécurisés, contrôle d'erreurs
                  • Fragmentés


   Applications Web
       – Vulnérabilités courantes (XSS, CSRF, SQLi, etc.)
        Hackfest 2009 : Fuzzing et tests d'intrusions   15
La génération de données pour le fuzzing
   Par génération
       – Aléatoire
       – Pré-génération
       – Génération de protocoles

   Par mutation
       – Mutation manuelle
       – Mutation automatisée




        Hackfest 2009 : Fuzzing et tests d'intrusions   16
La génération de données aléatoire



  “Poor-man fuzzer's”
while true; do cat /dev/urandom | nc ADRESSE_IP PORT; done




         Hackfest 2009 : Fuzzing et tests d'intrusions   17
Hackfest 2009 : Fuzzing et tests d'intrusions   18
La Mutation de données automatisée




      Hackfest 2009 : Fuzzing et tests d'intrusions   19
La Génération de protocole
 from sulley import *

 s_initialize("join")
 s_string("NomJoueur")
 s_static("^^Ar1111111n")
 s_static("^^Ac")
 s_string("NomJoueur")
 s_static("n")

 s_initialize("jet")
 s_static("^AV")
 s_word(1, format="ascii")
 s_static("n")

 sess = sessions.session(timeout=5, sleep_time=0.1)
 sess.connect(s_get("join"))
 sess.connect(s_get("join"), s_get("jet"))

 target = sessions.target("127.0.0.1", 7902)
 sess.add_target(target)
 sess.fuzz()
       Hackfest 2009 : Fuzzing et tests d'intrusions   20
Source du problème
   Lorsqu'un déplacement est demandé, le
    numéro de ville est utilisé comme index
    dans un tableau.
    case C_REQUESTJET:
     i = atoi(Data);
    ....
    else if (i != Play->IsAt && (NumTurns == 0 || Play->Turn
    <>EventNum == E_NONE && Play->Health > 0) {
    dopelog(4, LF_SERVER, "%s jets to %s", GetPlayerName(Play),
    Location[i].Name);


   Bug découvert par dougtko, corrigé dans la
    version 1.5.13

          Hackfest 2009 : Fuzzing et tests d'intrusions   21
Méthodologie des tests d'intrusions vs fuzzing
    Méthodologie des tests d'intrusions
    Définition                                     Découverte de    Vérification de
                          Reconnaissance
    de la cible                                    vulnérabilités   l'exploitabilité




    Méthodologie du fuzzing
1. Identification                                 4. Exécution
 de la cible et           3. Génération            des tests et     6. Vérification de
2. Identification         des données             5. Analyse         l'exploitabilité
 des entrées                                       des résultats




             Hackfest 2009 : Fuzzing et tests d'intrusions                      22
Contenu de la présentation
   Le concept de "test d'intrusion"
   Le fuzzing
       – définitions
       – méthodologies
   Les difficultés du fuzzing dans le cadre
    d'un test d'intrusion
   Le fuzzing et les applications Web
   Démo



        Hackfest 2009 : Fuzzing et tests d'intrusions   23
Les contraintes liées aux tests d'intrusion
   Manque de visibilité
        – signaux invisibles : logs, mémoire, fichiers, etc.
        – Impossibilité d'instrumentaliser le serveur
   Risques de faire planter le serveur
        – « peu recommandé » sur les serveurs de
               production
   Utilité restreinte
        – recréer environnement de façon locale
                   • long, pas toujours possible, faible ROI
        – trouver des dénis de service (DoS)

         Hackfest 2009 : Fuzzing et tests d'intrusions    24
Contenu de la présentation
   Le concept de "test d'intrusion"
   Le fuzzing
       – définitions
       – méthodologies
   Les difficultés du fuzzing dans le cadre
    d'un test d'intrusion
   Le fuzzing et les applications Web
   Démo



        Hackfest 2009 : Fuzzing et tests d'intrusions   25
Les applications web
   Les applications web représentent une cible
    intéressante étant donné :
       – La standardisation des protocoles
                  • HTTP, HTML, XML, SOAP

       – Applications  ”maison” : code peu
              testé, développement ad-hoc
       – Couches élevées, donc moins de
              risque de crash
       – Messages d'erreurs souvent bavards

        Hackfest 2009 : Fuzzing et tests d'intrusions   26
identification de la cible et des entrees
   Entrées d'une application Web
       – Paramètres
              HTTP GET/POST
       – Formulaires
              (cas particulier des
                paramètres POST)
       – Champs cachés
       – Paramètres HTTP :
              Cookie, Referer,
                Browser
        Hackfest 2009 : Fuzzing et tests d'intrusions   27
Génération des données
   Par dictionnaire
      – liste de chaines qui risquent de générer des
          erreurs si l'application est vulnérable

   Par mutation
     – Encodages : jeux de caractères, entités HTML,
          double encodages
     – Multiples valeurs pour un même paramètre
     – Valeurs autres que celles permises pour un
         champ (validation javascript, limite de champ)
     – Mix and match : utilisation simultané de valeurs
         qui ne devraient pas être ensemble
        Hackfest 2009 : Fuzzing et tests d'intrusions   28
Analyse des resultats et exploitation
   Signaux observables
        – HTTP Status codes
        – Messages dans la page
                  • Erreurs PHP, ASP, JSP : demande que les
                       erreurs soient affichées
                  • « soft » (404)
                  • Comparaison avec le message attendu

        – Taille de la réponse
        – Connexions interrompues

   Signaux invisibles : logs, traces du serveur,
      inspection des données (SQL)
        Hackfest 2009 : Fuzzing et tests d'intrusions     29
OWASP Top10 et le fuzzing

Classe de vulnérabilité                    Utilité du fuzzing
Cross-Site Scripting                       Beaucoup
Injection flaws                            Beaucoup
Malicious File execution                   Un peu
Direct Object Reference                    Beaucoup
Cross-Site Request Forgery                 Beaucoup *
Information Leakage / Error                Beaucoup
Handling
Broken Session Management                  Du tout
Insecure Cryptographic Storage             Du tout
Insecure communications                    Un peu
Failure to restrict URL access             Beaucoup

         Hackfest 2009 : Fuzzing et tests d'intrusions          30
Outils disponibles
   Scanneurs utilisant une base de données de
    vulnérabilités :
        – Nessus, Nikto
        – ne recherchent pas de nouvelles vulnérabilités
   Scanneurs utilisant le modèle « Test-case » :
        – Paros Proxy, w3af, wapiti, XSSploit
        – utilisation de patterns connus.
   Fuzzing manuel :
        – WebScarab, Burp, Paros, w3af
   Commerciaux
        – WebInspect, Acunetix, Rational Appscan
         Hackfest 2009 : Fuzzing et tests d'intrusions     31
Démo

                               Questions ?


Hackfest 2009 : Fuzzing et tests d'intrusions   32
Démo 1 : ReDoS
   Expressions régulières sont répandues pour la
    recherche et la validation de paramètres
    ^(z[eé]ro|un|deux|trois|quatre|cinq|six|sept|huit|neuf)$
   devient rapidement très complexe à lire
    ^(((25[0-5]|2[0-4][0-9]|19[0-1]|19[3-9]|18[0-9]|17[0-
    1]|17[3-9]|1[0-6][0-9]|1[1-9]|[2-9][0-9]|[0-9]).(25[0-
    5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|(192.
    (25[0-5]|2[0-4][0-9]|16[0-7]|169|1[0-5][0-9]|1[7-9][0-
    9]|[1-9][0-9]|[0-9]))|(172.(25[0-5]|2[0-4][0-9]|1[0-9]
    [0-9]|1[0-5]|3[2-9]|[4-9][0-9]|[0-9]))).(25[0-5]|2[0-
    4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).(25[0-5]|2[0-4]
    [0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$

         Hackfest 2009 : Fuzzing et tests d'intrusions   33
Démo 1 : ReDoS
   Les expressions régulières sont un langage
    de description formelle
         – Certaines expressions rendent l'évaluation
                complexe
         – erreurs : répétitions imbriquées, alternances
                avec chevauchements




    “People with little regex experience have surprising skill at
    coming up with exponentially complex regular expressions.”
                                                          www.regular-expressions.info


          Hackfest 2009 : Fuzzing et tests d'intrusions                        34
Démo 1 : ReDoS
   Attaque : viser les pire cas d'évaluation
    d'expressions régulières
       – Contexte des applications web :
          Alex Roichman(Checkmarx) OWASP Israel 2009

          http://www.owasp.org/images/f/f1/OWASP_IL_2009_ReDoS.ppt

   Vecteurs d'entrées
       – Construire une chaîne de caractères pour une
              expression régulière existante
       – Injecter une expression régulière dans une
            application qui les construit dynamiquement

        Hackfest 2009 : Fuzzing et tests d'intrusions        35
Démo 1 : ReDoS
                          Ça arrive même aux meilleurs ! (OWASP
                           validation Project)

                          Exemple 1 : nom d'une personne
                           Regex : ^[a-zA-Z]+(([',.-][a-zA-Z ])?[a-zA-Z]*)*$
                           ReDoS : “aaaaaaaaaaaaaaaaaaaaaaaaaaaa!”


                          Exemple 2 : nom d'une classe Java
                           Regex : ^(([a-z])+.)+[A-Z]([a-z])+$
                           ReDoS : “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!”


                                      Hackfest 2009 : Fuzzing et tests d'intrusions                                             36
1 – « Developers implementing input validation engines should review these regular expressions. Save the time of developing a
complicated regular expression that currently exists! ». [http://www.owasp.org/index.php/Category:OWASP_Validation_Project]
Démo 2 : Services Web

Selon Wikipédia : “un programme informatique
permettant la communication et l'échange de
données entre applications et systèmes
hétérogènes dans des environnements
distribués.”




                                                      source: wikipedia.org

      Hackfest 2009 : Fuzzing et tests d'intrusions                      37
Démo 2 : Services Web
Généralement 3 composants :
   Protocole de transport(SOAP, XML-RPC, REST)
       – définit la structure des requêtes
   Langage de description(WSDL, WADL)
       – définit les appels rendus disponibles par le
              service (noms des méthodes, types des
              variables)
   Langage de sérialisation des données(XML, JSON)
       – définit la représentation des données
              échangées

        Hackfest 2009 : Fuzzing et tests d'intrusions   38
Démo 2 : Services Web
   La description permet de connaître la forme des appels
    par analyse syntaxique : idéal pour automatisation

<wsdl:operation name="GetLastTradePrice">
                                                          nom de l'appel
  <wsdl:input message="tns:GetLastTradePriceInput"/>
  <wsdl:output message="tns:GetLastTradePriceOutput"/>
 </wsdl:operation>

<wsdl:message name="GetLastTradePriceOutput">
  <wsdl:part name="body" element="xsd1:TradePrice"/>
</wsdl:message>

<xsd:element name="TradePrice">
 xsd:<complexType>
     <xsd:all>
          <xsd:element name="price" type="float"/>
     </xsd:all>
 </xsd:complexType>                                             Types
</xsd:element>
                             nom des variables
source : www.w3.org
          Hackfest 2009 : Fuzzing et tests d'intrusions            39
Démo 2 : Services Web
    Tests possibles :
   Analyse syntaxique des requêtes
        – requêtes mal-formées, paramètres redondants,
               etc.
   Code de l'application :
        – tests ciblés en fonction des types
        – même failles que pour les applications web




         Hackfest 2009 : Fuzzing et tests d'intrusions   40
Démo 2 : Services Web




      Hackfest 2009 : Fuzzing et tests d'intrusions   41
Questions ?



  Hackfest 2009 : Fuzzing et tests d'intrusions   42

More Related Content

Viewers also liked

Consumismo navideño
Consumismo navideñoConsumismo navideño
Consumismo navideñozanneti
 
L'economie verte une industrie en développement
L'economie verte une industrie en développementL'economie verte une industrie en développement
L'economie verte une industrie en développementProspection
 
Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...
Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...
Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...Université de Montréal
 
Exposicion de quimica
Exposicion de quimicaExposicion de quimica
Exposicion de quimicadaniela
 
Tehuacán.docx -2
 Tehuacán.docx -2 Tehuacán.docx -2
Tehuacán.docx -2Tuxneoii
 
Swizzle's Quest
Swizzle's QuestSwizzle's Quest
Swizzle's QuestSwizzle
 
Catálogo Clasix1 Pres
Catálogo Clasix1 PresCatálogo Clasix1 Pres
Catálogo Clasix1 PresClasix USA
 
G:\huellas sobre la arena
G:\huellas sobre la arenaG:\huellas sobre la arena
G:\huellas sobre la arenaDanysitop
 
DÉCALCQ : archives scientifiques et environnement de recherche en SHS
DÉCALCQ : archives scientifiques et environnement de recherche en SHSDÉCALCQ : archives scientifiques et environnement de recherche en SHS
DÉCALCQ : archives scientifiques et environnement de recherche en SHSRené Audet
 
Figuras Geométricas ii
Figuras Geométricas iiFiguras Geométricas ii
Figuras Geométricas iiVaro Racing
 
Avaliação de Competências das Crianças à entrada do ensino básico em Cabo Verde
Avaliação de Competências das Crianças à entrada do ensino básico em Cabo VerdeAvaliação de Competências das Crianças à entrada do ensino básico em Cabo Verde
Avaliação de Competências das Crianças à entrada do ensino básico em Cabo VerdeMinistério Educação E Desporto
 
4ta Jornada Potenciando la Educación Inicial
4ta Jornada Potenciando la Educación Inicial4ta Jornada Potenciando la Educación Inicial
4ta Jornada Potenciando la Educación InicialUNIMET
 
Reseller Mercadotecniaelectronica.com.mx
Reseller Mercadotecniaelectronica.com.mxReseller Mercadotecniaelectronica.com.mx
Reseller Mercadotecniaelectronica.com.mxGrupo-e.com
 
The President’s Speech in Cairo: A New Beginning - French
The President’s Speech in Cairo: A New Beginning - FrenchThe President’s Speech in Cairo: A New Beginning - French
The President’s Speech in Cairo: A New Beginning - FrenchObama White House
 
Présentation à la Cité Collégiale_31 mars 2011
Présentation à la Cité Collégiale_31 mars 2011Présentation à la Cité Collégiale_31 mars 2011
Présentation à la Cité Collégiale_31 mars 2011gmcivor_clc
 

Viewers also liked (20)

Consumismo navideño
Consumismo navideñoConsumismo navideño
Consumismo navideño
 
L'economie verte une industrie en développement
L'economie verte une industrie en développementL'economie verte une industrie en développement
L'economie verte une industrie en développement
 
Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...
Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...
Tout ce qui bouge n'est pas du TDA/H: Autres conditions pouvant se manifester...
 
Exposicion de quimica
Exposicion de quimicaExposicion de quimica
Exposicion de quimica
 
Decreo 919
Decreo 919Decreo 919
Decreo 919
 
Comidas y bebidas
Comidas y bebidasComidas y bebidas
Comidas y bebidas
 
Tehuacán.docx -2
 Tehuacán.docx -2 Tehuacán.docx -2
Tehuacán.docx -2
 
Swizzle's Quest
Swizzle's QuestSwizzle's Quest
Swizzle's Quest
 
Catálogo Clasix1 Pres
Catálogo Clasix1 PresCatálogo Clasix1 Pres
Catálogo Clasix1 Pres
 
G:\huellas sobre la arena
G:\huellas sobre la arenaG:\huellas sobre la arena
G:\huellas sobre la arena
 
Ergonomia
ErgonomiaErgonomia
Ergonomia
 
DÉCALCQ : archives scientifiques et environnement de recherche en SHS
DÉCALCQ : archives scientifiques et environnement de recherche en SHSDÉCALCQ : archives scientifiques et environnement de recherche en SHS
DÉCALCQ : archives scientifiques et environnement de recherche en SHS
 
title
titletitle
title
 
Figuras Geométricas ii
Figuras Geométricas iiFiguras Geométricas ii
Figuras Geométricas ii
 
Avaliação de Competências das Crianças à entrada do ensino básico em Cabo Verde
Avaliação de Competências das Crianças à entrada do ensino básico em Cabo VerdeAvaliação de Competências das Crianças à entrada do ensino básico em Cabo Verde
Avaliação de Competências das Crianças à entrada do ensino básico em Cabo Verde
 
4ta Jornada Potenciando la Educación Inicial
4ta Jornada Potenciando la Educación Inicial4ta Jornada Potenciando la Educación Inicial
4ta Jornada Potenciando la Educación Inicial
 
Reseller Mercadotecniaelectronica.com.mx
Reseller Mercadotecniaelectronica.com.mxReseller Mercadotecniaelectronica.com.mx
Reseller Mercadotecniaelectronica.com.mx
 
The President’s Speech in Cairo: A New Beginning - French
The President’s Speech in Cairo: A New Beginning - FrenchThe President’s Speech in Cairo: A New Beginning - French
The President’s Speech in Cairo: A New Beginning - French
 
Unité 2 français
Unité 2 françaisUnité 2 français
Unité 2 français
 
Présentation à la Cité Collégiale_31 mars 2011
Présentation à la Cité Collégiale_31 mars 2011Présentation à la Cité Collégiale_31 mars 2011
Présentation à la Cité Collégiale_31 mars 2011
 

Similar to Du fuzzing dans les tests d'intrusions? (Éric Gingras)

Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Sylvain Maret
 
Protection des communications sans-fil - Bernard Lebel
Protection des communications sans-fil - Bernard LebelProtection des communications sans-fil - Bernard Lebel
Protection des communications sans-fil - Bernard LebelWeb à Québec
 
2011 02-08-ms tech-days-sdl-sgi-v02
2011 02-08-ms tech-days-sdl-sgi-v022011 02-08-ms tech-days-sdl-sgi-v02
2011 02-08-ms tech-days-sdl-sgi-v02Sébastien GIORIA
 
Deployer son propre SOC !
Deployer son propre SOC ! Deployer son propre SOC !
Deployer son propre SOC ! SecludIT
 
Colloque cyber 2010 les botnets
Colloque cyber 2010   les botnetsColloque cyber 2010   les botnets
Colloque cyber 2010 les botnetsmichelcusin
 
mise en pratique de l'outil Skipfish
mise en pratique de l'outil Skipfishmise en pratique de l'outil Skipfish
mise en pratique de l'outil SkipfishMounia EL
 
Comment analyser une machine linux compromise
Comment analyser une machine linux compromiseComment analyser une machine linux compromise
Comment analyser une machine linux compromiseTarek MOHAMED
 
20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatifLeClubQualiteLogicielle
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Asma Messaoudi
 
Article mc secus_10_10
Article mc secus_10_10Article mc secus_10_10
Article mc secus_10_10michelcusin
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
Api win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifsApi win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifsUltraUploader
 
Reverse Engineering d'un ransomware
Reverse Engineering d'un ransomwareReverse Engineering d'un ransomware
Reverse Engineering d'un ransomwareNinaSAMMUT
 
Sec day cuckoo_workshop
Sec day cuckoo_workshopSec day cuckoo_workshop
Sec day cuckoo_workshopThomas Roccia
 
Test d’intrusion dans le cadre du cycle de développement (Vumetric)
Test d’intrusion dans le cadre du cycle de développement (Vumetric)Test d’intrusion dans le cadre du cycle de développement (Vumetric)
Test d’intrusion dans le cadre du cycle de développement (Vumetric)Vumetric
 
Alphorm.com Formation Pentesting avec Metasploit
Alphorm.com Formation Pentesting avec MetasploitAlphorm.com Formation Pentesting avec Metasploit
Alphorm.com Formation Pentesting avec MetasploitAlphorm
 
Annexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les HoneyclientsAnnexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les HoneyclientsMohamed Ben Bouzid
 
Barcamp presentation Cybersecurite by saphia
Barcamp presentation Cybersecurite by saphiaBarcamp presentation Cybersecurite by saphia
Barcamp presentation Cybersecurite by saphiaBarcampCameroon
 

Similar to Du fuzzing dans les tests d'intrusions? (Éric Gingras) (20)

Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2
 
Protection des communications sans-fil - Bernard Lebel
Protection des communications sans-fil - Bernard LebelProtection des communications sans-fil - Bernard Lebel
Protection des communications sans-fil - Bernard Lebel
 
2011 02-08-ms tech-days-sdl-sgi-v02
2011 02-08-ms tech-days-sdl-sgi-v022011 02-08-ms tech-days-sdl-sgi-v02
2011 02-08-ms tech-days-sdl-sgi-v02
 
Deployer son propre SOC !
Deployer son propre SOC ! Deployer son propre SOC !
Deployer son propre SOC !
 
Colloque cyber 2010 les botnets
Colloque cyber 2010   les botnetsColloque cyber 2010   les botnets
Colloque cyber 2010 les botnets
 
mise en pratique de l'outil Skipfish
mise en pratique de l'outil Skipfishmise en pratique de l'outil Skipfish
mise en pratique de l'outil Skipfish
 
Comment analyser une machine linux compromise
Comment analyser une machine linux compromiseComment analyser une machine linux compromise
Comment analyser une machine linux compromise
 
20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif
 
Forensics: Banking Troubles
Forensics: Banking TroublesForensics: Banking Troubles
Forensics: Banking Troubles
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
Article mc secus_10_10
Article mc secus_10_10Article mc secus_10_10
Article mc secus_10_10
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Api win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifsApi win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifs
 
Reverse Engineering d'un ransomware
Reverse Engineering d'un ransomwareReverse Engineering d'un ransomware
Reverse Engineering d'un ransomware
 
Sec day cuckoo_workshop
Sec day cuckoo_workshopSec day cuckoo_workshop
Sec day cuckoo_workshop
 
Test d’intrusion dans le cadre du cycle de développement (Vumetric)
Test d’intrusion dans le cadre du cycle de développement (Vumetric)Test d’intrusion dans le cadre du cycle de développement (Vumetric)
Test d’intrusion dans le cadre du cycle de développement (Vumetric)
 
Alphorm.com Formation Pentesting avec Metasploit
Alphorm.com Formation Pentesting avec MetasploitAlphorm.com Formation Pentesting avec Metasploit
Alphorm.com Formation Pentesting avec Metasploit
 
Annexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les HoneyclientsAnnexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les Honeyclients
 
Snort
SnortSnort
Snort
 
Barcamp presentation Cybersecurite by saphia
Barcamp presentation Cybersecurite by saphiaBarcamp presentation Cybersecurite by saphia
Barcamp presentation Cybersecurite by saphia
 

More from Hackfest Communication

Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...
Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...
Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...Hackfest Communication
 
Conservation et la circulation des renseignements personnels des services de ...
Conservation et la circulation des renseignements personnels des services de ...Conservation et la circulation des renseignements personnels des services de ...
Conservation et la circulation des renseignements personnels des services de ...Hackfest Communication
 
Stack Smashing Protector (Paul Rascagneres)
Stack Smashing Protector (Paul Rascagneres)Stack Smashing Protector (Paul Rascagneres)
Stack Smashing Protector (Paul Rascagneres)Hackfest Communication
 
Mots de passe et mécanismes d’authentification (Thomas Pornin)
Mots de passe et mécanismes d’authentification (Thomas Pornin)Mots de passe et mécanismes d’authentification (Thomas Pornin)
Mots de passe et mécanismes d’authentification (Thomas Pornin)Hackfest Communication
 
Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...
Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...
Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...Hackfest Communication
 
Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...
Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...
Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...Hackfest Communication
 
PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)
PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)
PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)Hackfest Communication
 
La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)
La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)
La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)Hackfest Communication
 
Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)
Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)
Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)Hackfest Communication
 
Le GPU à la rescousse du CPU (Charles Demers-Tremblay)
Le GPU à la rescousse du CPU (Charles Demers-Tremblay)Le GPU à la rescousse du CPU (Charles Demers-Tremblay)
Le GPU à la rescousse du CPU (Charles Demers-Tremblay)Hackfest Communication
 
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)Hackfest Communication
 

More from Hackfest Communication (14)

Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
Hackfest @ WAQ2011
Hackfest @ WAQ2011Hackfest @ WAQ2011
Hackfest @ WAQ2011
 
Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...
Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...
Quelles lois sont applicables au hacker? Énormément moins que tu penses. (Bot...
 
Broken by design (Danny Fullerton)
Broken by design (Danny Fullerton)Broken by design (Danny Fullerton)
Broken by design (Danny Fullerton)
 
Conservation et la circulation des renseignements personnels des services de ...
Conservation et la circulation des renseignements personnels des services de ...Conservation et la circulation des renseignements personnels des services de ...
Conservation et la circulation des renseignements personnels des services de ...
 
Stack Smashing Protector (Paul Rascagneres)
Stack Smashing Protector (Paul Rascagneres)Stack Smashing Protector (Paul Rascagneres)
Stack Smashing Protector (Paul Rascagneres)
 
Mots de passe et mécanismes d’authentification (Thomas Pornin)
Mots de passe et mécanismes d’authentification (Thomas Pornin)Mots de passe et mécanismes d’authentification (Thomas Pornin)
Mots de passe et mécanismes d’authentification (Thomas Pornin)
 
Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...
Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...
Comment détecter des virus inconnus en utilisant des « honey pots » et d’autr...
 
Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...
Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...
Comment détecter des virus inconnus en utilisant des « Honeypots » et d’autre...
 
PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)
PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)
PostNet, une nouvelle ère de Botnet résilient (Julien Desfossez & David Goulet)
 
La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)
La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)
La détection d'intrusions est-elle morte en 2003 ? (Éric Gingras)
 
Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)
Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)
Responsabilisation des données confidentielles en entreprise (Étienne Dubreuil)
 
Le GPU à la rescousse du CPU (Charles Demers-Tremblay)
Le GPU à la rescousse du CPU (Charles Demers-Tremblay)Le GPU à la rescousse du CPU (Charles Demers-Tremblay)
Le GPU à la rescousse du CPU (Charles Demers-Tremblay)
 
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
 

Du fuzzing dans les tests d'intrusions? (Éric Gingras)

  • 1. Eric Gingras, directeur de la R&D Sébastien Duquette, analyste en sécurité Le fuzzing et les tests d'intrusions
  • 2. Objectifs de la présentation  Être complète en soit – à l'exception des vulnérabilités  Faire l'état de l'art : – du fuzzing dans les tests d'intrusions – de l'utilisation du fuzzing dans les outils pour les tests d'intrusions d'applications Web  Présenter des exemples concrets Hackfest 2009 : Fuzzing et tests d'intrusions 2
  • 3. Contenu de la présentation  Le concept de "test d'intrusion"  Le fuzzing – définitions – méthodologies  Les difficultés du fuzzing dans le cadre d'un test d'intrusion  Le fuzzing et les applications Web  Démo Hackfest 2009 : Fuzzing et tests d'intrusions 3
  • 4. Contenu de la présentation  Le concept de "test d'intrusion"  Le fuzzing – définitions – méthodologies  Les difficultés du fuzzing dans le cadre d'un test d'intrusion  Le fuzzing et les applications Web  Démo Hackfest 2009 : Fuzzing et tests d'intrusions 4
  • 5. La définition de "test d'intrusion" « une série d'activités effectuées pour détecter et exploiter les failles de sécurité afin de déterminer dans quelle mesure il est facile ou difficile pour un tiers de déjouer les contrôles de sécurité d'une organisation ou d'accéder sans autorisation à son information et à ses systèmes »1 Pour évaluer la sécurité (confidentialité, intégrité et disponibilité) d'une organisation – robustesse des systèmes – protections – politiques et procédures Hackfest 2009 : Fuzzing et tests d'intrusions 5 1 – Source : le Grand Dictionnaire Terminologique de l'OLF (http://www.granddictionnaire.com)
  • 6. On a besoin de tests d'intrusions  Parce que les logiciels deviennent de plus en plus complexes : – de plus en plus de lignes de code – ouverture des systèmes (Internet) – nombre de couches – logiciels plus puissants – expertise en sécurité 1 informationnelle Hackfest 2009 : Fuzzing et tests d'intrusions 6 1 – SANS (http://www.sans.org/top-cyber-security-risks/) : “60% des problèmes de sécurité sur Internet sont liés aux applications Web”
  • 7. La méthodologie des tests d'intrusions  Déroulement d'un test d'intrusion : Définition Découverte de Vérification de Reconnaissance de la cible vulnérabilités l'exploitabilité  Portée d'un test : – Test boîte noire (entrées et sorties) – Test boîte blanche (code source) – Test boîte grise (exécutable) Hackfest 2009 : Fuzzing et tests d'intrusions 7
  • 8. Contenu de la présentation  Le concept de "test d'intrusion"  Le fuzzing – définitions – méthodologies  Les difficultés du fuzzing dans le cadre d'un test d'intrusion  Le fuzzing et les applications Web  Démo Hackfest 2009 : Fuzzing et tests d'intrusions 8
  • 9. Définition du "fuzzing"  Une technique de test qui consiste à injecter des données : – invalides – inattendues – aléatoires  Dans le but de générer : – une opération erronée – une exception – un résultat inattendu – un crash, etc. Hackfest 2009 : Fuzzing et tests d'intrusions 9
  • 10. Le fuzzing est un paradigme de test  Buts des méthodes de tests : – Tests exhaustifs : trouver toutes les failles – Méthodes formelles : garantir l'absence de failles (assurance de qualité) – Fuzzing : trouver des vulnérabilités Hackfest 2009 : Fuzzing et tests d'intrusions 10
  • 11. Le fuzzing Fonctionne  2006 : Month of Browser Bugs – majorité des bugs découverts par fuzzing – publication de fuzzers : AxMan, Hamachi, MangleMe, etc.  Le fuzzing fait partie du SDL (Security Development Lifecycle) de Microsoft  Septembre 2009, découverte d'une vulnérabilité majeure dans SMBv2 (Windows Vista & 2008) par L. Gaffié – trouvée en 3 secondes, 15 paquets ... Hackfest 2009 : Fuzzing et tests d'intrusions 11 1 - Source : http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3103
  • 12. ... et 20 lignes de code from socket import * while True: from time import sleep #/Core# from random import choice what = packet[:] where = choice(range(len(packet))) host = "IP_ADDR", 445 which = chr(choice(range(256))) #Negotiate Protocol Request what[where] = which packet = [chr(int(a, 16)) for a in """ #/Core# 00 00 00 90 ff 53 4d 42 72 00 00 00 00 18 53 c8 00 00 00 00 00 00 00 #sending stuff @host 00 00 00 00 00 ff ff ff fe 00 00 00 00 sock = socket() 00 6d 00 02 50 43 20 4e 45 54 57 4f sock.connect(host) 52 4b 20 50 52 4f 47 52 41 4d 20 31 2e 30 00 02 4c 41 4e 4d 41 4e 31 2e 30 sock.send(' '.join(what)) 00 02 57 69 6e 64 6f 77 73 20 66 6f 72 sleep(0.1) # dont flood it 20 57 6f 72 6b 67 72 6f 75 70 73 20 33 print 'fuzzing param %s' % 2e 31 61 00 02 4c 4d 31 2e 32 58 30 30 (which.encode("hex")) 32 00 02 4c 41 4e 4d 41 4e 32 2e 31 print 'complete packet %s' % 00 02 4e 54 20 4c 4d 20 30 2e 31 32 (''.join(what).encode("hex")) 00 02 53 4d 42 20 32 2e 30 30 32 00 """.split()] sock.close() Hackfest 2009 : Fuzzing et tests d'intrusions 12
  • 13. La Méthodologie du fuzzing 1. Identification de la cible 2. Identification des vecteurs d'entrée 3. Génération des données pour le fuzzing 4. Exécution des tests 5. Analyse des exceptions générées 6. Analyse de l'exploitabilité des vulnérabilités découvertes Hackfest 2009 : Fuzzing et tests d'intrusions 13
  • 14. Cibles du fuzzing  Interpréteurs de commandes – arguments d'une commande  Variables d'environnement  Fichiers  Librairies  Navigateurs web – Javascript, ActiveX, Java – Plugins : Flash, Adobe Reader, etc. Hackfest 2009 : Fuzzing et tests d'intrusions 14
  • 15. Cibles du fuzzing (suite)  Protocoles réseau – Protocoles simples • ASCII • peu d'authentification • échanges linéaires – Protocoles complexes • binaires • sécurisés, contrôle d'erreurs • Fragmentés  Applications Web – Vulnérabilités courantes (XSS, CSRF, SQLi, etc.) Hackfest 2009 : Fuzzing et tests d'intrusions 15
  • 16. La génération de données pour le fuzzing  Par génération – Aléatoire – Pré-génération – Génération de protocoles  Par mutation – Mutation manuelle – Mutation automatisée Hackfest 2009 : Fuzzing et tests d'intrusions 16
  • 17. La génération de données aléatoire “Poor-man fuzzer's” while true; do cat /dev/urandom | nc ADRESSE_IP PORT; done Hackfest 2009 : Fuzzing et tests d'intrusions 17
  • 18. Hackfest 2009 : Fuzzing et tests d'intrusions 18
  • 19. La Mutation de données automatisée Hackfest 2009 : Fuzzing et tests d'intrusions 19
  • 20. La Génération de protocole from sulley import * s_initialize("join") s_string("NomJoueur") s_static("^^Ar1111111n") s_static("^^Ac") s_string("NomJoueur") s_static("n") s_initialize("jet") s_static("^AV") s_word(1, format="ascii") s_static("n") sess = sessions.session(timeout=5, sleep_time=0.1) sess.connect(s_get("join")) sess.connect(s_get("join"), s_get("jet")) target = sessions.target("127.0.0.1", 7902) sess.add_target(target) sess.fuzz() Hackfest 2009 : Fuzzing et tests d'intrusions 20
  • 21. Source du problème  Lorsqu'un déplacement est demandé, le numéro de ville est utilisé comme index dans un tableau. case C_REQUESTJET: i = atoi(Data); .... else if (i != Play->IsAt && (NumTurns == 0 || Play->Turn <>EventNum == E_NONE && Play->Health > 0) { dopelog(4, LF_SERVER, "%s jets to %s", GetPlayerName(Play), Location[i].Name);  Bug découvert par dougtko, corrigé dans la version 1.5.13 Hackfest 2009 : Fuzzing et tests d'intrusions 21
  • 22. Méthodologie des tests d'intrusions vs fuzzing  Méthodologie des tests d'intrusions Définition Découverte de Vérification de Reconnaissance de la cible vulnérabilités l'exploitabilité  Méthodologie du fuzzing 1. Identification 4. Exécution de la cible et 3. Génération des tests et 6. Vérification de 2. Identification des données 5. Analyse l'exploitabilité des entrées des résultats Hackfest 2009 : Fuzzing et tests d'intrusions 22
  • 23. Contenu de la présentation  Le concept de "test d'intrusion"  Le fuzzing – définitions – méthodologies  Les difficultés du fuzzing dans le cadre d'un test d'intrusion  Le fuzzing et les applications Web  Démo Hackfest 2009 : Fuzzing et tests d'intrusions 23
  • 24. Les contraintes liées aux tests d'intrusion  Manque de visibilité – signaux invisibles : logs, mémoire, fichiers, etc. – Impossibilité d'instrumentaliser le serveur  Risques de faire planter le serveur – « peu recommandé » sur les serveurs de production  Utilité restreinte – recréer environnement de façon locale • long, pas toujours possible, faible ROI – trouver des dénis de service (DoS) Hackfest 2009 : Fuzzing et tests d'intrusions 24
  • 25. Contenu de la présentation  Le concept de "test d'intrusion"  Le fuzzing – définitions – méthodologies  Les difficultés du fuzzing dans le cadre d'un test d'intrusion  Le fuzzing et les applications Web  Démo Hackfest 2009 : Fuzzing et tests d'intrusions 25
  • 26. Les applications web  Les applications web représentent une cible intéressante étant donné : – La standardisation des protocoles • HTTP, HTML, XML, SOAP – Applications  ”maison” : code peu testé, développement ad-hoc – Couches élevées, donc moins de risque de crash – Messages d'erreurs souvent bavards Hackfest 2009 : Fuzzing et tests d'intrusions 26
  • 27. identification de la cible et des entrees  Entrées d'une application Web – Paramètres HTTP GET/POST – Formulaires (cas particulier des paramètres POST) – Champs cachés – Paramètres HTTP : Cookie, Referer, Browser Hackfest 2009 : Fuzzing et tests d'intrusions 27
  • 28. Génération des données  Par dictionnaire – liste de chaines qui risquent de générer des erreurs si l'application est vulnérable  Par mutation – Encodages : jeux de caractères, entités HTML, double encodages – Multiples valeurs pour un même paramètre – Valeurs autres que celles permises pour un champ (validation javascript, limite de champ) – Mix and match : utilisation simultané de valeurs qui ne devraient pas être ensemble Hackfest 2009 : Fuzzing et tests d'intrusions 28
  • 29. Analyse des resultats et exploitation  Signaux observables – HTTP Status codes – Messages dans la page • Erreurs PHP, ASP, JSP : demande que les erreurs soient affichées • « soft » (404) • Comparaison avec le message attendu – Taille de la réponse – Connexions interrompues  Signaux invisibles : logs, traces du serveur, inspection des données (SQL) Hackfest 2009 : Fuzzing et tests d'intrusions 29
  • 30. OWASP Top10 et le fuzzing Classe de vulnérabilité Utilité du fuzzing Cross-Site Scripting Beaucoup Injection flaws Beaucoup Malicious File execution Un peu Direct Object Reference Beaucoup Cross-Site Request Forgery Beaucoup * Information Leakage / Error Beaucoup Handling Broken Session Management Du tout Insecure Cryptographic Storage Du tout Insecure communications Un peu Failure to restrict URL access Beaucoup Hackfest 2009 : Fuzzing et tests d'intrusions 30
  • 31. Outils disponibles  Scanneurs utilisant une base de données de vulnérabilités : – Nessus, Nikto – ne recherchent pas de nouvelles vulnérabilités  Scanneurs utilisant le modèle « Test-case » : – Paros Proxy, w3af, wapiti, XSSploit – utilisation de patterns connus.  Fuzzing manuel : – WebScarab, Burp, Paros, w3af  Commerciaux – WebInspect, Acunetix, Rational Appscan Hackfest 2009 : Fuzzing et tests d'intrusions 31
  • 32. Démo Questions ? Hackfest 2009 : Fuzzing et tests d'intrusions 32
  • 33. Démo 1 : ReDoS  Expressions régulières sont répandues pour la recherche et la validation de paramètres ^(z[eé]ro|un|deux|trois|quatre|cinq|six|sept|huit|neuf)$  devient rapidement très complexe à lire ^(((25[0-5]|2[0-4][0-9]|19[0-1]|19[3-9]|18[0-9]|17[0- 1]|17[3-9]|1[0-6][0-9]|1[1-9]|[2-9][0-9]|[0-9]).(25[0- 5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|(192. (25[0-5]|2[0-4][0-9]|16[0-7]|169|1[0-5][0-9]|1[7-9][0- 9]|[1-9][0-9]|[0-9]))|(172.(25[0-5]|2[0-4][0-9]|1[0-9] [0-9]|1[0-5]|3[2-9]|[4-9][0-9]|[0-9]))).(25[0-5]|2[0- 4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).(25[0-5]|2[0-4] [0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$ Hackfest 2009 : Fuzzing et tests d'intrusions 33
  • 34. Démo 1 : ReDoS  Les expressions régulières sont un langage de description formelle – Certaines expressions rendent l'évaluation complexe – erreurs : répétitions imbriquées, alternances avec chevauchements “People with little regex experience have surprising skill at coming up with exponentially complex regular expressions.” www.regular-expressions.info Hackfest 2009 : Fuzzing et tests d'intrusions 34
  • 35. Démo 1 : ReDoS  Attaque : viser les pire cas d'évaluation d'expressions régulières – Contexte des applications web : Alex Roichman(Checkmarx) OWASP Israel 2009 http://www.owasp.org/images/f/f1/OWASP_IL_2009_ReDoS.ppt  Vecteurs d'entrées – Construire une chaîne de caractères pour une expression régulière existante – Injecter une expression régulière dans une application qui les construit dynamiquement Hackfest 2009 : Fuzzing et tests d'intrusions 35
  • 36. Démo 1 : ReDoS  Ça arrive même aux meilleurs ! (OWASP validation Project)  Exemple 1 : nom d'une personne Regex : ^[a-zA-Z]+(([',.-][a-zA-Z ])?[a-zA-Z]*)*$ ReDoS : “aaaaaaaaaaaaaaaaaaaaaaaaaaaa!”  Exemple 2 : nom d'une classe Java Regex : ^(([a-z])+.)+[A-Z]([a-z])+$ ReDoS : “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!” Hackfest 2009 : Fuzzing et tests d'intrusions 36 1 – « Developers implementing input validation engines should review these regular expressions. Save the time of developing a complicated regular expression that currently exists! ». [http://www.owasp.org/index.php/Category:OWASP_Validation_Project]
  • 37. Démo 2 : Services Web Selon Wikipédia : “un programme informatique permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués.” source: wikipedia.org Hackfest 2009 : Fuzzing et tests d'intrusions 37
  • 38. Démo 2 : Services Web Généralement 3 composants :  Protocole de transport(SOAP, XML-RPC, REST) – définit la structure des requêtes  Langage de description(WSDL, WADL) – définit les appels rendus disponibles par le service (noms des méthodes, types des variables)  Langage de sérialisation des données(XML, JSON) – définit la représentation des données échangées Hackfest 2009 : Fuzzing et tests d'intrusions 38
  • 39. Démo 2 : Services Web  La description permet de connaître la forme des appels par analyse syntaxique : idéal pour automatisation <wsdl:operation name="GetLastTradePrice"> nom de l'appel <wsdl:input message="tns:GetLastTradePriceInput"/> <wsdl:output message="tns:GetLastTradePriceOutput"/> </wsdl:operation> <wsdl:message name="GetLastTradePriceOutput"> <wsdl:part name="body" element="xsd1:TradePrice"/> </wsdl:message> <xsd:element name="TradePrice"> xsd:<complexType> <xsd:all> <xsd:element name="price" type="float"/> </xsd:all> </xsd:complexType> Types </xsd:element> nom des variables source : www.w3.org Hackfest 2009 : Fuzzing et tests d'intrusions 39
  • 40. Démo 2 : Services Web Tests possibles :  Analyse syntaxique des requêtes – requêtes mal-formées, paramètres redondants, etc.  Code de l'application : – tests ciblés en fonction des types – même failles que pour les applications web Hackfest 2009 : Fuzzing et tests d'intrusions 40
  • 41. Démo 2 : Services Web Hackfest 2009 : Fuzzing et tests d'intrusions 41
  • 42. Questions ? Hackfest 2009 : Fuzzing et tests d'intrusions 42