Buffer Overflow Linux – Melhorando o GDB

O GDB (The GNU Project Debugger) é hoje sem dúvida o melhor debugger para ambientes Linux e Unix. Porém sua interface padrão causa um pouco de rejeição para quem está começando a se aventurar no processo de criação de exploits ou engenharia reversa.

Por este motivo trago para vocês algumas dicas que vão lhe ajudar bastante neste processo.

Parte 1: Configurando o locale

Se certifique que o locale da máquina está configurado como UTF-8

root@M4v3r1ck:~# sudo locale-gen "en_US.UTF-8"
root@M4v3r1ck:~# echo 'LANG="en_US.UTF-8"' > /etc/default/locale
root@M4v3r1ck:~# echo 'LANGUAGE="en_US:en"' >> /etc/default/locale

Parte 2: Instalando o GDB + Python3

root@M4v3r1ck:~# sudo apt-get install python python3 python-dev gdb python3-gdbm python3-gdbm-dbg

Parte 3: Instalando GEF

O GEF (acrônimo para GDB Enhanced Features) é um plugin que deixa o visual do GDB bem mais amigável, bem como implementa novos comandos que auxiliam bastante no processo de criação de exploits e engenharia reversa. O seu manual está disponível em https://gef.readthedocs.io/en/master/

root@M4v3r1ck:~# wget -O ~/.gdbinit-gef.py -q https://github.com/hugsy/gef/raw/master/gef.py
root@M4v3r1ck:~# echo source ~/.gdbinit-gef.py >> ~/.gdbinit
root@M4v3r1ck:~# echo "set follow-fork-mode parent" >> ~/.gdbinit

Parte 4: Instalando scripts adicionais do GEF

Dentro destes scripts adicionais há 2 comandos que implementei que é muito útil no processo de criação de exploits, mais especificamente no momento da checagem de Badchars.

  • bytearray: gera o bytearray para copiar e colocar dentro do script python de exploit, bem como o arquivo binário para comparação
  • bincompare: compara o arquivo binário com os dados em memória objetivando encontrar por badchars.
root@M4v3r1ck:~# wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef-extras.sh | sh

 

Helvio Junior (OSCE, OSCP, eMAPT, CEHv9)
Últimos posts por Helvio Junior (OSCE, OSCP, eMAPT, CEHv9) (exibir todos)
0 respostas

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *