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
Trang 1RAPPORT 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
Paris, jenvier - juillet 2004
Ecole Nationale Supérieure des Télécommunications Institut de la Francophonie
pour l’Informatique
Trang 2Sujet
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
Trang 3Table 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
Trang 4Valeurs 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
Trang 5Introduction
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
Trang 6Merci également à toutes les personnes dans mon bureau qui m’a donné un environnement de travail très agréable
Trang 7Partie 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)
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
Trang 8ne 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, ó 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
ATM Sniffer Network
Analyzer
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
Technologies
ftp.klos.com/demo/pvdemo.zip Ce sniffer est basé sur DOS, idéal pour
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
Trang 9L'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
Trang 10donc 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'ó 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
Trang 11virus, 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 ó 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 dessus 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
au-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
Trang 12Le 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
ó 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 semi- ouverte 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
Trang 13d'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 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
Trang 14entiè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
- 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
Trang 15Partie 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
Trang 16Les 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'ó 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
Trang 17Là 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
ó 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
Trang 18Le 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:
MF=1 Offset=0 Taille=65000
Donnée
MF=0 Offset=65000 Taille=1000
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_datasize-second_offset, second_datasize);
Le variable first_hdr->ih_length est défini comme un variable à 16 bits
correspond à une valeur 65535 bits
Trang 19Windows 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);
Donnée
MF=0 Offset=500 Taille=400
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
Trang 20= 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):
Trang 21premiè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
Trang 22Mode 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
Trang 23dites 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
- 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
Client
Victime
Trang 24L’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
Trang 25Toutes 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)
Trang 264 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 »
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
Victime
Trang 27processus 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
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 :
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