資訊安全技術大講堂 點選檢視第二章 從實踐中學習Metasploit 5滲透測試
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZlZjZzADO2ATOhdTZxQjYwY2M0EWZ1EmYkljZjZDO38CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
第1章 環 境 配 置
如果要使用Metasploit實施滲透攻擊,需要在系統中安裝該工具,并且配置對應的攻擊靶機。在Kali Linux中,預設已經安裝了Metasploit。但是在其他作業系統中,都沒有安裝該工具。是以,為了友善使用者後面的操作,本章将介紹Metasploit工具的環境配置方法。
1.1 Metasploit概述
Metasploit是一個免費的、可下載下傳的架構,通過它可以很容易地擷取、開發并對計算機軟體漏洞實施攻擊。它本身附帶數百個已知軟體漏洞的專業級漏洞攻擊工具。而且它還提供了許多個接口,其最受歡迎的是由Rapid 7和Strategic Cyber LLC公司維護的。由Rapid 7和Strategic Cyber LLC公司維護的接口包括Metasploit Framework Edition、Metasploit Community Edition、Metasploit Express、Metasploit Pro、Armitage和Cobalt strike。其中,Metasploit Framework(指令行接口)和Armitage(圖形界面接口)是較常用的兩種,并且是免費的。本書将選擇使用Metasploit Framework(指令行接口,即MSFCONSOLE)接口來實施滲透攻擊。
1.2 安 裝 要 求
為了能夠順利地安裝Metasploit工具,需要先了解該工具對系統硬體、架構等的需求。由于Metasploit是一款漏洞掃描并實施攻擊的工具,是以可能會被系統的防毒軟體或防火牆等攔截。本節将介紹Metasploit工具的安裝要求。
1.系統需求
- 2GHz及以上的處理器;
- 4GB可用記憶體(建議8GB);
- 1GB以上的可用磁盤空間(建議50GB)。
2.支援的平台(64位架構)
- Red Hat Enterprise Linux Server 5.10及以上;
- Red Hat Enterprise Linux Server 6.5及以上;
- Red Hat Enterprise Linux Server 7.1及以上;
- Ubuntu Linux 10.04 LTS;
- Ubuntu Linux 12.04 LTS;
- Ubuntu Linux 14.04 LTS(建議);
- Ubuntu Linux 16.04 LTS;
- Kali Linux;
- Windows Server 2008 R2;
- Windows Server 2012 R2;
- Windows 7 SP1+;
- Windows 8.1;
- Windows 10。
3.禁用防毒軟體
當系統中運作有防毒軟體時,将會檢測到Metasploit Framework為惡意軟體,并且可能導緻它的安裝和運作出現問題。Metasploit Framework利用了與防毒軟體檢測到的相同漏洞,是以,當安裝Metasploit Framework時,防毒軟體将會阻止安裝,并且提醒使用者可能存在影響系統的安全風險。
如果想要安裝Metasploit Framework,在安裝之前禁用所有防毒軟體。如果不能禁用防毒軟體的話,則需要設定防毒軟體不對Metasploit進行掃描。
4.禁用防火牆
本地防火牆(包括Windows防火牆)會幹擾滲透攻擊和攻擊載荷的操作。如果安裝Metasploit Framework時開啟防火牆的話,防火牆将探測到Metasploit Framework為惡意軟體,中斷其下載下傳。
是以,在安裝和運作Metasploit Framework之前,需要禁用本地防火牆。如果必須在安裝有防火牆的計算機上操作,那麼應該從外部網絡下載下傳Metasploit Framework。
5.擷取管理者權限
為了能夠成功地在系統上安裝Metasploit Framework,必須有該系統的管理者權限。
1.3 安裝Metasploit Framework
在使用者準備好Metasploit的安裝需求後,就可以開始安裝Metasploit Framework了。該工具可以安裝在Windows、Linux及Mac OS X系統中。本節将介紹在各種作業系統下安裝Metasploit Framework的步驟。
1.3.1 擷取安裝包
Metasploit Framework的下載下傳位址為
https://www.rapid7.com/products/metasploit/download/editions/ 。在浏覽器中輸入該位址後,将顯示如圖1.1所示的頁面。
可以看到,該頁面中提供了3個版本,分别是專業版(Pro,免費試用14天)、社群版(Community)和Framework。本例中将選擇下載下傳Framework。在該頁面單擊Framework下面的Free Download按鈕,将跳轉到GitHub網站,這裡提供了各種作業系統平台的安裝和下載下傳方法,如圖1.2所示。
從圖1.2中可以看到頁面中分别提供了Linux、Mac OS X和Windows安裝包。而且,所提供的Linux安裝包包括.deb和.rpm格式。其中,.deb包提供了i386、amd64、armhf和arm64這4個版本;.rpm包隻提供了64-bit x86。
1.3.2 在Windows系統中安裝Metasploit
【執行個體1-1】在Windows下安裝Metasploit Framework。具體操作步驟如下:
(1)輕按兩下運作已下載下傳的安裝包,将打開如圖1.3所示對話框。
(2)該對話框為安裝Metasploit-framework的歡迎界面,單擊Next按鈕,進入使用者許可協定對話框,如圖1.4所示。
(3)該對話框提示使用者是否接受許可協定。這裡勾選I accept the terms in the License Agreement複選框,然後單擊Next按鈕,進入安裝位置對話框,如圖1.5所示。
(4)該對話框用來設定Metasploit Framework的安裝位置,預設将安裝在C槽。如果希望安裝到其他位置,可以單擊Browse按鈕,修改安裝位置。然後,單擊Next按鈕,進入準備安裝對話框,如圖1.6所示。
(5)該對話框提示将開始安裝,如果确定之前的配置無誤,單擊Install按鈕将開始安裝,如圖1.7所示。如果需要進行修改,可以單擊Back按鈕。安裝完成後,顯示如圖1.8所示對話框。表示Metasploit Framework已經安裝成功了。單擊Finish按鈕,退出安裝向導界面。
現在,就可以啟動Metasploit Framework了。啟動方法如下:
(1)進入Metasploit Framework安裝位置。本例中的安裝位置是C槽,此時在C槽下面可以看到一個名為metasploit-framework的檔案夾。
(2)依次打開metasploit-framework|bin目錄,如圖1.9所示。
(3)輕按兩下msfconsole.bat可執行檔案,即可啟動Metasploit Framework。成功啟動後,如圖1.10所示。
(4)看到視窗中顯示的msf5 >提示符,則表示已成功啟動了Metasploit。接下來就可以使用該架構提供的子產品及攻擊載荷實施滲透了。
1.3.3 在Linux系統中安裝Metasploit
在Linux下,提供了兩種安裝Metasploit Framework工具的方法。一種方法是GitHub托管網站提供的快速安裝,另一種是使用二進制包(.rpm或.deb)手動安裝。下面分别介紹這兩種方法。
1.快速安裝
【執行個體1-2】在Linux下快速安裝Metasploit Framework。執行指令如下:
[root@RHEL ~]# curl https://raw.githubusercontent.com/rapid7/metasploit-
omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.
erb > msfinstall && chmod 755 msfinstall && ./msfinstall
執行完以上指令後,開始下載下傳Metasploit Framework安裝包,然後安裝Metasploit Framework。安裝成功後,顯示Complete(完成)提示資訊如下:
Installed:
metasploit-framework.x86_64 0:5.0.2+20190118142505~1rapid7-1.el6
Complete!
看到以上提示資訊,則表示成功安裝了Metasploit。接下來,在終端執行msfconsole指令,即可啟動該工具。
使用以上方法安裝成功後,Metasploit将被安裝在/opt/metasploit-framework目錄中。其中,所有可執行的指令在/opt/metasploit-framework/bin目錄下。是以,啟動Metasploit需要進入該目錄下,執行對應的腳本檔案。啟動如下:
[root@RHEL ~]# cd /opt/metasploit-framework/bin/
[root@RHEL bin]# ./msfconsole
msf5 >
看到msf5 >提示符則表示已成功啟動了Metasploit。
2.手動安裝
使用手動安裝方法也非常簡單,隻需要執行一條指令即可。首先從GitHub網站提供的下載下傳連結中擷取安裝包,然後使用rpm指令安裝。執行指令如下:
[root@RHEL ~]# rpm -ivh metasploit-framework-5.0.2+20190118142505~1rapid7-
1.el6.x86_64.rpm
warning: metasploit-framework-5.0.2+20190118142505~1rapid7-1.el6.x86_64.
rpm : Header V4 RSA/SHA256 Signature, key ID 2007b954: NOKEY
Preparing... ################################ [100%]
1:metasploit-framework ################################ [100%]
Run msfconsole to get started
看到以上輸出資訊,表示已成功安裝了Metasploit Framework。接下來,便可以在終端執行msfconsole指令啟動該工具了。
1.3.4 在OS X系統中安裝Metasploit
在OS X下,使用者也可以使用1.3.3節中的快速方法來安裝Metasploit Framework。如果使用者不喜歡使用指令行方式操作,也可以使用圖形界面的方式來安裝。下面介紹如何在OS X下使用圖形界面的方式來安裝Metasploit Framework。
【執行個體1-3】在OS X下使用圖形界面的方式安裝Metasploit Framework。具體操作步驟如下:
(1)輕按兩下下載下傳的安裝包,打開如圖1.11所示對話框。
(2)該對話框是安裝Metasploit Framework的歡迎界面,單擊“繼續”按鈕,進入軟體許可協定對話框,如圖1.12所示。
(3)在其中可以看到安裝Metasploit的許可協定資訊,單擊“繼續”按鈕,彈出是否同意許可協定的對話框,如圖1.13所示。
(4)單擊“同意”按鈕,表示接受許可協定,進入安裝Metasploit對話框,如圖1.14所示。
(5)單擊“安裝”按鈕,開始安裝Metasploit工具。安裝完成後,如圖1.15所示。
(6)單擊“關閉”按鈕,退出Metasploit的安裝界面。接下來,就可以啟動Metasploit工具了。
在OS X下,Metasploit預設被安裝在/opt/metasploit-framework目錄下。如果要啟動Metasploit,進入/opt/metasploit-framework/bin目錄下,運作msfconsole可執行檔案,即可啟動該工具。啟動指令如下:
localhost:~ root# cd /opt/metasploit-framework/bin
localhost:~ root# ./msfconsole
msf5 >
1.4 安裝及連接配接PostgreSQL資料庫服務
PostgreSQL是一個免費的對象-關系資料庫服務,用來存儲一些資料記錄。Metasploit啟動後,會選擇連接配接PostgreSQL資料庫服務,然後就可以完整地利用MSF資料庫查詢exploit和記錄了。在Kali Linux系統中,啟動Metasploit後,将自動連接配接到PostgreSQL服務的Postgres資料庫。但是,在其他系統中,需要手動連接配接該資料庫。本節将介紹安裝及連接配接PostgreSQL資料庫服務的方法。
1.4.1 安裝PostgreSQL資料庫服務
在大部分系統中,預設并不會安裝PostgreSQL資料庫服務。是以,如果要使用該資料庫,需要先在系統中進行安裝。PostgreSQL資料庫服務的下載下傳位址為
http://www.postgresql.org/download/ 。
在浏覽器中輸入該位址後,将打開如圖1.16所示的頁面。
在該頁面中可選擇下載下傳各種平台的安裝包。在大部分Linux發行版中都自帶了PostgreSQL的二進制包,是以使用者可以直接安裝。下面将示範在Windows中安裝PostgreSQL資料庫的方法。
【執行個體1-4】在Windows 7中安裝PostgreSQL資料庫。具體操作步驟如下:
(1)輕按兩下下載下傳的安裝包,将打開如圖1.17所示對話框。
(2)該界面是安裝PostgreSQL資料庫的歡迎界面。單擊Next按鈕,進入安裝位置對話框,如圖1.18所示。
(3)選擇PostgreSQL資料庫的安裝位置。本例中将使用預設路徑,然後單擊Next按鈕,進入選擇元件安裝對話框,如圖1.19所示。
(4)在其中選擇将要安裝的元件,這裡使用預設設定,選擇所有元件。然後單擊Next按鈕,進入資料目錄對話框,如圖1.20所示。
(5)該對話框用來設定PostgreSQL資料庫的資料存放目錄,本例使用預設的位置。然後單擊Next按鈕,進入使用者密碼設定對話框,如圖1.21所示。
(6)在其中為資料庫超級使用者postgres設定密碼。一定要記住這個密碼,在連接配接資料庫時需要輸入該密碼。然後,單擊Next按鈕,進入資料庫端口監聽對話框,如圖1.22所示。
(7)在其中設定資料庫監聽的端口,這裡使用預設端口。然後,單擊Next按鈕,進入進階選項設定對話框,如圖1.23所示。
(8)在其中可以設定資料庫存儲區域的運作時環境(字元編碼格式),這裡選擇預設設定,即Default locale選項。然後,單擊Next按鈕,進入預安裝摘要資訊對話框,如圖1.24所示。
(9)在其中顯示了資料庫将要安裝的位置檔案資訊。單擊Next按鈕,進入PostgreSQL資料庫安裝對話框,如圖1.25所示。
(10)該對話框表示目前已經配置好PostgreSQL了,可以開始安裝該資料庫了。此時,單擊Next按鈕,開始安裝該資料庫。安裝完成後,如圖1.26所示。
(11)從中可以看到,預設将要啟動Stack Builder來下載下傳并安裝額外的工具、應用程式和驅動程式,以進一步完善PostgreSQL的安裝。但是,該操作必須在聯網狀态下執行。本例中安裝PostgreSQL資料庫隻是為了簡單地與Metasploit連接配接,并儲存一些資料。是以,這裡不啟動StackBuilder,即取消複選框的勾選。然後,單擊Finish按鈕完成資料庫的安裝。
1.4.2 初始化PostgreSQL資料庫
為了便于存儲資料,Metasploit會使用特定的使用者名來通路PostgresSQL資料庫,并将資料儲存在自有的資料庫中。是以,在啟動Metasploit之前,需要先初始化資料庫。在初始化過程中,Metasploit會在PostgreSQL中建立一個專用賬戶msf,并建立對應的資料庫。操作過程如下:
1.啟動PostgreSQL資料庫服務
為了友善滲透測試人員操作,Metasploit提供了專門的資料庫服務管理指令。下面依次講解資料庫服務的啟動和關閉方法。
(1)啟動PostgreSQL資料庫服務,執行的指令如下:
root@daxueba:~# msfdb start
[+] Starting database
輸出資訊表示資料庫服務已經成功啟動了。
(2)當不使用Metasploit時,為了節省系統資源,可以停止PostgreSQL資料庫服務,執行的指令如下:
root@daxueba:~# msfdb stop
[+] Stopping database
輸出資訊表示資料庫已經成功禁止了。
成功啟動PostgreSQL資料庫服務,PostgeSQL會監聽5432端口。檢視該端口是否被監聽,執行指令如下:
root@daxueba:~# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:5432 0.0.0.0:-
LISTEN 0 128 127.0.0.1:5433 0.0.0.0:-
LISTEN 0 128 0.0.0.0:44797 0.0.0.0:-
LISTEN 0 128 0.0.0.0:41959 0.0.0.0:-
LISTEN 0 128 [::]:39031 [::]:-
LISTEN 0 128 [::1]:5432 [::]:-
LISTEN 0 128 [::1]:5433 [::]:-
LISTEN 0 128 [::]:44235 [::]:-
從Local Address:Port列中可以看到,127.0.0.1:5432表示5432端口已經被監聽。
2.初始化資料庫
初始化資料庫,執行指令如下:
root@daxueba:~# msfdb init
輸出資訊如下:
[+] Starting database
[+] Creating database user 'msf'
為新角色輸入的密碼:
再輸入一遍:
[+] Creating databases 'msf' #建立msf資料庫
[+] Creating databases 'msf_test' #建立msf_test資料庫
[+] Creating configuration file '/usr/share/metasploit-framework/config/
database.yml' #建立配置檔案
[+] Creating initial database schema
輸出資訊表示成功建立了Metasploit的專用資料庫msf和msf_test,并且建立了配置檔案database.yml。輸出資訊的第3行和第4行表示為建立的資料庫名自動生成密碼,它将自動儲存到配置檔案中。最後一行資訊表示建立了初始化資料庫模式。
檢視配置檔案database.yml中的資訊,可以看到msf和msf_test資料庫的相關資訊,如密碼和端口号等。執行指令如下:
root@daxueba:~# cat /usr/share/metasploit-framework/config/database.yml
development:
adapter: postgresql
database: msf #資料庫名
username: msf #使用者名
password: eX2wVC53WcKaSdAKDHs+/ZumzfRCV3Xi3bnVe7t1bRw= #密碼
host: localhost #主機名
port: 5432 #端口号
pool: 5 #連接配接池連接配接數
timeout: 5 #連接配接的逾時時間
production:
adapter: postgresql
database: msf
username: msf
password: eX2wVC53WcKaSdAKDHs+/ZumzfRCV3Xi3bnVe7t1bRw=
host: localhost
port: 5432
pool: 5
timeout: 5
test:
adapter: postgresql
database: msf_test
username: msf
password: eX2wVC53WcKaSdAKDHs+/ZumzfRCV3Xi3bnVe7t1bRw=
host: localhost
port: 5432
pool: 5
timeout: 5
如果使用者不再保留Metasploit的資料庫,可以将其删除并停止資料庫服務。指令如下:
root@daxueba:~# msfdb delete
[i] Database already started
[+] Dropping databases 'msf' #删除資料庫msf
[+] Dropping databases 'msf_test' #删除資料庫msf_test
[+] Dropping database user 'msf'
[+] Deleting configuration file /usr/share/metasploit-framework/config/
database.yml #删除配置檔案
[+] Stopping database #停止資料庫
輸出資訊表示成功删除了資料庫msf和msf_test,最後一行資訊表示此時資料庫服務被停止。
3.重置資料庫
如果資料庫已經初始化過,就不能再使用msfdb init指令進行初始化了,否則将顯示如下資訊:
root@daxueba:~# msfdb init
[i] Database already started
[i] The database appears to be already configured, skipping initialization
輸出資訊表示資料庫已經配置好了,自動跳過初始化過程。
如果需要再次初始化資料庫,就需要執行以下指令:
root@daxueba:~# msfdb reinit
[i] Database already started #删除原有的資料庫
[+] Dropping databases 'msf'
[+] Dropping databases 'msf_test'
[+] Dropping database user 'msf'
[+] Deleting configuration file /usr/share/metasploit-framework/config/
database.yml
[+] Stopping database #停用資料庫
[+] Starting database #啟用資料庫
[+] Creating database user 'msf' #建立資料庫
為新角色輸入的密碼:
再輸入一遍:
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/
database.yml'
[+] Creating initial database schema
輸出資訊表示,先删除了原有的資料庫然後停用。之後再啟用資料庫建立新的資料庫。
4.檢視資料庫狀态
為了快速了解到此時資料庫的狀态,可以使用msfdb status指令檢查服務狀态。如果使用msfdb stop指令停用了資料庫,檢視服務狀态時将顯示如下資訊:
root@daxueba:~# msfdb status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; disabled;
vendor preset: disabled)
Active: inactive (dead)
4月 03 14:41:01 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
4月 03 14:41:06 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 14:41:06 daxueba systemd[1]: Started PostgreSQL RDBMS.
4月 03 14:44:13 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
4月 03 14:44:17 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 14:44:17 daxueba systemd[1]: Started PostgreSQL RDBMS.
4月 03 14:47:44 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
4月 03 14:48:46 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 14:48:46 daxueba systemd[1]: Started PostgreSQL RDBMS.
4月 03 14:49:22 daxueba systemd[1]: Stopped PostgreSQL RDBMS. #停用了資料庫
[i] No network service running
[+] Detected configuration file (/usr/share/metasploit-framework/config/
database.yml)
輸出資訊的倒數第二行表示,此時沒有運作的網絡服務,最後一行資訊表示檢測到配置檔案,說明初始化資料庫時建立資料庫生成的配置檔案沒有被删除。
如果使用msfdb delete指令删除建立的資料庫,檢視服務狀态時将顯示如下資訊:
root@daxueba:~# msfdb status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; disabled;
vendor preset: disabled)
Active: inactive (dead)
4月 03 14:44:13 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
4月 03 14:44:17 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 14:44:17 daxueba systemd[1]: Started PostgreSQL RDBMS.
4月 03 14:47:44 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
4月 03 14:48:46 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 14:48:46 daxueba systemd[1]: Started PostgreSQL RDBMS.
4月 03 14:49:22 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
4月 03 14:56:25 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 14:56:25 daxueba systemd[1]: Started PostgreSQL RDBMS.
4月 03 14:57:38 daxueba systemd[1]: Stopped PostgreSQL RDBMS. #停用了資料庫
[i] No network service running
[i] No configuration file found
輸出資訊最後兩行表示既沒有運作的網絡服務,也沒有檢查到配置檔案。
如果隻使用msfdb start指令啟用資料庫,而沒有使用msfdb init指令初始化資料庫,檢視服務狀态時将顯示如下資訊:
root@daxueba:~# msfdb status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; disabled;
vendor preset: disabled)
Active: active (exited) since Tue 2018-04-03 15:33:03 CST; 2s ago
Process: 6845 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 6845 (code=exited, status=0/SUCCESS)
4月 03 15:33:03 daxueba systemd[1]: Starting PostgreSQL RDBMS...
4月 03 15:33:03 daxueba systemd[1]:Started PostgreSQL RDBMS. #啟用了資料庫
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 6811 postgres 3u IPv6 117845 0t0 TCP localhost:5432 (LISTEN)
postgres 6811 postgres 6u IPv4 117846 0t0 TCP localhost:5432 (LISTEN)
UID PID PPID C STIME TTY STAT TIME CMD
postgres 6811 1 0 15:32 ? S 0:00 /usr/lib/postgresql/9.6/bin/postgres -D /
[i] No configuration file found
輸出資訊可以看到此時的資料庫是啟用的,最後一行資訊表示沒有發現配置檔案,說明此時沒有進行初始化資料庫。
初始化資料庫以後,再次檢視服務狀态,最後一行資訊如下:
[+] Detected configuration file (/usr/share/metasploit-framework/config/
database.yml)
5.直接啟動Metasploit
初始化資料庫以後就可以啟動資料庫,并運作Metasploit了。執行指令如下:
root@daxueba:~# msfdb run
[i] Database already started
_---------.
.' ####### ;."
.---,. ;@ @@`; .---,..
." @@@@@'.,'@@ @@@@@',.'@@@@ ".
'-.@@@@@@@@@@@@@ @@@@@@@@@@@@@ @;
`.@@@@@@@@@@@@ @@@@@@@@@@@@@@ .'
"--'.@@@ -.@ @ ,'- .'--"
".@' ; @ @ `. ;'
|@@@@ @@@ @ .
' @@@ @@ @@ ,
`.@@@@ @@ .
',@@ @ ; _____________
( 3 C ) /|___ / Metasploit! \
;@'. __*__,." \|--- \_____________/
'(.,...."/
=[ metasploit v5.0.1-dev ]
+ -- --=[ 1851 exploits - 1046 auxiliary - 321 post ]
+ -- --=[ 541 payloads - 44 encoders - 10 nops ]
+ -- --=[ 2 evasion ]
+ -- --=[ *- This is Metasploit 5 development branch *- ]
msf5 >
1.4.3 連接配接PostgreSQL資料庫
除了使用msfdb指令,也可以在Metasploit中直接連接配接資料庫。操作過程如下:
1.檢視資料庫狀态
在連接配接資料庫之前,需要先了解目前的資料庫處于什麼狀态,可以使用Metasploit子指令db_status來檢視資料庫狀态。
(1)啟動Metasploit,執行指令如下:
root@daxueba:~# msfconsole
msf5 >
(2)檢視資料庫狀态,執行指令如下:
msf5 > db_status
[*] postgresql selected, no connection
輸出資訊顯示,Metasploit預設選擇的是PostgreSQL資料庫服務,但是還沒有連接配接到任何資料庫。
2.連接配接資料庫
此時,就可以使用Metasploit子指令db_connect連接配接到現有的資料庫了。其文法格式有以下兩種:
第一種:
db_connect <user:pass>@<host:port>/<database>
其中,user表示使用者名,pass表示密碼,host表示PostgreSQL服務所在的主機IP,port表示監聽的端口号,database表示資料庫名。
第二種:
db_connect -y [path/to/database.yml]
其中,-y表示指定配置檔案,path/to/database.yml表示配置檔案。
通過配置檔案可以看到資料庫的相關資訊如下:
production:
adapter: postgresql
database: msf
username: msf
password: 8CpuBLruzRZ/UrWU5lHeK3142yAmeCh3JQhxXlVM4oQ=
host: localhost
port: 5432
pool: 5
timeout: 5
根據資料庫資訊,使用db_connect指令連接配接資料庫,執行指令如下:
msf5 > db_connect msf:8CpuBLruzRZ/UrWU5lHeK3142yAmeCh3JQhxXlVM4oQ=@127.
0.0.1:5432/msf
Connected to Postgres data service: 127.0.0.1/msf
從輸出的資訊可以看到,已連接配接到Postgres資料庫服務。
(3)再次檢視資料庫狀态,執行指令如下:
msf5 > db_status
[*] Connected to msf. Connection type: postgresql. Connection name: wqX77aje.
輸出資訊表示Metasploit已經成功地連接配接上了PostgreSQL的msf資料庫。
3.斷開資料庫連接配接
當使用者不再需要與目前的資料庫連接配接時,可以使用資料庫指令db_disconnect斷開連接配接。
(1)斷開與目前資料庫的連接配接,直接執行指令如下:
msf5 > db_disconnect
Successfully disconnected from the data service: local_db_service.
從輸出的資訊可以看到,已經成功斷開了與本地資料庫服務的連接配接。
msf5 > db_status
[*] postgresql selected, no connection
輸出資訊表示已成功地斷開了連接配接。
1.4.4 手動建立Metasploit專有使用者/資料庫
在1.4.2節中進行資料庫初始化時,會預設建立msf和msf_test資料庫,并且儲存在配置檔案database.yml中。如果使用者不想查找該檔案或該檔案丢失了,還可以手動建立資料庫賬戶。
(1)啟動PostgreSQL資料庫服務,執行指令如下:
root@daxueba:~# msfdb start
[+] Starting database
(2)切換到postgre賬戶,執行指令如下:
root@daxueba:~# su postgres
postgres@daxueba:/root$
輸出資訊表示成功切換為postgre賬戶。
(3)建立資料庫賬戶。例如,建立名為msf2的資料庫賬戶。執行指令如下:
postgres@daxueba:/root$ createuser msf2 -P
為新角色輸入的密碼: #需要手動輸出密碼
再輸入一遍: #再次輸出密碼
輸出資訊時需要輸入資料庫賬戶msf2的密碼,這裡使用的密碼為123456。
(4)建立資料庫,執行指令如下:
postgres@daxueba:/root$ createdb --owner=msf2 msf6
其中,owner參數指定資料庫所有者,這裡為msf2;msf6表示資料庫名。
(5)啟動Metasploit,執行指令如下:
root@daxueba:~# msfconsole
msf5 >
(6)建立連接配接,執行指令如下:
msf5 > db_connect msf2:[email protected]/msf6
Connected to Postgres data service: 127.0.0.1/msf6
輸出資訊表示已經連接配接到資料庫msf6。
1.5 Metasploit使用者接口
Metasploit架構為其基礎功能提供了多個使用者接口,包括終端、指令行和圖像界面等。在最新的版本中,指令行接口已被廢棄,其功能都被整合到了MSF終端接口中。除了這些接口,功能程式則提供了對Metasploit架構中内部功能的直接通路。本節将介紹Metasploit的使用者接口。
1.5.1 圖形界面接口——Armitage
Armitage元件是Metasploit架構中一個完全互動式的圖形化使用者接口,由Raphael Mudge所開發。Armitage工具包含Metasploit控制台,通過使用其标簽特性,使用者可以看到多個Metasploit控制台或多個Meterpreter會話。但是,本書不會深入介紹Armitage接口的使用,而是隻講解和分析Metasploit的輸入和輸出。使用者隻要了解了Metasploit架構的實際工作原理,那麼這個圖形界面工具的使用就很容易了。下面将簡單介紹Armitage接口的使用。
【執行個體1-5】在Kali Linux中使用Armitage。其中,該工具已經預設安裝在Kali Linux中,是以可以直接使用。具體操作步驟如下:
(1)啟動Postgresql資料庫服務。在使用Armitage工具前,必須啟動Postgresql資料庫服務,并且還需要初始化資料庫。否則,将無法運作Armitage工具。因為Armitage需要連接配接到PostgreSQL服務,才可以啟動。執行指令如下:
root@Kali:~# service postgresql start #啟動PostgreSQL資料庫服務
root@Kali:~# msfdb init #初始化資料庫
Creating database user 'msf'
為新角色輸入的密碼:
再輸入一遍:
Creating databases 'msf' and 'msf_test'
Creating configuration file in /usr/share/metasploit-framework/config/
database.yml
Creating initial database schema
從以上輸出資訊中,可以看到已經自動建立了msf和msf_test資料庫。如果沒有初始化資料庫,啟動Armitage工具後将彈出如圖1.27所示的消息框。
(2)啟動Armitage工具。在Kali桌面依次選擇“應用程式”|“漏洞利用工具集”|armitage指令,如圖1.28所示。或者在終端運作armitage指令啟動Armitage工具,指令如下:
root@kali:~# armitage
(3)Armitage工具啟動後,顯示界面如圖1.29所示。
(4)其中顯示了連接配接Metasploit服務的基本資訊。單擊Connect按鈕,彈出如圖1.30所示對話框。
(5)該對話框提示是否要啟動Metasploit的RPC服務。單擊“是(Y)”按鈕,彈出如圖1.31所示對話框。
(6)該對話框中顯示了連接配接Metasploit的一個進度條。當成功連接配接到Metasploit服務後,将顯示如圖1.32所示對話框。
(7)該對話框共有3個部分,這裡把它們分别标記為A、B和C。
- A:顯示的是預配置子產品。使用者可以在子產品清單中使用空格鍵搜尋Metasploit提供的子產品。
- B:顯示活躍的目标系統,使用者可以利用目标系統進行漏洞攻擊。
- C:顯示多個Metasploit标簽。這樣,就可以運作多個Meterpreter指令或控制台會話,并且同時顯示。
例如,對目标主機實施Nmap Ping掃描,則依次選擇Hosts|Nmap Scan|Ping Scan指令,即可對目标主機進行Ping掃描,如圖1.33所示。
1.5.2 終端接口——Msfconsole
MSF終端(Msfconsole)是目前Metasploit架構最為流行的使用者接口,而且MSF終端是Metasploit架構中最靈活、功能最豐富及支援最好的工具之一。MSF終端提供了一站式的接口,能設定Metasploit架構中幾乎每一個選項和配置。使用者可以使用MSF終端做任何事情,包括發起一次滲透攻擊、裝載輔助子產品、實施查點、建立監聽器,或是對整個網絡進行自動化滲透攻擊等。
1.6 配置虛拟靶機
虛拟靶機是指通過軟體模拟的具有完整硬體系統功能,并且運作在一個完全隔離環境中的完整計算機系統。當使用者成功安裝及配置Metasploit後,即可使用該工具實施滲透攻擊了。但是,如果要練習滲透攻擊,則需要有對應的攻擊靶機。為了使使用者不因沒有太多的實體機來練習滲透而煩惱,本節将介紹配置虛拟靶機的方法。
1.6.1 建立虛拟靶機
目前,最流行的虛拟機軟體有Virtual PC、VirtualBox和VMware Workstation。筆者認為VMware Workstation虛拟機簡潔、更容易操作,是以推薦使用者使用這款虛拟機軟體。下面介紹在VMware Workstation虛拟機軟體中建立虛拟靶機的方法。
其中,VMware Workstation的下載下傳位址是:
http://www.vmware.com/cn/products/workstation/workstation-evaluation。
下載下傳完成後,輕按兩下該軟體包即可将VMware安裝到目前計算機中。由于VMware的安裝簡單,直接單擊“下一步”按鈕就可以,是以這裡不介紹該軟體的安裝過程了。接下來,将示範在VMware上建立虛拟靶機的方法。
【執行個體1-6】在VMware中建立虛拟靶機。下面将以Kali Linux系統為例,介紹建立虛拟靶機的方法。具體操作步驟如下:
(1)啟動VMware虛拟機。成功啟動後,顯示如圖1.34所示的頁面。
(2)使用者可以在該頁面單擊“建立新的虛拟機”圖示,建立虛拟靶機;也可以在菜單欄中依次選擇“檔案”|“建立虛拟機(N)”指令來建立新的虛拟機。單擊“建立新的虛拟機”圖示後,将進入使用建立虛拟機向導對話框,如圖1.35所示。
(3)這是建立虛拟機的歡迎界面,在其中可以選擇建立虛拟機的類型。這裡提供了兩種方式,分别是“典型(推薦)(T)”和“自定義(進階)(C)”。這兩種方式的差別就是,第一種方式的操作比較簡單,第二種方式需要手動設定一些資訊,如硬體相容性、處理器和記憶體等。如果是新手的話,推薦使用“典型(推薦)(T)”方式。而且,關于虛拟機的進階(處理器、記憶體等)設定,在建立完虛拟機後也可以進行。是以,本例中選擇“典型”類型,然後單擊“下一步”按鈕,進入如圖1.36所示對話框。
(4)選擇安裝客戶機的來源,即插入安裝鏡像檔案的方法。從對話框中可以看到,預設提供了3種方式。這裡選擇“稍後安裝作業系統(S)”方式,然後單擊“下一步”按鈕,進入如圖1.37所示對話框。
(5)在該對話框用于選擇要安裝的作業系統和版本。本例中建立的是Kali Linux(基于Debian)作業系統,是以這裡選擇Linux作業系統,版本為“Debian 9.x 64位”。然後單擊“下一步”按鈕,進入如圖1.38所示的界面。
(6)在該對話框中需要為虛拟機建立一個名稱,并設定虛拟機的安裝位置。設定完成後,單擊“下一步”按鈕,進入如圖1.39所示對話框。
(7)在其中設定磁盤的容量。對于滲透測試的使用者,通常在進行密碼暴力破解時,會有一個很大的密碼字典。如果密碼字典過大的話,占用的空間也大。是以,在有足夠大的磁盤時,建議設定的磁盤容量大一點,以避免造成磁盤容量不足。本例中設定為80GB。設定完後,單擊“下一步”按鈕,進入如圖1.40所示對話框。
(8)該對話框中顯示了新建立的虛拟機的詳細資訊,單擊“完成”按鈕,将打開如圖1.41所示的視窗。
(9)其中顯示了新建立的Kali Linux虛拟機。接下來就可以在該虛拟機中安裝Kali Linux作業系統了。單擊“編輯虛拟機設定”,将彈出如圖1.42所示對話框。
(10)為了使使用者的虛拟機效率提高,建議設定記憶體(大于等于2GB)和處理器(2個處理器)。從圖1.42的左側欄中可以看到,使用者可以手動設定記憶體、處理器、硬碟、網絡擴充卡等。單擊左側的頁籤,然後在右側修改其值。例如,設定該虛拟機的記憶體,可以直接修改右側“此虛拟機的記憶體”文本框中的值,也可以通過滑鼠拖動滑塊來調整其記憶體大小。本例中要設定使用ISO鏡像檔案,是以選擇CD/DVD(IDE)選項,然後單擊“确定”按鈕,進入如圖1.43所示對話框。
(11)在該對話框的右邊部分,可以看到在“連接配接”選項組中有“使用實體驅動器”選項,當實體機中插入了安裝鏡像CD光牒時,使用該選項加載鏡像CD光牒;如果沒有實體驅動器,則需要使用第二種方式“使用ISO鏡像檔案(M)”。這裡選擇“使用ISO鏡像檔案(M)”單選按鈕,然後選擇kali安裝鏡像檔案,如圖1.44所示。
(12)單擊“确定”按鈕儲存設定,将傳回圖1.41所示對話框。然後,單擊“開啟此虛拟機”,顯示如圖1.45所示的安裝界面。
(13)此時,即可開始安裝該作業系統了。由于作業系統的安裝不是本書的重點,是以這裡不再贅述。
1.6.2 使用第三方虛拟靶機
有一些第三方網站提供了可直接使用的虛拟靶機,使用者下載下傳後即可直接在VMware虛拟機中使用。下面介紹如何使用第三方建立的幾種虛拟靶機。
1.使用WordPress虛拟靶機
WordPress是一種使用PHP語言開發的部落格平台,使用者可以在支援PHP和MySQL資料庫的伺服器上架設屬于自己的網站。為了友善使用者練習滲透測試WordPress應用程式,Turnkey Linux提供了一個非常好的資源。下面介紹使用WordPress虛拟靶機的方法。
【執行個體1-7】以Turnkey Linux系統為例,介紹使用WordPress虛拟靶機的方法。具體操作步驟如下:
(1)擷取WordPress應用程式。其中,WordPress應用程式的下載下傳位址為
http://www.turnkeylinux.org。在浏覽器中打開該網址後,将打開如圖1.46所示的頁面。
(2)在該頁面中列出了許多程式,可以通過向下滾動滑鼠進行檢視。由于篇幅的原因,圖1.46隻截取了一小部分内容。在該頁面中,使用者可以嘗試使用各種軟體查找漏洞,并通過攻擊這些應用程式來測試使用者的技術水準。本例選擇測試WordPress,向下滾動滑鼠可以看到Instant search(及時搜尋)對話框,如圖1.47所示。
(3)在該對話框中輸入WordPress,按Enter鍵,進入如圖1.48所示的頁面。
(4)在該頁面可以看到WordPress程式已經找到,此時單擊WordPress-Blog Publishing Platform連結進入下載下傳頁面,如圖1.49所示。
(5)在該頁面中選擇下載下傳ISO映像檔案。單擊336MB ISO連結,顯示如圖1.50所示的界面。
(6)從中可以看到正在下載下傳Turnkey WordPress系統。如果沒有開始下載下傳的話,單擊direct link連結即可開始下載下傳。下載下傳的軟體包名為turnkey-wordpress-15.1-stretch-amd64.iso。
(7)将前面下載下傳的ISO檔案導入光驅中,即可啟動此虛拟機,如圖1.51所示。
(8)選擇Install to hard disk選項,按Enter鍵,進入如圖1.52所示的界面。
(9)在該界面中需選擇分區的方法。系統提供了3種方法,分别是使用整個磁盤、使用整個磁盤并設定LVM和手動分區。這裡選擇第一種,然後單擊OK按鈕,進入如圖1.53所示的界面。
(10)該界面顯示了磁盤的分區表資訊,此時提示是否要寫入資料。單擊Yes按鈕,進入如圖1.54所示的界面。
(11)該界面顯示了複制資料的磁盤的進度。複制完後,顯示界面如圖1.55所示。
(12)該界面提示是否安裝GRUB引導加載程式的主引導記錄。單擊Yes按鈕,進入如圖1.56所示的界面。
(13)該界面顯示WordPress Turnkey Linux已經安裝完成,詢問是否現在重新啟動系統。單擊Yes按鈕,進入如圖1.57所示的界面。
(14)在其中為Root使用者設定一個密碼。輸入密碼後,單擊OK按鈕,進入如圖1.58所示的界面。
(15)此時要求再次為Root使用者輸入相同的密碼,單擊OK按鈕,進入如圖1.59所示的界面。
(16)為MySQL服務的root使用者設定一個密碼,設定完後單擊OK按鈕,進入如圖1.60所示的界面。
(17)再次為MySQL服務的root使用者輸入相同的密碼,然後單擊OK按鈕,進入如圖1.61所示的界面。
(18)此時要求為Wordpress的使用者admin設定一個密碼,輸入密碼後,單擊OK按鈕,進入如圖1.62所示的界面。
(19)再次為Wordpress使用者admin輸入相同的密碼,然後單擊OK按鈕,進入如圖1.63所示的界面。
(20)該界面提示為Wordpress使用者admin設定一個郵件位址,這裡使用預設的[email protected]。然後單擊Apply按鈕,進入如圖1.64所示的界面。
(21)該界面顯示了初始化Hub服務資訊,單擊Skip按鈕,進入如圖1.65所示的界面。
(22)該界面提示是否确定要跳過設定郵件位址。單擊Skip按鈕,進入如圖1.66所示的界面。
(23)該界面提示是否現在安裝安全更新,單擊Install按鈕,開始更新該系統。如果不希望更新的話,則單擊Skip按鈕。系統安裝完成後,顯示如圖1.67所示的界面。
(24)該界面顯示了WordPress應用服務的相信資訊,如Web位址、Web shell位址和端口、Webmin位址、Adminer位址和端口、SSH/SFTP位址和端口等。此時,表明WordPress Turnkey Linux就可以使用了。
2.使用Metasploitable虛拟靶機
Metasploitable是一款基于Ubuntu Linux的作業系統。該系統是一個虛拟機系統,從
http://sourceforge.net/projects/metasploitable/files/Metasploitable2/網站下載下傳解壓之後可以直接使用,無須安裝。由于基于Ubuntu,是以Metasploitable使用起來十分容易。Metasploitable的作用就是作為攻擊用的靶機,是以它存在大量未打更新檔的漏洞,并且開放了無數高危端口。下面将介紹如何使用Metasploitable虛拟靶機。
【執行個體1-8】安裝Metasploitable 2作業系統。具體操作步驟如下:
(1)下載下傳Metasploitables 2,其檔案名為Metasploitable-Linux-2.0.0.zip。
(2)将下載下傳的檔案解壓到本地磁盤。
(3)打開VMwareWorstation,并依次選擇“檔案”|“打開”指令,打開如圖1.68所示對話框。
(4)在其中找到Metasploitable 2系統所在的位置,并選擇Metasploitable.vmx檔案。單擊“打開”按鈕,将打開如圖1.69所示的頁面。
(5)看到該頁面,表示打開了已安裝好的虛拟機。單擊“開啟此虛拟機”按鈕或按鈕,啟動Metasploitable作業系統。成功啟動該作業系統後,将顯示如圖1.70所示的頁面。
(6)看到該項界面,表示已成功啟動Metasploitable作業系統。但是,使用者需要登入該系統後才可以進行操作。該作業系統預設的使用者名和密碼都是msfadmin。登入成功後,将顯示如圖1.71所示的頁面。
(7)從顯示的資訊中可以看到,目前系統是工作在第一個虛拟僞終端tty1,并且登入系統的使用者是一個普通使用者。如果需要root使用者權限時,可以使用sudo指令來實作。
3.使用OVA虛拟靶機
某些第三方提供的虛拟靶機是OVA格式的檔案,如Xplico服務的虛拟機。下面以Xplico虛拟靶機為例,介紹其在VMware中的使用方法。
【執行個體1-9】在VMware中使用OVA虛拟靶機。具體操作步驟如下:
(1)下載下傳VirtualBox Image的Xplico,下載下傳完成後包名稱為Xplico-1.1.0-ubuntu-13.10-i386.ova。
(2)将下載下傳好的OVA檔案導入VMware虛拟機中。啟動VMware虛拟機,顯示如圖1.72所示的界面。
(3)單擊“打開虛拟機”或者在菜單欄中依次選擇“檔案(F)”|“打開(O)...”指令,打開如圖1.73所示對話框。
(4)在其中選擇下載下傳好的.ova檔案,單擊“打開”按鈕,彈出如圖1.74所示對話框。
(5)在其中設定導入虛拟機的名稱及虛拟機的儲存路徑。本例中使用預設的名稱和路徑,單擊“導入”按鈕,進入如圖1.75所示對話框。
(6)對話框中顯示導入失敗,這隻是一個警告資訊,提示導入的檔案“不能通過OVF規格一緻性驗證”。這是因為VirtualBox和VMware不是完全相容。單擊“重試”按鈕,即可成功導入。導入成功後,顯示如圖1.76所示的頁面。
(7)單擊“開啟此虛拟機”,即可啟動該虛拟機,如圖1.77所示。
(8)此時輸入使用者名和密碼即可登入該系統。其中,預設的使用者名是ubuntu、密碼是reverse。登入成功後,顯示界面如圖1.78所示。
1.6.3 虛拟機網絡
如果要使用虛拟靶機,則需要為該虛拟機配置設定一個IP位址。在虛拟機的網絡連接配接中,有3種模式可以用來連接配接網絡,分别是橋接模式、NAT模式和僅主機模式。在設定虛拟機的網絡之前,首先介紹下這3種模式的差別。
- 橋接模式:在該模式中,虛拟機就是一個單獨的機子,沒有什麼其他限制的。虛拟機和主機是通過虛拟VMnet0連接配接到外界的。有單獨的IP,可以随意和互連的每一個主機進行聯系。
- NAT模式:在該模式下,虛拟系統需要借助NAT(網絡位址轉換)功能,通過宿主主機所在的網絡來通路公網。也就是說,使用NAT模式,虛拟系統可把實體主機作為路由器通路網際網路。NAT模式下的虛拟系統的TCP/IP配置資訊,是由VMnet8(NAT)虛拟網絡的DHCP伺服器提供的,無法進行手工修改。是以,該區域網路中的其他真實主機和虛拟系統無法進行通信。采用NAT模式最大的優勢是虛拟系統接入網際網路非常簡單,使用者不需要進行其他的配置,隻要宿主主機能通路網際網路即可。
- 僅主機模式:在這種模式下,所有的虛拟系統是可以互相通信的,但虛拟系統和真實的網絡是被隔離開的。虛拟機系統和宿主主機系統是可以互相通信的,相當于這兩台主機直接通過雙絞線互連。
1.設定虛拟機所使用的網絡類型
當使用者了解虛拟機的網絡模式後,即可對虛拟靶機進行網絡設定了。具體操作步驟如下:
(1)在VMware的菜單欄中,依次選擇“虛拟機”|“設定”指令,打開虛拟機設定界面,如圖1.79所示。
(2)在左邊區域選擇“網絡擴充卡”選項,右邊區域将顯示網絡連接配接設定,如圖1.80所示。
(3)在“網絡連接配接”選項區域中,可以看到虛拟機提供了3種網絡連接配接類型。使用者可以根據自己的環境選擇對應的網絡類型。
2.檢視及設定網絡類型的參數
通常情況下,對于攻擊靶機來說,滲透測試者無法确定該主機所在的網絡。是以,在實施滲透之前,使用者需要确定主機的網絡,才可以對網絡中的靶機進行掃描,判斷靶機的IP位址及存在的漏洞等。下面将介紹如何檢視及設定網絡類型的參數。
【執行個體1-10】檢視虛拟網絡類型的參數。具體操作步驟如下:
(1)單擊Windows左下角的(開始程式)按鈕,在彈出的菜單欄中依次選擇“所有程式”|VMware|“虛拟機網絡編輯器(以管理者身份運作)”指令,打開“虛拟網絡編輯器”對話框,如圖1.81所示。
(2)在其中可以看到虛拟機3種網絡的位址範圍。例如,VMnet0(橋接模式)的網絡位址段為192.168.86.0;VMnet1(僅主機模式)的網絡位址段為192.168.118.0;VMnet8(NAT模式)的網絡位址段為192.168.30.0。
從虛拟網絡編輯器的界面,可以看到每種網絡類型都對應有設定界面。如果要連接配接到網際網路,通常是使用橋接或NAT模式。對于橋接模式來說,通常情況下是當實體機上有多塊網卡時,使用者可以手動選擇将橋接到哪塊網卡,預設是自動選擇。這裡主要介紹一下NAT模式的設定。具體操作步驟如下:
(1)在“虛拟網絡編輯器”對話框中選擇NAT模式,将會看到有一個“NAT設定(S)...”按鈕,如圖1.83所示。
(2)在其中可以對該模式的子網IP、掩碼和DHCP進行設定。如果要進行進階設定,單擊“NAT設定”按鈕,進入“NAT設定”對話框,如圖1.84所示。
(3)在其中可以設定該網絡的網關、端口轉發及一些進階配置選項。當使用這種模式時,在某些時候設定端口轉發是非常有必要的。因為使用NAT模式後,将會組成一個單獨的網絡,是無法與實體主機進行通信的。這時候可以通過設定端口轉發來解決這個問題。設定完成後,單擊“添加”按鈕,打開“映射傳入端口”對話框,如圖1.85所示。
(4)在該對話框中可設定端口轉發。例如,将主機80端口的所有資料,映射到虛拟機192.168.30.138的4444端口,設定效果如圖1.85所示。設定完成後,單擊“确定”按鈕,傳回“NAT設定”對話框中,如圖1.86所示。
(5)從中可以看到剛才添加的端口轉發位址。此時,連續單擊兩次“确定”按鈕,使配置生效,并退出虛拟網絡編輯器界面。
1.7 配置Msfconsole環境
在使用Metasploit實施滲透攻擊時,往往需要同時進行幾個任務,執行許多的指令,産生大量的輸出資訊。為了能夠區分這些任務,以及友善後期分析所有輸入或輸出資訊,在實施攻擊之前需要适當配置Msfconsole環境。本節講解如何對Msfconsole環境進行配置。
1.7.1 設定提示内容
啟動Metasploit後,會看到提示内容“msf5>”,這是預設設定。其中,“msf5”為提示資訊;“>”為提示符号。Metasploit提供了設定提示的功能。使用者可以根據任務需要,對該内容進行修改。例如,在提示内容中顯示任務名,以明确目前工作等。
1.設定提示資訊
設定提示資訊需要使用set Prompt指令。該指令的文法格式如下:
set Prompt value
其中,value為要顯示的提示資訊,可以是自定義的字元串。
【執行個體1-11】将提示資訊設定為指定字元串My-msf,執行指令如下:
msf5 > set Prompt My-msf
Prompt => My-msf
My-msf >
最後一行顯示My-msf >,表示提示資訊由msf5變為了My-msf。
2.使用格式修飾符
提示資訊不僅可以使用自定義的字元串,還可以使用格式修飾符引入新的資訊。Metasploit支援多個格式修飾符,如表1.1所示。
【執行個體1-12】使用格式修飾符設定提示資訊。
(1)在提示資訊中顯示目前主機的IP位址,執行指令如下:
msf5 > set Prompt %L
Prompt => %L
192.168.59.135 >
最後一行的192.168.59.135為本地的IP位址。
(2)在提示資訊中顯示主機名,執行指令如下:
msf5 > set Prompt %H
Prompt => %H
daxueba >
提示資訊中的daxueba為主機名資訊。
3.設定時間格式
當使用格式修飾符%T顯示時間戳時,還可以通過set PromptTimeFormat指令設定時間格式。其文法格式如下:
set PromptTimeFormat value
其中,value為要顯示的時間格式。取值可以為%Y、%m、%d、%H、%M、%S中的一個或多個。其中,%Y表示年份,%m表示月份,%d表示天數,%H表示小時,%M表示分鐘,%S表示秒數。如果不進行設定,時間的預設顯示格式為%Y-%m-%d %H:%M:%S。
【執行個體1-13】指定時間格式在提示資訊中的顯示時間。
(1)指定時間格式,以“月-日 時:分”格式進行設定,執行指令如下:
msf5 > set PromptTimeFormat %m-%d %H:%M
PromptTimeFormat => %m-%d %H:%M
(2)在提示資訊中顯示時間。執行指令如下:
msf5 > set Prompt %T
Prompt => %T
04-11 14:47 >
最後一行表示目前時間為4月11日14小時47分。
4.設定提示符
使用者也可以自定義提示符。設定提示符需要使用set PromptChar指令。該指令的文法格式如下:
set PromptChar value
其中,value為要顯示的提示符。
【執行個體1-14】自定義提示符,将提示符設定為@。執行指令如下:
msf5 > set PromptChar @
PromptChar => @
msf5 @
最後一行中,提示符由原來的>變為了@。
1.7.2 啟用計時功能
使用子產品進行滲透攻擊時,往往會持續很長時間。為了了解每一步操作發生的時間,需要具備計時功能。使用者可以使用TimestampOutput選項啟用該功能。其指令格式如下:
set TimestampOutput value
其中,value值可以為true和false。如果為true,表示啟用計時功能;否則,不啟用。預設為false。
【執行個體1-15】啟用計時功能。
(1)啟用計時功能。執行指令如下:
msf5 > set TimestampOutput true
TimestampOutput => true
輸出資訊表示成功啟用了計時功能。
(2)子產品運作後,将會看到相關的時間,如圖1.87所示。其中,方框中為顯示的時間,可以看到時間是2019年4月10日19點39分25秒時,已成功登入。
1.7.3 使用日志
日志可以記錄使用者輸入和輸出的資訊,便于後期分析。Metasploit提供了兩種日志記錄方式,一種是記錄控制台的輸入和輸出資訊,另一種是記錄會話資訊。
1.控制台日志
控制台日志用來記錄Msfconsole發生的輸入和輸出資訊。當使用者要完成某項操作時,可能需要執行多個步驟。如果要将每一個步驟及輸出資訊記錄下來,就可以使用控制台日志進行記錄。預設情況下,該功能處于關閉狀态,需要使用者通過set ConsoleLogging指令将其開啟。開啟後,Metasploit會将資訊預設儲存在/root/.msf4/logs/console.log檔案中。該指令的文法格式如下:
set ConsoleLogging value
其中,value值可以為true和false。如果為true,表示啟用控制台日志記錄功能;否則,不啟用。預設為false。
【執行個體1-16】記錄控制台的多個輸入/輸出資訊。
(1)開啟記錄控制台的輸入和輸出功能。執行指令如下:
msf5 > set ConsoleLogging true
Console logging is now enabled.
ConsoleLogging => true
輸出資訊表示已經成功開啟了控制台記錄功能。
(2)執行一條指令,如檢視選項,具體如下:
msf5 > show options
Global Options:
===============
Option Current Setting Description
------ --------------- -----------
ConsoleLogging true Log all console input and output
LogLevel 0 Verbosity of logs (default 0, max 3)
MinimumRank 0 The minimum rank of exploits that
will run
without explicit confirmation
Prompt msf5 The prompt string
PromptChar > The prompt character
PromptTimeFormat %Y-%m-%d %H:%M:%S Format for timestamp
escapes in prompts
SessionLogging false Log all input and output for
sessions
TimestampOutput false Prefix all console output with a
timestamp
(3)掃描網絡中存在的主機。執行指令如下:
msf5 > db_nmap -sP 192.168.59.0/24
[*] Nmap: Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-10 16:18 CST
[*] Nmap: Nmap scan report for localhost (192.168.59.1)
[*] Nmap: Host is up (0.00022s latency).
[*] Nmap: MAC Address: 00:50:56:C0:00:08 (VMware)
[*] Nmap: Nmap scan report for localhost (192.168.59.2)
[*] Nmap: Host is up (0.00024s latency).
[*] Nmap: MAC Address: 00:50:56:EA:F3:A1 (VMware)
[*] Nmap: Nmap scan report for localhost (192.168.59.131)
[*] Nmap: Host is up (0.00042s latency).
[*] Nmap: MAC Address: 00:0C:29:DB:7E:4A (VMware)
[*] Nmap: Nmap scan report for localhost (192.168.59.254)
[*] Nmap: Host is up (0.00030s latency).
[*] Nmap: MAC Address: 00:50:56:F7:C0:8E (VMware)
[*] Nmap: Nmap scan report for localhost (192.168.59.135)
[*] Nmap: Host is up.
[*] Nmap: Nmap done: 256 IP addresses (5 hosts up) scanned in 2.09 seconds
步驟(2)和(3)的輸入和輸出資訊都将被記錄到控制台日志檔案console.log中。
(4)檢視控制台日志檔案console.log中記錄的資訊,如圖1.88所示。圖中顯示了被記錄的所有控制台輸入和輸出資訊,方框中為輸入資訊,下面資訊為對應的輸出資訊。
2.會話日志
會話日志是用來記錄成功攻擊所建立會話的輸出資訊。該資訊預設儲存在/root/.msf4/logs/session檔案夾中。啟動Metasploit後,預設沒有開啟該功能,需要使用set SessionLogging指令開啟。其文法格式如下:
set SessionLogging value
其中,value值可以為true和false。如果為true,表示啟用會話日志功能;否則,不啟用。預設為false。下面開啟會話日志功能,執行指令如下:
msf5 > set SessionLogging true
3.日志詳細級别
為了能夠記錄更詳細的日志資訊,使用者可以使用set LogLevel指令設定日志詳細級别。該指令的文法格式如下:
set SessionLogging value
其中,value值可以為0、1、2、3。值越高,級别也越高,顯示的日志資訊越詳細。預設級值為0。例如,設定日志詳細級别為2,執行指令如下:
msf5 > set LogLevel 2
1.7.4 設定子產品預設級别
子產品級别表示子產品的可利用程度。Metasploit根據子產品使用容易程度和對目标系統的潛在影響程度,對子產品進行了分級。每個級别對應一個數值。數值越大,級别越高、可利用的程度越高,反之越低。使用者可以根據排序級别,搜尋可利用程度高或低的相關子產品。子產品級别順序如表1.2所示。
在搜尋子產品時,Rank列會顯示每個子產品的級别,如圖1.89所示。
在Metasploit中,如果子產品沒有設定級别,則預設級别為0。但是這些子產品并不一定很難利用。對于這類子產品,可以使用MinimumRank選項修改預設級别。例如,設定級别值為300,指令如下:
set MinimumRank 300