Paquets Ip Anormaux
par Karen Frederick
Derniere modification le Vendredi 13 Octobre 2000

Traduction: skoop@users.sourceforge.net
Derniere modification: 21/04/2001


Introduction

Cet article fera part de certaines caractéristiques de paquets (IP) anormaux/malveillants, c'est le premier d'une série de tutorielles qui auront pour but d'en apprendre plus aux administrateurs sur la détection d'intrusion au niveau IP. Comme l'utilisation de systèmes de détection d'intrusion devient plus répandue, les administrateurs système se doivent d' apprendre comment les employés efficacement. Malheureusement, beaucoup d'administrateurs n'ont pas de connaissances approfondies concernant l'IP. Ainsi, bien qu'un IDS puisse produire des alertes concernant des scans particuliers et/ou des attaques, il est possible qu'un admin ne sache pas comprendre la signification de ces alertes.

Le protocole IP est définit dans les documents RFC (Request for Comments) se situant à http://www.ietf.org/rfc.html

Pour cet article, nous définissons les paquets anormaux comme étant ceux qui violent ces standards. Les paquets anormaux peuvent être produits a cause de problèmes bénins comme par exemple des routeurs mal fonctionnant mais proviennent généralement d'attaques. L'anomalie est souvent intégrée dans le paquet exprès afin que le paquet puisse éviter d' être bloqué par un firewall (coupe-feu) ou le système de détection d'intrusion. Dans d'autres cas, des paquets anormaux sont employés pour essayer crasher des systèmes. Une grande place pour voir des exemples réels de paquets incorrects est l'Institut SANS Global Incident Analysis Center.

Protocol IP: Types

Il existe beaucoup de protocoles IP différents. vous êtes probablement familier avec au moins trois d'entre eux: le Transmission Control Protocol (TCP), le User Datagram Protocol (UDP) et l' Internet Control Message Protocol (ICMP). Il existe des milliers d'autres protocole IP ; des exemples que vous connaissez sûrement incluent les protocoles de routage comme l' IGRP, EIGRP et l' OSPF. Chaque type de protocole ip a sa propre valeur, appelé Internet Protocol Number. Ils sont importants à connaître car certains systèmes loguent leurs paquets par numéros et non pas par l'abréviation correspondante. Dans cet article, nous reverrons quelques caractéristiques des types de protocoles les plus utilisés, qui ont pour type 1 (ICMP), type 6 (TCP) et type 17 (UDP). Une liste de tous ces numéros IP est disponible à ftp://ftp.isi.edu/in-notes/iana/assignments/protocol-numbers

Le RFC 791 décrit un champ de 4 Bit utilisé pour identifier la base du protocole dans les paquets IP. Le Protocole Internet avec lequel nous sommes familiers a pour version 4. La nouvelle version d'IP, qui sera déployé dans les années à venir, est la numéro 6. Normalement, vous ne risquez pas de voir un paquet avec une version autre que 4, mais il se peut que la version 6 soit rencontré (rarement). Si vous voyez un paquet ayant une version autre que 4 ou 6, vous pouvez être sur qu'il est corrompu. Pour plus d'informations, visiter http://www.isi.edu/in-notes/iana/assignments/version-numbers.

Adresses IP

Certaines adresses Ip désignées par l' IANA (Internet Assigned Numbers Authority) sont réservées pour les réseaux locaux uniquement et non pas pour une utilisation sur le réseau d' Internet. Les gammes d'adresse réservées sont : 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255 et 192.168.0.0 - 192.168.255.255. (Lire le RFC 1918, "Address Allocation for Private Internets", a http://www.isi.edu/in-notes/rfc1918.txt pour plus d'informations.) On ne devrait jamais voir ces adresses sur Internet et si on les rencontre c'est parfois due a une erreur matériel (mal configuré) ;par exemple, un firewall peut accidentellement autoriser des adresses locales a accéder a Internet. Ainsi que des machines qui tentent sans succées de s'attribuées une adresse Internet valide en passant par un serveur DHCP, se voient attribué des adresses du sous-reseaux 169.254.x.x Une autre raison de rencontrer ces adresses sur Internet peuvent venir du fait que les paquets ont été modifié a la source par un attaquant. cette technique est plus connu sous le nom de Spoofing.

La raison principal pour utiliser le Spoofing IP est de rendre plus dure la recherche de l'ip réelle d'un attaquant. Les attaquants peuvent employer des adresses dans les gammes d' adresses réservées inscrites ci-dessus ; plus généralement, ils emploient les adresses régulières qui appartiennent à quelqu'un d'autre. Ainsi si votre système est attaqué, vous pouvez retrouver l' IP d' un tiers innocent. Un autre type d'attaque de spoofing IP, appelée Land attack, emploie des paquets ayant pour source et destination la même valeur. Les paquets doivent toujours avoir une adresse source différente de l'adresse de destination si ceux-là proviennent d'Internet, donc votre matériel réseau (cartes ethernet ...) doit rejeter un paquet où ces valeurs sont les mêmes.

