Techniques D'intrusion Dans Les Réseaux
Techniques D'intrusion Dans Les Réseaux
Techniques D'intrusion Dans Les Réseaux
réseaux By Shark
De plus en plus d'attaques sont répertoriées par les agences officielles, ont voit surtout de plus
e plus de personnes qui vont en prison, mais avez vous que la plupart des actes de piratages
n'auront pas suite, car les entreprises à part un firewall et un antivirus n'ont pas de moyen pour
lutter contre les "crasheurs"; nous allons aborder ici les bases qui permettent de comprendre
comment font ces pirates...
Sommaire
1. Introduction...........................................................................................................................7
2. Cadre de la présentation.......................................................................................................7
3. Identification de la cible.........................................................................................................8
3.1 DNS, Domain Name System .........................................................................................8
3.2 Bases d.adresses IP ......................................................................................................9
3.3 Bounces de découverte .................................................................................................9
3.4 Moteurs de recherche..................................................................................................10
3.5 Outils réseaux de diagnostic........................................................................................10
3.6 Social-engineering.......................................................................................................10
4. Scanning ............................................................................................................................11
4.1 Rappel sur les protocoles TCP/IP ................................................................................11
4.1.1 IP..........................................................................................................................11
4.1.2 TCP......................................................................................................................12
4.1.3 UDP......................................................................................................................12
4.2 Recherche des machines actives : scan ICMP et TCP ................................................13
4.3 Port scanning TCP et UDP ..........................................................................................13
4.3.2 Techniques avancées de scanning.......................................................................15
4.3.3 Autres techniques de découverte de la topologie..................................................17
5. Exploitation.........................................................................................................................19
5.1 Classe des attaques par usurpation d.identité..............................................................19
5.1.1 Découverte d.informations d.authentification par essais........................................19
5.1.2 Abus de relations de confiance.............................................................................19
5.1.3 Interception d.informations d.authentification ........................................................20
5.1.4 Détournement de flux existants ............................................................................21
5.2 Exploitation de fautes d.implémentation.......................................................................21
5.2.1 Buffer overflows....................................................................................................22
5.2.2 Attaques format string...........................................................................................23
5.2.3 Métacaractères shell et caractères spéciaux ........................................................23
5.2.4 Virus, chevaux de Troie........................................................................................23
5.3 Elévation des privilèges ...............................................................................................24
6. Progression ........................................................................................................................25
6.1 Inspection du système compromis...............................................................................25
6.1.1 Nettoyage du système..........................................................................................25
6.1.2 Pose de backdoors...............................................................................................26
6.2 Prise d.information, progression ..................................................................................27
7. Conclusion..........................................................................................................................28
1. Introduction
La connaissance des stratégies, méthodes et techniques employées par les pirates
informatiques est de même
primordiale pour la compréhension de leurs comportements, et l.élaboration de lignes de
défense adaptées : quelque soit la sophistication ou le raffinement des techniques utilisées,
l.expérience nous fait dégager des lignes directrices quant au déroulement de telles attaques.
Nous allons ici décrire d.un point de vue technique les différentes phases de l.attaque1 d.un
système d.information par un agresseur situé sur Internet : de l.identification de la cible à
l.exploitation puis à la progression sur le système compromis.
2. Cadre de la présentation
Les menaces potentielles sur un système d.information sont multiformes et difficilement
identifiables en raison de la variété des agresseurs, des cibles possibles et des moyens
d.attaques.
Nous allons dans la suite considérer le cas d.un agresseur externe à l.organisation cible,
quelles
que soient ses motivations et sa nature.
Le présent document s.intéressera au cas des attaques directes contre l.accès Internet du
système d.information cible.
Notons finalement que même si le siège des accès Internet n.est pas la meilleur méthode pour
obtenir une intrusion réussie (X.25 et le scanning téléphonique sont beaucoup plus probants),
c.est du moins la plus facile à mettre en .uvre (multiplicité des moyens d.accès, quasi gratuité,
.) et celle pour laquelle le plus d.information est disponible.
3. Identification de la cible
Dans une première phase, l.agresseur identifie la cible dans son environnement (Internet dans
notre cas). En utilisant des informations publiques pour la plupart, il découvre les localisations
et
interactions de l.organisation avec le reste d.Internet, afin d.arriver à une liste exhaustive des
accès extérieurs et donc des portes d.entrées potentielles à forcer. Il dispose à la suite de cette
phase d.un début de cartographie des environs de la cible sur le réseau Internet, des
partenaires
et prestataires ayant potentiellement des liens physiques et logiques avec elle, de données
brutes telles que des noms d.employés ou numéros de téléphones, qui seront potentiellement
utiles pour des tentatives de social engineering ou de wardialing.
En fonction des motivations et des résultats attendus, cette phase peut être d.extrêmement
rapide à assez longue, étant donné que son exhaustivité déterminera en grande partie le succès
Dans certains cas, cette phase n.est même pas présente : il est fréquent que l.organisation
agressée ne soit pas la motivation d.une attaque. De nombreux pirates balaient des plages
d.adresses ou des pays entiers pour trouver des machines vulnérables qu.ils pourront
compromettre, le plus souvent pour servir comme point de départ pour d.autres attaques. La
cible elle-même est ainsi toute machine située dans le bloc balayé, quel que soit son
propriétaire. La phase de recherche et d.identification de la cible est donc ici quasiment
inexistante, elle se résume au balayage d.adresses IP ou d.entrées DNS.
Etant donné que la majorité des informations recueillies lors de cette phase d.identification
sont
publiques (le pirate essaie d.éviter de « toucher » directement la cible), elle est assez difficile,
voire impossible à détecter. Seules certaines techniques, en particulier les balayages DNS
peuvent être visibles par les administrateurs sécurité ou les mécanismes de détection
d.intrusion.
DNS pour un domaine donné. Cette fonctionnalité, dite AXFR, est nécessaire pour le transfert
de zones entre serveurs de noms. Elle est très intéressante pour un agresseur et est donc
communément restreinte aux seuls serveurs autorisés.
Le DNS nous permet finalement d.obtenir les adresses des machines courantes, telles que
www.x.com, ftp.x.com, mail.x.com ainsi que les adresses des serveurs de messagerie externes
(entrées MX, mail-exchanger, des DNS). Un dernier type de requête, dite HINFO (host info),
donne des renseignements sur la machine cible, tels que : modèle, système d.exploitation. Les
entrées HINFO des tables DNS, pour des raisons évidentes de confidentialité et de sécurité ne
sont maintenant quasiment jamais renseignées.
message d.erreur, d.où le nom de bounce. L.examen des en-têtes présents dans le mail
retourné va donc donner au pirate des informations importantes comme les versions des
serveurs de messagerie externes, les adresses, noms et versions des serveurs de messagerie
internes. Ces renseignements seront utiles par la suite lors des attaques et de la progression
dans le système d.information compromis.
3Les bases sont séparées géographiquement en: RIPE (Europe): http://www.ripe.net, ARIN
(Amérique du
Nord/Sud/Centrale, Caraibes, Afrique sous saharienne): http://www.arin.net, APNIC (Asie,
Pacifique):
http://www.apnic.net
exemple) vont en se répandant et la connaissance par le pirate des serveurs, logiciels utilisés,
. peut faciliter grandement une intrusion.
Si le bounce ne fonctionne pas (cas des bounces détruits sans retour à l.expéditeur d.origine),
le
pirate dissimule ceci sous forme d.un e-mail de demande d.information et attend la réponse
légitime.
3.6 Social-engineering
Même si dans les sociétés ayant déployé une politique de sécurité adéquat les tentatives de
social-engineering directes ont peu de chance d.aboutir, une demande d.information bénigne
auprès du service de support informatique est très souvent acceptée.
Notre agresseur, se faisant passer pour un utilisateur du système, peut ainsi demander les
adresses des proxy, des serveurs de messagerie internes, ou des serveurs Web internes, en
étoffant sa crédibilité grâce par exemple aux informations recueillies avec les méthodes vues
précédemment.
4. Scanning
La phase de recherche environnementale terminée, et la liste des cibles établies, le pirate va
s.employer à balayer le réseau cible afin d.en obtenir une topologie détaillée, aussi bien d.un
niveau réseau qu.applicatif. L.intérêt de cette phase, qui touche directement les systèmes
cibles
et est donc la première partie décelable d.une tentative d.intrusion, est de trouver un ou
plusieurs systèmes « exploitables », c.est-à-dire qu.il sera facile au pirate de compromettre.
N.oublions pas aussi le caractère opportuniste d.une attaque : il suffit potentiellement d.une
seule vulnérabilité pour réussir une intrusion sur un système d.information ; c.est aussi la
grande
différence avec le travail des administrateurs systèmes ou des équipes d.audit, qui doivent
identifier et corriger toutes les failles. Le pirate peut donc pour des raisons de furtivité arrêter
cette phase de scanning dès qu.il trouve un système vulnérable, le facteur chance est dans ce
cas prépondérant.
leur découpage en plus petits paquets afin de s.adapter aux contraintes des couches inférieures
(physiques). La taille maximum des données que peut véhiculer un support physique donné
est
exprimée par son MTU (Maximum Transmit Unit) . IP découpe donc les données
(fragmentation) pour les adapter au MTU du lien dans le cas d.une transmission, et les
regroupe
(défragmentation) avant de les remonter aux couches supérieures dans le cas d.une réception
de paquet. Finalement, IP veille à ce qu.il n.y ait pas de bouclages de paquets, ou de paquets
éternels en attribuant à chacun un Time-to-Live (durée de vie), qui donne le nombre
d.interfaces
(ou de systèmes, suivant les implémentations) que le paquet peut traverser avant d.être détruit.
Une telle destruction de paquet, lorsque son TTL arrive à 0, génère un message ICMP « Time
Exceeded in Transit » qui est renvoyé à l.émetteur du paquet.
Flags :
IP_RF 0x8000 reserved fragment flag
IP_DF 0x4000 dont fragment flag
IP_MF 0x2000 more fragments flag
IP_OFFMASK 0x1fff mask for fragmenting bits
Les données véhiculées par un paquet IP ne sont pas des données brutes de communication
d.applications, mais des données d.autres protocoles comme TCP ou UDP, dit de transport,
encapsulées dans le paquet IP. C.est le principe fondamental de l.encapsulation/décapsulation
du modèle en couches. Chaque couche rajoute ses données de contrôle dans une en-tête qui
lui
est propre, les données véhiculées (qui contiennent elles-mêmes des en-têtes) lui sont
complètement opaques.
4.1.2 TCP
TCP est le protocole IP correspondant au protocole connecté du modèle OSI. TCP s.occupe
donc d.assurer un transport fiable d.un service source à un service destination, identifiés tous
deux par un numéro dit numéro de port (entre 0 et 65535), en établissant une connexion
logique
et une vérification de transmission des données, avec retransmission en cas d.erreur (PAR,
Positive Acknowledgment with Retransmission).
L.établissement d.une connexion TCP s.effectue par un mécanisme dit de 3-way handshake.
La machine source A désirant établir une connexion envoie un paquet TCP contenant le flag
SYN et un numéro de séquence SN=x. La machine recevant la connexion B l.accepte ou non,
suivant qu.il y ait ou non un processus prêt à répondre à la demande sur le port destination de
la
connexion. Dans le cas positif, B répond par SYN ACK, SN=y, et AN=x 1 (numéro
d.acquittement). Sinon, A répond par un paquet contenant le flag d.interruption brutale RST.
Lorsque A reçoit le paquet SYN ACK, A émet un paquet contenant le flag ACK et un
acquittement AN=y 1. La connexion est alors établie, le transfert des données peut alors
commencer. Les acquittements suivants doivent être effectués pour tous les octets transférés.
Format d’un paquet TCP
bits
0 4 8 12 16 20 24 28 31
Port source Port destination
Numéro de séquence
Numéro d’acknowledgment
Offset Reservé Flags Window
Checksum Pointeur urgent
Options Padding
Données
Flags :
TH_SYN 0x02 Bit de Synchronisation
TH_RST 0x04 Réinitialisation (Reset), interruption brutale de connexion
TH_PUSH 0x08 Force le ‘push’ (délivre les données à l’application)
TH_ACK 0x10 Acknowledgment
TH_URG 0x20 Données urgentes
4.1.3 UDP
UDP est le protocole sans connexion de la famille IP. Comme dans TCP, une notion de port4
source et de port destination est utilisée pour multiplexer/démultiplexer les transferts de
données
4il est à noter qu.un port UDP n.a aucune relation avec un port TCP, même si les deux
couvrent la même
notion.
entre les applications d.émission et de réception. Dans le cas d.UDP, aucun établissement de
connexion préliminaire n.est effectué, et aucun contrôle du transfert n.est directement assuré.
Dans le cas de l.envoi d.un paquet vers un port non bindé5, c.est-à-dire un port sur lequel
aucune application n.écoute, un message ICMP « Port Unreachable » est renvoyé à
l.expéditeur.
La découverte et la publication d.un bug sur telle ou telle application serveur publique,
comme
récemment en janvier 2001 le serveur de noms DNS bind d.ISC entraîne très souvent des
milliers de scans de pirates pour les ports correspondants aux applicatifs incriminés, le port 53
(TCP et UDP) dans le cas de bind. Les ports scannés sont donc principalement les ports
associés à des services contenant des vulnérabilités connues, et non des ports libres. En
particulier, les scans visent la plupart du temps les ports inférieurs à 1024, historiquement
réservés aux services publics tels que DNS (53, en TCP et UDP), http (80 en TCP), portmap
(111 en TCP), POP3 (110 en TCP).
Le scanning de ports étant assez bruyant au niveau des enregistrements (logs) des firewalls ou
5venant de la primitive C bind() de l.API des sockets BSD, qui permet de « nommer » une
socket et donc
de s.attacher à un port donner dans le cas TCP/UDP.
assez facilement par un système de détection d.intrusion en surveillant les paquets SYN.
commandes, un autre canal est établi à partir du port source 20 vers un port libre aléatoire côté
client pour le transfert des données (listing des fichiers, envoi ou réception de fichiers)
proprement dites.
Ce mécanisme, outre les autres failles inhérentes de FTP (à savoir, passage en clair des
identifiants et mots de passe), présente un risque de sécurité important car l.IP et le port vers
lesquels le serveur effectuera la connexion de retour pour l.envoi des données sont spécifiés
par
le client, au moyen d.une commande PORT x,x,x,x,y,y (où x,x,x,x est l.adresse IP, octets
séparés par des virgules et y,y sont les deux octets du numéro de port). Le client est donc libre
de spécifier n.importe quelle IP et n.importe quel port. Si aucune vérification n.est effectuée
côté
serveur, celui-ci ira établir une connexion vers une machine tiers. Un agresseur peut ainsi
effectuer un scan de ports au moyen de la commande PORT, répétée autant de fois que
nécessaire. Les messages d.erreurs renvoyés par le serveur FTP indiquent que le port spécifié
n.est pas ouvert ou est filtré. Un transfert effectué sans erreur indique au contraire que le port
est ouvert.
Même si la plupart des implémentations actuelles de serveurs FTP interdisent de telles
commandes PORT, de nombreuses machines sur Internet contiennent encore des serveurs FTP
affectés qui peuvent servir de relais pour des scans, sans même que l.agresseur ait besoin d.en
prendre le contrôle (en se connectant au serveur en ftp anonyme, par exemple). En effet, la
machine source du scan sera vue par la cible comme étant le serveur FTP. D.autre part, dans le
cas de réseaux protégés par un filtre, la présence d.un serveur FTP vulnérable à une telle
attaque peut être utilisée pour passer le filtre avec les règles relatives à la machine hébergeant
le serveur FTP.
firewalls applicatifs tels que NAI Gauntlet) ou d.optimisation du trafic Internet (proxy-cache
http).
Ces proxies, lorsqu.ils sont mal configurés, peuvent servir de rebonds à un utilisateur
extérieur
pour attaquer le réseau interne ou un autre réseau de façon anonyme. Les proxies les plus
recherchés par les pirates sont les proxies http8 et Wingate, souvent utilisables sans
authentification.
4.3.2.3 Fragmentation IP
Une des fonctionnalités rendues par IP est la fragmentation des paquets pour les adapter aux
contraintes de taille du support physique, le lien. Ainsi, il est possible de découper les paquets
de telle façon que les informations nécessaires au firewall pour décider de l.acceptation ou
non
du paquet soient distribuées sur plusieurs fragments, en coupant par exemple l.en-tête TCP en
deux. Les alternatives possibles pour le firewall sont alors l.acceptation/le refus sans examen
du
paquet ou l.attente des autres fragments pour pouvoir défragmenter le paquet et ainsi disposer
de l.en-tête complet pour faire la décision de passage. Dans de nombreux cas (en particulier
dans les filtres IP simples des routeurs, sur les réseaux à grand débit), le coût de cette
défragmentation est trop important et seuls les fragments d.offset 0 (censés contenir les
informations de décision) sont inspectés, les autres sont par défaut acceptés.
le paquet IP. Comme précédemment, le filtre doit disposer de l.intégralité des fragments pour
pouvoir appliquer les règles au paquet. De plus, le filtre ne sait pas à priori comment va réagir
la
machine destination à cette réécriture des paquets par fragments se chevauchant : ce
comportement dépend en effet de la stack IP de la machine distante, et quasiment tous les cas
existent (réécriture des données en se conformant aux derniers fragments reçus, abandon des
fragments se chevauchant, abandon pur et simple du paquet, .). Ce problème appartient à une
classe plus importante dite de sémantique de la stack IP (impossibilité de prévoir la réaction
de
la stack IP à certains stimuli, sans en connaître l.implémentation), et a été popularisé comme
moyen de contourner certains IDS et filtres IP. Des outils9 sont disponibles pour implémenter
ces attaques.
Linux IPCHAINS10
La couche de firewalling des noyaux Linux < 2.2.11 contient un bug découvert en juillet 1999
par
Thomas Lopatic de Data Protect AG, permettant, sous certaines conditions, de procéder à la
réécriture du port dans l.en-tête TCP ou UDP du paquet. Il est ainsi possible de faire accepter
toute connexion vers un port arbitraire d.une machine protégée par un firewall Linux affecté
et
pour laquelle il existe au moins un port non filtré. La vulnérabilité est dans le fait que le noyau
considère un fragment d.offset égal à 0 trop petit pour contenir toute l.en-tête de transport
(TCP
ou UDP) comme un fragment d.offset supérieur à 0.
9 Fragrouter, http://www.anzen.com/research/nidsbench/
10 http://www.dataprotect.com/ipchains/
En-tête IP (0)
A
B
C
D
0
20
40
60
20
80
Offset de
fragmentation
En-tête IP (0)
A
En-tête IP (20)
B
En-tête IP (40)
C
En-tête IP (60)
D
20
20
dans ce paquet et ouvre un « trou » temporaire dans le firewall pour laisser passer cette
connexion du client vers l.adresse en question, normalement le serveur FTP lui-même. En
forçant le serveur FTP à répondre par une chaîne .227 . adéquate, il est possible d.ouvrir une
connexion TCP vers n.importe quel port de n.importe quelle machine protégée. Cette réponse
peut être obtenue en envoyant une commande similaire à .xxx227 Entering Passive Mode
(192,168,1,10,192,3). où a,b,c,d est l.adresse IP de la cible et e,f le port désiré. Le serveur
répondra par un message d.erreur similaire à : « Unknown command : xxx227 Entering
Passive
Mode (192,168,1,10,192,3) ». En jouant sur l.option MSS de la connexion TCP, qui spécifie
la
taille maximum des segments de données transmis, il est facile de couper le flux pour que 227
pour le traitement des paquets spéciaux, des erreurs, . Cette constatation est la base de
l.identification distante des systèmes d.exploitation, compte tenu de leurs réactions à certains
paquets de test : réaction à l.envoi d.un paquet FIN (Microsoft Windows répond par RST alors
que le RFC 793 recommande de ne pas répondre), incrément des numéros de séquences
initiaux, .
La granularité obtenue actuellement dans certains scanners est importante, allant même
jusqu.à
l.identification des patchs installés en plus de la version du système d.exploitation.
4.3.3.2 Firewalking
Cette technique, dérivée de traceroute, consiste à envoyer des paquets IP dont on incrémente
successivement le TTL. Les réponses reçues nous donnent toutes les passerelles entre notre
source et la machine destination. Le firewalking consiste aussi à faire varier les protocoles
véhiculés par les paquets IP de test pour être par exemple acceptés par un firewall, la décision
d.acceptation se faisant souvent sur le protocole de transport (TCP ou UDP vers le port donné
d.une IP donnée).
http://www.dataprotect.com/,
11
http://www.securityfocus.com/frames/?content=/vdb/bottom.html?vid=979
Le pirate est ainsi capable d.obtenir une cartographie précise d.une zone protégée par un
firewall, et de déterminer les règles d.accès de ce firewall.
La bannière affichée indique non seulement un serveur FTP, mais aussi la version du système
d.exploitation (ici, une machine Sparc SunOS 4.1).
De la même manière, si aucune bannière n.est affichée, nous pouvons déduire ces
informations
de la réponse du serveur à une requête classique.
Le port 8123 du serveur hera est dans ce cas un serveur Web Apache 1.3.12 sur une machine
Unix. Il dispose de plus des extensions Frontpage et SSL.
Certains services ont pour fonction première de fournir des informations. C.est le cas de
SNMP,
finger. Un agresseur peut obtenir des MIB standards d.un serveur SNMP (souvent accessibles
en lecture seule avec des noms de communautés par défaut tels que « public », « cisco ») des
données comme : le nombre et la nature des interfaces réseaux de l.équipement, la version du
système, le nombre d.utilisateurs connectés, les adresses ARP des cartes, .
5. Exploitation
Le pirate a collecté suffisamment d.information pour être capable de déterminer le point le
plus
faible du réseau, celui sur lequel l.attaque sera la plus discrète et la plus optimale possible.
La phase d.exploitation est le tournant de l.intrusion, celle à partir de laquelle l.agresseur ne
peut
plus reculer : autant la phase de scanning peut-elle être considérée comme une simple
« recherche d.information », l.exploitation montre un engagement de l.agresseur dans une
action
offensive hostile.
Cette phase est généralement très brève car elle se résume à l.utilisation d.un bug pour prendre
le contrôle d.un système. Le pirate passe ensuite dans une phase de progression si le système
compromis lui convient (d.un point de vue emplacement par exemple) pour mener à bien son
intrusion, ou sinon recommence la phase d.exploitation sur un autre système : c.est dans cette
phase que le caractère opportuniste de l.attaque dont nous avons parlé précédemment est le
mieux mis en lumière.
Détaillons maintenant les principales méthodes pour gagner l.accès à un système cible. Ces
attaques peuvent être menées contre des services filtrés en utilisant les mêmes techniques de
contournement que celles vues précédemment pour le scanning.
Nous mettons ainsi en évidence une méthode d.usurpation d.identité mettant en jeu les
relations
de confiance entre machines. L.exemple le plus connu12 de ce type d.attaques est celui du
TCP
Spoofing contre les serveurs rsh. Les serveurs rsh permettent une authentification par relations
de confiance entre machines sur le modèle suivant : un client situé sur une machine A peut
accéder sans demande de mot de passe à la machine serveur rsh B si celle-ci contient un
fichier
de configuration ($HOME/.rhosts) établissant une relation de confiance avec A. rsh étant
implémenté au dessus de TCP, qui se charge de la négociation d.une véritable connexion
logique entre les deux machines, ceci n.aurait pas été un véritable problème sans certains
défauts de conception des stacks IP en ce qui concerne la génération des numéros de
séquence initiaux (ISN) TCP.
Rappelons que la machine B, en réponse à une demande de connexion de A, renvoie à A un
paquet contenant un acquittement du numéro de séquence envoyé par A, ainsi qu.un autre
numéro de séquence y, supposé aléatoire. A va alors répondre en acquittant y, et la connexion
est ainsi établie. Dans le cas normal, le fait que seul A connaît le numéro de séquence y
retourné par B garanti que c.est bien A à l.autre bout du flux. Cependant, la quasi-totalité des
stacks IP d.il y a une dizaine d.années incrémentaient les ISN par pas de 64k. Il était donc
facile
d.immobiliser A pour ne pas qu.elle réponde (déni de service sur A), de prévoir le numéro y
retourné par B, l.acquitter à la place de A et ainsi établir une connexion fictive « à l.aveugle »
entre A et B. Le pirate exécute par ce biais des commandes telles que echo >> ~/.rhosts
lui permettant d.accéder à la cible par rsh, directement de sa machine d.attaque.
Des attaques similaires sont possibles sur NFS, encore plus faciles au niveau transport car le
protocole utilisé est UDP (donc pas d.établissement de connexion logique). Le pirate réalise
une
opération de montage fictive du partage NFS visé vers un système trusté non actif, ouvre un
fichier (par exemple un ~/.rhosts) et y écrit ce qu.il souhaite. Dans ce cas, le seul facteur à
maîtriser est le filehandle NFS (numéro de fichier NFS attribué aléatoirement à l.ouverture du
fichier).
Finalement, bien que cela soit fortement déconseillé, DNS est souvent utilisé pour la
construction de relations de confiance : au lieu de préciser l.adresse IP, seul identifiant unique
d.une machine, il est fréquent d.utiliser le nom DNS de la machine trustée. De la même
manière,
la compromission du serveur DNS (compromission directe ou pollution des caches DNS,
prédiction des identifiants de requêtes) entraîne la compromission de l.autre serveur.
d.analyse et de diagnostic. Certains sont spécifiquement écrits pour capturer des mots de
passe : pcs13, dsniff14. Ces sniffers dédiés aux pirates peuvent être équipés de fonctionnalités
évoluées comme le chiffrement des données capturées, le renvoi en temps réel de ces données
L.exemple suivant montre un fichier produit par le sniffer pcs. On remarque qu.une connexion
ftp
entre les machines intra et gaia a été interceptée et enregistrée. Nous pouvons y voir le login
(bob) et le mot de passe (m0nP4sS) de l.utilisateur qui s.est connecté.
---
PATH: intra.Secway-int.net(2611) => gaia.Secway-int.net(ftp)
DATE: Wed Mar 7 03:55:25 2001
USER bob
PASS m0nP4sS
SYST
PASV
LIST
CWD /tmp
PASV
LIST
QUIT
[CLOSED]
A et B et y insérer des données qui seront reconnues comme valides venant de l.autre par la
machine qui les reçoit. Cette possibilité est cependant subordonnée à une vulnérabilité dans le
système de chiffrement et de vérification, telle que celle découverte en 1998 dans SSH16.
Cette méthode est évidemment aussi applicable, et encore plus facilement, aux flux non
chiffrés
grâce à des outils comme Hunt17.
Le pirate a même la possibilité de prendre le contrôle complet du flux existant, par une
technique dite de Hijacking, où l.agresseur vient se synchroniser sur la connexion existante en
15Le « cassage » du chiffrement est hors de portée de la plupart des pirates, sauf cas précis où
les
informations de chiffrement ont été exposées (compromission des clefs privées ou des
certificats).
16 ssh insertion attack, Core SDI, http://www.core-sdi.com/soft/ssh/ssh-advisory.txt
17 Hunt 1.5 par Pavel Krauz, http://lin.fsid.cvut.cz/~kra/index.html#HUNT
d.implémentation ont toujours été un des problèmes majeurs de la sécurité, car impossibles à
éradiquer complètement. Souvent, seuls des correctifs venant du constructeur (patchs) sont en
mesure de résoudre le problème.
Les fautes d.implémentation sont tellement importantes et courantes que de nombreux pirates
analysent eux-même les codes sources de services réseaux largement utilisés, ou
désassemblent les applications commerciales afin d.y trouver des erreurs d.implémentation
qu.ils pourront utiliser pour manipuler le serveur distant. Il en résulte qu.un nombre non
négligeable de programmes destinés à tirer parti de ces failles (appelés exploits ou warez) est
rendu public chaque semaine, et qu.un « marché » parallèle est organisé entre groupes pirates
pour la diffusion restreinte d.exploits non publics donc plus efficaces (0-day).
La découverte et la correction de ce type de failles se fait le plus souvent par leur découverte
par
des particuliers amateurs ainsi que dans les laboratoires de recherche de sociétés de sécurité,
ou par la découverte d.exploits circulant dans les milieux undergrounds18.
Les applications développées en interne, telles que les scripts CGI, sont aussi susceptibles
d.être affectées par de tels bugs, et l.analyse empirique de ces programmes est souvent
l.alternative la plus facile qu.il reste au pirate quand les failles connues sont corrigées.
De telles failles dans les services réseaux tels que les serveurs de mail ou les serveurs
FTP/HTTP/. sont découvertes régulièrement et permettent de prendre le contrôle de la
machine affectée, en détournant le flux du serveur et lui faisant exécuter par exemple un shell.
Un des exemples les plus récents de buffer overflow a été celui découvert par Covert Labs de
Network Associates20 dans le serveur de noms Bind 8.2 d.ISC, permettant de prendre le
contrôle
d.une machine par l.intermédiaire de Bind, et pour lequel des exploits circulent.
20 http://www.pgp.com/research/covert/advisories/047.asp
6. Progression
Le pirate doit dans un premier temps nettoyer toute trace de son intrusion puis ensuite
s.installer
pour revenir plus facilement sur le système compromis. Une fois la passerelle vers le système
d.information pénétré établie, il progresse rapidement ou lentement, furtivement, pour
atteindre
le but qui le motive : vol d.informations, destruction de systèmes de production, ..
6.1 Inspection du système compromis
Les solutions de sécurisation des fichiers systèmes et journaux sont maintenant faciles à
déployer, et de nombreuses organisations ont recours à des systèmes de détection d.intrusion
dits « host-based » pour stopper à temps les pirates.
L.agresseur ayant gagné le contrôle d.une machine examine donc celle-ci afin d.y déceler tout
d.abord la présence d.un administrateur système qui pourrait noter le comportement suspect
du
pirate. L.activité des utilisateurs eux-mêmes est aussi un bon moyen de se fondre dans le
système pour ne pas être repéré. Il utilise donc les utilitaires Unix standards tels que who,
whodo, last pour vérifier la fréquence de login des administrateurs, netstat pour inspecter
les éventuelles connexions non répertoriées dans les fichiers journaux, ..
Une fois le facteur humain éliminé, car c.est celui qui peut réagir le plus rapidement et qu.il
est
impossible de modifier, il examine les processus actifs ainsi que le système de fichiers pour
trouver d.éventuels systèmes de surveillance ou IDS. Il utilise pour ce faire les outils
standards
tels que ps, et examine les fichiers ouverts (avec l.utilitaire lsof) et les derniers fichiers
modifiés du disque, probablement des fichiers journaux ( /var/adm, /var/log, .). Il inspecte
les fichiers d.exécution programmée tels que crontab ou at afin de déterminer la fréquence
des backups et la potentialité que ses outils d.intrusion ou les fichiers journaux contenant des
traces aient été sauvegardés dans les backups précédents. Il détermine alors si des traces de
l.attaque ont été enregistrées et s.il lui est possible d.effacer ces traces sans en créer de
nouvelles (cas des systèmes de surveillance des fichiers comme Tripwire21). Il inspecte aussi
les
configurations des systèmes de journaux tels que syslogd afin de voir une éventuelle copie
automatique des journaux vers d.autres machines (loghost dans /etc/hosts sous Unix). Les
sessions shell étant communément enregistrées pour des raisons de commodité (possibilité de
revenir à des commandes antérieures), il vérifie aussi que le shell qu.il utilise n.enregistre pas
d.historique (~/.bash_history, ~/.sh_history).
L.enregistrement de session suivant montre un pirate nettoyant les traces de ses tentatives de
connexion sur le serveur ftp d.une machine Solaris qu.il a par la suite réussi à compromettre :
21 http://www.tripwire.com/
# cd /var/adm
# ls –l messages
-rw-r--r-- 1 root other 18244 Jan 7 12:29 messages
# tail –1 messages
Jan 7 12:29:52 solserv ftpd[10216]: bcomora (bogus) LOGIN FAILED [from
192.168.38.6]
# grep -v FAILED messages > .yo ; mv .yo messages
Il nettoie ensuite l.espace disque libre où les données de ses fichiers effacés sont toujours
présentes.
Si jamais le pirate ne peut pas effacer ses traces, il surveille régulièrement la machine afin de
déterminer si les administrateurs se sont aperçus de son intrusion et pouvoir l.évacuer
rapidement dans le cas positif.
Finalement, le pirate réitère autant de fois que nécessaire les phases d.exploitation et de
progression. Le rapatriement des informations capturées se fait par l.intermédiaire de
backdoors
de type « covert channel » .
7. Conclusion
Nous avons vu le déroulement typique d.une attaque sur Internet : une phase de recherche
environnementale, où l.agresseur identifie sa cible, une phase de scanning, permettant de
trouver des services potentiellement exploitables, l'intrusion proprement dite puis finalement
la
progression dans le système compromis. Les deux dernières phases sont ensuite reproduites
sur les systèmes internes, en se servant de la première machine capturée comme point de
départ. Cet exemple de déroulement, que l.on peut qualifier de tactique empirique, est valable
quelle que soit la motivation du pirate et ses compétences : seuls les moyens mis en oeuvre et
le
raffinement technique des méthodes vont varier. L.établissement de lignes de défense
adaptées
passe par la compréhension de ces mécanismes, en particulier en ce qui concerne la détection
des intrusions et la récupération d.un système après un incident.Nous avons fait un pas en
avant pour comprendre comment les pirates opéraient, il reste à voir pour très bientot
l'utilisation d'outils spécifique afin de mener à bien cette intrusion