Tomando controle de programas vulneráveis a buffer overflow e desenvolvendo um exploit
INTRO
Uma falha de segurança comumente encontrada em software é a vulnerabilidade a buffer overflow.
Apesar de ser uma falha bem-conhecida e bastante séria, que se origina exclusivamente na incompetência do programador durante a implementação do programa, o erro repete-se sistematicamente a cada nova versão ou produto liberados.
Alguns programas já são famosos por freqüentemente apresentarem a falha, como o Sendmail, módulos do Apache, e boa parte dos produtos da Microsoft, incluindo obviamente o infame Internet Information Services (IIS). Mesmo software considerado seguro, como o OpenSSH, já apresentou o problema.
PROPÓSITO
Saber como explorar uma vulnerabilidade de buffer overflow (estouro de buffer) simples para ganhar a execução remota no Windows.
VAMOS ULTILIZAR ESSAS FERRAMENTAS;
-- Script básico em Python
-- Immunity Debugger
-- O plugin MONA para Immunity
-- Metasploit Framework
-- nasm_shell.rb
O que vamos usar;
-- Windows como ALVO
-- Kali Linux como Atacante
PREPARANDO O SERVIDOR VULNERÁVEL
Em sua máquina Windows, baixe o servidor para os testes. Link
Salve o arquivo "vulnserver.zip" em sua desktop, e extraia com um winrar ou unzip. Agora execulte o vulnserver, quando o firewall chama, você desbloqueia, okay
Testando o servidor
Na máquina atacante, abra o terminal e execulte o comando:
Subistitua o IP pelo endereço IP da sua máquina Windows
Você verá Varios comandos, Mais nenhum deles faz alguma coisa útil
Este servidor tem muitas vulnerabilidades, mas o que vou usar agora é o comando TRUN.
Agora vamos digitar o comando TRUN .aaa, o Servidor respondera "TRUN
COMPLETE", Depois execulte o comando "EXIT" para fechar a conexão.
Fuzzing o Servidor
Agora vamos iniciar a criação dos scripts, no terminal do kali digite:
E cole esse codigo:
#!/usr/bin/python
import socket
server = '192.168.1.162' #Subistitua o IP pelo endereço IP da sua máquina Windows
sport = 9999
length = int(raw_input('Length of attack: '))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((server, sport))
print s.recv(1024)
print "Sending attack length ", length, ' to TRUN .'
attack = 'A' * length
s.send(('TRUN .' + attack + '\r\n'))
print s.recv(1024)
s.send('EXIT\r\n')
print s.recv(1024)
s.close()
Para salva o código digite: Ctrl + X, em seguida digite Y, e aperte ENTER.
Agora vamos execultar o Script, comando:
Em "Length of Attack" insira 100 bytes e pressione Enter,
O servidor responde "TRUN COMPLETE"
Execute o script mais uma vez, mas desta vez insisra um comprimento de 9000.
Não há nenhuma resposta, tal como mostrado abaixo.
Olhando para o windows, vemos que o servidor parou de responder
Reiniciando o servidor vulnerável
No seu Windows, feche o "vulnserver.exe que parou de funcionar"
Clique duas vezes em vulnserver para iniciar o servidor novamente.
Tente outros comprimentos. Você verá que ele trava em 2000 e 3000.
Cada vez deixa de funcionar, reinicie o servidor.
Instalando o Immunity Debugger
Parte 2 aqui
0 comentários:
Postar um comentário