shellforge.

Um compilador que transforma um programa C no Linux / X86 Shellcode
Baixe Agora

shellforge. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • GPL
  • Preço:
  • FREE
  • Nome do editor:
  • Philippe Biondi
  • Site do editor:
  • http://www.secdev.org/projects/etherpuppet

shellforge. Tag


shellforge. Descrição

Um compilador que transforma um programa C no Linux / X86 Shellcode O ShellForge é um programa escrito em Python que constrói shellcodes de C. É inspirado na Stealth's Hellkit.Algumas Funções de Wrapper As chamadas de sistema são definidas em arquivos de cabeçalho. O programa C usa-os em vez de chamadas libc. O ShellForge usa o GCC para convertê-lo no montador. Em seguida, modifica-o um pouco, compila, extrai código do objeto, pode acoplá-lo e adicionar um carregador no começo. Os carregadores disponíveis são, para o momento: * xor: codificar o shellcode para evitar bytes null e adicionar um simples XOR decodificador * alfa: Faça um shellcode quase alfanumérico (ver exemplo) futuros evoluções: * Faça o shellforge capaz de gerar screetcodes para mais arquiteturas, nativamente ou usando compiladores cruzados * Adicionar mais carregadores (e concluir o carregador alfa) Exemplo: Aqui está o Olá Programa Mundial (Olá.C). # incluem "incluem / sfsyscall.h" int main (nulo) {char buf [] = "Olá mundo! n"; Escreva (1, BUF, SizeOf (BUF)); Saída (0);} Podemos ter o shellcode bruto: $ ./shellforge.py hello.c ** Compilando Hello.c ** Ajustando o código do montador original ** Montagem Modificada ASM ** Recuperando o código da máquina ** Chave de criptografia XOR ** Shellcode forjada x55x89xe5x83xecx24x53xe8x00x00x00x00x5bx83xc3xf4x8bx83x67x00x00x00x89x45xf0x8bx83x6bx00x00x00x89x45xf4x8bx83x6fx00x00x00x89x45xf8x0fxb7x83x73x00x00x00x66x89x45xfcx8dx4dxf0xbax0ex00x00x00xb8x04x00x00x00xc7x45xecx01x00x00x00x53x8bx59xfcxcdx80x5bxb8x01x00x00x00xc7x45xecx00x00x00x00x53x8bx59xfcxcdx80x5bx5bxc9xc3x48x65x6cx6cx6fx20x77x6fx72x6cx64x21x0ax00We pode testá-lo: $ ./shellforge.py -tt hello.c ** Compilando hello.c ** Afinação código assembler originais ** Montagem asm modificado ** Recuperar código de máquina ** Computing chave de criptografia XOR * * Shellcode forjado! ** Compilando Programa de Teste ** Execução do Programa de TesteHello! ** Teste feito! Obtivemos status = 0We pode ter o código shell pronto para inclusão C: $ ./shellforge.py -v0 -C ola.c unsigned char shellcode [] = "x55x89xe5x83xecx24x53xe8x00x00x00x00x5bx83xc3xf4x8bx83x67" "x00x00x00x89x45xf0x8bx83x6bx00x00x00x89x45xf4x8bx83x6fx00" "x00x00x89x45xf8x0fxb7x83x73x00x00x00x66x89x45xfcx8dx4dxf0" "xbax0ex00x00x00xb8x04x00x00x00xc7x45xecx01x00x00x00x53x8b" "x59xfcxcdx80x5bxb8x01x00x00x00xc7x45xecx00x00x00x00x53x8b" "x59xfcxcdx80x5bx5bxc9xc3x48x65x6cx6cx6fx20x77x6fx72x6cx64" "x21x0ax00"; int Main (vácuo) {((*) (*) ()) shellcode) (); } Podemos usar um carregador XOR para x00 evitar bytes no shellcode $ ./shellforge.py -v0 -x hello.cxebx0dx5ex31xc9xb1x75x80x36x02x46xe2xfaxebx05xe8xeexffxffxffx57x8bxe7x81xeex26x51xeax02x02x02x02x59x81xc1xf6x89x81x65x02x02x02x8bx47xf2x89x81x69x02x02x02x8bx47xf6x89x81x6dx02x02x02x8bx47xfax0dxb5x81x71x02x02x02x64x8bx47xfex8fx4fxf2xb8x0cx02x02x02xbax06x02x02x02xc5x47xeex03x02x02x02x51x89x5bxfexcfx82x59xbax03x02x02x02xc5x47xeex02x02x02x02x51x89x5bxfexcfx82x59x59xcbxc1x4ax67x6ex6ex6dx22x75x6dx70x6ex66x23x08x02We pode usar um carregador alfa ter um shellcode quase alfanumérico (dê-me um pouco mais de tempo para se livrar dos dois Do último alfanumérico bytes) $ ./shellforge.py -v0 -R --loader = alpha hello.c hAAAAX5AAAAHPPPPPPPPah0B20X5Tc80Ph0504X5GZBXPh445AX5XXZaPhAD00X5wxxUPTYII19hA000X5sOkkPTYII19h0000X5cDi3PTY19I19I19I19h0000X50000Ph0A0AX50yuRPTY19I19I19I19h0000X5w100PTYIII19h0A00X53sOkPTYI19h0000X50cDiPTYI19I19hA000X5R100PTYIII19h00A0X500yuPTYI19I19h0000X50w40PTYII19I19h0600X5u800PTYIII19h0046X53By9PTY19 I19I19h0000X50VFuPTYI19I19h0000X5LC00PTYIII19h0060X5u79xPTY19I19I19I19h0000X5000FPTY19I19h2005X59DLZPTYI19h0000X500FuPTYI19I19h0010X5DLZ0PTYII19h0006X50Fu9PTY19I19I19I19h0000X5LW00PTYIII19h0D20X5Lx9DPTY19h0000X5000kPhA0A0X5ecV0PTYI19I19h0B0AX5FXLRPTY19h5550X5ZZZePTYI19 ?? O exec clássico / bin / sh: #include "incluem / sfsyscall.h" int principal (void) {char * um [] = { "/ bin / sh", 0}; Execuve (A , A, 0);} Mais complexo Exemplo: Para fazer um shellcode que digitalizar portas de localhost: #include "include / sfsyscall.h" #include "include / sfsocket.h" #define primeiro 1 # Definir o último 1024int principal (VOID) {Struct Sockaddr_in SA; int s, eu; CHAR BUF ; sa.sin_family = pf_inet; sa.sin_addr.s_addr = 0x0100007F; I = primeiro-1; Escreva (1, "Begin final", 4); fechar (1); saída (0);}


shellforge. Software Relacionado

Deskzilla.

permite que você faça mais com problemas no seu sistema Bugzilla Bug Tracking. ...

229

Download

Ditrack.

Ditrack é um problema de rastreamento gratuito, de código aberto, de código aberto (bug, defeito, bilhete, bilhete) usando um repositório de subversion. ...

199

Download

erro

bug é um sistema de rastreamento simples para usuários do console. Depende apenas dos comandos comuns do UNIX. ...

209

Download