Cet article a pour but d'expliquer la méthodologie généralement retenue par les pirates
pour s'introduire dans un système informatique. Il ne vise pas à expliquer comment compromettre
un système mais à comprendre la façon dont il peut l'être afin de mieux pouvoir
s'en prémunir. En effet, la meilleure façon de protéger son système est de procéder
de la même manière que les pirates afin de cartographier les vulnérabilités du système.
Ainsi cet article ne donne aucune précision sur la manière dont les failles sont exploitées, mais explique comment faire en sorte de les déceler et de les corriger.
Les hackers ayant l'intention de s'introduire dans les systèmes informatiques recherchent dans un premier temps des failles, c'est-à-dire une vulnérabilité nuisible à la sécurité du système, dans les protocoles, les systèmes d'exploitations, les applications ou même le personnel d'une organisation ! Les termes de vulnérabilité, de brêche ou en langage plus familier de trou de sécurité (en anglais security hole) sont également utilisés pour désigner les failles de sécurité.
Pour pouvoir mettre en oeuvre un exploit (il s'agit du terme technique signifiant exploiter une vulnérabilité), la première étape du hacker consiste à récupérer le maximum d'informations sur l'architecture du réseau et sur les systèmes d'exploitations et applications fonctionnant sur celui-ci. La plupart des attaques sont l'oeuvre de script kiddies essayant bêtement des exploits trouvés sur Internet, sans aucune connaissance du système, ni des risques liés à leur acte.
Une fois que le hacker a établi une cartographie du système, il est en mesure de mettre en application des exploits relatifs aux versions des applications qu'il a recensées. Un premier accès à une machine lui permettra d'étendre son action afin de récupérer d'autres informations, et éventuellement d'étendre ses privilèges sur la machine.
Lorsqu'un accès administrateur (le terme anglais root est généralement utilisé) est obtenu, on parle alors de compromission de la machine (ou plus exactement en anglais root compromise), car les fichiers systèmes sont susceptibles d'avoir été modifiés. Le hacker possède alors le plus haut niveau de droit sur la machine.
La dernière étape du hacker consiste à effacer ses traces, afin d'éviter tout soupçon de la part de l'administrateur du réseau compromis et de telle manière à pouvoir garder le plus longtemps possible le contrôle des machines compromises.
L'obtention d'informations sur l'adressage du réseau visé, généralement qualifiée de prise d'empreinte, est un préalable à toute attaque. Elle consiste à rassembler le maximum d'informations concernant les infrastructures de communication du réseau cible :
Lorsque la topologie du réseau est connue par le hacker, il peut le scanner (le terme balayer est également utilisé), c'est-à-dire déterminer à l'aide d'un outil logiciel (appelé scanner ou scanneur en français) quelles sont les adresses IP actives sur le réseau, les ports ouverts correspondant à des services accessibles, et le système d'exploitation utilisé par ces serveurs. L'outil le plus connu pour scanner un réseau est Nmap, reconnu par de nombreux administrateurs réseaux comme un outil indispensable à la sécurisation d'un réseau. Cet outil agit en envoyant des paquets TCP à un ensemble de machines sur un réseau (déterminé par une adresse réseau et un masque), puis il analyse les réponses. Selon l'allure des paquets TCP reçus, il lui est possible de déterminer le système d'exploitation distant pour chaque machine scannée.
Il existe un autre type de scanneur, appelé mappeur passif (le plus connu étant Siphon), permettant de connaître la topologie réseau du brin physique sur lequel le mappeur analyse les paquets. Contrairement aux scanners précédents, cet outil n'envoie pas de paquets sur le réseau et est donc totalement indétectable des systèmes de détection d'intrusion.
Enfin certains outils permettent de capturer les connexions X (un serveur X est un serveur gérant l'affichage des machines de type UNIX. Ce système a pour caractéristique de pouvoir utiliser l'affichage d'une machine à travers le réseau) des stations présentes sur le réseau, afin d'étudier ce qui est affiché sur les écrans et éventuellement d'intercepter les saisies sur le claviers des machines vulnérables.
Lorsque le "scan" du réseau est terminé, il suffit au hacker d'examiner le fichier journal (log) des outils utilisés pour connaître les adresses IP des machines connectées au réseau et les ports ouverts sur celles-ci. Les numéros de port ouverts sur les machines peuvent lui donner des informations sur le type de service ouvert et donc l'inviter à interroger le service afin d'obtenir des informations supplémentaires sur la version du serveur.
Ainsi pour connaître la version d'un serveur HTTP, il suffit de se connecter au serveur Web en Telnet sur le port 80 :
telnet www.commentcamarche.net 80puis de demander la page d'accueil :
GET / HTTP/1.0Le serveur répond alors les premières lignes suivantes :
HTTP/1.1 200 OK Date: Thu, 21 Mar 2002 18:22:57 GMT Server: Apache/1.3.20 (Unix) Debian/GNULe système d'exploitation, le serveur et sa version sont alors connus.
Le Social Engineering (que l'on pourrait traduire par ingénierie sociale) consiste à exploiter l'erreur humaine, c'est-à-dire d'utiliser la naïveté et la gentillesse exagérée des utilisateurs du réseau, pour obtenir des informations sur ce dernier. Ce procédé consiste à entrer en contact avec un utilisateur du réseau, en se faisant passer en général pour quelqu'un d'autre, afin d'obtenir des renseignements sur le système d'information ou éventuellement pour obtenir directement un mot de passe. De la même façon une faille de sécurité peut être créée dans le système distant en envoyant un cheval de Troie à certains utilisateurs du réseau. Il suffit qu'un des utilisateurs exécute la pièce jointe pour qu'un accès au réseau interne soit donné à l'agresseur extérieur.
C'est la raison pour laquelle la politique de sécurité doit être globale et intégrer les facteurs humains (par exemple la sensibilisation des utilisateurs aux problèmes de sécurité) car le niveau de sécurité d'un système est caractérisé par le niveau de son maillon le plus faible.
Après avoir établi l'inventaire du parc logiciel et éventuellement matériel, il reste au hacker à déterminer si des failles existent.
Il existe ainsi des scanneurs de vulnérabilité permettant aux administrateurs de soumettre leur réseau à des tests d'intrusion afin de constater si certaines applications possèdent des failles de sécurité. Les deux principaux scanneurs de failles sont :
Il est également conseillé aux administrateurs de réseaux de consulter régulièrement les sites tenant à jour une base de données des vulnérabilités :
Lorsque le pirate a dressé une cartographie des ressources et des machines présentes sur le réseau, il est en mesure de préparer son intrusion.
Pour pouvoir s'introduire dans le réseau, le pirate a besoin d'accéder à des comptes valides sur les machines qu'il a recensé. Pour ce faire, plusieurs méthodes sont utilisées par les pirates :
Lorsque le pirate a obtenu un ou plusieurs accès sur le réseau en se logeant sur un ou plusieurs comptes peu protégés, celui-ci va chercher a augmenter ses privilèges en obtenant l'accès root (en français superutilisateur ou superadministrateur).
Dès qu'un accès root a été obtenu sur une machine, l'attaquant a la possibilité d'investiguer le réseau à la recherche d'informations supplémentaires.
Il lui est ainsi possible d'installer un sniffeur (en anglais sniffer), c'est-à-dire un logiciel capable d'écouter (le terme reniffler, ou en anglais sniffing, est également employé) le traffic réseau en provenance ou à destination des machines situées sur le même brin. Grâce à cette technique, le pirate peut espérer récupérer les couples identifiants/mots de passe lui permettant d'accéder à des comptes possédant des privilèges étendus sur d'autres machines du réseau (par exemple l'accès au compte d'un administrateur) afin d'être à même de contrôler une plus grande partie du réseau.
Les serveurs NIS présents sur un réseau sont également des cibles de choix pour les pirates car ils regorgent d'informations sur le réseau et ses utilisateurs.
Grâce aux étapes précédentes, le pirate a pû dresser une cartographie complète du réseau, des machines s'y trouvant, de leurs failles et possède un accès root sur au moins l'une d'entre-elles. Il lui est alors possible d'étendre encore son action en exploitant les relations d'approbation existant entre les différentes machines.
Cette technique d'usurpation d'identité, appelée spoofing, permet au hacker (dans le sens pirate du terme) de pénétrer des réseaux privilégiés auxquels la machine compromise a accès.
Lorsque l'intrus a obtenu un niveau de maîtrise suffisant sur le réseau, il lui reste à effacer les traces de son passage en supprimant les fichiers qu'il a créé et en nettoyant les fichiers de logs des machines dans lesquelles il s'est introduit, c'est-à-dire en supprimant les lignes d'activité concernant ses actions.
Si vous êtes responsable d'un réseau connecté à internet, il vous revient d'en assurer sa sécurité, et par conséquent de tester les failles de celui-ci. C'est la raison pour laquelle, un administrateur réseau se doit d'être au courant des vulnérabilités des logiciels qu'il utilise et de se "mettre dans la peau d'un pirate" afin d'essayer de s'introduire dans son propre système. Lorsque les compétences au sein de l'entreprise ne sont pas suffisantes pour mener à bien cette opération, il convient de faire réaliser un audit par une société spécialisé dans la sécurité informatique.
Article écrit par Jean-François PILLOU, inspiré d'un article de GomoR.