.:: creacion de un SHELLCODE USANDO PYTHON ::.

¿Qué necesitamos?

Necesitamos:

Objetivos

El objetivo es crear una shellcode básica que ejecute un comando que le proporcionemos.

¿De que nos valdremos? Usarmos la libreria InlineEgg para Python. Esta es una libreria creada para facilitar la creación de pequeños programas en ensabamblador. Esto incluye la creación de Shellcodes, aunque no se limita a ello.

Requisitos

1) Saber instalar sin problemas Python y la libreria InlineEgg (En sus paginas oficiales esta perfectamente explicado)

2) Poseer unos mínimos conocimientos de programación en algún lenguaje (No necesariamente Python, supongo que no habra problemas para aclararse).

3) Conocer que es una Shellcode (Aquí no se explicara que es, esta ampliamente explicado por el ancho y largo de internet)

Primer ShellCode

Nuestro primer shellcode:

  from inlineegg.inlineegg import *
  shellcode=InlineEgg(Linuxx86Syscall)
  shellcode.execve("/bin/ls",("ls","-la"));
  shellcode.exit() 
  print shellcode.getCode()
from inlineegg.inlineegg import *

Incluyendo la libreria InlineEgg

shellcode=InlineEgg(Linuxx86Syscall)

Este código genera un objeto InlineEgg, usando como parámetro constructor Linuxx86Syscall. Existen otros parametros (Ver documentación de la libreria) para que el código generado por InlineEgg sea usable en otros sistemas operativos.

shellcode.execve("/bin/ls",("ls","-la"))

Esta orden es usada para generar el shellcode. Pueden ser usadas muchos tipos de instrucciones o combinaciones de las mismas para generar un shellcode. Esta a modo de ejemplo, sirve para ejecutar un comando. Recibe un comando asi como un vector de argumentos (Considerando el argumento 0 el nombre del programa.) y ejecuta /bin/ls -la.

Usando las distintas opciones, se pueden generar shellcodes que hagan acciones complejas (Ver documentacion de la libreria)

shellcode.exit()

Comando que indica que el shellcode finalizara su ejecucion al llegar a ese punto.

print shellcode.getCode()

Imprime en la salida estandard la shellcode generada.

¿Como testearlo?

Podeis usar este programa en C para testearlo. Compilarlo y llamarlo poniendo como parametro el shellcode generado. Este lo ejecutará

#include <stdio.h>

void main(){

   	char buffer[1024];
   	read(0,buffer,1024);
	((void(*)())buffer)();
  
}

Ampliacion de contenidos

Si deseais ampliar contenidos acerca del uso de esta libreria, os remito a la documentacion de la misma, en su página oficial. Y quien sabe, si este documento tubiera éxito, se podria hacer uno ampliando las caracteristicas de esta libreria :)

Documentacion InlineEgg

Espero que hayais disfrutado tanto leyendo este documento como yo escribiendolo :)

Opinar sobre el documento en el foro!!!!! (cualquier critica es buena y nos ayuda a mejorar)

]_HQH_[


webmaster@hispabyte.com