fordo

Un compilador que transforma un programa C en el código de shell de Linux / X86
Descargar ahora

fordo Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • GPL
  • Precio:
  • FREE
  • Nombre del editor:
  • Philippe Biondi
  • Sitio web del editor:
  • http://www.secdev.org/projects/etherpuppet

fordo Etiquetas


fordo Descripción

Un compilador que transforma un programa en C en Linux / x86 código shell ShellForge es un programa escrito en Python que construye shellcodes de C. Se inspira de Hellkit.Some de sigilo envoltorio funciones cerca de las llamadas del sistema se definen en los archivos de cabecera. El programa C que utiliza en lugar de llamadas libc. ShellForge utiliza gcc para convertirlo en ensamblador. Se modifica entonces un poco, lo compila, código extracto del objeto, puede codificar y añadir un cargador en las cargadoras disponibles begining.The son, por el momento: * xor: codificar el código shell en null evitar bytes y añadir un simple xor decodificador * alpha: crea un código shell casi alfanumérica (ver ejemplo) evoluciones futuras: * shellforge hacer capaz de generar shellcodes para más arquitecturas, de forma nativa o utilizando compiladores cruzados * Añadir más cargadores (y terminar el cargador alfa) ejemplo: éste es el hola programa mundial (hola.c) # include "include / sfsyscall.h" int main (void) {char buf [] = "Hola mundo n!".; de escritura (1, buf, sizeof (buf)); exit (0);} Podemos tener el código shell prima: $ hola.c ./shellforge.py ** ** Compilar hola.c sintonización código ensamblador originales ** Montaje asm modificado ** ** Recuperación de código de máquina clave de cifrado XOR Informática ** shellcode forjó x55x89xe5x83xecx24x53xe8x00x00x00x00x5bx83xc3xf4x8bx83x67x00x00x00x89x45xf0x8bx83x6bx00x00x00x89x45xf4x8bx83x6fx00x00x00x89x45xf8x0fxb7x83x73x00x00x00x66x89x45xfcx8dx4dxf0xbax0ex00x00x00xb8x04x00x00x00xc7x45xecx01x00x00x00x53x8bx59xfcxcdx80x5bxb8x01x00x00x00xc7x45xecx00x00x00x00x53x8bx59xfcxcdx80x5bx5bxc9xc3x48x65x6cx6cx6fx20x77x6fx72x6cx64x21x0ax00We puede probarlo: $ ./shellforge.py -tt hola.c ** ** Compilar hola.c sintonización código ensamblador originales ** ** Montaje asm modificado Recuperando código de máquina ** El cálculo clave de cifrado XOR * * shellcode forjó! ** ** Compilar programa de prueba prueba de circulación programHello mundo! ** prueba hecho! estado devuelto = 0We pueden tener el código shell listo para C inclusión: $ ./shellforge.py -V0 -C hello.c unsigned char shellcode [] = "x55x89xe5x83xecx24x53xe8x00x00x00x00x5bx83xc3xf4x8bx83x67" "x00x00x00x89x45xf0x8bx83x6bx00x00x00x89x45xf4x8bx83x6fx00" "x00x00x89x45xf8x0fxb7x83x73x00x00x00x66x89x45xfcx8dx4dxf0" "xbax0ex00x00x00xb8x04x00x00x00xc7x45xecx01x00x00x00x53x8b" "x59xfcxcdx80x5bxb8x01x00x00x00xc7x45xecx00x00x00x00x53x8b" "x59xfcxcdx80x5bx5bxc9xc3x48x65x6cx6cx6fx20x77x6fx72x6cx64" "x21x0ax00"; (void) {((void (*) ()) código shell) int main (); } Podemos utilizar un cargador XOR para evitar x00 bytes en el código shell $ ./shellforge.py -V0 -x hello.cxebx0dx5ex31xc9xb1x75x80x36x02x46xe2xfaxebx05xe8xeexffxffxffx57x8bxe7x81xeex26x51xeax02x02x02x02x59x81xc1xf6x89x81x65x02x02x02x8bx47xf2x89x81x69x02x02x02x8bx47xf6x89x81x6dx02x02x02x8bx47xfax0dxb5x81x71x02x02x02x64x8bx47xfex8fx4fxf2xb8x0cx02x02x02xbax06x02x02x02xc5x47xeex03x02x02x02x51x89x5bxfexcfx82x59xbax03x02x02x02xc5x47xeex02x02x02x02x51x89x5bxfexcfx82x59x59xcbxc1x4ax67x6ex6ex6dx22x75x6dx70x6ex66x23x08x02We puede utilizar un cargador alfa tener un código shell casi alfanumérica (dame un poco más de tiempo para deshacerse de los dos durar no alfanumérico bytes) $ ./shellforge.py -V0 -R --loader = alfa hola.c hAAAAX5AAAAHPPPPPPPPah0B20X5Tc80Ph0504X5GZBXPh445AX5XXZaPhAD00X5wxxUPTYII19hA000X5sOkkPTYII19h0000X5cDi3PTY19I19I19I19h0000X50000Ph0A0AX50yuRPTY19I19I19I19h0000X5w100PTYIII19h0A00X53sOkPTYI19h0000X50cDiPTYI19I19hA000X5R100PTYIII19h00A0X500yuPTYI19I19h0000X50w40PTYII19I19h0600X5u800PTYIII19h0046X53By9PTY19 I19I19h0000X50VFuPTYI19I19h0000X5LC00PTYIII19h0060X5u79xPTY19I19I19I19h0000X5000FPTY19I19h2005X59DLZPTYI19h0000X500FuPTYI19I19h0010X5DLZ0PTYII19h0006X50Fu9PTY19I19I19I19h0000X5LW00PTYIII19h0D20X5Lx9DPTY19h0000X5000kPhA0A0X5ecV0PTYI19I19h0B0AX5FXLRPTY19h5550X5ZZZePTYI19 ?? El clásico exec / bin / sh: #include "incluye / sfsyscall.h" int main (void) {char * a [] = { "/ bin / sh", 0}; execve (a , a, 0);} ejemplo más complejo: Para hacer una shellcode que explore puertos de localhost: #include "incluyen / sfsyscall.h" #include "incluyen / sfsocket.h" #define PRIMER 1 # definir principal 1024int LAST (void) {struct sockaddr_in sa; int s, i; Char buf ; sa.sin_family = PF_INET; sa.sin_addr.s_addr = 0x0100007f; i = Primer-1; de escritura (1, "comenzar final", 4); cerrar (1); de salida (0);}


fordo Software relacionado

Deskzilla

Le permite hacer más problemas en su sistema de seguimiento de errores de Bugzilla. ...

229

Descargar

Dipitrán

Dytrack es un sistema de seguimiento gratuito, de código abierto, liviano, distribuido (error, defecto, ticket) utilizando un repositorio de subversión. ...

199

Descargar

bicho

es un sistema de seguimiento simple para usuarios de la consola. Solo depende de comandos comunes de UNIX. ...

209

Descargar