Вы находитесь на странице: 1из 13

Module D227

Technologies récentes des réseaux

Méthodes de contournement

Attaques Applicatives
Attaques au niveau protocole

Revenir à l'accueil du module

CARMINATI Lionel
(IUP Miage, Bordeaux)
lcarmina@labri.fr
Méthodes de contournement

Attaques applicatives

Introduction
Les différents types d'attaque
Ver - Worm
Cheval de Troie - Trojan
Porte dérobée - Backdoor
Bombe logique
Virus
Rootkit

Auteur(s) : CARMINATI Lionel - IUP Miage Bordeaux


Date de dernière modification: 01 Janvier 2006

Introduction

Dans ce chapitre, nous allons décrire les principes sur lesquels reposent de nombreuses
attaques réseaux. Bien évidemment pour bien comprendre leurs enjeux il est primordial de
connaitre les bases d'IP et de TCP. Afin de faciliter la compréhension de ces attaques nous
effectuerons tout de même des rappels sur ces règles. Les méthodes de sécurisation
seront ensuite proposées dans les chapitres suivants...

Les machines connectées à un réseau et tout particulièrement au réseau mondial Internet,


sont potentiellement exposées à un ensemble de menaces relatives à la sécurité. La sécurité
réseau a pour but de réduire les risques liés à la connexion à un réseau. Cependant par
nature l'accès à un réseau et la sécurité des ordinateurs vont à l'encontre l'un de l'autre.
Un réseau est une autoroute de l'information conçue pour favoriser les accès aux systèmes
informatiques alors que la sécurité a pour rôle de restreindre l'accès à ces systèmes.
Assurer la sécurité nécessite donc de jongler entre un accès libre et la sécurité elle-même.

Afin de bien administrer un réseau, il est également nécesaire de connaître ce qu'il est
possible de faire comme attaque/contournement réseau. Remarquons à ce sujet qu'être
pirate c'est avant tout connaître parfaitement un protocole, un logiciel, ... et surtout leurs
réactions. Nous allons tenter de présenter quelques types d'attaques réseaux très bien
connues. Il ne s'agit pas ici de vous inciter à vous même reproduire ces attaques, l'objectif
de ce cours étant purement pédagogique, mais de comprendre des failles, des astuces
rendues possibles par les RFC ou les normes. Ces attaques étant connues depuis des
dizaines d'année elles servent ici de cadre de démonstration sur les possibilités offertes
par les protocoles.

Nous avons divisé ce plan en deux parties en distinguant grosso modo deux grands types
d'attaque:

● les attaques dites applicatives, faisant intervernir les couches les plus hautes du
modèle OSI,
● et enfin les attaques au niveau des protocoles, faisant quant à elle intervenir des
subtilités sur l'en-tête, le corps, ... d'un protocole particulier. Nous avons
volontairement introduits que TCP/IP mais les attaques présentées également dans
ce chapitre peut intervenir avec les protocoles UDP ou ICMP. Leurs particularités
étant, nous le supposons, connues par le lecteur.

Les différents types d'attaque

Avant de commencer à décrire les attaques possibles remarquons qu'on peut les regrouper
en trois familles:

● Les attaques directes: c'est la plus simple des attaques. L'attaquant affronte
directement sa victime à partir de son ordinateur car les programmes proposés ne
sont que faiblement paramétrable, et un grand nombre de ces logiciels envoient
directement les paquets à la victime. Si une attaque est opérée de la sorte, il est
aisé que de remonter à l'origine de l'attaque, identifiant peut être par la même
occasion l'identité de l'attaquant.
● Les attaques indirectes par rebond: Cette attaque est très prisée car le rebond a
deux avantages. Un, il masque l'identité (l'adresse IP) de l'attaquant, et
éventuellement, il peut utiliser les ressources de l'ordinateur intermédiaire 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.
● Les attaques indirectes par réponse: Cette attaque est un dérivé de l'attaque par
rebond. Elle offre les même avantages, du point de vue de l'attaquant, 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.
Ver - Worm

Un ver est un agent autonome capable de se propager à l'intérieur de la mémoire d'un


ordinateur passant d'un système à l'autre grâce au réseau informatique.

