Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

ShellCodes

definición y ejemplos
by

Isaac Gonzalez Alcala

on 28 May 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of ShellCodes

Codificación 0 + - = 9 8 7 1 2 3 4 5 6 c ¿ Para que nos sirve un stack overflow? Si hubiéramos sobrescrito la dirección del retorno de main con la dirección de un código que nos fuera provechoso, ese código provechoso es nuestra shellcode.
Si conseguimos que el programa salte a donde nosotros queramos, donde esta nuestra shellcode, podremos ejecutar cualquier código (funciones, etc.cualquier cosa, aunque mientras mas complicada, mas grande será la shellcode,y hay que tener en cuenta el tamaño del buffer...). Una shellcode puede ejecutar cualquier cosa, tanto en Windows, como en Linux y derivados. STACK OVERFLOW

Un Stack overflow es desbordamiento de pila, es un problema aritmético que hace referencia al exceso de flujo de datos almacenados en la pila de una función, esto permite que la dirección de retorno de la pila pueda ser modificada por otra parte de un atacante para obtener un beneficio propio, que generalmente es malicioso. ¿Qué es un ShellCode? Una shellcode es un código básico en ASM, muy corto generalmente, que ejecuta los comandos que queremos, como system("cmd.exe") (ejecuta una shell msdos enwindows); o execv("/bin/sh") (ejecuta una shell sh en Linux/Unix), o sirve para añadir un usuario a la cuenta del sistema, para descargar un troyano yejecutarlo, para dejar abierto un puerto conectado a una shell, etc....
Es el código que ejecutara el programa vulnerable una vez tengamos su control. Conversión a opcode Una vez que tenemos el código en lenguaje ensamblador listo, lo pasaremos ha código objeto. Para esto usaremos nasm (ensamblador tipo intel X86) Codificación en ensamblador Para esta parte necesitaremos saber que funciones vamos a utilizar para cumplir el propósito. Son 3 cosas que se necesitan: 1º- Meter un NULO (NULL -> 0x00, 0) en la pila, para delimitar el fin de cadena de cmd.exe--> "cmd.exe\00". Esto nos puede acarrear problemas con strcpy, si strcpy detecta un 0 en una cadena, deja de copiar el resto de la cadena.Cualquier función que trabaje con cadenas, un 0, un 0x00, un \x00 lo interpreta como fin de cadena (aunque luego haya mas cosas, las ignora). Shell Code Buendia Rodríguez Irvin Yamin
González Alcalá Isaac
Rodríguez Zamora Mauro Martín para descargar nams en debian o similares:

# apt-get install nasm 2º- Necesitamos meter "cmd.exe" en la pila (push 'c', push 'm', push 'd', push '.', etc...), y luego saber su dirección en la propia pila, para pasársela aSystem() como argumento. 3º- Necesitamos la dirección de la función System() en la DLL msvcrt.dll Aquí se crea el over flow para que el shellcode pueda tener acceso a nuestra computadora Se realiza la compilación del programa anterior para que el shellcode pueda ser ejecutado Se muestra en esta pantalla lo que fue creado para realizar el overflow Se crea el shellcode Aquí se ejecutara el shellcode que creamos anteriormente Aquí se ve que al ejecutar nuestra shellcode muestra la información
Full transcript