Protection Contre Les Attaques Ddos
Protection Contre Les Attaques Ddos
Protection Contre Les Attaques Ddos
Email : [email protected]
Sommaire
Remerciements.........................................................................................Erreur ! Signet non défini.
Introduction ...................................................................................................................................... 3
1. Une attaque connue : le déni de service ....................................................................................... 4
1.1. Qu’est ce que le déni de service............................................................................................ 4
1.2. Déni de service distribué....................................................................................................... 5
1.3. Les principaux types d’attaque ............................................................................................. 6
1.4. Historique des grandes attaques ............................................................................................ 7
1.5. La nouvelle arme des pirates ................................................................................................ 7
2. Le Syn Flooding........................................................................................................................... 8
2.1. Nature de l’attaque ................................................................................................................ 8
2.2. Réalisation de l’attaque ......................................................................................................... 8
2.3. Résultats de l’attaque .......................................................................................................... 10
2.4. Mesures de protection ......................................................................................................... 10
2.5. Détection de l’attaque ......................................................................................................... 17
2.6. Réaction de l’attaquant ....................................................................................................... 19
3. Les honeypots ............................................................................................................................ 19
3.1 Types de honeypots ............................................................................................................. 20
3.2 Les honeynets ...................................................................................................................... 21
3.3 Honeynets virtuels ............................................................................................................... 21
3.4 Avantages et inconvénients des honeypots ......................................................................... 22
3.5 Quelques solutions existantes .............................................................................................. 22
3.6 Honeyd ..................................................................................................................................... 23
4. Conclusion ................................................................................................................................. 25
Références ................................................................................................Erreur ! Signet non défini.
Annexes ......................................................................................................................................... 26
2
HISSEIN BANAYE HASSAN [email protected]
Introduction
Aujourd’hui, les réseaux informatiques sont de plus en plus développés, que ce soit chez les
particuliers ou dans le domaine professionnel. L’expansion des systèmes informatiques mais surtout
de l’internet ces dernières années ont rendu les réseaux indispensables pour les entreprises.
Mais si toutes ces innovations ont apporté de très nombreux avantages aux entreprises, elles
sont accompagnées de nouveaux risques inhérents à ces nouvelles technologies, le piratage
informatique. En effet, ces attaques sont de plus en plus nombreuses, efficaces et simple à mettre en
œuvre. Elles sont utilisées pour l’espionnage industrielle (vols d’informations confidentielles) ou
simplement du parasitage (destruction de données numériques ou arrêt de service). Dans le cadre de
notre projet, nous nous intéresserons aux attaques de types dénis de service, qui sont les plus
rependues. Ce type d’attaque n’est pas dangereux pour les données numériques du réseau, mais a pour
3
HISSEIN BANAYE HASSAN [email protected]
objectif de rendre indisponible un service proposé par une entreprise, par exemple un site de
commerce en ligne ; une entreprise ne peut se permettre d’avoir son site indisponible pendant
plusieurs heures ou jours.
Dans un premier temps, nous allons définir ce qu’est le déni de service, pour comprendre leur
fonctionnement et leur mise en œuvre. Nous verrons ensuite quels sont les moyens qui sont à notre
disposition pour se prémunir de ce genre d’attaque.
4
HISSEIN BANAYE HASSAN [email protected]
2. Les dénis de service par exploitation des vulnérabilités qui consistent à exploiter une faille du
système afin de le rendre inutilisable.
Le principe de ces attaques est d’envoyer des paquets ou des données de taille ou de constitution
inhabituelle, afin de provoquer une saturation ou un état instable des machines victimes et de les
empêcher ainsi d'assurer les services réseau qu'elles sont censés offrir. Dans certains cas extrêmes, ce
type d'attaque peut conduire au crash de la machine cible.
Le déni de service est donc un type d'attaque qui coûte très cher puisqu'il interrompt le cours normal
des transactions d’une organisation. Sachant qu’à l’heure actuelle, les sommes et les enjeux d’une
entreprise sont généralement énormes, cela peut poser de graves problèmes si une telle situation se
produit ne fût-ce que quelques minutes.
Les contre-mesures sont compliquées à mettre en place et doivent être spécifiques à un type d’attaque.
Etant donné que les attaques par déni de service utilisent les services et protocoles normaux d’Internet,
s'en protéger reviendrait à couper les voies de communications normales, sachant qu’il s’agit de la
raison d'être principale des machines concernées (serveurs web, serveur mail ...).
Il faut donc essayer se protéger au mieux de certains comportements anormaux, ce qui implique
notamment la vérification de l’intégrité des paquets, la surveillance du trafic, établissement de profils
types et de seuils, etc. On est donc loin de la protection absolue, mais il est tout de même possible de
se protéger de façon intelligente et flexible.
5
HISSEIN BANAYE HASSAN [email protected]
Ce type d’attaque reste très difficile à contrer ou à éviter : il s’agit donc d’une menace que beaucoup
craignent. En effet, cette attaque est très dévastatrice, et ne provient plus seulement d’une seule
machine, mais d’un réseau tout entier. Sachant le nombre de machines non sécurisées présentes sur
Internet, on peut imaginer l’ampleur d’une telle attaque.
Il n’est donc pas évident de s’en protéger étant donné que l'identité des attaquants change souvent et
que le temps nécessaire pour organiser une protection adéquate est bien souvent supérieur au temps
nécessaire pour mettre à mal la victime. Il est donc avant tout primordial de localiser l’initiateur et de
repérer sa signature. La détection d'un trafic suspect peut servir de prévention.
6
HISSEIN BANAYE HASSAN [email protected]
1.4. Historique des grandes attaques
• Nuke en avril 1992 (Icmp_unreach)
• Octopus en janvier 1996 (While – connect)
• Ping Of Death en décembre 1996
• Smurf en juillet 1997
• Land en octobre 1997 (Windows 95, NT 4.O et 98)
• Latierra en octobre 1997 (Plante Windows 95 et occupe 100% du CPU sur NT 4.0)
• Teardrop / Overdrop en décembre 1997 (Plante Linux, NT et 95)
• Syndrop en juin 1998 (Teardrop en tcp avec le bit syn et des champs invalides)
• Snork en septembre 1998 (Tueur de Windows NT, envoi de paquet RPC (135/UDP) de la part
d'un autre NT)
• Smack en octobre 1998 (Inondation de paquets ICMP-UNREACHABLE aléatoires)
• Attaque sur le serveur de mise à jour de Microsoft
• Attaque de sites Web connus tels que Google, Microsoft, Apple Computer …
• Attaques de type « ping flood » en octobre 2002 sur les serveurs racines DNS…
7
HISSEIN BANAYE HASSAN [email protected]
2. Le Syn Flooding
Parmi les attaques précédemment citées, nous nous sommes principalement focaliser sur les attaques
de type Syn Flood pour saturer un service en l'inondant de requêtes. Sa mise en œuvre a requis
l'utilisation d'attaques sous-jacentes comme l'IP-Spoofing, PING-Flood.
8
HISSEIN BANAYE HASSAN [email protected]
Lors du premier test, nous avons utilisé apache sur une machine Linux. Le but était de rendre ce
serveur indisponible lors de la demande de page web par des clients. Pour ce faire, nous avons utilisé
l'outil HPING, un utilitaire gratuit (http://www.hping.org) qui permet de remplacer la commande ping
en lui rajoutant plusieurs fonctionnalités et notamment l'envoi de requêtes TCP ou UDP suivant
différents paramètres :
• intervalle entre les paquets,
• adresse source,
• adresse destination,
• taille des paquets, les flags, etc.
Bien utilisé, HPING permet d'effectuer un déni de service avec par exemple la commande suivante:
hping3 -i u10 192.168.0.11 -p 80 -S
qui envoi à l'adresse 192.168.0.11, sur le port 80, des paquets de type SYN à l'intervalle de 10 micro-
secondes.
Mais avant tout, pour réaliser une attaque, la première étape consiste à scanner les ports ouverts d'une
machine donnée pour en chercher les vulnérabilités. Pour cela, nous avons utilisé l'outil nmap:
nmap -p 1-100 192.168.0.11
Il a donc le choix d'usurper l'identité d'une machine existante, auquel cas il doit l'empêcher de
répondre ; ou d'employer une adresse qui n'est pas attribuée, il n'y aura donc aucune machine pour
répondre à la victime.
9
HISSEIN BANAYE HASSAN [email protected]
Si une machine dont l'IP a été usurpée venait à recevoir les SYN-ACK provenant de la victime, c’est
à dire des paquets inattendus, elle y répondrait par un RST, ce qui mettrait fin à la connexion en
attente et libérerait les ressources (empêchant donc l'attaque de se réaliser correctement).
Pour s'en assurer, le pirate doit donc inonder la machine cible avec une énorme quantité de SYN, tout
en sachant que la machine usurpée était toujours active sur le réseau ; nous avons pu constater que
quelque soit le nombre de SYN envoyé, la cible parvenait toujours à traiter les RST reçus et donc à
libérer les ressources, ce qui prouve en effet qu'il faut réduire au silence la machine usurpée pour
qu'elle n'envoie aucun RST.
Mise en pratique :
Notre environnement de travail se composait de 3 machines du réseau local 192.168.0.10 :
• 192.168.0.10 : la machine attaquante,
• 192.168.0.11 : la machine cible de l'attaque et son serveur web apache,
• 192.168.0.12 : une machine dont on usurpe l'identité,
Avec l’utilitaire HPING, nous pouvons créer des paquets avec le flag SYN positionné et les envoyer
très rapidement grâce à la commande suivante :
hping –S –i u10 –p 80 –a 192.168.0.12 192.168.0.11
L’argument ‘S’ demande le positionnement du flag. Le second argument ’i’ précise l’intervalle entre
deux envois (ici en micro secondes). Le troisième ‘p’ spécifie le port destination. Le quatrième ‘a’
désigne une adresse source. Le dernier, enfin, donne l’adresse destination.
En pratique, pour une attaque «grandeur nature», il faut éviter que la machine dont nous avons usurpé
l'identité ne puisse réponde à la machine attaquée. Mais dans le cadre de notre projet, nous avons fait
une attaque dans un réseau local, il nous a donc suffit de déconnecter la machine dont nous avons
usurpé l'identité pour l'empêcher de répondre à la machine attaquée, et donc l'empêcher de libérer de
l'espace mémoire.
10
HISSEIN BANAYE HASSAN [email protected]
Une première mesure pour diminuer l'impact d'une attaque DOS est de modifier certains paramètres
propres aux connexions TCP: le tcp_max_syn_backlog situé dans le fichier :
/proc/sys/net/ipv4/tcp_max_syn_backlog
Le tcp_max_syn_backlog correspond au nombre maximum de requêtes d'une connexion mémorisée,
qui n'avait pas encore reçu d'accusé de réception du client connecté. La valeur par défaut est de 1024
pour des systèmes avec plus de 128 Mo de mémoire et 128 pour des machines avec moins de mémoire.
Si un serveur souffre de surcharge, on peut essayer d'augmenter ce nombre.
L'autre paramètre modifiable est le tcp_keepalive_intvl qui se trouve dans le fichier:
/proc/sys/net/ipv4/tcp_keepalive_probes
Ce nombre correspond au temps d'attente avant retransmission d'une requête qui n'a pas été acquitté.
Il est de 75 secondes par défaut. On peut le paramétrer à 30 secondes par exemple.
2.4.2. SYN-cookies
Le problème dans l'attaque de SYN FLOODING est le remplissage de la file d'attente des connexions
à moitiés ouvertes. A chaque fois qu'un paquet SYN est reçu les informations concernant la connexion
sont stockées dans une file. Une fois que l'attaquant à envoyé un nombre suffisant de paquets SYN la
file se rempli complètement et de nouvelles connexions ne sont plus possibles, ce qui engendre
l'indisponibilité du service. Il faudrait donc supprimer cette file d'attente. Le serveur n'a en fait pas
besoin de stocker les informations de la connexion, contenues dans le paquet SYN (adresse IP et port
du client et du serveur), vu qu'elles sont également présentes dans le paquet ACK envoyé par le client.
Un paquet ACK doit avoir les caractéristiques du paquet SYN/ACK envoyé par le serveur après une
demande de connexion. Ces informations sont les suivantes : adresse IP et port du client, adresse IP
et port du serveur, numéro de séquence du client, numéro de séquence du serveur. Ce dernier est
choisi par le serveur. Le but est de choisir ce numéro en fonction des autres informations qui restent
identiques pour le paquet SYN initial et le paquet ACK du client. Il suffit ensuite de ne traiter les
paquets ACK dont le numéro de séquence du serveur correspond à une fonction des autres
informations présentes dans ce paquet (adresses IP, ports). On a donc inséré des informations dans le
numéro de séquence du serveur, il n'y a donc plus besoin de stocker les informations de la connexion
dans une file d'attente.
Le numéro de séquence est calculé de la manière suivante :
• les 5 premiers bits valent t mod 32 où t est un compteur temporel allant de paire avec un secret.
• les 3 bits suivant correspondent au MSS (Maximum Segment Size) sélectionné par le serveur.
Cet encodage est indispensable puisque le serveur ne conserve pas l’état de la connexion en
cours de complétion et oublie donc plusieurs options TCP comme le MSS, le window scale
etc.
• les derniers 24 bits correspondent au secret sélectionné par le serveur.
Ce secret est un hash MD5 de l’adresse source, de l’adresse de destination, du port source, du port de
destination et enfin du compteur t.
Les SYN-cookies ne sont en fait activé que lorsqu'un flood est détecté, c'est-à-dire lorsque la file
d'attente des paquets SYN est pleine. Avant cela les demandes de connexions sont traitées de manière
tout à fait classique. Grâce à cette technique le service inondé de paquets SYN continuera à répondre
aux demandes de connexions licites.
Les SYN-cookies sont implémentés dans le noyau Linux ainsi que dans FreeBSD mais pas activés
par défaut. Ils ne sont pas présents sous Windows mais il existe d'autres façons de se protéger de cette
attaque sur ce système.
11
HISSEIN BANAYE HASSAN [email protected]
Malheureusement les SYN-cookies ne sont pas compatibles avec certaines options TCP, notamment
celles spécifiées dans les paquets SYN d'établissement de connexion, vu qu'ils ne conservent aucun
état avant la complétion effective de la connexion. Par exemple, un encodage du MSS dans le paquet
SYN à été adapté en utilisant 2 bits de numéro de séquence pour représenter 4 valeurs MSS communes
prédéfinies. Il ne peut pas non plus retransmettre de paquet SYN/ACK en cas de disparité d'états entre
le client et le serveur dû à des pertes par exemple. C'est principalement pour cette raison qu'ils ne sont
pas activés par défaut. Ils ne devraient l'être que sur des serveurs susceptibles d'être victime d'une
attaque de SYN flooding.
Un autre inconvénient des SYN-cookies est qu'ils utilisent un peu plus le CPU qu'une connexion ne
les utilisant pas, vu qu’ils doivent générer un numéro de séquence en utilisant certaines informations
du paquet SYN (adresses IP, ports). Mais cela reste raisonnable, ce n'est qu'une petite contrainte.
Enfin, étant donné que l'authentification de la connexion est basée uniquement sur la valeur du champ
d'acquittement du paquet ACK envoyé par le client, si un attaquant arrive à deviner le protocole
d'authentification utilisé par le serveur, il peut se faire passer pour n'importe qui. De plus il peut
également inonder de paquets ACK le serveur pour tenter de créer une connexion. Et enfin, un serveur
utilisant des syncookies ne pourra pas effectuer un filtrage de paquets ACK, ce qui peut permettre
éventuellement à un attaquant de passer à travers un pare-feu qui filtre les paquets SYN de demande
de connexion.
Pour activer les SYN-cookies :
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
Pour les désactiver :
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
2.4.3. Firewall
Les firewalls sont des équipements réseaux qui permettent de filtrer les paquets entrants et
sortants afin de prévenir toutes attaques de l’extérieur. Ils se basent sur un fonctionnement séquentiel
et un ensemble de règles pour autoriser seulement les connexions légitimes. Dans le cadre des DoS,
le problème majeur est que les attaquant utilisent des connexions légitimes pour perpétrer leurs
attaques. De plus, les firewalls ne peuvent pas efficacement différencier les connexions légitimes et
illégitimes. Par contre ils peuvent se révéler très efficace pour contrer un attaquant. En se basant sur
les informations fournis par des équipements de détections, on peut appliquer des règles très précises
qui bloqueront uniquement les connexions malfaisantes, en se basant sur le protocole, l’IP ou le port.
De nombreux firewalls hardware ou software permettent de se prémunir contre les attaquants. Parmi
eux, un des plus courants est le firewall intégré au noyau Linux : Netfilter et son interface iptables. Il
présente l’avantage d’être open source donc gratuit et d’être assez facile à appréhender. De plus, cela
n’a aucune influence sur sa puissance et sa modularité.
Quelques exemples de règles simples pour bloquer certaines attaques :
TPC syn flood:
iptables -A INPUT -p tcp --syn -m limit --limit 1/second -j ACCEPT
UDP flood:
iptables -A INPUT -p udp -m limit --limit 1/second -j ACCEPT
PING flood:
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
Bien maîtriser un firewall peut être une très bonne protection contre la majorité des attaques et des
attaquants. Il est nécessaire de surveiller les connexions qui transitent sur son réseau pour être capable
de bien se protéger contre toutes menaces.
12
HISSEIN BANAYE HASSAN [email protected]
2.4.4 Des moyens de préventions
2.4.4.1 La détection
Nous avons vu précédemment qu'il est très facile de mettre en place une attaque de type déni de
service qui soit efficace. Pour se prémunir de ces attaques, on doit pouvoir être capable de détecter de
manière efficace une attaque. Cependant, il peut être difficile d'identifier un paquet licite d'un paquet
provenant d'un attaquant. Mais il existe plusieurs outils qui permettent avec plus ou moins d'efficacité
de détecter/bloquer une attaque.
Un IDS (Intrusion Detection System) est un outil ou un ensemble d'outil dont l'objectif est de
surveiller le trafic entrant et sortant du réseau, dans le but de détecter une attaque ou une intrusion
dans le système et déclencher différentes alertes en fonction de sa configuration. Un IDS analyse le
réseau en temps réel, il nécessite donc des ressources matériels mais aussi en bande passante.
Il existe deux types d'IDS:
Les NIDS (Network Based IDS) assure la sécurité au niveau réseau. Il va donc écouter tout le trafic
du réseau et générer des alertes en cas de comportement anormal. Il se peut que l'on place plusieurs
NIDS dans le réseau comme le montre le schéma suivant:
Le HIDS (Host Based IDS) réside sur une machine en particulier et non sur tout un réseau. Il est ainsi
considéré comme un simple service, ou un démon d'un système. Le HIDS analyse le trafic de la
machine hôte pour déceler des intrusions ou des attaques (déni de service par exemple). A la
différence de l'NIDS, l'HIDS nécessite moins de ressources. Cependant, l'HIDS se basant sur l'état du
système à l'installation, il faut donc que ce système soit sain pour prévenir tout risque d'intrusion.
13
HISSEIN BANAYE HASSAN [email protected]
Un autre inconvénient, si l'on doit installer plusieurs machines, il faudra installer plusieurs HIDS. En
revanche, un HIDS détecte peu de faux positifs.
Les IDS fonctionnent en plusieurs temps:
Mais aujourd'hui, les IDS ont tendance à laisser leur place aux IPS (Intrusion Prevention System).
L’IPS est un Système de protection contre les intrusions et non plus seulement de reconnaissance et
de signalisation des intrusions comme la plupart des IDS le sont.
14
HISSEIN BANAYE HASSAN [email protected]
C'est pourquoi les IDS sont plus utilisés que les IPS, bien que certains IDS ont des fonctionnalités qui
permettent de bloquer le trafic illégitime comme un IPS. C'est notamment le cas de Snort, l'IDS que
nous avons utilisés dans le cadre de notre projet.
2.4.4.4 Snort
Définition de snort:
Snort est un système de détection d'intrusion libre sous licence GPL. À l'origine écrit par Martin
Roesch, il appartient actuellement à Sourcefire (dont l'acquisition par Check Point avait été prévue
en 2005 mais a été annulée par la suite). Des versions commerciales intégrant du matériel et des
services de supports sont vendues par Sourcefire.
Snort est capable d'effectuer aussi en temps réel des analyses de trafic et de logger les paquets sur un
réseau IP. Il peut effectuer des analyses de protocole, recherche/correspondance de contenu et peut
être utilisé pour détecter une grande variété d'attaques et de sondes comme des dépassements de
buffers, scans, attaques sur des CGI, sondes SMB, essai d'OS fingerprintings et bien plus. Cependant,
comme tout logiciel, Snort n'est pas infaillible et demande une mise à jour régulière.
Snort peut également être utilisé avec d'autres projets open sources tels que SnortSnarf, ACID, sguil
et BASE (Basic Analysis and Security Engine) afin de fournir une représentation visuelle des données
concernant les éventuelles intrusions.
Source: http://fr.wikipedia.org/wiki/Snort
Fonctionnement de Snort:
15
HISSEIN BANAYE HASSAN [email protected]
Figure 4 : fonctionnement de Snort.
A l'origine, l'IDS Snort avait une version modifiée appelée snort_inline qui transformait l'IDS en IPS.
Mais aujourd'hui, les deux projets ont été fusionnés et à l'installation de Snort, on peut lui ajouter des
options pour qu'il se comporte comme snort_inline, c'est-à-dire comme un IPS. Voici un schéma
récapitulatif du fonctionnement de snort_inline (devenu Snort aujourd'hui).
16
HISSEIN BANAYE HASSAN [email protected]
2.5. Détection de l’attaque
17
HISSEIN BANAYE HASSAN [email protected]
Il faut trouver un juste équilibre entre ces deux politiques pour éviter les inconvénients qui leur sont
liés, d’où toute la complexité du choix du seuil. Chaque administrateur devra se baser sur les
caractéristiques de son réseau et sur les besoins de ses clients, ceux-ci fluctuant très souvent. Il lui
faudra se mettre à jour régulièrement, cette technique de détection n’étant pas fixée.
18
HISSEIN BANAYE HASSAN [email protected]
Cette technique permettrait d’identifier plus précisément les connexions frauduleuses et de limiter
fortement le nombre de fausses alertes. Il faut maintenant voir si le coût de mise en place est rentable
: dans le cas d’utilisation d’un logiciel de détection tiers, cela peut s’avérer aussi coûteux de détecter
l’attaque que de la subir car il faut maintenir à jour une table des connexions, ce qui est exactement
ce que le système attaqué fait.
3. Les honeypots
Dans le cadre de notre projet TER du second semestre, nous avons choisi de nous intéresser aux
honeypots ou « pots de miel ».
Un honeypot est une ressource de l’architecture de sécurité dont le but est de se faire passer pour une
cible réelle afin d’être attaquée ou compromise. Autrement dit les honeypots sont des machines de
production destinées à attirer les pirates. Ceux-ci, persuadés d’avoir pénétrer le réseau, ont tous leurs
faits et gestes contrôlés.
19
HISSEIN BANAYE HASSAN [email protected]
Les différentes implémentations des honeypots reposent sur leur niveau d’interaction. Le terme
interaction désigne l’interaction entre le pirate et le système piraté. Les honeypots sont principalement
divisés en deux catégories : les honeypots à faible interaction et les honeypots à forte interaction :
• Les honeypots à faible interaction sont les honeypots les plus simples. Ils ne fournissent pas
de véritables services, ils se contentent de les simuler par l’intermédiaire de script comme
Honeyd le propose et que nous allons utiliser par la suite.
• Les honeypots à forte interaction par contre fournissent de vrais services sur une machine
plus ou moins sécurisée. Néanmoins les risques sont très nombreux puisque la machine est
très vulnérable. Il faut donc s’assurer que l’architecture sous jacente soit bien sécurisée.
1) Honeypot de production
Ce type de honeypots a une utilité pour la sécurité active du système pour lequel il est installé. Il
déroute les attaques orientées vers les différents services de production du système, en les attirant vers
lui. Ainsi les honeypots de production réduisent le risque, en renforçant la sécurité qui est assurée
par les autres mécanismes de sécurité comme les firewalls, les IDS (systèmes de détections
d’intrusions).
2) Honeypot de recherche
Ce sont des honeypots dont le souci n’est pas de sécuriser un système particulier. Ils sont introduits
dans un environnement de recherche pour comprendre et étudier les attaquants et leur façon de
procéder. Les renseignements tirés vont servir pour améliorer les techniques de protection contre ces
attaques.
Les deux types de honeypots jouent un rôle dans une ou plusieurs composantes de la sécurité qui sont
la prévention, la détection, et le recouvrement.
Les honeypots de production contribuent à la prévention du système, en provoquant une déception
chez les attaquants, après plusieurs tentatives échouées pour atteindre les ressources du système. Et
ils sont aussi bénéfiques pour la détection, dans la mesure que toute connexion établie avec un
honeypot de production est considérée comme tentative d’intrusion au système, il élimine ainsi toutes
les fausses alertes (positives et négatives). Le rôle des honeypots de production dans le recouvrement
se traduit par les deux points suivants :
premièrement, ils permettent une continuité des services après une attaque produite en leur sein,
en les mettant simplement hors service. deuxièmement, l’information enregistrée par les
honeypots de production sera d’un apport considérable pour le recouvrement du système.
Les honeypots de recherche ne servent pas la sécurité des systèmes (prévention, détection et
recouvrement) d’une manière directe, mais ils offrent des renseignements précieux sur les attaquants
et leur comportement. Ces informations permettent une meilleure connaissance de la communauté
des attaquants (blackhat community), ce qui aide les professionnels de la sécurité informatique dans
l’amélioration de méthodes et mécanismes de protection.
20
HISSEIN BANAYE HASSAN [email protected]
3.2 Les honeynets
Un honeynet est un réseau de systèmes honeypots et un ensemble de mécanismes de sécurité comme
les firewalls, les IDS, les serveurs log, etc. Il donne apparence à tout un environnement de production
avec des failles et des informations pertinentes utilisées comme appât pour attirer et piéger les
attaquants. Toutes les actions de la victime seront surveillées et enregistrées. Sa structure de réseau
permet même d’avoir des renseignements sur les communications entre les attaquants et leurs
méthodes de collaboration.
Le fonctionnement d’un honeynet se décompose en trois opérations : le contrôle de données, la
collecte de données et l’analyse de données.
• Le contrôle de données signifie un contrôle de toutes les données dans le système, mais surtout
le trafic sortant (outbound traffic) qui peut contenir des attaques envers d’autres systèmes
réels. Cela est assuré par exemple par un firewall dissimulé derrière un routeur, qui utilise
plusieurs techniques comme le blocage du trafic après un nombre limité de connections. Ainsi
le routeur représente une deuxième couche de contrôle du trafic sortant.
• La collecte de données désigne la capture de toutes les informations qui se rapportent sur
l’attaquant et ses activités. Elle est effectuée sur trois niveaux : le firewall, les IDS, et les
systèmes honeypots eux même.
L’analyse de données est l’opération qui consiste à extraire les informations recherchées, telles que
les outils, les méthodes et tactiques utilisées par les hackers, ou bien celles qui révèlent les
vulnérabilités existantes dans le système. C’est à partir des données collectées pendant l’attaque, et
après leur analyse qu’on parvienne à avoir ce type d’informations recherchées sur le pirate et le
système piraté.
Afin qu’il soit efficace et rentable pour l’organisation l’utilisant, un honeypot doit être, constamment,
surveillé, maintenu, et mis à jour. Car il est en exposition permanente aux attaques qui ne sont pas
toutes faciles à contenir, surtout que les attaquants essaient toujours de surpasser les mesures de
sécurité mises en place.
21
HISSEIN BANAYE HASSAN [email protected]
première appelé bridge networking dans laquelle le système hôte peut paraître comme l’une
des machines virtuelles et chaque machine virtuelle a une liaison directe au réseau. La
deuxième consiste à connecter que le système hôte au réseau (host only networking) et chaque
machine cliente n’est accédée que via ce système hôte.
• User Mode Linux (UML) est un dispositif open source développé par Jeff Dike, permettant
d’exécuter plusieurs versions virtuelles de Linux, en même temps, sur un même système.
Ainsi, il permet d'avoir plusieurs machines virtuelles sur une seule machine physique hôte
exécutant Linux. UML est capable de créer plusieurs réseaux virtuels et même des routeurs
virtuels, qui seront tous dans le réseau virtuel original. Du même que VMware, UML supporte
les deux possibilités de connexion : bridge networking et host only networking.
1) Avantages
Le but d’un honeypot est de capturer un pirate et/ou de l’occuper pendant un certain temps, temps
pendant lequel il ne s’attaquera pas aux vrais systèmes de production. C’est dans cette optique qu’il
est important de rappeler que les honeypots ne sont pas une solution que l’on place pour résoudre un
problème mais un outil à exploiter. Ce sont des alliés très efficaces pour les IDS et sont des solutions
très rapides à mettre en place.
Enfin, utiliser un honeypot au sein d’un réseau interne d’une entreprise se révèle être un outil
redoutable pour la détection des actes de malveillance provenant de l’intérieur.
2) Inconvénients
Puisque les honeypots doivent simuler des services et des systèmes utilisés par les vrais systèmes de
production, ils doivent être attractifs afin de susciter l’intérêt sinon il sera ignoré donc par conséquent
inutile.
22
HISSEIN BANAYE HASSAN [email protected]
• Mantrap est un produit très complet proposé par Symantec. Ce honeypot est de haute
interaction qui met en œuvre quatre systèmes d’exploitation logiquement séparés et qui sont
installés sur une même machine hôte. Chacun de ces systèmes supporte des applications
réelles, et apparaît comme système indépendant avec sa propre interface réseau.
L’administration du système hôte se fait par une interface utilisateur graphique Java. Mantrap
peut être utilisé comme honeypot de production, notamment pour la détection et la réaction,
et il est aussi rentable dans la recherche, mais avec un risque considérable.
3.6 Honeyd
1) Test avec une commande ping
Après l'installation d'honeyd (voir annexe), nous allons lancer Honeyd en mode interactif pour vérifier
si un de nos hôtes configurés répond à la commande ping. Lançons Honeyd en mode interactif. Pour
ce faire taper dans la console :
Maintenant dans un autre terminal nous allons tenter de pinguer un de nos hôtes configurés. Pour cela
il suffit de taper la commande suivante :
ping 10.3.0.1
Nous nous rendons compte que Honeyd a bien reçu notre ping grâce au Reply qu’on voit au niveau
du terminal où on a lancé notre Honeyd :
23
HISSEIN BANAYE HASSAN [email protected]
Figure 5 : capture d’écran pour le fct° de Honeyd.
3) Résultat
Grâce à son système de script nous pouvons aisément nous rendre compte que Honeyd est un
honeypot très souple. Attention tout de même car Honeyd n’a pas été conçu pour fonctionner dans un
24
HISSEIN BANAYE HASSAN [email protected]
système de production mais plutôt dans le domaine de la recherche pour pouvoir améliorer à l’avenir
la sécurité d’un réseau.
4. Conclusion
Les attaques par déni de services existent depuis de nombreuses années et sont parfois médiatisés.
Elles ont su se développés au fur et à mesure du développement des systèmes informatiques, tout en
étant simple à mettre en œuvre. Bien qu’aujourd’hui, il existe des outils de détections et de protection
contre le déni de service, ils sont toujours complexes à mettre en place avec une efficacité pas toujours
optimale. Avoir une multitude d’outil ne suffit pas, il faut surtout être réactif lorsque l’on subit une
attaque, mais aussi avoir une bonne politique de sécurité, non pas pour supprimer totalement les
risques, car le risque zéro n’existe pas, mais au moins limiter l’impact d’une attaque de type déni de
service face au service que l’on protège. Mais aujourd’hui, les pirates ont accès à des ressources de
plus en plus importantes, leurs attaques sont donc de plus en plus difficiles à contrer. La lutte contre
les pirates n’est donc pas prête de s’arrêter.
25
HISSEIN BANAYE HASSAN [email protected]
Annexes
Installation de snort :
cd /usr/src
wget http://www.packetfactory.net/libnet/dist/deprecated/libnet-1.0.2a.tar.gz tar
xzvf libnet-1.0.2a.tar.gz
cd Libnet-1.0.2a
./configure make
make install
cd /usr/src
wget http://www.snort.org/dl/current/snort-2.4.5.tar.gz
tar xzvf snort-2.4.5.tar.gz cd snort-2.4.5
./configure --enable-inline --with-libipq-includes=/usr/include/libipq make
make install
mkdir /var/log/snort
mkdir /etc/snort mkdir
/etc/snort/rules
cp /usr/src/snort-2.4.5/etc/* /etc/snort
26
HISSEIN BANAYE HASSAN [email protected]
vi /etc/snort/snort.conf
Modifier le fichier snort.conf pour que la variable RULE_PATH référence le nouveau fichier de
stockage des règles
L’installation de snort est maintenant terminée mais à ce stade, snort n’a aucune règles avec lesquelles
fonctionner. Le téléchargement des règles nécessite l’installation de l’outil Oinkmaster.
Installation d’Oinkmaster
Il est nécessaire d'installer les règles de signature Snort et de les maintenir à jour. Il existe plusieurs
site maintenant des liste de signature.
Site officiel de snort (http://www.snort.org) : Pour télécharger les règles Snort, nous avons besoin
de créer un compte gratuit sur le site web de Snort. Une fois connecté avec votre compte Snort, vous
pouvez obtenir un code en bas de page.
url = http://www.snort.org/pubbin/oinkmaster.cgi/code/snortrules-snapshot-2.8.6.tar.gz
mkdir /etc/snort_inline/backup
27
HISSEIN BANAYE HASSAN [email protected]
useradd oinkmaster
crontab -e -u oinkmaster
30 00 * * * oinkmaster -o /etc/snort_inline/rules -b /etc/snort_inline/backup 2>&1
Installation de Honeyd
Pour installer Honeyd, nous avons utilisé Aptitude, en tapant la commande suivante : apt-get install
honeyd. Voici les principaux fichiers installés :
/etc/init.d/honeyd
/etc/logrotate.d/honeyd
/etc/default/honeyd
/usr/lib/honeyd
/usr/share/honeyd
/usr/share/doc/honeyd
/usr/include/honeyd
/usr/bin/honeyd
Nous tenons à rappeler qu’on a utilisé Ubuntu 9.10 qui est une distribution
GNU/Linux libre et gratuite.
L’installation de Honeyd va aussi installer les dépendances suivantes :
-libpcap0.8
-rrdtool
-librrd4
- libdumbnetl
-farpd
-honeyd-common
La libpcap est une bibliothèque de fonctions servant d’interface à la capture de paquets et est
indépendante du système.
28
HISSEIN BANAYE HASSAN [email protected]
RRDtool est un outil de gestion de base de données à RRD permettant la sauvegarde haute
performance et le tracé de graphiques, de données chronologiques.
Libdumbnetl est une bibliothèque réseau, portative qui fournit une interface simplifiée pour plusieurs
routines réseau
Farpd est un démon ARP répondant à n’importe quel démon ARP d’un ensemble d’adresses Ip.
1- Fichier de configuration
Le fichier de configuration utilisé est similaire au fichier installé par défaut. Pour le
visualiser c’est simple. IL suffit de préciser dans la console avec quel éditeur on souhaite
le visualiser (gedit par exemple) et préciser le chemin du fichier. Voici la commande :
gedit /etc/honeypot/honeyd.conf
2- Mise en place
Dans cette section nous allons utiliser la configuration par défaut proposée par Honeyd
dans le fichier honeyd.conf visualiser précedemment.
route entry 10.0.0.1
route 10.0.0.1 link 10.2.0.0/24
route 10.0.0.1 add net 10.3.0.0/16 10.3.0.1 latency 8ms bandwidth 10Mbps route
10.3.0.1 link 10.3.0.0/24
route 10.3.0.1 add net 10.3.1.0/24 10.3.1.1 latency 7ms loss 0.5 route
10.3.1.1 link 10.3.1.0/24
Pour faire fonctionner ce réseau virtuel ci-dessus il faudra au préalable déclarer une
route réelle dans la table de routage pour l’atteindre. La passerelle utilisée pour cette route
29
HISSEIN BANAYE HASSAN [email protected]
sera l’interface lookpack (localhost) afin de ne pas perturber le réseau existant. Pour cela
il faudra taper dans la console la commande suivante :
route add -net 10.0.0.0 netmask 255.0.0.0 gw localhost
Exécution
30
HISSEIN BANAYE HASSAN [email protected]
Voici ce qu’on voit à l’écran. Ceci signifie que tout fonctionne bien. Faisons un ctrl+C pour arrêter
la commande. Puis nous allons maintenant lancer notre démon honeyd. Mais avant cela nous allons
éditer et modifier le fichier de configuration du démon.
Pour ce faire nous allons éditer le fichier à l’aide de la commande suivante :
gedit /etc/default/honeyd
Dans ce fichier de configuration, il faudra modifier la commande RUN en l’attribuant la valeur «yes
» afin de pouvoir démarrer le démon :
RUN= ‘‘yes’’
Il faut aussi indiquer l’interface réseau à utiliser et préciser la plage d’adresse réseau à utiliser :
INTERFACE="eth0"
NETWORK=10.0.0.0/8
Nous allons pouvoir enfin lancer notre démon Honeyd à l’aide de la commande suivante :
/etc/init.d/honeyd start
31
HISSEIN BANAYE HASSAN [email protected]