Ce programme est différent d'un virus car :

● il n'attaque pas les données personnelles,


● il ne cherche pas à récupérer les mots de passe du système,
● il ne se reproduit pas comme un virus, qui s'implante dans les programmes,
● il ne nécessite pas l'action d'un autre programme pour être actif,
● il ne se diffuse que sur le réseau Internet (inactif sur les autres supports).

Son mode de propagation est cependant redoutable : le vers effectue une commande
interne qui recherche d'autres serveurs reliés à Internet pour ensuite les infecter.
Historiquement, le premier programme de type "vers", apparu en 1971, était destiné à
faciliter l'utilisation d'un réseau en récoltant de l'information d'un poste à un autre. Ce
programme ne se répliquait pas.

Depuis, le terme "vers" a évolué, et on l'accorde maintenant à certains programmes dont le


but n'est pas de récolter de l'information mais bien de la détruire, à l'image des virus, tout
en gardant un type de propagation basé sur l'utilisation d'un réseau informatique. Ces
nouveaux vers se connectent au système d'exploitation en utilisant des trous de sécurité.
Les vers sont désormais utilisés par des hackers malicieux pour attaquer un maximum de
sites en peu de temps, sans suivi réel de l'attaque. C'est un bon moyen de diversion pour
une intrusion plus subtile...

Cheval de troie - Trojan

On appelle "Cheval de Troie" un programme informatique effectuant des opérations


