L’environnement UNIX, inventé au début des années 1970 propose deux types d’accès :
- les accès racine (utilisateur « root ») ;
- les autres accès.
L’ensemble des vulnérabilités de l’environnement UNIX vise à s’approprier les droits de l’utilisateur racine, celui-ci étant le seul utilisateur disposant des droits complets sur le système de fichiers.
Ces vulnérabilités peuvent être classées en trois grandes catégories :
- les vulnérabilités accessibles via un accès à distance ;
- les vulnérabilités accessibles via un accès local ;
- les vulnérabilités permettant la modification du système une fois les autorisations racines obtenues.
Il existe trois méthodes permettant de contourner à distance les protections de sécurité d’un système UNIX :
- l’attaque d’un service en veille ;
- le transit par un système UNIX assurant la sécurité entre plusieurs réseaux : dans la plupart des situations les pirates ne pénètrent pas littéralement par le mur pare-feu mais s’en servent comme d’un routeur ;
- le lancement des attaques à distances via une action de l’utilisateur local (chevaux de Troie, site Web hostile…).
La forme d’attaque la plus élémentaire d’un service en veille est la tentative de détection des mots de passe par force brute. Les types de services les plus courants que l’on peut percer par une méthode force brute sont :
- telnet ;
- les protocoles de transfert de fichiers ;
- les commandes d’exécution de commandes à distance (rsh, rlogin …) ;
- la commande ssh permettant l’exécution d’un environnement de travail à distance de manière sécurisée ;
- les protocoles applicatifs (POP, HTTP, SMTP…).
Les systèmes de type Unix utilisent un système de fenêtrage basé sur X11. Celui-ci possède un important aspect réseau. Il utilise pour cela le protocole TCP et le port 6000 pour le premier serveur d’une machine. En effet, il s’agit de pouvoir fournir un système de fenêtrage à distance pour le client, ce qui a comme effet désastreux de fournir à l’utilisateur une main-mise complète sur toutes les possibilités graphiques.
Ceci fait donc des serveurs X11 des cibles appréciables pour un agresseur, celui-ci pouvant alors faire des copies de l’écran de l’utilisateur, mais également lire les frappes de touches, fournissant ainsi les mots de passes, ou bien injecter des séquences de touches, comme lors d’une utilisation classique.
Les mécanismes de sécurité qui existent pour le système X11 se sont révélés, par la pratique, être trop faibles ou trop compliqués à utiliser. C’est le cas du mécanisme du « magic cookie », ou encore du mécanisme xhosts :
- Le « magic cookie » se base sur un secret partagé entre le client légitime et le serveur. Le serveur n’accepte un client que si celui-ci prouve qu’il connaît le secret. Le problème provient de la transmission de ce secret, qui peut être capté par un tiers espionnant le réseau.
- Le mécanisme xhosts va fournir au serveur un ensemble d’adresses IP qui seront dûment autorisées à se connecter. Malheureusement, ce mécanisme a le défaut d’être exigeant envers l’utilisateur et peu d’utilisateurs activent un tel mécanisme.
Les systèmes d’impressions Unix (qu’il s’agisse de lp ou de lpr), permettent à une machine d’imprimer sur une imprimante qui ne lui est pas directement reliée, mais qui est connectée à un autre ordinateur.
Le protocole lpr, créé par l’équipe du système Unix BSD, est similaire aux commandes ‘r’ de ce système (rlogin, rsh, etc.), et en possède donc les vulnérabilités et les faiblesses.
Le protocole lp ne possède pas réellement de système d’impression à distance, mais va soit passer la tache d’impression à lpr, soit utiliser rsh.
A cause de cela, de nombreux protocoles d’impression à distance ont été implantés par différents fournisseurs Unix, ainsi que pour les plates-formes non Unix. Mais ces protocoles sont, dans le meilleur des cas, aussi peu sûrs que celui utilisé par lpr.
Pour compliquer le tout, les imprimantes PostScript récentes sont de véritables périphériques Ethernet intelligents, sur lesquels il y a déjà eu des attaques de dénis de services (attaques DOS). Certaines de ces attaques ont été activées par une fonction de sécurité de PostScript.
Une des vulnérabilités la plus difficile à détecter sur un système d’exploitation UNIX consiste en l’établissement d’un canal retour. Un canal retour est défini comme un mécanisme dans lequel le canal de communication part du système cible et non du système assaillant.
Une des méthodes pour établir un canal de retour est l’exploitation du logiciel Telnet présent sur la quasi-totalité des stations Unix. Le mécanisme est résumé dans le schéma ci-dessous :
Figure 13 : Le mécanisme de l'établissement d'un canal de retour
Le principe du mécanisme est le suivant :
- la station de travail cible se connecte sur la machine de l’assaillant sur un port d’apparence inoffensive (ex : le port Web) : c’est la que l’assaillant entre ses commandes ;
- conformément aux mécanismes classiques d’entrée sortie UNIX ces commandes sont renvoyées vers l’interpréteur de commandes sh ;
- les résultats sont ensuite redirigés vers la machine de l’assaillant sur un autre port d’apparence inoffensive (ex : le port de messagerie).
Le mécanisme de RPC (Remote Procedure Call) est un mécanisme permettant à un processus d’exécuter du code sur un ordinateur distant.
Inventé par SUN MicroSystems, le mécanisme de RPC est basé sur l’enregistrement des services RPC sur le « mappeur de port » (PORTMAP) au démarrage de la station de travail. Il appartient à l’utilisateur distant d’interroger le mappeur de port en vue de connaître le port auquel ce service est connecté. L’utilisation d’un scanneur de ports RPC, le fait que de nombreux services RPC soient extrêmement complexes et nécessitent des droits d’accès racine et l’exploitation d’une vulnérabilité par débordement de tampon par exemple font de ces mécanismes des sources importantes de failles de sécurité.
L’utilisation d’une des failles décrites dans le paragraphe précédent permet un accès local à la station UNIX. L’utilisation d’un des nombreux logiciels de décryptage de mots de passe (Crack5, John of the Ripper …) permet d’obtenir les mêmes résultats que ceux décrits pour une station de travail Windows NT.
S’il apparaît vraisemblable que le système d’exploitation UNIX est relativement difficile à percer, ce système d’exploitation permet, une fois l’accès racine effectué, l’installation d’un cheval de Troie sur quasiment toutes les commandes du système. Un cheval de Troie classiquement utilisé est une version modifiée du programme gérant la connexion des utilisateurs au système. Chaque couple nom/mot de passe inscrit est ainsi stocké en vue d’une réutilisation ultérieure !!!
Il existe un deuxième type de vulnérabilités permettant la modification du noyau : les noyaux des systèmes d’exploitation Unix récents permettent le chargement dynamique de modules modifiant leurs comportements. Ces modules nommés LKM (Loadable Kernel Module) permettent de manipuler complètement le système sans que l’utilisateur puisse même détecter leur présence. Un des modules les plus connus est le module « knark » (cf. webographie).
Il est à noter que l’effacement des traces d’effraction d’un système Unix est une chose particulièrement aisée. En effet le format des enregistrements de trace sous un environnement Unix est un format texte lisible et donc particulièrement facile à modifier.