Compilando Exploits

Linguagem C

Linux

gcc <exploit.c> -o <exploit>

Removendo algumas informações ao compilar para melhorar a segurança

gcc -s <file.c>

É comum passarmos pela situação onde, temos um Linux x64 e o nosso alvo (que não possui o gcc instalado) é um sistema x86. Nesse caso, podemos executar o comando abaixo para compilar nosso exploit. Caso seja um executável Estático (e não utilizando lib compartilhadas), adicione o parâmetro -Static no final do comando.

gcc -o <output> <output.c> -Wl,--hash-style=both -m32

Windows (Cross-Compile)

Geralmente os exploits geralmente são escritos em C ou usando outras linguagens de script, como Python / Perl / PHP. Não é uma boa decisão deixar um compilador no seu servidor, portanto, ele é "arquivado". Caso você não tenha o comando gcc, significa que você precisa procurar explorar no Python, Perl ou compilá-lo em uma máquina virtual que tem a versão semelhante tanto do software quanto do kernel e depois mover o arquivo executável no host de destino. Mesmo assim não podemos ter 100% de certeza de que a exploração dê certo ou que até mesmo irá travar o sistema alvo.

Abaixo vemos uma maneira de compilar um exploit para Windows, porém iremos um Linux para realizar tal compilação. Antes de começar, precisamos instalar o mingw-64.

sudo apt install mingw-w64

Feito a instalação utilize a sintaxe abaixo para compilar o exploit.

# C
i686-w64-mingw32-gcc <exploit.c> -o <exploit_32.exe>          # 32-bit 
i686-w64-mingw32-gcc <exploit.c> -o <exploit_32.exe> -lws2_32 # 32-bit
x86_64-w64-mingw32-gcc <exploit.c> -o <exploit_64.exe>        # 64-bit

# C++
i686-w64-mingw32-g++ <exploit.cc> -o <exploit_32.exe>          # 32-bit
x86_64-w64-mingw32-g++ <exploit.cc> -o <exploit_64.exe>        # 64-bit

DICA: Note que no segundo comando acima, utilizamos o parâmetro adicional -lws2_32. Isso é necessário quando a compilação falha devido a chamadas no código-fonte como winsock2.h, resultando em erros como WSAStartup.

Java

jar -cvf <output_file.war> <file.jsp>

Sites

# Compilando exploits para Windows, a partir de um Linux
https://arrayfire.com/cross-compile-to-windows-from-linux/
http://www.tinc-vpn.org/examples/cross-compiling-64-bit-windows-binary/

Last updated