malicieuses à l'insu de l'utilisateur. Un cheval de Troie est donc un programme caché dans
un autre qui exécute des commandes sournoises, et qui généralement donne un accès à la
machine sur laquelle il est exécuté. Un peu comme le virus, le cheval de Troie est un
programme nuisible placé dans un programme sain (imaginez une fausse commande de listage
des fichiers, qui détruit les fichiers au lieu d'en afficher la liste).

Un cheval de Troie peut par exemple :

● voler des mots de passe


● copier des données sensibles
● exécuter toute autre action nuisible...

Pire, un tel programme peut créer, de l'intérieur de votre réseau, une brèche volontaire
dans la sécurité pour autoriser des accès à des parties protégées du réseau à des
personnes se connectant de l'extérieur. Les principaux chevaux de Troie sont des
programmes ouvrant des ports de la machine, c'est-à-dire permettant à son concepteur de
s'introduire sur votre machine par le réseau en ouvrant une porte dérobée. C'est la raison
pour laquelle on parle généralement de backdoor (littéralement porte de derrière).

BackDoor

Un programme backdoor (littéralement porte arrière mais traduit par porte dérobée) est
un petit bout de code introduit en général par un pirate informatique pour pouvoir ouvrir un
accès dérobé sur un système informatique et ainsi prendre le contrôle de celui-ci quand il le
désire.

Bombe logique

Sont appelés bombes logiques les 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.

Virus

Il existe grosso modo trois types de virus : les virus trojans, les spywares (espiogiciels) et
enfin les hoax. Le terme de "virus" regroupe tout ce qui peut endommager un hôte réseau.
On y inclut aussi les troyens qui permettent à un pirate d'attaquer. Les spywares
regroupent tout ce qui peut illégalement ou pas espionner des données et/ou afficher de la
publicité sans le consentement de l'utilisateur. La plupart des antivirus ne protègent pas
contre les spywares, il faut donc utiliser en plus un anti-spyware. Le terme de hoax
regroupe tout ce qui est faux-virus et désinformation. via courrier électronique propageant
une fausse information en poussant le destinataire à diffuser la fausse nouvelle à tous ses
proches ou collègues. Les conséquences de ces canulars sont multiples :

● L'engorgement des réseaux en provoquant une masse de données superflues


circulant dans les infrastructures réseaux ;
● Une désinformation, c'est-à-dire faire admettre à de nombreuses personnes de faux
concepts ou véhiculer de fausses rumeurs (on parle de légendes urbaines) ;
● L'encombrement des boîtes aux lettres électroniques déjà chargées ;
● La perte de temps, tant pour ceux qui lisent l'information, que pour ceux qui la
relayent ;
● La dégradation de l'image d'une personne ou bien d'une entreprise ;
● L'incrédulité : à force de recevoir de fausses alertes les usagers du réseau risquent
de ne plus croire aux vraies.

Rootkit

Il s'agit d'un ensemble de logiciels et de patches de noyau qui vont permettre à l'intrus de
passer inaperçu aux yeux de l'administrateur système. Par exemple, la commande ls sera
réécrite pour ne pas laisser apparaître certains fichiers, ps cachera certains processus,
netstat n'affichera pas certaines sockets ouvertes, etc. L'attaquant peut alors facilement
installer une backdoor, c'est-à-dire un accès caché au système, sans que l'administrateur
puisse le déceler. On emploie également le terme de cheval de troie pour ce genre
d'applications.

Qu'il s'agissent de Linux ou Windows, la détection de présence d'un tel ``espion'' est
difficile. Il est cependant utile d'essayer de déceler autant que possible l'installation d'un
rootkit. Pour ce faire, certains logiciels calculent des CRC (somme de contrôle) sur des
fichiers types (par exemple, ls, ps, netstat, le noyau, etc.) et les stockent dans une base de
données. Une vérification périodique est faite sur ces fichiers. Si une différence apparaît,
il y a toutes les chances qu'un rootkit soit installé...

A titre d'exemple on pourra citer YarK qui fait parti des rootkits les plus récent puisque
datant du deuxième trimestre 2004. Bien qu'il ai été conçu pour permettre aux
administrateurs systèmes de l étudier, yakrk, Yet Another Kernel Rootkit, peut facilement
être détourner de sa fonction initiale pour prendre le contrôle d'un poste...
Méthodes de contournement

Attaques au niveau protocole

Déni de service
Flooding
Spoofing

Auteur(s) : Lionel CARMINATI - IUP Miage Bordeaux


Date de dernière modification : 01 Janvier 2006

Déni de service

Le pendant de ce genre d'attaques dans "le monde réel" serait les attentats terroristes. Il
s'agit d'empêcher par tous les moyens les utilisateurs de se servir de ressources
disponibles en temps normal. Ces attaques sont à but purement "destructeur", au sens où
une telle attaque ne permet pas à l'attaquant de compromettre une machine ni de voler des
informations -bien que dans certains cas, l'attaque vise à désactiver le système de
détection d'intrusion -par exemple l'attaque "stick", laissant théoriquement le champ libre
à l'attaquant-.

De telles attaques sont souvent très simples à mettre en place ce qui explique leur
fréquence. Ces attaques sont loin d'être bénignes pour des entités dont la source de
revenus est la mise à disposition d'un service sur le réseau ( E-Commerce ... ). Les DoS
peuvent parfois cacher aussi des attaques plus élaborées -par exemple être le prélude à une
attaque de type "Mitnick", ou bien attirer l'attention ... Enfin, la tendance actuelle à la
parallélisation avec des outils comme Trinoo, TFN ou StachelDraht, des Dénis de Service
(machines "zombies" coordonnées par un serveur qui leur indique à quel moment lancer une
attaque globale dévastatrice) rend cette menace très sérieuse. Lors de l'attaque du début
de l'année 2000 menée par "mafia boy" contre les principaux bastions du cybermonde, on a
ainsi mesuré une dégradation de performance de l'internet au niveau mondial d'environ
20% . Ces sites, pourtant préparés à une très forte demande, se sont vus submergés par
une demande équivalente à un an de connexions en quelques heures...

Les différents types de dénis de service sont :

● Consommation de bande passante : par inondation du réseau en utilisant la "force


pure" ( par exemple un réseau muni d'une connexion de type T1 - 1.5 Mbps - inondant
un modem à 56 kbps ) ou une méthode d'amplification ( voir l'attaque smurf ),
● Consommation de ressources : l'attaque vise à "brûler des cycles" sur la machine en
faisant travailler le processeur pour rien, à occuper tout l'espace mémoire
disponible ... en somme l'attaque vise les ressources du système plutôt que les
ressources du réseau.
● Failles dans les programmes : certains systèmes d'exploitation ne savent pas bien
gérer les paquets inhabituels ( non prévus dans les RFC ) ou bien ne réagissent pas
bien selon les stimulus . Ceci donne des attaques de type teardrop, land ,WinNUKE ...
● Attaques sur DNS et Routage : pirater un cache de DNS ayant autorité pour une
machine donnée peut empêcher quiconque souhaitant contacter cette machine d'y
accéder, ou pire l'envoyer sur une machine-leurre . De telles attaques ont lieu
souvent et peuvent servir par exemple à récupérer des mots de passe ou des
numéros de carte de crédit si le site touché est un portail de e-business. Le dessin
suivant illustre ce type d'attaque

