Annonce

Réduire
Aucune annonce.

Backdoors demystified

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Backdoors demystified

    --------------------------------------------------------
    Backdoors demystified
    --------------------------------------------------------



    Pour commencer cet article, je vais tenter de vous expliquer ce qu'est une backdoor (du point de vue technique) et à quoi elle sert.
    Nous verrons ensuite les différents types de backdoors existantes et enfin, je vous donnerais des codes source de backdoor (dossier src/) relativement simples que j'essayerais de commenter au maximum.

    So, what is a backdoor ?

    Une backdoor est un programme utilisé afin de récupérer un accès root sur un serveur. Quand un pirate réussi à devenir root sur un serveur, il met généralement en place une backdoor qui lui servira a reprendre l'acces quand il le souhaitera. Les fonctions principales d'une backdoor sont de réussir à reprendre l'acces root le plus vite possible tout en laissant le moins de traces possibles (en utilisant un log cleaner integré au programme par exemple) et en faisant attention à ne pas se faire repérer par l'administrateur de la machine cible.
    Pour cela, le pirate va chercher plusieurs "failles" dans le systeme ce qui lui permet de toujours avoir un acces même si l'administrateur réussit a détecter la backdoor.

    Voilà pour le principe, maintenant, voyons voir les différents types de backdoor existantes, leur descriptions et leur effets sur un serveur vulnérable (ceci est une liste non exhaustive):


    1) /etc/passwd Backdoor
    --------------------

    Cette methode consiste à cracker un mot de passe se situant dans le fichier /etc/passwd/ ou a ajouter une ligne dans ce fichier nous permettant de nous logger en tant qu'user "legal" du systeme.
    Cette technique est peu utilisée car souvent la premiere chose qu'un administrateur fait lorsque sont systeme a été attaqué est de vérifier ce fichier.
    A ne pas conseiller donc.



    2) Rhosts Backdoor
    ---------------

    Cette backdoor consiste à exploiter le systeme d'authentification Rlogin et RSH. Il suffit de modifier le fichier $HOME/.rhosts en y ajoutant un ligne "+ +" ce qui a pour effet que n'importe qui peut se logger a distance sans avoir besoin de fournir de mot de passe, ce qui peut être un inconvenient car n'importe quel crasher qui aura repéré la faille pourra se connecter aussi
    (NOTE: Pour eviter ce probleme, il suffit de ne mettre qu'un seul "+" dans le .rhosts mais vous
    ne pourrez vous logger qu'en local..).
    Encore une fois, c'est une des premieres choses que l'administrateur verifie. Il suffirait dans ce cas de développer un systeme de client/serveur qui permettrait d'ajouter cette ligne lorsque le pirate se connecte au serveur de la backdoor, il n'aurait alors plus qu'a effacer la ligne une fois le controle repris.. mais ceci sera développé
    plus loin.



    3) Bootblock backdoor
    ------------------

    Cette technique consiste a insérer une sorte de virus dans le secteur de boot du systeme.
    Cette technique peut s'avérer très efficace car les administrateurs ne possèdent souvent pas d'outils pour verifier le secteur de boot mais elle est aussi très complexe a mettre en oeuvre.



    4) Shell SUID backdoor
    -------------------

    Consiste a rendre un shell (/bin/bash par exemple) suid root, c'est a dire qu'un user qui utilisera ce shell aura les privileges root lors de son execution.
    Il suffit pour cela de copier le shell vers un autre fichier qui representera notre shell suid (ex: cp /bin/bash /bin/shellsuid ) et de le rendre suid root en tapant "chmod 7555 /bin/shellsuid".
    Il suffit ensuite d'executer notre "faux" shell pour avoir les privileges root.



    5) LKM (Linux Kernel Modules)
    --------------------------

    Les LKM sont utilisés par le kernel pour lui rajouter ou expandre ses fonctionnalités (modifier les appels systeme par exemple.. ). Ces modules sont chargés dynamiquement, c'est a dire qu'ils ne necessitent aucune compilation du kernel pour fonctionner ! Ils sont la plupart du temps utilisés pour les drivers de materiel. Seul le root peut les installer (normal..).
    Pour forcer le systeme a charger un module, tappez ceci dans votre term (vous devez etre root):

    #insmod module.o

    Pour voir la liste des modules en execution:

    #lsmod

    Code:
    Module                  Size  Used by    Tainted: PF
    nvidia               1672832  10  (autoclean)
    snd                    40868   4  [snd-seq-oss snd-seq-midi-event snd-seq snd-pcm-oss snd-mixer-oss
    snd-via82xx snd-ac97-codec snd-pcm snd-timer snd-mpu401-uart snd-rawmidi snd-seq-device]
    cdrom                  31648   0  [sr_mod ide-cd]
    floppy                 55132   0
    module                   1   0

    Vous pouvez egalement enlever vos modules avec:

    #rmod module
    Code:
    Module                  Size  Used by    Tainted: PF
    nvidia               1672832  10  (autoclean)
    snd                    40868   4  [snd-seq-oss snd-seq-midi-event snd-seq snd-pcm-oss snd-mixer-oss
    snd-via82xx snd-ac97-codec snd-pcm snd-timer snd-mpu401-uart snd-rawmidi snd-seq-device]
    cdrom                  31648   0  [sr_mod ide-cd]
    floppy                 55132   0
    Bien sur il existe des methodes pour cacher ce module .
    Vous voyez où je veux en venir ? Eh oui, on peut tout simplement installer une backdoor dans le kernel sans que l'admin s'en apercoive (le module etant invisible). Pour l'aspect programmation c'est un peu plus dur mais pas insurmontable (à voir dans un prochain article).



    6) TCP Backdoor
    ------------

    Une TCP Backdoor agit comme un serveur sur la cible. Nous pouvons alors nous y connecter via telnet ou un client specifique. On peut également l'associer a un LKM pour cacher le processus ou cacher l'executable..
    Quand le serveur est activée, il agit alors comme une backdoor "normale" (ajout de .rhost, de comptes utilisateurs..) et vous n'avez plus qu'a faire disparaître les logs et a relancer l’exécutable .
    Dernière modification par MadHatter, 27 décembre 2011, 04h13.
    " Une teuf sans drogue c'est comme une levrette sans fessé, c'est quand même rare. "

    †|

  • #2
    Bonjour, bonne entrée en matière, mais le .rhost n'existe pas dans mes OS Linux. Dans /home je n'est que le squel???

    Une méthode très simple que j'ai mis au point afin de pouvoir avoir accès à un serveur inaccessible depuis l'extérieur car l'IP public change continuellement et le proxy/firewall interdit les connexions initié depuis l'extérieur.
    Il faut créer un script shell faisant des tentative de connexion à un serveur SSH externe avec des droits ajouté dans passwd. Ok il faut cacher le nouvel utilisateur qui aura les droits root de sorte que ce ne soit pas visible dans le passwd.
    Le plus compliqué est d'arriver à injecté le code. Mais une fois que c'est fait, le client fait des requêtes dans le temps pour initié une connexion à un serveur SSH externe. Lorsque je lance mon serveur SSh, je n'ai plus qu'a attendre un peu et à vérifier si une connexion a été établie. Après quoi, il ne reste plus qu'a faire un revers SSH et le tour est joué. Vous prenez possession du serveur en root.
    Bon ok, après il faut bien sur faire des clearlog etc afin d'effacer les traces et forcer le script à se multipllier afin d'assurer une continuité d'activité même si le script est découvert. Mais le principe est très simple. Je suis encore un débutant.

    Dans tous les cas merci de ces précisions.

    Commentaire

    Chargement...
    X