Les vers sous UNIX
Date : 11 Juillet 2005
Ces derniers mois, plusieurs vers se propageant au travers de systèmes UNIX sont apparus. En fait, le ver " Ramen " (présenté dans le bulletin Cert-IST du mois de janvier 2001) a fait des émules, et des vers semblables sont rapidement apparus : " 1i0n " et " Adore ".
Les principes de fonctionnement de ces vers sont identiques, et les techniques employées sont très proches de celles utilisées lors de l'attaque " manuelle " d'une plate-forme. Nous le décrivons dans la suite de cet article.
Le fonctionnement de ces vers s'opère à travers 3 étapes successives :
- Attaque d'une cible
- Installation sur la machine victime
- Recherche de nouvelles cible
Attaque d'une cible :
L'attaque est menée en utilisant une faille permettant d'exécuter à distance, sur la machine victime, du code avec les privilèges " root ". Il s'agit typiquement d'attaques par débordement de pile sur un démon réseau tournant sous l'identité " root ". On peut citer dans cette catégorie les attaques sur " wu-ftp " (CERT-IST/AV-2000.149), " rpc.statd " (CERT-IST/AV-2000.165), " LPRng " (CERT-IST/AV-2000.229) ou " Bind " (CERT-IST/AV-2001.025).
La méthode la plus simple consiste à utiliser ce débordement de buffer pour attacher à un port réseau prédéfini de la machine victime (par exemple 12345) un shell de commande. Cette porte dérobée (backdoor) permet ensuite au pirate d'exécuter n'importe quelle commande (sous l'identité " root ") sur la machine compromise (toute chaîne de caractères envoyée sur ce port 12345 est exécutée sur la machine compromise comme une commande shell).
Installation sur la machine victime :
La porte dérobée ainsi mise en place est ensuite utilisée pour télécharger sur la machine une copie du ver, et déclencher son exécution. Le ver se présente en fait comme un fichier d'archive (par exemple un fichier " .tar.gz ") qui contient toute une collection de programmes et de fichiers de commandes. L'installation du ver est fait le plus souvent en téléchargeant ce fichier d'archive depuis un site web (installé sur la précédente machine corrompue, ou depuis un site central unique), en le décompactant dans un répertoire local, puis en activant le fichier de commande prévu pour activer le ver.
Le comportement le plus typique du ver est alors de :
- se dissimuler. Afin de rester discret, le ver efface les traces qu'il a générées (" purge " des fichiers de journalisation), puis modifie le système pour que les répertoires, les processus, et les connexions qu'il utilise ne soient plus visibles par les administrateurs de la plate-forme (par exemple en remplaçant les commandes standards " ls ", " ps " et " netstat " par des versions corrompues).
- protéger la machine corrompue. Il est assez amusant de constater que l'un des premiers soucis des pirates arrivant sur une nouvelle plate-forme compromise est de protéger cette machine en supprimant (ou en corrigeant) les failles de sécurité les plus classiques. La raison la plus probable à ce comportement est d'éviter qu'un autre pirate ne prenne à son tour le contrôle de la machine. Dans le cas d'un ver, cette approche permet également d'éviter que le ver ne " boucle " en attaquant à nouveau une machine déjà infestée. Parallèlement à cette phase de sécurisation, le pirate installe aussi souvent de nouvelles backdoors, afin de conserver des moyens de se connecter sur la machine.
- prévenir l'auteur qu'une nouvelle plate-forme a été compromise.
Recherche de nouvelles victimes :
L'étape finale du ver consiste à rechercher de nouvelles victimes. Pour cela, il explore une plage d'adresse réseau (par exemple, toute les machine d'un réseau de classe B pris au hasard), interroge certains services réseaux (ceux pour lesquelles une vulnérabilité existe) et teste si ces services sont vulnérables. Pour cela, le plus simple est de rechercher dans la bannière d'accueil de ces services le nom et la version du produit afin de savoir s'il s'agit d'un produit vulnérable.
Les machines vulnérables sont alors ensuite attaquées, en itérant le processus d'attaque décrit précédemment.
Moyens de protection :
Pour réaliser un ver sous UNIX, il faut avant tout trouver un moyen de se propager de machine en machine. A partir du moment où il existe des vulnérabilités permettant d'obtenir à distance un accès " root ", le ver se propage en effet sur les systèmes UNIX avec la même facilité que ses ancêtres sous Windows.
L'élément clef de protection est donc de corriger au plus tôt ce type de vulnérabilité, et donc d'être très réactif dès la découverte de ce type faille.