Flooding

SYN Flooding

Les méthodes les plus connues de DoS sont les techniques dites de "Flooding" ou encore en
français d'inondation. Elles consistent à envoyer une rafale de données dans le but de
provoquer un DoS. Suivant la nature des données envoyés découle le nom de la technique.

Une connexion TCP s'établie en trois phases (TCP Three Way Handshake) nous l'avons vu.
Le SYN Flooding exploite ce mécanisme d'établissement en trois phases. Les trois étapes
sont l'envoi d'un SYN, la réception d'un SYN-ACK et l'envoi d'un ACK. Le principe consiste
donc à laisser sur la machine cible un nombre important de connexions TCP en attente. Pour
cela, le pirate envoie un nombre important de demande de connexion (flag SYN à 1), la
machine cible renvoie les SYN-ACK en réponse au SYN reçus. Le pirate ne répondra jamais
avec un ACK, et donc pour chaque SYN reçu la cible aura une connexion TCP en attente.
Etant donné que ces connexions semi-ouvertes consomment des ressources mémoires au
bout d'un certain temps la machine est saturée et ne peut plus accepter de connexion. Ce
type de déni de service n'affecte que la machine cible.

Le pirate utilisera un "SYN Flooder", en indiquant le port TCP cible et l'utilisation


d'adresses IP source aléatoires pour éviter toute identification de la machine du pirate.

UDP Flooding

Ce déni de service exploite le mode non connecté du protocole UDP. Il crée un "UDP Packet
Storm" (génération d'une grande quantité de paquets UDP) soit à destination d'une machine
soit entre deux machines. Une telle attaque entre deux machines entraîne une congestion
du réseau ainsi qu'une saturation des ressources des deux hôtes victimes. La congestion est
plus importante du fait que le trafic UDP est prioritaire sur le trafic TCP. En effet, le
protocole TCP possède un mécanisme de contrôle de congestion, dans le cas où
l'acquittement d'un paquet arrive après un long délai, ce mécanisme adapte la fréquence
d'émission des paquets TCP, le débit diminue. Le protocole UDP ne possède pas ce
mécanisme, au bout d'un certain temps le trafic UDP occupe donc toute la bande passant
n'en laissant qu'une infime partie au trafic TCP.

L'exemple le plus connu d'UDP Flooding est le Chargen Denial of Service Attack. L'UDP
Flooding entraîne une saturation de la bande passante entres les deux machines. Un réseau
complet peut donc être victime d'un UDP Flooding.

Spoofing

Les méthodes dites de spoofing consiste à usurper l'identité d'une machine ou d'un noeud
du réseau en profitant de la "relation de confiance" qui règne au sein du réseau. Cet abus de
confiance se joue sur divers fronts, suivant le protocole retenu: IP, ARP, DNS, ... Il est
donc intéressant de les présenter tour à tour.

IP Spoofing

L'"IP Spoofing" est une technique largement utilisée dans de nombreux types d'attaques.
Du fait de la possibilité de forger des paquets bruts il est tout à fait possible d'envoyer
des paquets avec une adresse IP source érronée. Cependant la tache n'est pas aussi simple
que cela, en effet IP ne fonctionne pas tout seul et il est toujours (ou presque) utilisé avec
un protocole de niveau superieur Le principe consiste pour l'attaquant à créer des paquets
IP dans lesquels il modifie entre autre l'adresse IP source. Dès lors les paquets envoyés ne
pourront jamais revenir à l'adresse source du fait que ce champ ne soit pas correct. On
appelle donc également l'IP Spoofing le "Blind Spoofing". Ceci dit ce genre d'attaque est
également couplé à d'autres méthode d'attaque qui sont très briévement:

