Abaixo vemos o console do MSF (Metasploit Framework) aberto, que tanto pode ser executado a partir da interface web no Windows, clicando em Console. Ou então, no
Linux, basta digitar "./msfconsole" no console do Linux.
Depois de alguns segundos (dependendo da velocidade de seu computador), a tela de MSFConsole aparecerá conforme a imagem. Leve alguns momentos para explorar a tela de console digitando "help" no prompt msf>.
Para ver os vários exploits existentes e ter uma leve noção de sua aplicabilidade, digite "show exploits" no prompt msf>. Veja a figura abaixo:
Para informação sobre um comando em particular, você pode usar o comando de info. Você sempre poderá ter certeza do comando se for útil antes de você executá-lo. Olhemos para informação disponível para o comando lsass_ms04_011. Digite "info windows/smb/ms04_011_lsass".
Veja abaixo o que aparecerá na tela para você:
>>
info windows/smb/ms04_011_lsass
Name: Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow
Version: 4511
Platform: Windows
Privileged: Yes
License: Metasploit Framework License
Provided by:
hdm <hdm@metasploit.com>
Available targets:
Id Name
-- ----
0 Automatic Targetting
1 Windows 2000 English
2 Windows XP English
Basic options:
Name Current Setting Required Description
-------- ------------------- ------------ ---------------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
Payload information:
Space: 1024
Avoid: 7 characters
Description:
This module exploits a stack overflow in the LSASS service, this
vulnerability was originally found by eEye. When re-exploiting a
Windows XP system, you will need need to run this module twice.
DCERPC request fragmentation can be performed by setting 'FragSize'
parameter.
References:
http://www.securityfocus.com/bid/10108
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2003-0533
http://www.osvdb.org/5248
http://www.microsoft.com/technet/security/bulletin/MS04-011.mspx
http://milw0rm.com/metasploit/36
Essas informações exibidas sobre o exploit são muito importantes para sabermos como ele funciona e qual a utilidade dele. É pesquisando dessa forma que definiremos qual o melhor exploit para utilizarmos contra um determinado alvo.
Para utilizar esse exploit, por exemplo, digite "use Windows/smb/ms04_011_lsass" no prompt msf>. O prompt msf> automaticamente muda para "msf exploit(ms04_011_lsass)>" mostrando que o exploit foi selecionado e está pronto para uso.
Agora vamos ver que tipo de alvo pode ser afetado por esse exploit. Basta digitar "show targets" no prompt msf>. Será exibida a seguinte tela:
Agora precisamos saber o que podemos fazer com esse exploit, já que o exploit é a exploração da falha em si. Portanto, precisamos de um programa (ou módulo) que utilize a falha da maneira que precisamos (execute um comando, rode um shell e etc), esse programa ou módulo é um payload.
Para sabermos qual payload está disponível para esse exploit, digite no prompt msf> o comando "show payloads", e então a tela a seguir será exibida com uma lista de todos os payloads compatíveis com esse exploit.
Para definirmos o tipo de alvo que atacaremos explorando suas falhas, digite "set TARGET #" substituindo o # pelo número de identificação do tipo de alvo que atacaremos como mostrado numa tela anterior (nesse caso só temos as opções 0 = automático, 1 = Windows 2000 e 2 = Windows XP).
Para sabermos o tipo de S.O. de nosso alvo, deveremos ter pesquisado isso na fase de fingerprinting, onde colhemos informações sobre nossos hosts alvos.
Vamos, como exemplo, atacar um host que tenha como seu S.O. o Windows XP e queremos rodar um Shell a partir dele para termos acesso à máquina. Vou digitar "set target 2" no prompt msf> para informar que meu alvo é uma máquina rodando o Windows XP.
E, logo após isso, vou digitar "set PAYLOAD generic/shell_bind_tcp" para definir o payload que utilizarei, e me retornará um shell de comando quando rodar o exploit contra o alvo.
Nesse ponto, se digitarmos "?" no prompt msf>, além da explicação dos comandos básico, surgem outros comandos que precisaremos utilizar. Veja abaixo:
Como exibido com o comando "info" usado anteriormente, temos duas opções básicas desse exploit que precisamos configurar para que ele possa ser utilizado. São elas:
Name Current Setting Required Description
-------- ------------------- ------------ ---------------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
Vemos que o valor de RPORT está como 445, que será a porta através da qual será lançado o exploit, mas podemos mudar esse valor se quisermos. Digamos que através de um scan anterior descobri algumas vulnerabilidades na porta 150, então é essa mesma que vou utilizar, digitando o seguinte comando no prompt msf> "set RPORT 150". Vejamos na tela abaixo como ficou após a execução desse comando:
O valor da opção RPORT foi alterado para 150, que será a porta utilizada para o ataque.
Agora vamos à outra opção. A opção RHOST definirá o endereço que será atacado via exploit, e precisamos configurá-lo adequadamente, atribuindo o endereço IP do alvo. Digamos que quero atacar o IP 192.168.0.1, preciso digitar o comando "set RHOST 192.168.0.1" no prompt msf>.
Vejamos abaixo como ficou a configuração de ambas opções:
Agora precisamos completar o exploit, executando-o contra o alvo. Para tanto, temos duas alternativas:
1. utilizar o comando "check" em primeiro lugar para ver se nosso alvo é vulnerável a esse exploit e depois usar o comando "exploit" para executá-lo; ou
2. utilizar diretamente o comando "exploit" para executar o ataque, posto que alguns módulos não aceitam a execução do comando "check".
No caso desse exploit, o comando "check" não é suportado; então teremos que usar o comando "exploit", sem a possibilidade de testar anteriormente se o alvo é suscetível ao ataque.
Se o ataque falhar contra o alvo, um aviso como se segue será exibido. Se não, sendo o alvo vulnerável a esse ataque, você será apresentado a uma interface de linha de comando interativa da máquina designada, ou seja, você cairá no prompt de comando. Não desanime se não conseguir de primeira! Isto só significa que a máquina que está testando não é vulnerável ao ataque!
Análise final
Sinta-se à vontade para testar com outros exploits e outros payloads, afinal esta é a essência da invasão com o Metasploit: testar até descobrir qual a vulnerabilidade certa e usar uma combinação de exploit e payload que funcione.
Procure manter-se sempre atualizado com as novas versões do Metasploit, pois os pacotes de exploits, payloads e módulos sempre são atualizados e vem com novas opções.
Referências
1.
Microsoft Security Bulletin
2.
Stack, Pointers and Memory, Lally Singh
3.
A Memory Allocator, Doug Lea
4.
Buffer overflows likely to be around for another decade, Edward Hurley
5.
Buffer Overflows Demystified, Murat
6.
Badc0ded - How to exploit program vulnerabilities
7.
Once upon a free(), Phrack 57 Article 9, by Anonymous
8.
Presentation on Advanced Exploit Development at HITB, HD Moore (PDF)
9.
Designing Shellcode Demystified, Murat
10.
Crash Course User Guide for Metasploit Framework, (PDF)
11.
Metasploit Framework, Part 1, by Pukhraj Singh, K.K. Mookhey
12.
Metasploit Framework, Part 2, by Pukhraj Singh, K.K. Mookhey
13.
Metasploit Framework, Part 3, by Pukhraj Singh, K.K. Mookhey
14.
Open e-book MSF-BR