Tải bản đầy đủ (.pdf) (55 trang)

Etude et analyse des attaques et des signatures dattaques etude bibliographique des parades au dos et DDoS etude des honeypots intégration des honeypots dans une architecture globale de protection

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (763.12 KB, 55 trang )

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 : />Voici ci-dessous une liste d'autres sniffers disponibles dans le commerce
Nom
ATM Sniffer Network
Analyzer

Adresse
Description
Décode plus de 250 protocoles

Shomiti Systems
Century LAN Analyzer



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



Fait une analyse d'environ 13
protocoles dont TCP/IP, Microsoft,
NFS, Novell

LANWatch



Marche sous DOS, Windows 9x et NT

EtherPeek



Pour Windows et plates-formes
Macintosh

Ethload

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 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


×