-(Mix du paragraphe original dans celui du dessus).-

Paquets TCP

TCP est un protocole orienté connexion il emploie des drapeaux (flags) divers pour indiquer qu'une connexion est commencé ou fini, ou que les données sont prioritaires ou non. Beaucoup d'attaques sont basées sur la modification de ces drapeaux TCP. Les certaines combinaisons illégales de drapeaux TCP peuvent être capables d'aider des paquets à éviter d' être détecter par des firewalls et/ou des systèmes de détection d'intrusion ; d'autres combinaisons illégales peuvent être employées pour faire planter le système d'exploitation.

Les Spécifications du Protocole TCP sont définies dans le RFC 793. Ce RFC ainsi que d'autres définit comment les systèmes doivent répondre aux paquets légitimes, mais ils n'expliquent pas comment les systèmes doivent manipuler les combinaisons illégales de drapeaux. Par conséquent, des systèmes d'exploitation répondent différemment aux combinaisons de drapeau illégales. Les attaquants peuvent exploiter cela pour déterminer quel un dispositif est employé sur tel ou tel système d'exploitation.

Au moins un de ces six drapeaux doit être dans chaque paquet TCP ; chaque drapeau correspond à un bit particulier placer dans l'en-tête TCP. Les six drapeaux sont :

  • SYN (Synchronization) - Introduit une connexion TCP.
  • ACK (Acknowledgment) - Indique que la valeur dans le champ "acknowledgment number" est valide.
  • FIN (Finish) - Finit gracieusement une connexion TCP.
  • RST (Reset) - Termine immédiatement une connexion TCP.
  • PSH (Push) - Dis au récepteur d'envoyer les données aussi rapidement que possibles.
  • URG (Urgent) - Indique que le pointeur "Urgent" est valide ; souvent causé par une interruption.