● Source Routing: Utilisation du champ Source Routing d'IP pour définir la route à
suivre pour les paquets IP. L'attaquant se servira dès lors de ce champ pour
spécifier la route à suivre en retour du message.
● Reroutage: Modification des tables de routage pour indiquer un nouveau chemin des
paquets "spoofés".

Dans les deux cas l'attaquant se doit de maîtriser un routeur. Ceci dit ce genre d'attaque
reste très efficace contre des services qui identifie la machine seulement par leur adresse
IP comme par exemple rlogin ou rsh. Couper ces services restent donc la seule parade viable
pour contrer ce genre d'attaque. L'Ip Spoof a fait ses preuves aussi bien en ICMP, UDP ou
TCP cependant la difficulte de sa mise en place varie beaucoup selon le protocle utilisé:

● Le protocole ICMP envoie des messages et n'attend aucune réponse en retour, il est
donc très facile d'envoyer des messages icmp spoofés.
● Le protocole UDP sert quand a lui a la communication entre taches clientes et
serveur, ce protocole fonctionne en mode non-connecté (il ne necessite pas la
connection à 3 voies du TCP) il est donc assez facile d'envoyer des paquets avec une
fausse IP sans que le serveur ne se rende compte de rien. Cependant il nous sera
impossible de recevoir une eventuelle réponse du serveur du fait qu'il renvoie tout
vers la fausse IP.
● L'IP Spoofing en utilisant TCP est la plus difficile à mettre en oeuvre surtout
lorsqu'elle est utilisée en dehors d'un réseau local. Cependant avec un peu
d'entrainement et beaucoup de nuits sans sommeil il est possible d'utiliser ce
procédé.

Nous allons analyser les différentes possibilités que nous offre l'IP Spoofing suivant le
protocole utilisé en s'appuyant sur les articles qui ont fait la renommée de cette technique.

ICMP Spoofing

L'ICMP Spoofing est très certainement le plus répandu des techniques de spoofing car il
s'agit du plus facile à mettre en oeuvre et est souvent utilisé pour des attaques de type
"Deni de service" ou DoS.

Un exemple d'attaque est l'envoie massif de packets ICMP type 3 (Destination


Unreachable) vers une machine donnée. Si, à titre d'exemple cette machine est connectée à
un serveur et que l'IP du serveur est connu, l'attaque consiste alors à envoyer une
multitude de packets ICMP type 3 avec comme adresse de source l'adresse IP du serveur.
Le réseau pensant que les paquets proviennent effectivement du serveur et ne pouvant pas
l'atteindre devrait le déconnecter spontanément.

Une autre utilisation possible est très bien représentée par le très célèbre Smurf. Smurf
s'utilisec aussi bien avec les protocôles ICMP ou UDP. L'attaque consiste à envoyer un
paquet ICMP type 8 (Echo request) vers un serveur de diffusion -Broadcast- pour que celui-
ci forward le packet à toutes les machines de son sous-réseau. A la réception de ce paquet
les machines vont répondre par un ICMP type 0 (Echo Reply) à la machine qui avait envoyé le
"Echo Request". De ce fait si un pirate envoie un packet ICMP type 8 avec une fausse IP de
source à un broadcast, toutes les réponses "Echo Reply" vont être renvoyées vers cette
fausse adresse IP.

Enfin le dernier type d'attaque consiste à utiliser le "ICMP type 5" (Redirect). Ce message
est généralement envoyé par un routeur à un hôte pour lui préciser qu'il devrait l'utiliser
car la route est plus rapide. Il suffit donc en théorie d'envoyer un paquet ICMP type 5 à un
host avec une IP de source correspond à notre IP et ainsi l'host va dévier sa route pour
passer par notre réseau notre box en pensant que c'est un routeur. A ce moment
l'attaquant va émuler le fonctionnement d'un routeur c'est a dire router les paquets vers
leur destination et bien sur au passage sniffer le transfert réseau. L'attaquant peut donc
ainsi soit receuillir des informations importantes, soit récupérer des numéros de séquences
afin de lancer une attaque de type TCP Hijack procédé qui s'apparente au TCP spoofing et
qui consiste en fait à prendre la place de l'host dans la relation de confiance avec son
serveur.

