## https://sploitus.com/exploit?id=766CBBCA-5E44-5A8D-8F94-04765D58A815
# Exploração de Buffer Overflow (SEH Overwrite) no RGui 3.4.4
## Visão Geral do Projeto
Este projeto documenta uma análise completa de **Engenharia Reversa de Binários** e a exploração bem-sucedida de uma vulnerabilidade de **Buffer Overflow (BoF)** no software **RGui (versão 3.4.4, 32-bit)**.
[cite_start]A estratégia de ataque utilizou a técnica de **Sobrescrita do Manipulador de Exceção Estruturado (SEH Overwrite)** para obter **Execução Remota de Código (RCE)** e completar uma missão de simulação cibernética (Global Solution 2)[cite: 1, 4, 5].
## Alvo e Vulnerabilidade
* **Software Alvo:** RGui (32-bit), Versão 3.4.4.
* **Vetor de Ataque:** O campo de entrada **"Language for menus and messages"** (acessível via `Edit -> GUI preferences...`).
* **Prova de Conceito (DoS):** Uma simples injeção de 5.000 bytes causou um *Access Violation* e o *crash* imediato da aplicação, confirmando a vulnerabilidade a Buffer Overflow.
## Metodologia Detalhada de Exploração
A exploração foi baseada na técnica de **SEH Overwrite**.
### 1. Cálculo do Offset e Localização SEH
Utilizando o `Immunity Debugger` e o plugin `mona.py`, um padrão cíclico (`pattern_create.rb`) foi injetado para identificar a posição exata da sobrescrita.
* **Comando:** `!mona pattern_offset`
* **Resultado:** O ponteiro SEH foi sobrescrito em **292 bytes**.
* **Estrutura do Payload:** Junk (288 bytes) + nSEH (4 bytes) + SEH (4 bytes).

### 2. Seleção do Gadget (Bypass de POP POP RET)
Uma tentativa inicial com um gadget **POP POP RET** falhou devido à corrupção da pilha. A estratégia foi então alterada para um método mais robusto e direto.
* **Técnica Final:** **JMP ESP** (Jump to Stack Pointer).
* **Busca:** O `mona.py` foi usado para buscar gadgets `JMP ESP` em módulos sem proteções (ASLR e Rebase: False).
* **Comando:** `!mona jmp -r esp -b '\x00\x0a\x0d'`
* **Gadget Selecionado:** `0x6ca2a9bd` (localizado na `R.dll`).

### 3. Geração do Shellcode e Payload Final
O `msfvenom` foi utilizado para criar o payload que estabelece a conexão reversa.
* **Payload:** `windows/shell_reverse_tcp`.
* **Badchars Filtrados:** `\x00\x0a\x0d`.
* **Estrutura Final:** O script `exploit.py` monta o payload combinando Junk, nSEH (`\xEB\x06\x90\x90`), SEH (`\xbd\xa9\xa2\x6c`), NOP Sled e o Shellcode.
**Acesse o código completo em: [src/exploit.py](src/exploit.py)**
## Missão Final e Validação (RCE)
A fase final da missão foi a execução da ameaça simulada e a demonstração de comunicação.
1. **Exploit Executado:** O payload foi copiado no campo vulnerável enquanto um *listener* (`nc -lvp 4444`) estava ativo.
2. **RCE Comprovada:** O RGui congela, comprovando que o *processo* foi sequestrado e a *reverse shell* estava mantida, cumprindo o requisito de que o IDE RGui **"continuou ativo"**.

3. **Neutralização da Ameaça:** Através do *reverse shell*, o binário `Calma.exe` foi executado.
4. **Comunicação Servidor/Cliente:** O `Calma.exe` (Cliente) se conectou ao nosso servidor de controle **Java** na porta **9600**, comprovando a etapa final da missão.
**Acesse o código do servidor de controle em: [src/ServidorHacker.java](src/ServidorHacker.java)**
## Vídeo de Demonstração
[Demonstração da Global Solution 2](https://youtu.be/FVRd_i6UQyw?si=McbUyUxtOkN8KjZB)
## Disclaimer
Este projeto foi desenvolvido em um ambiente de laboratório controlado (máquina virtual) para fins educacionais e de estudo em cibersegurança, conforme requisitos de prova semestral. A exploração de software sem permissão é ilegal e antiética.
## Autor
**Pedro Henrique Garcia de Souza**