Ecriture de shellcode



Pré-requis et techniques de base
   Le buffer-overflow n'a plus de secret pour vous, mais vous êtes un peu frustré de n'injecter bêtement que du shellcode trouvé à gauche ou à droite et vous aimeriez pouvoir faire votre propre shellcode ? Vous êtes arrivés sur la bonne page. Nous allons expliquer en trois étapes comment on arrive à faire un shellcode (qui marche) :
Savoir coder un bon shellcode est tout un art, ce n'est pas notre prétention ici. Le but est, à partir d'un exemple simple et universel, de vous montrer comment faire un shellcode de base. Votre imagination et votre aptitude à coder en assembleur vous permettront d'implémenter des shellcodes plus avancés.

Afin d'aller plus loin dans l'écriture de shellcode, il y a plusieurs possibilités : les shellcodes imprimables (seulement avec des caractères ASCII), les shellcodes à sémantique plus avancée (ajout de règles iptables, shells réseau en mode actif ou passif, chroot break via ptrace, ..), les shellcodes de très petite taille, etc.

La puissance des shellcodes
   Dans la vie du pentester, chacun de ceux-ci a une réelle utilité selon l'application et le système cible. J'ai choisi d'écrire un article sur les shellcodes polymorphiques, car je pense que leur écriture nécessite l'ensemble des techniques nécessaires à l'élaboration des autres, à savoir l'écriture en assembleur d'une sémantique toute autre que celle de l'ouverture d'un shell ainsi que la transformation arbitraire du code préservant la sémantique. Voici donc deux petits articles complémentaires :
Pour la pleine compréhension de ces parties, il est recommandé d'avoir une notion claire des pointeurs et de leur arithmétique , de connaître les bases de l'assembleur (décrites brièvement dans la partie protection des logiciels) et de connaître l'organisation de la segmentation d'un programme.

Apprendre la base du hacking - Liens sécurité informatique/hacking - Contact

Copyright © Bases-Hacking 2007-2014. All rights reserved.