Avant l'examen des combinaisons de drapeau incorrectes, regardons les normaux :

  • SYN, SYN ACK, et ACK sont utilisé dans le processus en 3 temps qui permet d'établir une connexion TCP.
  • Exception pour le paquet initial SYN, chaque paquet dans la connexion doit avoir le bit ACK.
  • FIN ACK et ACK sont employés pendant le teardown gracieux d'une connexion existante.
  • RST ACK peuvent être utilisées pour terminer une connexion existante.
  • Des paquets pendant la partie de "conversation" de la connexion (après le processus a 3 temps mais avant le teardown ou la terminaison) contiennent juste un ACK par défaut. Facultativement, ils peuvent aussi contenir PSH et/ou URG.
  • Les paquets ayant une autre combinaison de drapeau peuvent être classés comme anormaux. Voici ceux qui arrivent le plus souvent :
    • SYN FIN est probablement la combinaison "illégale" la plus connut. Rappelez-vous que le drapeau SYN est utilisé pour débuter une connexion et FIN pour la fermer. Il est absurde d'exécuter ces deux actions en même temps. Beaucoup de scanners de ports utilise ce type de paquet car beaucoup d'outil de détection d'intrusion ne pouvait détecter ce type de scan auparavant. Si vous rencontrez ce type de paquet, vous pouvez être sur qu'il est malveillant.
    • SYN FIN PSH, SYN FIN RST, SYN FIN RST PSH, et d'autres variantes de SYN FIN existent aussi. Ces paquets peuvent être employés par les attaquants qui sont conscients que les systèmes de détection d'intrusion peuvent chercher des paquets avec juste le Bit SYN et le bit FIN, sans autres bits supplémentaires. De nouveau, ceux-ci sont clairement malveillants.
    • Des paquets ne devraient jamais contenir uniquement un drapeau FIN. Ceux-là sont souvent utilisés par des scanners de ports, des détecteurs de configuration réseau ou d’autres activités rusées.
    • Quelques paquets n'ont absolument aucun drapeau du tout ; ceux-ci sont mentionnés comme des paquets "null". Il est illégal d'avoir un paquet "null" qui transite sur le réseau.

    En plus des six drapeaux présentés ici, les paquets TCP ont deux bits supplémentaires qui sont réservés pour une utilisation future. Ils sont connuent sous le nom de "reserved bits". Si un paquet a un de ces bits dans son en-tête alors celui-ci est probablement malveillant.

    D'autres caractéristiques de paquets anormaux peuvent être notés :

    • Les paquets ne doivent jamais avoir pour adresse source ou destination 0.
    • Le numéro de reconnaissance (ACK) ne doit pas être de 0 lorsque celui-ci est activé.
    • Un paquet contenant uniquement le drapeau SYN, qui est envoyé lors d'une nouvelle connexion, ne doit jamais contenir de données.
    • Les paquets ne doivent pas avoir pour adresse de destination une adresse Broadcast, se terminant génerallement par .0 ou .255. (Vous n'êtes probablement pas familier avec les adresses Broadcast se terminant par .0, celles-las sont assez anciennes). Les Broadcast ne sont pas normalement exécutées en utilisant TCP.

    Beaucoup des outils employés par les attaquants pour parcourir et explorer vos réseaux sont basés sur l'utilisation de paquets TCP incorrects. Un grand pourcentage d'alertes détectées par des systèmes de détection d'intrusion implique ces types de paquets, donc il est impératif d'être capable de les identifier et de comprendre leur but. En configurant votre système de détection d'intrusion pour être alerté sur tous les paquets incorrects TCP, vous pouvez analyser l'activité malveillante que vous ne voyiez probablement pas précédemment.

    Paquets UDP

    À la différence de TCP, UDP est un protocole de sous connexions. UDP n'a pas de drapeaux ni de "reserved bits" contrairement au TCP. Cependant TCP et UDP sont utilisés sur des ports de destination et de source. Comme TCP, les paquets UDP ne doivent jamais avoir un port source/destination à 0. Les paquets UDP peuvent aussi être fragmentés avec malveillance ; voir la section "de Fragmentation" ci-dessous pour plus d'information sur cette technique.

    Paquets ICMP

    ICMP est employé pour passer un message d'erreur entre deux hôtes ou un hôte et un dispositif réseau (comme un routeur). Etant donné que UDP et IP sont des protocoles de sous-connections (connectionless), ils comptent sur ICMP pour transmettre des messages d'erreur sur leur défense. Pour éviter des boucles de message d'erreur potentielles, les réponses ne sont jamais envoyées aux messages d'erreur ICMP. ICMP n'a aucun numéro de port ; il emploie des types de message ICMP ainsi que des codes au lieu de cela. Une autre caractéristique remarquable d'ICMP est qu'il supporte le trafic d'émission. Etant donné que les paquets ICMP ne sont pas très compliqué, il n'y a pas beaucoup de manières de les rendre anormaux.

    Un type de message ICMP qui est employé avec malveillance est la redirection. Les messages "ICMP redirect" sont envoyés d'un routeur vers une machine pour lui signaler que passer par un routeur différent serait plus rapide pour atteindre une adresse ip particulière. Quelques attaques comme WinFreeze emploient des messages ICMP redirect faux pour essayer de convaincre un hôte que la machine de l'attaquant est le routeur le plus approprié pour n'importe quel adresse. Evidemment ce type de paquets doit être absolument détecter.

    La plupart des paquets ICMP sont composés d'une petite en-tête et ainsi que d'un champ de données (payload) ; par exemple, la plupart des paquets de demande d'écho d'ICMP ont une en-tête de 8 octets et un champ de données de 56 octets.Les paquets ICMP qui sont significativement plus grands que la normale doivent être considérés comme soupçonneux. Aussi, quelques types de messages ICMP, comme des demandes d'écho, ne doivent comporter aucune donnée. Quelques applications malveillantes comme les différents programmes de saturation réseau (Denial of Service) ou de tunneling, utilise des paquets ICMP comme étant ceux qui occuperont l'IDS ou autres pour cacher le reste du trafic qui pourrait être encore plus dangereux. Donc une réponse d'écho d'ICMP pourrait en réalité contenir un protocole IP complètement différent dans ses do! nnées. Si vous contrôlez vos systèmes pour des grands paquets ICMP ou pour des paquets des types ICMP spécifiques qui ne doivent pas contenir des données mais le font, vous devez être capables de détecter ce type de trafic.

    Fragmentation

    Quand un paquet IP est trop grand pour être transmis comme une entité, il doit être coupé en des pièces plus petites qui peuvent être envoyées au travers du réseau. Chaque morceau d'un paquet est mentionné comme un fragment. La fragmentation est utilisée par tous les protocoles dont nous discutons - TCP, UDP et ICMP - bien qu'il arrive le plus fréquemment pour TCP. Cependant, les attaquants peuvent créer des paquets artificiellement fragmentés. Dans quelques cas, c'est fait pour essayer de faire planter des systèmes; dans d'autres cas, c'est utilisé pour éviter des règles de firewalls ou éviter des systèmes de détection d'intrusion. Quelques firewalls ainsi que des systèmes de détection d'intrusion ne rassemblent pas chaque paquet, donc ils peuvent seulement considérer les propriétés de chaque fragme! nt individuel.

    Un type de fragmentation malveillante implique les fragments qui ont des offset illégaux. Une valeur d' offset indique où les données d'un fragment doivent être placées dans un paquet rassemblé. Le premier fragment semble être normal, sauf qu'il est habituellement très petit. Le deuxième fragment a un offset d' une valeur de données qui est moins grande que la longueur des données dans le premier paquet. Ainsi si le premier fragment avait 24 octets de données, le deuxième fragment pourrait avoir un offset de 20 octets. Cela signifierait que les données dans le deuxième fragment recopieraient les quatre derniers octets des données du premier fragment. Si le paquet fragmenté était TCP, alors le premier fragment contiendrait son en-tête TCP. Le but de la valeur de l'offset du deuxième fragment serait de recopier la partie de l' en-t&ecir! c;te TCP du premier paquet, comme le numéro de port de destination, quand le paquet sera rassemblé à la destination. Donc un attaquant pourrait envoyer un paquet fragmenté passant votre coupe-feu et se dirigeant vers votre serveur Web sur le port 80, mais quand le serveur Web rassemblera les fragments, alors le paquet final pourrait en réalité aller à un port complètement différent.

    Le même type d'attaque peut être employé pour faire planter des systèmes. Dans des systèmes d'exploitation quelque peu plus vieux, quand l'hôte a reçu un paquet et tente de reconstruire un tel paquet, il calcule une longueur négative pour le deuxième fragment. On passe cette valeur à une fonction qui doit faire une copie de la mémoire. Malheureusement, la copie de cette même mémoire ne peut pas manipuler un nombre négatif, donc il pense que le petit nombre négatif est en réalité un énorme nombre positif.

    Un second type d'attaque faisant appel aux fragments est connu sous le nom d'attaque par fragment minuscule. Deux fragments TCP sont créés. Le premier est si petit qu'il n'inclut même pas l'en-tête TCP complète, et particulièrement le numéro de port de destination. Le deuxième fragment contient le reste de l'en-tête TCP, incluant cette fois-ci le numéro de port de destination. Certains firewalls et détecteur d'intrusion peuvent laisser passer un ou deux paquets et plus particulièrement si ils ne rassemblent pas le paquet avant de le laisser passer.

    Un autre type d'attaque implique l'envoi d'un paquet fragmenté anormalement grand. L'attaquant espère que quand l'hôte de réception recevra les fragments du paquet, il plantera en essayant de rassembler le paquet, puisque le paquet entier a une longueur illégale. (Pour information, les paquets ont des longueurs minimales et maximales.) L'exemple le plus connut de ce type est l'attaque Ping of Death. Il crée un paquet de demande d'écho d'ICMP qui est plus grand que la taille de paquet maximale de 65,535 octets.

    Quelques attaques emploient des paquets qui ne sont pas illégaux, mais qui ont de quoi être extrêmement soupçonneux. Par exemple, supposez que vous receviez un paquet fragmenté TCP qui contient uniquement le drapeau SYN. Puisque l'on ne permet pas à un paquet contenant seulement le drapeau SYN de porter n'importe quelles données, alors la fragmentation n'est pas exigée. Si vous rencontrez un tel paquet, traitez-le avec prudence.

    Ainsi comment pouvez-vous protéger votre réseau contre des attaques de fragmentation ? Comme mentionné précédemment, vous devez mettre en place des firewalls ainsi que des systèmes de détection d'intrusion qui peuvent rassembler les paquets fragmentés. Vous devez aussi configurer votre système de détection d'intrusion afin d' être alerté sur n'importe quels fragments étant plus petit que le fragment final dans un paquet. En temps normal, vous ne devez pas voir des petits fragments initiaux ; ceux-ci ont de grandes chances d' être malveillants. Aussi, n'oubliez pas de vous tenir au courant des patchs/correctifs concernant votre système ainsi que des mises-a-jour.

    Conclusion

    Qui que ce soit étant impliqué dans la détection d'intrusion doit avoir une connaissance solide de ce que le trafic IP normal et incorrect est. Ce n'est pas rare pour un administrateur système de détection d'intrusion d' obtenir de grandes alertes venant l'IDS mais de ne sachant pas comprendre le vrai sens. On espère qu'en étudiant plus le protocole IP et en pensant aux concepts présentés dans cet article, vous pourrez mieux interpréter ces alertes et analyser ce qui se passe réellement sur votre réseau.

    Karen Frederick est ingénieur en sécurité pour NFR Securité. Karen à un B.S. dans l'Informatique et achève sa thèse sur la détection d'intrusion a l'Université de l'Idaho. Elle à acquerit plusieurs certificats, incluant le "Microsoft Certified Systems Engineer + Internet", le "Check Point Certified Security Administrator," ainsi que le "GIAC Certified Intrusion Analyst". Karen fait partie des auteurs et rédacteurs de "Intrusion Signatures and Analysis", un livre sur la détection d'intrusion qui sera publiée en janvier 2001

  • copyright
    Interested in advertising with us?