UDP Spoofing
Si un attaquant envoie un paquet vers un serveur qui fonctionne avec le protocole UDP, celui-
ci traite le paquet directement. Il n'y a aucunement besoin de satisfaire le processus de
connection offert par TCP. De ce fait il est tres simple d'envoyer des paquets UDP spoofés.
A titre d'exemple, il existe un service fonctionnant sous UDP: Talk permet a un utilisateur
de discuter avec un autre utilisateur. Si l'attaquant spoof son IP en prenant celle d'un
autre utilisateur, il pourra se faire passer pour celui-ci sur le service Talk.

TCP Spoofing

Sans doute l'attaque la plus dangeureuse mais également la plus difficile a mettre en place,
le TCP Spoofing consiste à cacher son adresse IP sur la plupart des services (Telnet, Ftp,
Smtp,......) utilisés sur les réseaux TCP/IP notamment l'Internet.

La difficulté du TCP Spoofing provient du fait que ce protocole fonctionne en mode


connecté. De ce fait l'attaquant doit étabir une connection en trois temps -cf cours
précédent-. Or lorsqu' un attaquant veut envoyer une demande de connexion i.e. un SYN
avec une fausse IP, le serveur renvoie le ACK/SYN vers la fausse IP. Tout le problème
consiste ensuite a connaître la valeur de l'ISN (Initial Sequence number) envoyé par le
serveur...

Le TCP Spoofing à été le plus largement utilisé avec le service Rlogin. Ce service permet en
effet de se connecter à un serveur (comme telnet) mais à la différence près que
l'authentification se fait par l'adresse IP et non par la combinaison identifiant/mot de
passe. Si l'attaquant spoofe l'adresse IP d'un hôte autorisé à se connecter au serveur en
rlogin et il pourra se connecter sans aucun problème et obtenir un shell...

ARP Spoofing

Cette attaque, appelée aussi ARP Redirect, redirige le trafic réseau d'une ou plusieurs
machine vers la machine du pirate. Elle s'effectue sur le réseau physique des victimes. Au
préalable nous ferons un rappel sur l'utilité et le fonctionnement du protocole ARP.

Le protocole ARP (Address Resolution Protocol) implémente le mécanisme de résolution


d'une adresse IP en une adresse MAC Ethernet. Les équipements réseaux communiquent en
échangeant des trames Ethernet (dans le cas d'un réseau Ethernet bien sûr) au niveau de la
couche liaison de données. Pour pouvoir échanger ces informations il est nécessaire que les
cartes réseau possèdent une adresse unique au niveau Ethernet, il s'agit de l'adresse MAC
(Media Access Control).

Quand un paquet IP doit être envoyé la machine expéditrice a besoin de l'adresse MAC du
destinataire. Pour cela une requête ARP en broadcast est envoyée à chacune des machines
du réseau physique local. Cette requête pose la question : "Quelle est l'adresse MAC
associée à cette adresse IP ?". La machine ayant cette adresse IP répond via un paquet
ARP, cette réponse indiquant à la machine émettrice l'adresse MAC recherchée. Dès lors,
la machine source possède l'adresse MAC correspondant à l'adresse IP destination des
paquets qu'elle doit envoyer. Cette correspondance sera gardée pendant un certain temps
au niveau d'un cache (pour éviter de faire une nouvelle requête à chaque paquet IP envoyé).

Cette attaque corrompt le cache de la machine victime. Le pirate envoie des paquets ARP
réponse à la machine cible indiquant que la nouvelle adresse MAC correspondant à l'adresse
IP d'une passerelle (par exemple) est la sienne. La machine du pirate recevra donc tout le
trafic à destination de la passerelle, il lui suffira alors d'écouter passivement le trafic (et/
ou le modifier). Il routera ensuite les paquets vers la véritable destination.

L'ARP Spoofing sert dans le cas où le réseau local utilise des switchs. Ceux-ci redirigent les
trames Ethernet sur des ports différents selon l'adresse MAC. Il est dès lors impossible à
un sniffer de capturer des trames au-delà de son brin physique. L'ARP Spoofing permet
ainsi d'écouter le trafic entre des machines situées sur des brins différents au niveau du
switch.

Вам также может понравиться