Converta arquivos ELF padrão em códigos de shell independentes. Leia a seguinte documentação e veja os exemplos para que este projeto funcione corretamente
Github
Pypi
pip install py_shelfA Biblioteca Python analisa o ELF e cria um formato de arquivo simples e relocável chamado prateleira (Shellcode ELF).
O mini carregador é inserido como o ponto de entrada para a prateleira.
O mini carregador carregará e realocará a prateleira e a executará. Não há requisitos especiais, a biblioteca contém os mini carregadores e recursos compilados.
O diagrama abaixo explica o formato (só trabalha em navegadores)
ClassDiagram
ShellCodeEntryPoint -|> Miniloader
ShellcodeEntryPoint: shellcode contendo lógica pré -mini carregador
Miniloader -|> Tabela de realocação
Miniloader: contém toda a lógica para analisar a tabela de realocação
Miniloader: Totalmente OS Independente
Tabela de realocação -|> ganchos opcionais
Tabela de realocação: contém a tabela necessária para a realocação do tempo de execução do shellcode
Ganchos opcionais -|> prateleira
Ganchos Opcional: Leia mais sobre ganchos na documentação abaixo
Ganchos opcionais: esta seção é opcional e só existe se os ganchos forem usados
Prateleira: shellcode elf - este é o binário compilado que convertemos em shellcode
Prateleira: este binário é despojado apenas em códigos de operações
Prateleira: totalmente realocável usando a tabela de realocação
Este projeto pretende converter o ELF em códigos de casca independentes do SO. Portanto, o carregador nunca alocará memória e o formato do código shell não está embalado. Você pode simplesmente executá -lo, por exemplo ...
(( void ( * )()) shellcode )();Siga os exemplos abaixo
Alguns sinalizadores de compilação são necessários para que isso funcione corretamente. Você deve compilar o binário com -fpie e -static, dê uma olhada nos exemplos fornecidos abaixo (makefile).
O shellcode é um binário despojado, sem símbolos e sem informações de elfos apenas opcodes, a fim de fazer com que o código da shell essa biblioteca requer um binário com informações de ELF. Portanto, verifique se você não está removendo o binário antes de usar esta biblioteca
simplificado make comando for mips big endian
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out Makefile
Exemplo.c
Você pode usar o carregador de shellcode fornecido para testar os códigos de shells
qemu-mips ./shellcode_loader ./myshellcode.outÉ aconselhável usar a biblioteca de carregadores de prateleira para testar seu código de shell aqui, você pode ler mais sobre ele: documentação do carregador de prateleira
Para os links a seguir, funcionam apenas na página do GitHub