quinta-feira, 22 de janeiro de 2015

Buffer Overflow | Devenlop Exploit - Parte 2

Instalando o Immunity Debugger;
Vamos baixar e instalar o Immunity Debugger
Site, Alternativo aqui . Quando o download terminar, dê um duplo clique no arquivo ImmunityDebugger_1_85_setup e instale o software com as opções padrão. Ele também irá instalar Python.

Iniciando Immunity e anexando um Processo;
Na sua desktop vá até o icone do immunity e o execulte. Essa é a janela que você verá

Agora vamos anexar um processo em execução para a immunity. Isso vai encapsular o processo dentro Immunity, Assim podemos analizar processo e controlar.
Na barra do menu Immunity Debugger, clique em File, Attach.
Em "Select process to attach" na caixa selecione o vulnserver como mostra abaixo e clique em Attach

Modificando a aparência do Immunit;
Vamos modificar a aparência dos  painéis no Immunity que estão com os textos muito pequeno, como mostrado abaixo. 

Isso é muita informação para perceber imediatamente, e muito difícil de ler.
Para tornar o texto mais legível, clique com o botão direito do mouse em algum lugar no top painel, No menu de contexto, clique em Appearance, "Font (all)", "OEM fixed font", como mostrado abaixo. O tipo de letra se torna mais clara.

No painel esquerdo inferior, clique  com o botão direito do mouse e clique em: Hex ", Hex/ASCII (16 bytes)", como mostrado abaixo.

Compreendendo as janelas do Immunity;
Está é a "CPU Windows" do Immunity,

ASSEMBLY CODE ( Esta é a parte mais difícil de se compreender. Ela mostra as instruções do processador, um de cada vez na "Linguagem Assembly", instruções como MOV e CMP. A linguagem assembly é difícil de aprender, mas você não precisa aprender muito para desenvolver exploits simples. )
            
REGISTERS ( Os itens mais importantes aqui são: ) ++ Clica aqui
     EIP: Ponteiro de instrução (contador de programa) - É o endereço da próxima instrução a ser processado.
     ESP: Ponteiro de pilha - É o topo da pilha
     EBP: Ponteiro base da pilha  -  É a parte inferior do ponteiro de pilha
     
HEX DUMP ( Isso mostra uma região da memória em hexadecimal à esquerda e à direita em ASCII. simples de desenvolvimento o exploit , vamos usar esse painel para olhar para regiões de memória alvo, geralmente rotulados com texto ASCII. )

STACK ( Isso mostra o conteúdo da pilha, mas ele é apresentado de uma forma que não é muito útil para nós agora. Para este projeto, desconsidere este painel. )

CURRENT INSTRUCTION (Mostra exatamente a instrução do processo que está em execução no momento.  O Immunity foi atribuído automaticamente em um ponto de interrupção do início do processo e agora a sua execução foi interrompida. )

STATUS ( Mostra se o programa está em pausa ou em execução. Quando Immunity atribui um processo, o processo inicia-se no estado pausado.

Executando o servidor vulnerável no Immunity;
No menu do Immunity Debugger, no canto superior esquerdo, clique no botão Run, como mostrado abaixo. Isso executa o servidor vulnerável dentro do depurador, para que possamos trabalhar

Observando o servidor no Immunity;
Na máquina Kali vamos execultar o script fuzz e inserir em:
"Tamanho do Ataque" 2000 bytes. o servidor não responde pois ele está falhando.

root@kali:~# python fuzz
Length of attack: 2000
Welcome to Vulnerable Server! Enter HELP for help.

Sending attack length  2000  to TRUN .

Agora olhando para o windows no Immunity, no canto  inferior esquerdo, você verá "Violação de acesso para [41414141], como mostrado abaixo.


"41" é o código em hexadecimal para o caractere "A", como mostrado abaixo.








Isto significa que os caracteres 'A' você foram enviados e de alguma forma mal interpretada pelo servidor como um endereço para gravar dados. Os endereços são 32 bits de comprimento, que é de 4 bytes, e 'A' é de 41 em hexadecimal, por isso, tornou-se o endereço 41414141.

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



Enviando 3000 caracteres 'A'
Na máquina Kali vamos execultar o script fuzz mais uma vez e inserir em:
"Tamanho do Ataque" 3000 bytes. o servidor não responde pois ele está falhando.

root@kali:~# python fuzz
Length of attack: 30000
Welcome to Vulnerable Server! Enter HELP for help.

Sending attack length  30000  to TRUN .

Olhando para o windows na janela do Immunity, no canto inferior esquerdo, você verá "Violação de acesso ao executar [41414141], Também destaquei uns intens em Registers <FPU> como mostrado abaixo.














Este é o clássico de  explorar o buffer overflow , Os caracteres injectados são colocados em EIP quando uma sub-rotina retorna, portanto, tornam-se o endereço da próxima instrução a ser executada.
41414141 não é um endereço válido, portanto Immunity detecta que o programa está falhando e faz uma pausa para que você possa ver o que está acontecendo. Isso é comum em desenvolvimento do exploit  - O comprimento do ataque tem resultados diferentes do ataque de 2000 bytes como fizemos antes.
A partir de agora, vamos usar um comprimento de 3000 para todos os ataques.

Reinicie o servidor vulnerável novamente
"como você fez antes lá em cima"
No menu do Immunity Debugger, no canto superior, clique no botão Debug, no menu contexto vá até restart,  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

Criando um padrão não-repetido de caracteres

Ir para a terceira parte clicando aqui

0 comentários:

Postar um comentário