rapport de stage de fin d`etudes
Transcription
rapport de stage de fin d`etudes
Institut de la Francophonie pour l’Informatique Ecole Nationale Supérieure des Télécommunications RAPPORT DE STAGE DE FIN D’ETUDES Sujet - Etude et analyse des attaques et des signatures d'attaques - Etude bibliographique des parades au DoS et DDoS - Etude des HoneyPots - Intégration des HoneyPots dans une architecture globale de protection Etudiant : Responsables : DOAN DUY Thieu Hoa, IFI Ahmed SERHROUCHNI Paris, jenvier - juillet 2004 Sujet Etude et analyse des attaques et des signatures d'attaques Etude bibliographique des parades au DoS et DDoS Etude des HoneyPot Intégration des HoneyPot dans une architecture globale de protection 2 Table de matière Introduction.................................................................................................... 5 Remerciements............................................................................................... 6 Partie 1 : Etude des attaques ........................................................................... 7 Déterminer des vulnérabilités.....................................................................................7 Le craquage par mot de passe ..................................................................................7 Le sniffing des mots de passe et des paquets .........................................................7 L'IP spoofing ................................................................................................................9 Les scanners..............................................................................................................10 Les chevaux de Troie................................................................................................10 Les vers ......................................................................................................................11 Les trappes ................................................................................................................11 Les bombes logiques ................................................................................................11 Le TCP-SYN flooding................................................................................................12 Le Flood .....................................................................................................................13 Le Spamming.............................................................................................................13 Les virus .....................................................................................................................13 L'ingénierie social ......................................................................................................14 Partie 2 : Etude bibliographique des parades au DoS et DDoS ..................... 15 DoS .............................................................................................................................15 Les attaques directes.................................................................................................15 Les attaques indirectes par rebond ............................................................................16 Les attaques indirectes par réponse...........................................................................16 Quelques parades de type DoS...............................................................................17 Ping de la mort .........................................................................................................17 TearDrop..................................................................................................................18 DDoS ..........................................................................................................................21 Mode opératoire .......................................................................................................22 Les outils .................................................................................................................22 1. TFN (Tribal Flood Network) ................................................................................23 2. TFN2K.................................................................................................................24 3. Trin00 ..................................................................................................................24 4. Stacheldraht .........................................................................................................26 Mesures de protection ..............................................................................................26 Partie 3 : Etude des HoneyPot ...................................................................... 29 Définition ....................................................................................................................29 Avantages ..................................................................................................................29 Inconvénients.............................................................................................................30 Les types d'honeypot ................................................................................................30 Honeyd: Low-interaction honeypot. .........................................................................31 Honeynet: High-interaction honeypot. ......................................................................32 3 Valeurs de Honeypot.................................................................................................33 Partie 4 : Intégration des HoneyPot dans une architecture globale de protection ..................................................................................................... 35 Installer Honeyd.........................................................................................................35 Configuration Honeyd ...............................................................................................37 Configurer un réseau virtuel simple..........................................................................37 Configurer un réseau virtuel avec un routeur ............................................................38 Configurer un réseau virtuel relié aux machines réelles ............................................39 Configurer un réseau virtuel complexe .....................................................................40 Outils aide à créer fichier de configuration honeyd ...................................................41 Lancer Honeyd et analyser les données capturées...............................................42 Lancer......................................................................................................................43 Analyser les données capturées..............................................................................43 Annexes ....................................................................................................... 51 Références.................................................................................................... 55 4 Introduction Ce document est un rapport du stage que j’ai effectué du 1er janvier 2004 au 30 juin 2004 dans le cadre de la scolarité 2003/2004 au Département Informatique et Réseau, ce stage est placé sous la direction de Monsieur le Professeur Ahmed Serhrouschni L’objectif du projet était de : - Etude et analyse des attaques et des signatures d’attaques Etude bibliographique des parades au DoS et DDoS Etude des HoneyPot Intégration des HoneyPot dans une architecture globale de protection Ce stage s’inscrit dans le cadre de mon stage de fin d’étude pour valider mon diplôme de DEA à l’Institut de la Francophonie pour l’Informatique au Vietnam. Ce document présentera 4 parties principales correspondantes à l’objectif du projet. 5 Remerciements Je tien tout d’abord à remercier Monsieur le Professeur Ahmed Serhrouchni pour m’avoir accueilli dans son projet et avoir encadré mon stage. Je remercie tout particulièrement Adil Andalousie pour tous ses conseils sur la signature électronique ainsi que le certificat électronique et le temps qu’il m’a consacré. Merci également à toutes les personnes dans mon bureau qui m’a donné un environnement de travail très agréable. 6 Partie 1 : Etude des attaques Déterminer des vulnérabilités Cette opération consiste à déterminer le système d'exploitation, les services ouverts ainsi que leur version afin de pouvoir déterminer les éventuelles failles et les exploiter. Un des outils les populaire et les plus puissant est « nmap »'. Il permet entre autres le half-scan (sans établir de connexion) nmap -sS IP_du_serveur ou encore, le fingerprinting (détection d'OS) nmap -sS -O IP_du_serveur Il y a des autres outils qui nous aident à déterminer les vulnérabilités dans un système. Par exemple, sous Windows, l’outils SuperScan est connu et souvent utilisé par l’attaquant. Dans la dernière partie, je l’utilise pour collectionner les informations sur les machines virtuelles. Après avoir obtenu les informations nécessaires sur les OS ou services ouvertes, l’attaquant va chercher les vulnérabilités et les méthodes d’attaque correspondantes Le craquage par mot de passe La manière la plus classique par laquelle un hacker va essayer d'obtenir un mot de passe est l'attaque avec un dictionnaire. Dans ce genre d'attaque, le hacker utilise un dictionnaire de mots et de noms propres, et il les essaie un à un pour vérifier si le mot de passe est valide. Ces attaques se font avec des programmes qui peuvent deviner des milliers de mots de passe à la seconde, même quand ceux-ci sont ``hachés''. Ce procédé est d'autant plus facile qu'il lui permet de tester des variations sur les mots : mots écrits à l'envers, majuscules et minuscules, ajout de chiffres à la fin du mot. Le sniffing des mots de passe et des paquets Si un hacker ne peut pas deviner un mot de passe, il a d'autres outils pour l'obtenir. Une façon qui est devenue assez populaire est le sniffing. La plupart des réseaux utilisent la technologie de broadcast (comme Ethernet). En pratique, tous les ordinateurs sauf le destinataire du message vont s'apercevoir que le message 7 ne leur est pas destiné et vont donc l'ignorer. Mais par contre, beaucoup d'ordinateurs peuvent être programmés pour regarder chaque message qui traverse le réseau (mode promiscuité). Il existe des programmes qui utilisent ce procédé et qui capturent tous les messages qui circulent sur le réseau en repérant les mots de passe. Si quelqu'un se connecte à un ordinateur à travers un réseau en utilisant les protocoles insécurités (telnet, rlogin, ftp...), alors cette personne risque de perdre son mot de passe. C'est pourquoi il existe une menace sérieuse pour les personnes qui se connectent sur des ordinateurs distants, où les mots de passe apparaissent en clair dans la trame. Les programmes de sniffing les plus connus sont Esniff et TCPDump. Mais un sniffer peut tout aussi bien être bénéfique à l'administrateur réseau, puisqu'il permettrait de déceler avant les Hackers les failles de sécurité de son réseau. Ethereal v0.8.12 sous Linux permet de journaliser les événements définis par l'administrateur. Il est en outre compatible avec les journaux de LOG des routeurs Cisco (Cisco Secure IDS iplog files). Ethereal est téléchargeable à l'adresse suivante : http://www.ethereal.com/ Voici ci-dessous une liste d'autres sniffers disponibles dans le commerce Nom ATM Sniffer Network Analyzer Adresse Description http://www.networkassociates.com Décode plus de 250 protocoles Shomiti Systems Century LAN Analyzer http://www.shomiti.com Supporte le standard Ethernet et fonctionne sous Windows 95/98 et NT PacketView de Klos ftp.klos.com/demo/pvdemo.zip Ce sniffer est basé sur DOS, idéal pour Technologies les environnements Ethernet Network Probe 8000 http://www.netcommcorp.com Fait une analyse d'environ 13 protocoles dont TCP/IP, Microsoft, NFS, Novell LANWatch http://www.guesswork.com Marche sous DOS, Windows 9x et NT EtherPeek http://www.aggroup.com Pour Windows et plates-formes Macintosh Ethload http://www.computercraft.com/nopro Sniffer qui permet de surveiller les gs/ethld104.zip sessions rlogin et telnet Linux sniffer Sniffer de mots de passe uniquement, en langage C La meilleure défense contre l'attaque de sniffers est l'utilisation d'un protocole de chiffrement comme SSL (Secure Socket Layer). 8 L'IP spoofing L'adresse IP d'un ordinateur est l'adresse qui est utilisée pour reconnaître un ordinateur sur internet. Un des principaux problèmes est qu'en utilisant le routage source d'IP, l'ordinateur du hacker peut se faire passer pour un ordinateur connu. Le routage source d'IP est une option qui peut être utilisée pour spécifier une route directe à une destination et renvoyer le chemin de retour à l'expéditeur. La route peut inclure l'utilisation d'autres routeurs ou de serveurs qui n'auraient normalement pas été utilisés pour faire suivre les paquets à la destination finale. Voici un exemple qui montre comment ceci peut être utilisé de façon à ce que l'ordinateur de l'intrus apparaisse comme étant l'ordinateur certifié par le serveur : • L'agresseur change l'adresse IP de son ordinateur pour faire croire qu'il est un client certifié par le serveur, • Il va ensuite construire une route source jusqu'au serveur qui spécifiera le chemin de retour direct que les paquets IP devront prendre pour aller au serveur et qu'ils devront prendre pour retourner à l'ordinateur de l'agresseur en utilisant le client certifié comme dernière étape dans la route vers le serveur, • L’agresseur envoie une requête client au serveur en utilisant la route source, • Le serveur accepte la requête du client comme si elle provenait directement du client certifié et retourne une réponse au client, • Le client, utilisant la route source, faire suivre le paquet à l'ordinateur de l'agresseur. Beaucoup de machines Unix acceptent les paquets de route source et les redirigent comme la route source l'indique. Beaucoup de routeurs acceptent également les paquets de route source bien que certains d'entre eux puissent être configurés pour bloquer ces paquets. Le routeur, pour des raisons de sécurité, ne devra pas accepter le routage source. Une autre manière encore plus simple pour spoofer un client est d'attendre que le système client ait éteint sa machine et de se faire passer ensuite pour ce dernier. Les entreprises utilisent souvent des PC et le protocole TCP/IP et NFS pour se connecter à des serveurs Unix et obtenir un accès aux répertoires et aux fichiers du serveur. Comme NFS utilise uniquement les adresses IP pour authentifier les clients, un intrus pourrait configurer un PC avec le même nom et la même adresse IP qu'un autre ordinateur, et alors essayer de lancer des connexions au serveur Unix comme s'il était le vrai client. Ceci est très simple à réaliser et ressemblerait à une attaque de l'intérieur. Le routeur devra 9 donc refuser les connexions d'une machine ayant la même adresse IP qu'une machine interne, mais se trouvant à l'extérieur du réseau local. Les e-mails sont particulièrement sujets au spoofing car ils sont faciles à réaliser. Les courriers électroniques sans l'ajout d'une signature électronique ne peuvent pas être d'origine fiable. Il est facile par Telnet de se connecter directement au port SMTP du système (port 25). Le serveur recevant ces commandes fait confiance à cette personne si elle s'identifie. D'où le fait que le courrier électronique peut lui aussi être spoofé facilement en entrant une adresse d'expéditeur différente de l'adresse réelle. On peut donc sans aucun privilège falsifier ou spoofer le courrier électronique. D'autres services comme le DNS peuvent aussi être spoofés mais avec toutefois plus de difficultés que le courrier électronique. Ces services représentent une crainte qui mérite d'être considérée quand on les utilise. Le routeur pare-feu devra tenir régulièrement à jour ses fichiers LOG afin de contrôler toute tentative de piratage. De plus, ces fichiers LOG devront être sécurisés pour éviter toute modification malveillante. Les scanners Un scanner est un programme qui permet de savoir quels ports sont ouverts sur une machine donnée. Les Hackers utilisent les scanners pour savoir comment ils vont procéder pour attaquer une machine. Leur utilisation n'est heureusement pas seulement malsaine, car les scanners peuvent aussi permettre de prévenir une attaque. Le plus connu des scanners réseau est WS_Ping ProPack, que l'on peut trouver sur http://www.ipswitch.com/french/wsping.html Les fichiers LOG générés par les scanners ne doivent pas être modifiables par un pirate. Les chevaux de Troie Un cheval de Troie est un programme qui se cache lui-même dans un autre programme apparemment au-dessus de tout soupçon. Quand la victime (l'utilisateur normal) lance ce programme, elle lance par là même le cheval de Troie caché. Actuellement, les chevaux de Troie les plus utilisés sont : Back Orifice 2000, Backdoor, Netbus, Subseven, Socket de Troie. La méthode la plus efficace pour se protéger de ces programmes néfastes est d'utiliser un bon antivirus comme Norton 2000 ou Network Associates. Des programmes spécifiques permettent également de scruter toute tentative de connexion sur les ports scrutés. Lockdown 2000 est le plus connu d'entre eux : une fois une tentative de connexion détectée, il fait un traceroute sur l'IP qui a tenté la connexion. La version 4 possède en bibliothèque 488 signatures de ``Troyans''. La machine Linux devra être équipée d'un antivirus permettant de repérer non seulement les 10 virus, mais également les chevaux de Troie. Les vers Un ver est un programme capable de se propager et de s'auto-reproduire sans l'utilisation d'un programme quelconque ni d'une action par une personne. Sur chaque ordinateur où il agit, le ver crée une nouvelle liste de machines distantes cibles. En parallèle, le ver : - essaie de trouver les mots de passe des comptes utilisateurs, - essaie d'entrer dans chaque machine cible en se faisant passer pour un utilisateur de la machine « attaquante »' (après avoir craqué le mot de passe utilisateur), et en utilisant un ancien bug dans le protocole finger, qui permet de savoir quels sont les usagers connectés sur une machine distante ou sur quelle machine est connecté un utilisateur donné. Les attaques de vers sont toutefois très rares parce que les serveurs sur l’Internet sont de plus en plus performants (Windows NT Server ou Apache), mais c'est toujours une méthode utilisée par les hackers quand un nouveau bug est découvert dans un système d'exploitation. Les vers permettent aux agresseurs d'attaquer un maximum de sites en peu de temps. Le routeur pare-feu ne doit pas s'attarder à filtrer les vers: c'est la qualité du système d'exploitation qui doit permettre d'enrayer toute attaque de vers. Les trappes Une trappe est un point d'entrée dans un système informatique qui passe audessus des mesures de sécurité normales. C'est généralement un programme caché ou un composant électronique rendant le système de protection inefficace. De plus, la trappe est souvent activée par un événement ou une action normale (exemple : trappe dans les premières versions de Internet Explorer 5). Pareillement au type d'attaque précédent, les trappes sont des programmes qui ne peuvent pas être détectés au niveau IP, mais au niveau application (signature). C'est donc le rôle de l'antivirus et du système d'exploitation de détruire les trappes. Les bombes logiques Ce sont des dispositifs programmés dont le déclenchement s'effectue à un moment déterminé en exploitant la date du système, le lancement d'une commande, ou n'importe quel appel au système. Les bombes logiques doivent être repérées au niveau applicatif, par un antivirus performant. 11 Le TCP-SYN flooding Quand un client essaie d'établir une connexion TCP sur un serveur, le client et le serveur échangent une séquence de messages. Cette connexion technique s'applique à toutes les connexions TCP/IP (Telnet, web, e-mails...). Le système client commence par envoyer un message SYN (pour synchronisation) au serveur. Le serveur renvoie alors un accusé de réception du SYN : SYN-ACK au client. Le client finit alors par établir la connexion en répondant par un ACK. La connexion (au niveau 4 du modèle OSI) entre le client et le serveur est donc ouverte et le service d'échange de données peut s'exécuter. La faille vient du fait qu'au moment où le serveur a renvoyé un accusé de réception du SYN (SYN- ACK), le serveur mais n'a pas encore reçu le ACK du client. C'est alors une connexion dite semiouverte. Le serveur construit dans sa mémoire système une structure de données décrivant toutes les connexions courantes. Cette structure de données est de taille finie, ce qui veut dire qu'il peut se créer un dépassement de capacité (overflow) en créant intentionnellement trop de connexions partiellement ouvertes. Le fait de créer ces semi-connexions sans se faire repérer est facilement réalisable avec l'IP spoofing. L'ordinateur de l'agresseur envoie des messages SYN au serveur victime; ceux-ci paraissent provenir d'un ordinateur bien défini mais font référence à un système client qui n'est pas capable de répondre au message SYN-ACK. Ce qui veut dire que le message ACK final ne sera jamais envoyé au serveur victime. Ces semi-connexions dans la structure de données du serveur victime vont éventuellement créer un débordement dans cette structure et le serveur sera incapable d'accepter d'autres connexions tant que la table ne sera pas vidée. Normalement, il y a un système de time-out associé à chaque connexion ouverte, donc les semi-connexions devraient expirer et le serveur victime récupérer de la place libre dans sa mémoire pour d'autres connexions. Toutefois, le système agresseur peut simplement continuer à envoyer des paquets dont l'IP est spoofée plus vite que le serveur victime puisse expirer les semi-connexions. Dans la plupart des cas, la victime d'une telle attaque aura des difficultés à accepter toute nouvelle connexion. Dans ces cas, l'attaque n'affectera pas les connexions déjà existantes ou la capacité à créer des connexions de l'intérieur vers l'extérieur. Par contre, dans certains cas, le serveur aura épuisé toutes ses ressources mémoires, et pourra ``planter'' et donc être rendu inopérant. La localisation de l'attaque est très souvent obscure parce que les adresses IP des paquets SYN envoyés sont rarement plausibles. Quand le paquet arrive au serveur victime, il n'y a aucun moyen de déterminer sa véritable source. Comme l’Internet fait suivre les paquets sur une adresse de destination, le seul moyen de valider la source d'un paquet est 12 d'utiliser le filtrage. Avec la technologie actuelle du protocole IP, il est impossible d'éliminer tous les paquets spoofés. Mais il existe quelques solutions pour réduire le nombre de paquets spoofés et sortant du réseau. Le routeur devra limiter les entrées à l'interface externe, en n'accordant pas le droit d'entrée à un paquet qui a une adresse source du réseau interne. Il peut aussi être bon de filtrer les paquets sortants qui ont une adresse source différente du réseau interne afin de prévenir une attaque d'IP spoofing provenant du réseau interne. La combinaison de ces deux types de filtrage doit empêcher les agresseurs extérieurs d'envoyer des paquets prétendant provenir du réseau interne. Cela doit également empêcher les paquets provenant du réseau interne de prétendre venir de l'extérieur du réseau. L'IP spoofing et le SYN-flooding sont actuellement les deux principaux problèmes de la sécurité sur Internet. Le Flood Le Flood consiste à envoyer très rapidement de gros paquets d'informations à la machine routeur (à condition d'avoir un PING très court, comme c'est le cas pour un RLE), ce qui risque de faire ``planter'' la machine (``Ping Of Death'' : message ICMP de 64 ko qui faisait planter Windows). Une solution consiste à avoir une bonne gestion de la fenêtre d'anticipation TCP, et d'envoyer autant que faire se peut des messages ICMP de réduction de fenêtre. Le Spamming Le Spamming consiste à envoyer plusieurs milliers de messages identiques à une boîte aux lettres pour la faire saturer. En effet, les mails ne sont pas directs, ainsi lorsque le courrier sera relevé, celui-ci mettra beaucoup trop de temps et la boîte aux lettres sera alors inutilisable. Le routeur pare-feu pourra cependant détecter les tentatives de Spamming, en sniffant les paquets IP arrivants, et en remarquant une trop grande fréquence dans la réception d'un même message (taille du paquet, adresses source et destination identiques). Les virus Les constructeurs de pare-feu tendent maintenant à fournir avec leurs produits une solution antivirus complète, qui permet de filtrer les attaques logicielles comme les chevaux de Troie, les vers, les trappes et les bombes logiques. Les éléments actifs du réseau sont désormais de véritables remparts contre une pléthore d'attaques, qu'elles soient au niveau réseau ou au niveau applicatif. Cela rend la tâche des administrateurs réseau plus simple, car toutes les fonctions de sécurité sont fédérées sur un seul et même équipement, plus robuste et 13 entièrement administrable. Les éléments composant le réseau ne sont pas les seuls remparts aux attaques. Le système d'exploitation garantit un niveau de sécurité supplémentaire vis-à-vis des attaques de type virus, nuke ou trappes. C'est pourquoi nous nous intéressons maintenant à l'aspect sécurité de Linux. L'ingénierie social L'ingénierie sociale n'est pas vraiment une attaque informatique. C'est plutôt une méthode pour obtenir des informations sur un système ou des mots de passe. C'est une approche psychologique en utilisant des acteurs humaines disposants des informations pertinentes sur le système cible à attaquer. Pour obtenir le but, il y a 5 méthodes: - Internet: Se faire passer pour un acteur de l'entreprise (un utilisateur ou un administrateur) - Contact: Permet de cibler la personne et obtenir des informations dans son contexte (rendez-vous pour un motif quelconque) ou hors de son contexte (au restaurant d'entreprise ou en face au bureau). - Téléphone: Préparer d'une identité, d'un rôle ou d'un but exprimé. Utilise des canaux indirects (par exemple la téléphoniste ou un département quelconque) - Fax: Copier l'en-tête d'un fournisseur ou d'un client pour obtenir une information - Lettre: Même approche pour le fax mais au lieu de copier l'en-tête, on utilise une adresse fictive. Contre mesure - Formation des acteurs à tous les niveaux - Délimiter exactement le périmètre des informations confidentielles, sensibles, internes et publiques. - Tenter de placer les indicateurs pour assurer l'identité des personnes désirant des informations sensibles - Les documents ou communications qui ne sont pas clairement identifiés, doivent être transmises à un acteur responsable pour leur traitement. - Clause de confidentialité dans les contrats. 14 Partie 2 : Etude bibliographique des parades au DoS et DDoS DoS Les techniques d'attaque : Les attaquants utilisent plusieurs techniques d'attaques. Ces attaques peuvent être regroupées en trois familles différentes : - Les attaques directes. - Les attaques indirectes par rebond. - Les attaques indirectes par réponses. Nous allons voir en détail ces trois familles. Les attaques directes C'est la plus simple des attaques. Le hacker attaque directement sa victime à partir de son ordinateur. La plupart des "script kiddies" utilise cette technique. En effet, les programmes de hack qu'ils utilisent ne sont que faiblement paramétrable, et un grand nombre de ces logiciels envoient directement les paquets à la victime. Si vous vous faites attaqués de la sorte, il y a de grandes chances pour que vous puissiez remonter à l'origine de l'attaque, identifiant par la même occasion l'identité de l'attaquant. Depuis quelques ans, on n’utilise jamais cette technique car il n’est pas efficace quand on utilise une machine normale pour attaquer un serveur très performant. 15 Les attaques indirectes par rebond Cette attaque est très prisée des hackers. En effet, le rebond a deux avantages : - Masquer l'identité (l'adresse IP) du hacker. - Eventuellement, utiliser les ressources de l'ordinateur intermédiaire car il est plus puissant (CPU, bande passante...) pour attaquer. Le principe en lui même, est simple: Les paquets d'attaque sont envoyés à l'ordinateur intermédiaire, qui répercute l'attaque vers la victime. D'où le terme de rebond. L'attaque FTP Bounce fait partie de cette famille d'attaque. Si vous êtes victime de ce genre d'attaque, il n'est pas facile de remonter à la source. Au plus simple, vous remontrez à l'ordinateur intermédiaire. Les attaques indirectes par réponse Cette attaque est un dérivé de l'attaque par rebond. Elle offre les mêmes avantages, du point de vue du hacker. Mais au lieu d'envoyer une attaque à l'ordinateur intermédiaire pour qu'il la répercute, l'attaquant va lui envoyer une requête. Et c'est cette réponse à la requête qui va être envoyée à l'ordinateur victime. 16 Là aussi, il n'est pas aisé de remonter à la source... Quelques parades de type DoS Ping de la mort Un ping a normalement une longueur maximale de 65535 ((216) - 1) octets, incluant une entête de 20 octets. Un ping of death c'est un ping qui a une longueur de données supérieure à la taille maximale. Lors de sont envoi, le ping of death est fragmenté en paquets plus petits. L'ordinateur victime qui reçoit ces paquets doit alors les reconstruirent. Certains systèmes ne gèrent pas cette fragmentation, et se bloquent, ou crashent complètement. En principe, pour déborder une machine on ne peut que l'envoyer des paquets avec la taille supérieure à 64 Koctets. La commande suivante va nous montrer comment les créer: ping -f -s 65550 xxx.xxx.xxx.xxx où xxx.xxx.xxx.xxx est l'adresse de la victime. L'idée est de les fragmenter en des paquets dont la taille est inférieure à 64 Koctets grâce à la technique de fragment des paquets. 17 Le problème se passe quand la machine cible essaie de défragmenter les paquets reçus. Le paquet final ayant la taille supérieure à 64 Koctets va bloquer la victime. Supposons que l'on a deux fragments suivants: Fragment 1 MF=1 Offset=0 Fragment 2 MF=0 Offset=65000 Taille=65000 Taille=1000 Donnée Donnée Quand on les rassemble, la taille du nouveau fragment est 65000 + 1000 = 66000 Cette valeur est supérieure à 64Ko, on ne peut pas la mettre dans un registre à taille 16bits. Si on le fait, cela causera un problème. Prouver On va voir ce problème dans le système d'exploitation Minix version 2.0.2. Le code suivant est extrait dans le fichier ip_read.c de la fonction merge_frags() second_datasize=second_offset+second_datasize-(first_offset+first_datasize); cut_second= bf_cut(second, second_hdr_size + first_offset+first_datasizesecond_offset, second_datasize); .... first_datasize += second_datasize; first_hdr->ih_length= htons(first_hdr_size + first_datasize); second_datasize = 65000 + 1000 – (0 + 65000) = 1000 first_datasize = 65000 + 1000 = 66000 first_hdr->ih_length = htons(first_hdr_size + 66000); => Erreur Le variable first_hdr->ih_length est défini comme un variable à 16 bits correspond à une valeur 65535 bits. TearDrop Teardrop est une attaque (principalement contre les machines sous Microsoft 18 Windows NT) qui repose sur des fragments superposés. On va voir le code suivant (extrait dans la fonction ip_glue() du fichier ip_fragment.c du noyau 2.0.23 de la ligne 361): /* Copy the data portions of all fragments into the new buffer. */ fp = qp->fragments; while(fp != NULL) { if (count+fp->len > skb->len) { // (i) NETDEBUG(printk("Invalid fragment list: Fragment over size.\n")); ip_free(qp); frag_kfree_skb(skb,FREE_WRITE); ip_statistics.IpReasmFails++; return NULL; } memcpy((ptr + fp->offset), fp->ptr, fp->len); // (ii) count += fp->len; fp = fp->next; } Qu'est ce qu'il se passe si la taille d'un fragment est inférieur à 0 (fp->len < 0). Quand on loue une partie de mémoire avec un nombre négatif, cela devient un très grand nombre positif. Cela dépense de la mémoire de la victime, l'ordinateur peut être soit bloqué soit redémarré. Prouver Les figures suivant montrent comment on peut créer un fragment ayant la taille négative (fp->len < 0) Fragment 1 MF=1 Offset=0 Fragment 2 MF=0 Offset=500 Taille=1000 Taille=400 Donnée Donnée Supposons que l'on reçoit 2 fragments ci-dessus et on est en train de traiter le fragment 2. Le variable 'end' est déjà calculé dans la ligne 474 par l'instruction: end = offset + ntohs(iph->tot_len) – ihl; = 500 + 400 – ihl 19 = 900 - ihl Selon les codes à partir de ligne 508 dans le fichier ip_frament.c (Linux-2.0.23) if (prev != NULL && offset < prev->end) { i = prev->end - offset; offset += i; /* ptr into datagram */ ptr += i; /* ptr into fragment data */ } On a i = 1000 – 500 = 500 offset = 500 + 500 = 1000 On passe end et nouvel offset dans la fonction ip_frag_create. On voie maintenant la partie principale dans cette fonction (dans le fichier ip_fragment.c à partir de la ligne 93 (fonction ip_frag_create) – Linux 2.0.23) /* Fill in the structure. */ fp->offset = offset; fp->end = end; fp->len = end – offset; Donc, fp->len = 900 – ihl – 1000 = –100 – ihl < 0 De la version 2.1.89 à 2.2.3 du noyau, on a changé le code pour contre cette vulnérabilité. Mais le problème est encore continué. Voir le code suivant (extrait dans la fonction ip_glue() du fichier ip_fragment.c du noyau 2.2.3 de la ligne 357): fp = qp->fragments; count = qp->ihlen; while(fp) { if ((fp->len < 0) || ((count + fp->len) > skb->len)) goto out_invalid; memcpy((ptr + fp->offset), fp->ptr, fp->len); if (count == qp->ihlen) { skb->dst = dst_clone(fp->skb->dst); skb->dev = fp->skb->dev; } count += fp->len; fp = fp->next; } Le problème dans ce code est si on a un fragment dans la liste des fragments qp>fragments ayant la taille 0 et il est le premier fragment dans la liste. Pour la 20 première fois de la boucle, count est nécessaire égal à qp->ihlen, la fonction dst_clone(..) est donc lancée. Mais si fp->len = 0, count += fp->len ne change pas. A la prochaine boucle, le variable count est encore égal à qp->len. La fonction dst_clone() augmente un usage de count à un élément dans le routing cache. Notre fragment de taille 0 causera cet élément dans le cache devenir être abandonné. Le noyau ne peut pas le libéré. Parce que le noyau pense qu'il est encore utilisé. D'autre part, l'appel à louer une nouvelle entrée dans le routing cache ne teste pas si le hashtable qui contient la cache soit en état saturé. Si cela se passe, le noyau va faire une collection des déchets. Si le nombre des entrées dans le cache, après la collection, est encore supérieur au seuil alors la fonction dst_alloc() sera échouée. Donc, si on génère un nombre assez grand des entrées abandonnées dans le routing cache (4096 dans le noyau 2.2.3) dans notre mauvaise liste des fragments, alors tous les appels à la fonction dst_alloc() sera échoués. Les étapes suivantes vont nous montrer comment créer tel liste: - Envoyer un fragment à offset 0 avec la taille X (taille du fragment) et le flag IP_MF est vrai (More Fragment). Cela crée une liste. - Envoyer un fragment à offset 0 avec la taille d'entête IP est égale à la taille totale IP et le flag IP_MF est vrai. Ce fragment va être traité comme il est venu avant celui du premier car il a un offset égal à l'offset du fragment existant. Jusqu'à maintenant, il n'y a pas d'overlap car sa valeur 'end' est égale à l'offset du prochain fragment. - Envoyer 3ème fragment à offset X avec IP_MF est faux. Cela signifie que l'on termine ici. => On obtient 3 fragments avec les tailles: 0, X, End-X DDoS Le "Distributed denial-of-service" ou déni de service distribué est un type d'attaque très évolué visant à faire planter ou à rendre muette une machine en la submergeant de trafic inutile (voir fiche DoS). Plusieurs machines à la fois sont à l'origine de cette attaque (c'est une attaque distribuée) qui vise à anéantir des serveurs, des sous réseaux, etc. D'autre part, elle reste très difficile à contrer ou à éviter. C'est pour cela que cette attaque représente une menace que beaucoup craignent. 21 Mode opératoire Les DDoS se sont démocratisées depuis quelques ans. En effet dans les premiers temps, cette attaque restait assez compliquée et nécessitait de bonnes connaissances de la part des attaquants; mais ceux-ci ont alors développé des outils pour organiser et mettre en place l'attaque. Ainsi le processus de recherche des hôtes secondaires (ou zombies) a été automatisé. On cherche en général des failles courantes (buffer overflows sur wu-ftpd, les RPCs...) sur un grand nombre de machines sur Internet et l'attaquant finit par se rendre maître (accès administrateur) de centaines voir de milliers de machines non protégées. Il installe ensuite les clients pour l'attaque secondaire et essaye également d'effacer ses traces (corruption des fichiers logs, installation de rootkits). Une fois le réseau en place, il n'y a plus qu'à donner l'ordre pour inonder la victime finale de paquets inutiles. Il est intéressant de noter que les victimes dans ce type d'attaques ne sont pas que celles qui subissent le déni de service; tous les hôtes secondaires sont également des machines compromises jusqu'au plus haut niveau (accès root), tout comme l'hôte maître. La menace provient du fait que les outils automatisant le processus ont été très largement diffusés sur Internet. Il n'y a plus besoin d'avoir des connaissances pointues pour la mettre en place, il suffit de "cliquer" sur le bouton. Les outils Pour mieux comprendre le phénomène, il parait impossible de ne pas étudier les outils les plus importants dans ce domaine, qui doivent leur notoriété à des célèbres attaques ayant visé des grands sites sur le net. Un réseau typique se compose donc d'un maître (point central) et de nombreux hôtes distants, encore appelés démons. Pendant le déroulement de l'attaque, le hacker se connecte au maître qui envoie alors un ordre à toutes les hôtes distants (via UDP, TCP ou ICMP). Ces communications peuvent également dans certains cas être chiffrées. Ensuite, les hôtes distants vont attaquer la cible finale suivant la technique choisie par l'attaquant. Ils vont par exemple se mettre à envoyer un maximum de paquets UDP sur des ports spécifiés de la machine cible. Cette masse de paquets va submerger la cible qui ne pourra plus répondre à aucune autre requête (d'où le terme de déni de service). D'autres attaques existent, tel que l'ICMP flood, le SYN flood (TCP), les attaques de type smurf, les attaques 22 dites furtives, les attaques de déni de service dites agressives (dont le but est bel et bien de faire crasher complètement la cible), ou encore des attaques de type "stream attack" (TCP ACK sur des ports au hasard)... Certains outils se sont même inspirés des chevaux de Troie qui installent de petits serveurs IRC permettant au hacker de les commander via cette interface. 1. TFN (Tribal Flood Network) C'est le premier outil d'attaque de type Déni de Service qui ai obtenue une large visibilité. Il utilise une architecture à deux couches. Un client qui contrôle des agents/démons. Ces agents réalisent l'attaque distribuée sur la victime/cible et avec le type d'attaque désiré par le client. Les agents TFN fonctionnent comme des services réseaux cachés sur les machines piratées, capables de recevoir les commandes du client noyées parmi le flux courant des communications du réseau. Les adresses du client et des agents sont falsifiées dans tous les communications et les attaques. Architecture du TFN Client Agent Agent Agent Victime - Protocole de la communication entre Client/Agent : ICMP L’attaque sur les protocoles : IP / TCP / UDP / ICMP Le TFN client est exécuté à travers la commande ligne pour envoyer des commandes aux TFN Agents. Un client communique avec les agents en utilisant des paquets ICMP echo-reply avec 16 bits binaires de valeur intégrée dans le champs ID et quelques arguments ont été intégrées dans la partie de donnée du paquet. Les valeurs binaires, qui sont définable 23 L’Utilisation 2. TFN2K C'est la version évoluée de TFN, au début sur une architecture à deux couches (trois couches désormais), mais avec l'ajout de chiffrement BlowFish de ces communications entre le client et ses agents, qui le rend plus dur à détecter. L'architecture du TFN2K est ressemble à celle du TFN. - Communication entre master et agent sont TCP, UDP, ICMP ou aléatoire entre les trois. - Méthode d'attaque sont TCP/SYN, UDP, ICMP/PING ou broadcast PING (smurf) paquet flood - L'en-tête du paquet entre master et agent est aléatoire sauf ICMP - TFN2K est silence, cad il ne fait pas de ACK de la commande il reçois. Le client renvoie chaque commande 20 fois pour s'assurer que le deamon recevra au moins une fois. - Toutes les commandes sont chiffrées en utilisant l'algorithme CAST-256 (RFC 2612). Le clé est définie au moment de compilation et utilisé comme mot de passe pout lancer tfn2k client - Toutes les données chiffrées sont Base 64 encoded avant de l'envoie 3. Trin00 Trin00 s'appuie lui sur une architecture à trois couches avec un client/intrus, qui envoie des commandes (y compris les cibles à attaquer) à des servers masters/handlers qui se chargent chacun dans sous réseau d'agents/démons. Cette couche intermédiaire rend plus difficile à identifier l'origine de l'attaque. Cependant, Trin00 réussi moins bien à dissimuler ses communications au sein du trafic réseau. Il ne cherche pas l'origine de l'attaque et la victime peut détecter les agents. Trin00 n'utilise qu'une seule forme d'attaque DoS (UDP), contrairement à TFN. 24 Architecture du Trin00 Instruder Master Deamon Master Master Deamon Deamon Deamon Victime - L’attaquant communique avec les masters par le protocole TCP sur la destination porte 27665 Les masters communiquent avec les deamons par le protocole UDP sur la destination porte 27444 Un deamon réponds aux masters par le protocole UDP sur la destination porte 31335 Les deamons attaquent « flood » la victime en utilisant le protocole UDP avec une destination porte aléatoire Quand un trinoo deamon est lancé, il annonce son présence par envoyer un paquet UDP qui contient la chaîne « *HELLO* » aux trinoo masters avec les adresses IP déjà programmés. Quand à lui, il va recevoir des paquets UDP répondu qui contient une chaîne « PONG ». Toutes les communications aux masters sur la porte 27665/UDP ont besoin un mot de passe qui est été stocké dans la librairie du deamon sous forme chiffrée. Toutes les communications avec les deamons sur la porte 27444/UDP ont besoin que le paquet UDP contient la chaîne « l44 » (ici, c’est la minuscule du L) . 25 4. Stacheldraht Stacheldraht est un mélange de TFN et Trin00, dissimulant l'origine des communications et utilisant une variété des attaques de TFN et se basant sur une architecture à trois couches de Trin00. Il utilise de meilleurs techniques que « ses parents » Architecture de Stacheldraht Client Handler Agent Client Handler Agent Handler Agent Agent Victime Mesures de protection Il n'est pas évident de se prémunir contre ces attaques par déni de service, car la mise en place du réseau offensif par l'attaquant repose sur le fait que beaucoup de machines sont peu ou pas sécurisée et présentent des failles. Ces failles sont tellement nombreuses et d'autre part il existe tellement de machines vulnérables sur Internet qu'il devient impossible d'empêcher de telles attaques. Ainsi, si un outil de DDoS est détecté sur un système, cela signifie sûrement que il a été installé sur de nombreux autres systèmes sans être décelé. D'autre part, la présence de cet outil signifie également que le système a été intégralement compromis, qu'il présente sûrement des backdoors et qu'on y a peut-être installé un rootkit (type Adore). Il est donc urgent et nécessaire de retirer complètement cette machine du réseau et de l'inspecter pour éventuellement la réinstaller. Pour détecter un tel outil, on pourra chercher des noms évocateurs parmi les 26 processus système s'il n'y a pas de rootkit installé et si l'attaquant à laissé un nom par défaut. Ces noms peuvent être regroupés dans la liste suivante (non exhaustive): Trinoo maître: master Broadcast: ns TFN client: tfn Démon: td Stacheldraht Handler: mserv Agent: td Shaft Handler: shaftmaster Agent: shaftnode mstream Handler: master Agent: server Trinity Agent: /usr/lib/idle.so Portshell: /var/spool/uucp/uucico Alt. Portshell: /var/spool/uucp/fsflush Il peut être également fort utile de connaître les outils (au nombre de 4, principalement) utilisés par les hackers. Des analyses sont disponibles pour 3 d'entres eux : - http://staff.washington.edu/dittrich/misc/trinoo.analysis - http://staff.washington.edu/dittrich/misc/tfn.analysis - http://staff.washington.edu/dittrich/misc/stacheldraht.analysis Il existe également un compte-rendu de congrès scientifique sur le sujet qui apporte beaucoup d'idées pour se défendre et récupérer après de tels incidents : http://www.cert.org/reports/dsit_workshop.pdf Le Pushback : une contre-mesure en développement Face aux menaces grandissantes provoquées par ce type d'attaques, les scientifiques se penchent de plus en plus sur des techniques capables de les contrer; une des plus récentes est la technique du Pushback. Nous ne rentrerons 27 pas dans les détails ici, tous les papiers étant disponibles sur le site ACC and Pushback. Très brièvement, cette technique a pour but d'identifier les attaques de DoS et surtout de DDoS grâce à des heuristiques, de les contrer en remontant à leur source, enfin de maintenir et de protéger le bon trafic qui souffre également la plupart du temps des congestions engendrées par de telles attaques. Cette méthode utilise un contrôle de congestion basé sur des agrégats, un agrégat étant défini comme un sous-ensemble du trafic présentant une propriété identifiable. Exemples de propriétés : - Paquets TCP SYN - Paquets à destination de X - Paquets IP dont les checksums sont incorrects Le but est d'identifier les agrégats responsables de la congestion et de les éliminer pour rétablir un trafic normal. Une fois la signature (c'est-à-dire la propriété identifiante, le trait caractéristique de l'attaque) établie, le flux est comparée en temps réel dans le routeur le plus proche de la cible du DDoS. Ce routeur commence à rejeter (drop) les paquets correspondants à la signature et envoie également un message d'alerte aux routeurs en amont sur les brins d'où lui parvient le trafic incriminé. Ce message d'alerte contient entre autres choses la signature qui va permettre à ces routeurs d'éliminer à leur tour les paquets correspondants à l'attaque. Et ces routeurs vont également envoyer des messages d'alerte aux routeurs situés en amont. Cette technique récursive a pour avantage de pouvoir remonter jusqu'aux sources de l'attaque; elle permet également de décongestionner le coeur même du réseau, ce qui était impossible avec les techniques centrées sur la protection pure de la cible. Enfin, même si une partie du trafic légitime est tout de même perdue, les résultats finaux sont plutôt positifs. 28 Partie 3 : Etude des HoneyPot Définition Honeypot est un système des ressources informatiques dont valeur est calculée sur l'utilisation malicieuse ou illicite de ces ressources. C'est une définition générale qui couvre tous les manifestations différences des honeypots. On va discuter dans cet article les exemples différences de honeypot et leurs valeurs à la sécurité. Leurs valeurs sont basées sur les interactions entre eux et les attaquants (y compris le virus, les spams). En principe, un honeypot a une ressource dont il n'y a pas d'activités autorisées. Donc, il n'a pas de valeur de production. Théoriquement, un honeypot n'a pas normalement de trafic parce qu'il n'a pas d'activité légitime. Cela veut dire que, chaque interaction avec un honeypot signifie un malicieux ou une mauvaise activité. Une connexion quelconque qui essaie via un honeypot est considéré comme probe, attaque ou compromise. Grâce à sa simplicité, il a énormément des avantages et des inconvénients. Avantages Honeypots est une conception très simple qui leur donne des puissantes - Petite ensemble de données mais haut valeur: Honeypot collecte un petit nombre de l'informations. Au lieu de logging un Go par jour, il peut log environ un Mo de donnée par jour. Au lieu de générer 10 milles alertes par jour, il ne peut générer que 10. Mais il faut souligner que le honeypot ne capture que des mauvaises activités. Chaque interaction avec un honeypot signifie un inautorisé ou une activité dangereuse. Alors, l'honeypot réduit le bruit par collecter une petite donnée, mais l'information est très valable, qui ne concerne qu'à l'attaquant. Cela signifie qu'il est plus facile (et moins chère) à analyser les données collectées pour dériver la valeur à partir de ces données. - Nouveaux outils et tactiques: Honeypot est élaboré pour capturer tous les choses qui le sont envoyés. Y compris les outils et les tactiques que l'on ne voit pas encore à l'avant. - Ressource minimale: Un honeypot a besoin une ressource minimale pour capturer les mauvaise activités. Un ancien Pentium ordinateur avec 128Mo de mémoire peut facilement contrôler la classe B du réseau. - Chiffrement ou IPv6: Différence à presque tous les technologies de 29 sécurité (comme IDS système), l'honeypot travail bien dans l'environnement Ipv6 ou avec des données chiffrées. N'importe quelles données (instruction ou command) qu'un attaquant l'envoie, il détectera, capturera et l'analysera. - Simplicité: En fin, l'honeypot est simple, il n'y a pas d'algorithme à développer et il est facile à configurer. Inconvénients Comme tous les technologies, l'honeypot a aussi des faibles. Parce qu'il ne remplace aucune technologie courante, mais il travail avec les technologies existantes. - Vue limité: l'honeypot ne peut détecter et capturer qu'aux activités - interactives directement avec lui. L'honeypot ne capturera pas des attaques contre les autres systèmes. Risque: Toutes les technologies de la sécurité ont des risques. Le pare-feu a risque d'être pénétré, le chiffrement a risque d'être démoli. Le IDS a le risque de se tromper. L'honeypot a aussi des risques. Il a un risque d'être pris la relève par un attaquant et d'être utilisé à faire du mal aux autres systèmes. Les risques sont variés selon chaque type d'honeypot. Les types d'honeypot Il y a deux catégories d'honeypot: low-interaction et high-interaction honeypots. Ces deux catégories nous donneront des connaissances sur quel type d'honeypot qu’avec qui on a une interaction, sa faiblesse et sa force. L'interaction définie le niveau d'activité que un honeypot permet au attaquant. Low-interaction honeypot a un nombre d'interaction limité, ils travaillent normalement par simuler des services et des systèmes d'exploitation. Les activités des attaquants sont limitées au niveau de la simulation par l'honeypot. Par exemple, Une service simulée FTP entendu sur le porte 21 peut simuler l'ouverture d'une session FTP ou il est également supporter quelques autres commands FTP. L'avantage d'un lowinteraction est la simplicité. L'honeypot a tendance à déployer et maintenir facilement avec un risque minimal. Normalement, il a besoin d'installer des logiciels, de sélectionner des services ou de système d'exploitation que l'on veut simuler et surveiller. L'approche de 'plus and play' fait facile à le déployer pour presque tous les organisations. En plus, les services simulés atténuent les risques par s'occuper toutes les activités des attaquants, l'attaquant n'accès jamais au système d'exploitation principal pour lui faire du mal. L'inconvénient principal de low-interaction honeypot est que les informations qu'il a loggé sont limitées, et 30 normalement sur les activités connues. Donc, il est plus facile pour un attaquant pour détecter un low-interaction honeypot qu'à un high-interaction. Bien qu'un lowinteraction honeypot soit bien configuré, un attaquant qualifié peut détecter sa présence. Les exemples d'honeypot sont: Spector, Honeyd et KFSensor. High-interaction honeypot est différent. Il est des solutions complexes parce qu'il a besoin les réelles applications et le système d'exploitation réel. Aucun n’est simulé, on donne aux attaquants des choses réels. Si on veut un Linux honeypot qui lance le serveur FTP, on construit un Linux système réel qui lance un serveur FTP. Il y a deux majeurs avantages de cette solution. Premier, on peut capturer extensivement des informations. En donnant aux attaquants un système réel à communiquer avec, on peut apprendre tous ses comportements. Deuxième avantage est qu’un haute-interaction honeypot ne fait pas d'attention sur comment un attaquant se comportera. Au lieu de cela, il propose un ouvert environnement qui capture tous les activités. Cela permet la solution high-interaction à apprendre tous les comportements que nous ne espérons pas. Cependant, cela augmente aussi des risques car l'attaquant peut utiliser ce système réel à attaquer le nonhoneypot système. En générale, un high-interaction honeypot peut faire ce qu'un low-interaction honeypot fait et en plus. Mais, il est plus complexe à déployer et maintenir. Les exemples sont: Symatec Decoy Server, Honeynet. Pour mieux comprendre comment fonctionnent les deux types ci-dessus, on va commencer par le low-interaction honeypot Honeyd. Honeyd: Low-interaction honeypot. Honeyd est un low-interaction honeypot développé par Niels Provos. Honeyd est Open Source et conçu pour le système Unix. Honeyd travaille pour surveiller les espaces IP qui n'est pas encore utilisé. N'importe quand qu'il trouve une connexion qui essaie au IP inutilisé, il accepte cette connexion et commence à communiquer avec l'attaquant en imitant comme victime. Par défaut, Honeyd détecte et log n'importe quelle connexion vers les ports TCP et UDP. En plus, on peut configurer les services simulés pour contrôler les ports spécifiques comme un FTP serveur simulé contrôle le port 21. Quand un attaquant connecte à la service simulée, honeyd non seulement détecte et log les activités, mais il capture aussi les interactions de l'attaquant avec la service simulée. Dans le cas de FTP serveur, on peut potentiellement capturer le compte que l'attaquant a utilisé, les commandes. Dans quelque cas, on peut savoir ce qu'il cherche et sa identité. Tous cela dépend du niveau de la simulation par l'honeypot. La plupart des 31 services fonctionnent par la même façon. Il espère un type de comportement spécifique et puis, il est programmé pour réagir par la façon prédéterminée. La limitation est si l'attaquant fait quelque choses que la simulation n'espère pas, elle ne sait pas comment faire, comment répondre dans ce cas là. La plupart de lowinteraction honeypots, y compris Honeyd, génère simplement un message d'erreur. Quelque honeypots, comme Honeyd, peuvent non seulement simuler des services, mais simuler des systèmes d'exploitation actuels. D'autre part, Honeyd peut apparaître comme Cisco routeur, WinXP webserver ou Linux DNS serveur. Il y a certains avantages quand on simule des systèmes d'exploitation différents. D'abord, l'honeypot peut être mieux mélangé dans le réseau existant s'il a la même apparence et comportement du produit système. En suite, on peut choisir les attaquants spécifiques en proposant les systèmes et services ce qui sont ses objectifs ou en proposant ceux qui que l'on veut étudier. Il y a deux éléments reliés au système d'exploitation simulé. Le premier concerne au service simulé. Quand un attaquant connecte au service simulé, ce service a un comportement et s'apparaît comme sous système d'exploitation spécifique. Par exemple, si on a un service simulé d'un webserver et on veut notre honeypot apparaît comme Window2000 serveur, on peut simuler son comportement à la façon d'un IIS webserver. Pour Linux, on peut le simuler à la façon d'un Apache webserver. La plupart des honeypots simulent le système d'exploitation selon cette manière. Quelque honeypots sophistiqués les simulent profondément (comme honeyd). Ils simulent non seulement au niveau service mais aussi au niveau du pile IP. Si quelqu'un utilise la méthode « active fingerprinting » pour déterminer le type de système d'exploitation de notre honeypot, la plupart des honeypots répondent avec la pile IP dont le système d'exploitation où ils sont installés. Honeyd fonctionne de façon différente, honeyd dupe la réponse non seulement sur les services mais la pile IP du système d'exploitation. Le niveau de simulation et de sophistication dépense de technologie d'honeypot que l'on a utilisé. Honeynet: High-interaction honeypot. Honeynet est un example de high-interaction honeypot. Honeynet n'est pas un produit, il n'est pas de solution logiciel que l'on installe sur un ordinateur. Au lieu de cela, honeynet est une architecture, un entité du réseau des ordinateurs construits pour être attaqué. L'idée est de proposer une architecture qui crée un réseau contrôlé à au niveau où tous les activités sont contrôlées et capturées. Dans le réseau on met des ordinateurs intentionnels, ce sont les ordinateurs réels 32 qui lancent des applications réels. L'attaquant trouve, attaque, et entre dans les systèmes proposés. Quand ils fonts cela, ils ne prennent pas de conscience d'être dans Honeynet. Tous ses activités, de la session SSH encrypté vers email et téléchargement des fichiers, sont capturées sans aucune connaissance. Cela s'est fait par insérer des modules dans le noyau du système victime qui capture tous les actions des attaquants. En même temps, l'honeynet contrôle les activités des attaquants. Il le fait en utilisant parcerelle Honeywall. Cette parcerelle permet le trafic entré vers le système victime, mais contrôler le trafic sortie en utilisant la technologie de prédiction des instructions. Cela donnera aux attaquants une flexibilité dans l'interaction avec le système victime, mais les interdire de faire mal au non-honeynet système L'exemple du déploiement de honeynet est dans la figure suivante: Valeurs de Honeypot Maintenant, on a compris deux catégories générales d'honeypot. On peut mettre au point sur ses valeurs. On sait déjà qu'il y a deux catégories générales, honeypot peut être utilisé pour la recherche ou bien comme un produit. Quand il est utilisé pour le but productif, il protège l'organisation. Y compris la prédiction, la détection, ou aider l'organisation à répondre à une attaque. D'autre part, pour le but de la recherche, il est utilisé pour collectionner des informations. Ces informations ont des valeurs différentes selon les organisations. L'une a envie 33 d'étudier la tendance dans les activités des attaquants tendit que l'autre intéresse sur la prédiction ou alerter par avance... En générale, low-interaction honeypot est utilisé souvent pour le but productif tendit que high-interaction est utilisé souvent pour la recherche. Mais, les deux buts peuvent être changer l'un pour l'autre. Honetpot aide à prévenir par certaines façons. Premièrement, il contre les attaques automatiques comme vers ou auto-rooter. Ces attaques basent sur les outils qui scannent les entités du réseau de façon aléatoire pour chercher les vulnérabilités du système. Si une des vulnérabilités est trouvée, les outils automatiques attaqueront le système et obtenir le droit d'accès au système. Deuxièmes, l'honeypot peut aider à contrer ces attaques par retarder le scan, même si l'arrêter. En appelant honetpot adhésif, il gène tous les adresses IP pas encore utilisés. Quand un « probed » comme scan activité, les honetpots auront une action réciproque avec et faire les retarder. Ils les font en utilisant une variété de cuses, comme Window taille zéro... Honetpots peuvent protéger votre organisation des attaquants humains. La conception est la déception et la dissuasion. L'idée est de refuser un attaquant. Faire dépenser ses temps à communiquer avec les honetpots. Pendant ce temps là, votre organisation détecte les activités de l'attaquant et a assez de temps à répondre ou arrêter cet attaquant. Si l'attaquant sait que votre organisation utilise l'honeypot, mais il ne sait pas quels systèmes sont les honeypots et quels systèmes sont les machines légitimes. Il a des risques d'être dans le système d'honeypot et il décide donc de ne pas attaquer votre organisation. L'honeypot dissuade l'attaquant. Un exemple est Deception Toolkit, un low-interaction honetpot. 34 Partie 4 : Intégration des HoneyPot dans une architecture globale de protection Comme dans la troisième partie, on a distingué entre deux types de honeypot: l'un est low-interaction honeypot et l'autre high-interaction honeypot. Chacun a des caractéristiques propres. Pour les intégrer dans une structure globale de protection, il faut donc faire attention sur les différences entre deux types. Alors, dans cette partie, on va voir comment intégrer (installer les logiciels nécessaires) honeypot: Honeyd pour low-interaction honeypot. Honeyd est une type de honeypot qui permet de déployer les machines virtuelles sur un réseau (en utilisant les adresses IP laissées libres) et ainsi permet de détecter les actions frauduleuses sur le réseau. Le but est aussi bien de détecter des attaques connues que de découvrir les nouvelles attaques en observant les comportements des attaquants. Honeyd fonctionne sous Unix, Solaris et BSD dérivés. Il est aussi porté sous Windows par Roger A. Grimes ([email protected]). C'est un daemon qui crée des hosts virtuels sur le réseau utilisant les adresses IP non attribué sur le réseau. Grâce à des templates, les hosts peut être configuré pour qu'ils paraissent fonctionner sous certains systèmes d'exploitation. Plus précisément, Honeyd doit être utilisé en collaboration avec soit l'outil Arpd soit proxy arp. Arpd permet de gérer les adresses IP non distribuées et il redirige les attaques vers Honeyd. Quand à lui, honeyd gère les échanges de données avec les attaquants pour simuler les services, requête ICMP... Sans arpd ou proxy arp, honeyd ne peut pas travailler. Les librairies nécessaires pour compiler honeyd: libpcap, libdnet, et libevent Installer Honeyd Supposez que les packages nécessaires sont téléchargés: - libpcap-0.8.1.tar.gz - libevent-0.7c.tar.gz - libdnet-1.7.tar.gz - honeyd-0.8.tar.gz Et ils sont mis dans le même répertoire. 35 - Installation de libevent: # tar xzf libevent-1.7.tar.gz # cd libevent-1.7 # ./configure # make # make install - Installation de libpcap: # tar xzf libpcap-0.8.1.tar.gz # cd libpcap-0.8.1 # ./configure # make # make install - Installation de libdnet: # tar xzf libdnet-1.7.tar.gz # cd libdnet-1.7 # ./configure # make # make install - Installation de honeyd: # tar xzf honeyd-0.8.tar.gz # cd honeyd-0.8 # ./configure # make # make install Attention : - Pour installer tous les packages ci-dessus, il est besoins beaucoup de librairies différentes. Si votre système ne les a pas, vous devez les installer d’abord : Byson, aycc, python… - Dans le cas de honeyd, s’il n’y pas de python dans votre système, vous pouvez utiliser le paramètre –without-python dans la ligne ./configure pour ne pas utiliser python comme un compileur des commandes par défaut. - Si vous avez encore des difficultés concernant à l’installation ou à l’utilisation honeyd, vous pouvez télécharger la version pré compilée de honeyd. Il vous reste à configurer le honeyd. Voir la partie suivante. 36 Configuration Honeyd Dans cette partie, je ne concentre pas sur comment utiliser les commandes pour élaborer un fichier de configuration. Si vous voulez savoir en détail, veuillez accéder au lien : http://www.citi.umich.edu/u/provos/honeyd/honeyd-man.pdf (Disponible jusqu’au 19/05/2004). Je ne concentre que sur les architectures du réseau simulées par Honeyd. Le fichier de configuration va être inclus dans la commande pour honeyd comme un paramètre suivie l’option –f. Par exemple : ./honeyd –f honeyd.conf Honeyd va lire le contenu de fichier configuration et puis générer tous les composants nécessaires selon les commandes corresponde à chaque ligne. Les fichiers concernant à honeyd - Nmap.fingerprints : Stocker tous les personnalités corresponde aux noms définis. Les personnalités peut être utilisées dans le fichier configuration pour modifier le comportement d’un pile TCP simulé. - Nmap.assoc : Compris les styles empreints pour xprobe. - Xprobe2.conf : Déterminer comment honeyd faire une réaction aux utiles ICMP empreintes. Configurer un réseau virtuel simple Supposons que l’on veut créer deux machines Windows sur un réseau virtuel avec les adresses IP sont : 192.168.160.3 et 192.168.160.4. Le nom de fichier de configuration est honey.conf.simple Son contenu est : create Windows set Windows #Créer un template personality SP1 » « Microsoft Windows XP#Choix le système d’exploitation et ses empreintes dans la base 37 de données add Windows tcp port 80 « sh scripts/web.sh » add add add add set Windows Windows Windows Windows Windows tcp port 139 open tcp port 137 open udp port 137 open udp port 135 open default tcp action reset set Windows default udp action reset bind bind 192.168.160.3 Windows 192.168.160.4 Windows #Comportement du port (serveur de web simulé) 80 ère #Créer 1 machine windows #Créer 2ème machine windows Le but de template est de créer une configuration globale pour toutes les machines ayant le même comportement. Au lieu de configurer 10 machines Windows XP, on ne crée qu’une seule template pour tous. En utilisant la commande bind, on relie facilement 10 adresses IP vers cette template pour obtenir 10 machines. Dans la configuration ci-dessus, on ajoute 4 ports ouvertes : deux pour le protocole tcp et deux pour celui de udp. Et on met l’action par défaut pour les protocoles est « reset ». La figure suivante illustre le réseau virtuel simple Machine virtuelle 192.168.160.3/24 Machine host 192.168.160.1/24 Machine virtuelle 192.168.160.4/24 Configurer un réseau virtuel avec un routeur Le but de cette configuration est de créer un réseau ayant sous d’autre sous réseau. Les deux sont reliés par un routeur. Dans cette configuration, on va ajouter deux machines Windows avec les adresses IP : 192.168.161.11 et 192.168.161.12 derrière le routeur ayant l’adresse IP 192.168.160.100. 38 create Windows set Windows #Créer un template personality « Microsoft Windows XP SP1 » #Choix le système d’exploitation et ses empreintes dans la base de données add Windows tcp port 80 « sh scripts/web.sh » #Comportement du port 80 (serveur de web simulé) add Windows tcp port 139 open add Windows tcp port 137 open add Windows udp port 137 open add Windows udp port 135 open set Windows default tcp action reset set Windows default udp action reset bind 192.168.160.3 Windows bind 192.168.160.4 Windows create Router set Router Personality « Cisco IOS 11.3 – 12.0(11) » set Router default tcp action reset set Router default tcp action reset ère #Créer 1 machine windows ème #Créer 2 machine windows #Créer un routeur CISCO #Choisir le type de routeur set Router UID 32767 GID 32767 add Router tcp port 23 « perl scripts/routertelnet.pl » bind 192.168.160.100 Router #L’adresse du routeur route entry #Réseau accéder par routeur route 192.168.160.100 link 192.168.161.0/16 #Réseau accéder par routeur bind 192.168.161.11 Windows #Créer 3ère machine windows Bind 192.168.161.12 Windows #Créer 4ère machine windows 192.168.160.100 network 192.168.160.0/16 #Comportement du routeur La figure suivante illustre le réseau virtuel avec routeur Le fichier de configuration est honeyd.conf.router Configurer un réseau virtuel relié aux machines réelles Dans cette architecture, j’utilise celle précédente et ajoute une machine réelle ayant l’adresse IP 192.168.160.2/24 en ajoutant une seule ligne dans le fichier de 39 configuration : bind 192.168.160.2 to ethernet Dans notre cas, l’ethernet est vmnet1 car j’utilise vmware. Le fichier de configuration est honeyd.conf.reel Configurer un réseau virtuel complexe Dans cette configuration, je vais utiliser les empreints différents pour créer les machines Windows ainsi que machines Linux. Il y a un routeur dans le réseau et une machine réelle Windows. Cette configuration va être utilisée pour tester. Le nom du fichier configuration est honeyd.conf.compl create Windows set Windows personality « Microsoft Windows XP SP1 » #Empreints add Windows tcp port 80 « sh scripts/web.sh » #Comportement du port (serveur de web simulé) add Windows tcp port 139 open add Windows tcp port 137 open add Windows udp port 137 open add Windows udp port 135 open set Windows default tcp action reset set Windows default udp action reset bind 192.168.160.3 Windows bind 192.168.160.4 create Windows set Windows #Créer un template Windows ère #Créer 1 machine windows ème #Créer 2 machine windows #Créer un template personality « Microsoft Windows XP 80 #Empreints SP1 » add Windows tcp port 139 open add Windows tcp port 137 open add Windows udp port 137 open add Windows udp port 135 open set Windows default tcp action reset set Windows default udp action reset bind 192.168.160.5 Windows #Créer 1ère machine Linux bind 192.168.160.6 Windows #Créer 2ème machine Linux 40 create Router set Router #Créer un routeur CISCO Personality « Cisco IOS 11.3 – #Choisir le type de routeur 12.0(11) » set Router default tcp action reset set Router default tcp action reset set Router UID 32767 GID 32767 add Router tcp port 23 « perl scripts/routertelnet.pl » bind 192.168.160.100 Router #L’adresse du routeur route entry #Réseau accéder par routeur route 192.168.160.100 link 192.168.161.0/16 bind 192.168.161.11 bind 192.168.161.12 192.168.160.100 network 192.168.160.0/16 Windows Windows #Comportement du routeur #Réseau accéder par routeur ère machine windows ère machine windows #Créer 3 #Créer 4 Outils aide à créer fichier de configuration honeyd C’est un petit outil qui permet de créer facilement un fichier de configuration dans 5 minutes grâce à l’interface graphique. Il est développé dans un environnement de KDevelop et QT sous Mandrake 9.2 pendant le stage. Il distingue de trois catégories principales : Template, bind et route. Ainsi que les commandes : add, set … Il fournie aussi des fonctions externes comme ouvrir les fichier de configuration, sauvegarder une configuration sous un fichier, arranger les lignes dans la configuration… C’est la version 1 donc il y a encore des restrictions. Mais dans la version suivante, je les corrigerai. 41 L’image suivant illustre l’interface principale de cet outil. Lancer Honeyd et analyser les données capturées Condition préalable: - La machine host est une machine Linux Redhat 9.0 avec l’adresse IP : 192.168.160.1 dans laquelle on installe arpd et honeyd. Une autre machine, appelant machine de teste fonctionne sous Windows 98 sous forme d’une machine virtuelle Vmware avec l’adresse IP 192.168.160.2. Dans laquelle, on installe le logiciel Superscan pour analyser le réseau virtuel et faire un scan sur les portes de la machine virtuelle créée par honeyd. 42 Attention: - Arpd va détruire le système DHCP dans le même réseau. C’est pourquoi je choix le réseau 192.168.x.x pour simuler le réseau virtuel. La machine hôte ne peut pas ping vers les machines virtuelles à cause de la technique de la commande Ping. Pour la commande Ping, elle envoie des requêtes ICMP sur le réseau. Toutes les machines sur le même réseau recevraient ces requêtes sauf elle. Donc, aprd sur le hôte ne reçoit aucune requête ICMP. C’est la raison pour laquelle les machines virtuelles ne répondent pas le hôte. Lancer # arpd 192.168.160.2-192.168.160.6 192.168.160.100 192.168.161.11192.168.161.12 # ./honeyd –f honeyd.conf.compl –a nmap.assoc –p nmap.prints –x xprobe2 –0 p0.os –l /var/log/honeyd.log 192.168.160.2-192.168.160.6 192.168.160.100 192.168.161.11-192.168.161.12 Analyser les données capturées D’abord il faut faire une petite attaque vers notre réseau virtuel pour obtenir des données. Le scénario est: - Lancer la commande Ping - Utiliser le navigateur de Web - Lancer la commande Ftp - Lancer la commande Telnet - Lancer le logiciel SuperScan Les adresses IP utilisées dans le scénario sont dans la table suivante Machine Description Services 192.168.160.1 Machine host – réelle 192.168.160.2 Machine teste – réelle (machine VMWare) 192.168.160.3 Machine virtuelle – Windows Web 192.168.160.4 Machine virtuelle – Windows Web 192.168.160.5 Machine virtuelle – Linux Suse 7.0 Syslogd, web, ftp... 192.168.160.6 Machine virtuelle – Linux Suse 7.0 Syslogd, web, ftp... 43 Machine Description 192.168.160.100 Routeur Services Telnet Maintenant, on va voir les données capturées et les analyser. Premièrement, les empreintes de la commande Ping Quand on lance la commande Ping de 192.168.160.2 (machine ou on teste) vers la machine 192.168.160.3, arpd sur la machine host (192.168.160.1) recevra une question « Qui a l'adresse IP 192.168.160.3 ». Il va répondre: Machine 192.168.160.3 se situe sur l'adresse 00:50:56:c0:00:01. arpd[6304]: arpd_send: who-has 192.168.160.3 tell 192.168.160.1 arpd[6304]: arpd_send: who-has 192.168.160.3 tell 192.168.160.1 arpd[6304]: arp reply 192.168.160.3 is-at 00:50:56:c0:00:01 Dès maintenant, arpd rédige la gestion du IP 192.168.160.3 à honeyd. Quand à honeyd, il va répondre à la commande Ping honeyd[9200]: Sending ICMP Echo Reply: 192.168.160.3 -> 192.168.160.2 honeyd[9200]: Sending ICMP Echo Reply: 192.168.160.3 -> 192.168.160.2 honeyd[9200]: Sending ICMP Echo Reply: 192.168.160.3 -> 192.168.160.2 Les messages ci-dessus sont les messages dans le mode debug, mais les messages importants se trouvent dans le fichier honeyd.log sont: 2004-05-20-21:33:47.0992 honeyd log started -----2004-05-20-21:34:17.0037 icmp(1) - 192.168.160.2 192.168.160.3: 8(0): 60 2004-05-20-21:34:18.0081 icmp(1) - 192.168.160.2 192.168.160.3: 8(0): 60 2004-05-20-21:34:19.0118 icmp(1) - 192.168.160.2 192.168.160.3: 8(0): 60 On peut trouver la date (et l'heurs), protocole (icmp), IP source et IP destination... L'image suivante va nous montrer en détail: 44 Deuxièmement, on va tester si le port 80 est fonctionne ou non pour les machines simulées Honeyd a déjà noté toutes les connexions vers la machine 192.168.160.5 (On peut la considérer comme le serveur de Web car sur cette machine honeyd simule un service de Web) 2004-05-20-21:34:56.0695 [Windows XP SP1] 2004-05-20-21:34:56.0773 [Windows XP SP1] 2004-05-20-21:35:01.0739 [Windows XP SP1] 2004-05-20-21:35:03.0078 [Windows XP SP1] 2004-05-20-21:35:11.0735 657 2004-05-20-21:35:12.0503 658 2004-05-20-21:35:17.0414 661 2004-05-20-21:35:18.0344 tcp(6) S 192.168.160.2 2556 192.168.160.5 80 tcp(6) S 192.168.160.2 2557 192.168.160.5 80 tcp(6) S 192.168.160.2 2558 192.168.160.5 80 tcp(6) S 192.168.160.2 2559 192.168.160.5 80 tcp(6) E 192.168.160.2 2557 192.168.160.5 80: 247 tcp(6) E 192.168.160.2 2556 192.168.160.5 80: 248 tcp(6) E 192.168.160.2 2558 192.168.160.5 80: 251 tcp(6) E 192.168.160.2 2559 192.168.160.5 80: 249 45 659 Quatre premières lignes nous montrent qu'il y a quatre requêtes de 192.168.160.2 au 192.168.160.5 sur le port 80 avec l’état « Start » Après une période de temps, la machine 192.168.160.2 ferme les connexions, on reçoit donc quatre messages dans le fichier log (indiquer par l’état « End ») Les images suivantes illustrent deux fenêtres du navigateur de Web dont les résultats simulés 46 Troisièmement: Maintenant on va essayer avec la commande « ftp » 2004-05-20-21:36:00.0834 tcp(6) S 192.168.160.2 2560 192.168.160.6 21 [Windows XP SP1] La machine cible a l'adresse 192.168.160.6. Le message ci-dessus est extrait dans le fichier honeyd.log et l'image suivante montre ce que l'on a fait avec la commande « ftp » 47 Quatrièmement: Maintenant c'est la commande « telnet » Le message suivant est extrait dans le fichier honeyd.log qui montre l'empreinte de la commande « telnet » 2004-05-20-22:12:36.0278 tcp(6) S 192.168.160.2 3031 192.168.160.100 23 [Windows XP SP1] La machine cible a l'adresse 192.168.160.100. C'est le routeur virtuel ou on simule le service « telnet ». Les messages suivants sont les messages en mode « debug » du honeyd. honeyd[9816]: Connection request: tcp (192.168.160.2:3029 192.168.160.100:23) honeyd[9816]: Connection established: tcp (192.168.160.2:3029 192.168.160.100:23) <-> /usr/bin/perl scripts/routers/cisco/router-telnet.pl - 48 La machine 192.168.160.2 envoie une requête au routeur (192.168.160.100) sur le port 23 pour demander d'établir une connexion. Après avoir établie une connexion, l'attaquant va être tomber sur le service simulé: router-telnet.pl. L'image suivante montre ce que l'on a fait avec la commande « telnet » En fin: On va lancer un scan sur la machine 192.168.160.5 pour trouver toutes les informations nécessaires: Les services, les ports ouverts, quel système d'exploitation utilisé. 49 Grâce au superscan, on peut trouver le système d'exploitation sur la machine 192.168.160.5. Plus détaillé, la version du noyau sur cette machine est 2.4.7 (0). On voit également les services FTP, SSH, Telnet, SMTP, IMCP HTTP... Les attaquants qui n'ont pas d'expérience se sont trompés facilement que la machine 192.168.160.5 est une machine réelle. 50 Annexes Les fragments techniques (Utilise tous les textes fournis sur l’internet) 1. Tiny fragments D'après la RFC (Request For Comment) 791 (IP), tous les noeuds Internet (routeurs) doivent pouvoir transmettre des paquets d'une taille de 68 octets sans les fragmenter d'avantage. En effet, la taille minimale de l'en-tête d'un paquet IP est de 20 octets sans options. Lorsqu'elles sont présentes, la taille maximale de l'en-tête est de 60 octets. Le champ IHL (Internet Header Length) contient la longueur de l'en-tête en mots de 32 bits. Ce champ occupant 4 bits, le nombre de valeurs possibles vaut de 2^4 - 1 = 15 (il ne peut pas prendre la valeur 0000). La taille maximale de l'en-tête est donc bien 15*4 = 60 octets. Enfin, le champ Fragment Offset qui indique le décalage du premier octet du fragment par rapport au datagramme complet est mesuré en blocs de 8 octets. Un fragment de données occupe donc au moins 8 octets. Nous arrivons bien à un total de 68 octets. L'attaque consiste à fragmenter sur deux paquets IP une demande de connexion TCP. Le premier paquet IP de 68 octets ne contient comme données que les 8 premiers octets de l'en-tête TCP (ports source et destination ainsi que le numéro de séquence). Les données du second paquet IP renferment alors la demande de connexion TCP (flag SYN à 1 et flag ACK à 0). Or, les filtres IP appliquent la même règle de filtrage à tous les fragments d'un paquet. Le filtrage du premier fragment (Fragment Offset égal à 0) déterminant cette règle elle s'applique donc aux autres (Fragment Offset égal à 1) sans aucune autre forme de vérification. Ainsi, lors de la défragmentation au niveau IP de la machine cible, le paquet de demande de connexion est reconstitué et passé à la couche TCP. La connexion s'établit alors malgré le filtre IP. Les figures 1 et 2 montrent les deux fragments et la figure 3 le paquet défragmenté au niveau de la machine cible : 51 Fig.1: Fragment 1 Fig.2: Fragment 2 Fig.3: Paquet défragmenté 52 2. Fragment overlapping Toujours d'après la RFC 791 (IP), si deux fragments IP se superposent, le deuxième écrase le premier. L'attaque consiste à forger deux fragments d'un paquet IP. Le filtre IP accepte le premier de 68 octets (voir Tiny Fragments) car il ne contient aucune demande de connexion TCP (flag SYN = 0 et flag ACK = 0). Cette règle d'acceptation s'applique, là encore, aux autres fragments du paquet. Le deuxième (avec un Fragment Offset égale à 1) contenant les véritables données de connexion est alors accepté par le filtre IP. Ainsi, lors de la défragmentation les données du deuxième fragment écrasent celles du premier à partir de la fin du 8ème octet (car le fragment offset est égal à 1). Le paquet rassemblé constitue donc une demande de connexion valide pour la machine cible. La connexion s'établit malgré le filtre IP. Les figures 4 et 5 montrent les deux fragments et la figure 6 le paquet défragmenté au niveau de la machine cible : Fig.4: Fragment 1 53 Fig.5: Fragment 2 Fig.6: Paquet défragmenté 54 Références http://www.xphys.tuwien.ac.at/ mike/security/network-security.html http://staff.washington.edu/dittrich/misc/stacheldraht.analysis http://staff.washington.edu/dittrich/misc/trinoo.analysis http://staff.washington.edu/dittrich/misc/tfn.analysis http://staff.washington.edu/dittrich/misc/trinoo.analysis http://staff.washington.edu/dittrich/misc/tfn.analysis http://staff.washington.edu/dittrich/misc/stacheldraht.analysis http://www.cert.org/advisories/CA-2000-01.html http://www.cert.org/advisories/CA-99-17-denial-of-service-tools.html http://www.cert.org/advisories/CA-98-13-tcp-denial-of-service.html http://www.cert.org/incident_notes/IN-99-07.html http://www.sans.org/y2k/solaris.htm http://www.tracking-hackers.com/papers/honeypots.html http://www.honeypots.net/ http://www.rit.edu/~arl7969/whitepapers/alamb-4-2004.html http://www.rit.edu/~arl7969/whitepapers/manuzis-2-22-2003.html http://www.rit.edu/~arl7969/whitepapers/manuzis-7-5-2002-1.html http://www.rit.edu/~arl7969/whitepapers/mcooper-4-2002.html http://www.rit.edu/~arl7969/whitepapers/sholcroft-4.1-2002.html http://www.rit.edu/~arl7969/whitepapers/sholcroft-4-2002.html http://www.rit.edu/~arl7969/whitepapers/alamb-3-2002.html http://www.rit.edu/~arl7969/whitepapers/alamb-12-2001.html http://project.honeynet.org/papers/virtual/ http://project.honeynet.org/papers/index.html http://project.honeynet.org/ http://www.honeynet.org/papers/ http://www.linuxsecurity.com/feature_stories/feature_story-100.html http://www.packetfu.org/hnd.html http://www.epmhs.gr/honeynet/ 55