天天看點

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

資訊安全技術大講堂 點選檢視第二章 從實踐中學習Metasploit 5滲透測試

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
大學霸IT達人 編著

第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所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  可以看到,該頁面中提供了3個版本,分别是專業版(Pro,免費試用14天)、社群版(Community)和Framework。本例中将選擇下載下傳Framework。在該頁面單擊Framework下面的Free Download按鈕,将跳轉到GitHub網站,這裡提供了各種作業系統平台的安裝和下載下傳方法,如圖1.2所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  從圖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所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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 5滲透測試》之一:環境配置第1章 環 境 配 置

  現在,就可以啟動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。接下來就可以使用該架構提供的子產品及攻擊載荷實施滲透了。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

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所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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 >           
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

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所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  在該頁面中可選擇下載下傳各種平台的安裝包。在大部分Linux發行版中都自帶了PostgreSQL的二進制包,是以使用者可以直接安裝。下面将示範在Windows中安裝PostgreSQL資料庫的方法。

  【執行個體1-4】在Windows 7中安裝PostgreSQL資料庫。具體操作步驟如下:

  (1)輕按兩下下載下傳的安裝包,将打開如圖1.17所示對話框。

  (2)該界面是安裝PostgreSQL資料庫的歡迎界面。單擊Next按鈕,進入安裝位置對話框,如圖1.18所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (3)選擇PostgreSQL資料庫的安裝位置。本例中将使用預設路徑,然後單擊Next按鈕,進入選擇元件安裝對話框,如圖1.19所示。

  (4)在其中選擇将要安裝的元件,這裡使用預設設定,選擇所有元件。然後單擊Next按鈕,進入資料目錄對話框,如圖1.20所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (10)該對話框表示目前已經配置好PostgreSQL了,可以開始安裝該資料庫了。此時,單擊Next按鈕,開始安裝該資料庫。安裝完成後,如圖1.26所示。

  (11)從中可以看到,預設将要啟動Stack Builder來下載下傳并安裝額外的工具、應用程式和驅動程式,以進一步完善PostgreSQL的安裝。但是,該操作必須在聯網狀态下執行。本例中安裝PostgreSQL資料庫隻是為了簡單地與Metasploit連接配接,并儲存一些資料。是以,這裡不啟動StackBuilder,即取消複選框的勾選。然後,單擊Finish按鈕完成資料庫的安裝。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

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所示的消息框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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指令或控制台會話,并且同時顯示。
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  例如,對目标主機實施Nmap Ping掃描,則依次選擇Hosts|Nmap Scan|Ping Scan指令,即可對目标主機進行Ping掃描,如圖1.33所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

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所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (2)使用者可以在該頁面單擊“建立新的虛拟機”圖示,建立虛拟靶機;也可以在菜單欄中依次選擇“檔案”|“建立虛拟機(N)”指令來建立新的虛拟機。單擊“建立新的虛拟機”圖示後,将進入使用建立虛拟機向導對話框,如圖1.35所示。

  (3)這是建立虛拟機的歡迎界面,在其中可以選擇建立虛拟機的類型。這裡提供了兩種方式,分别是“典型(推薦)(T)”和“自定義(進階)(C)”。這兩種方式的差別就是,第一種方式的操作比較簡單,第二種方式需要手動設定一些資訊,如硬體相容性、處理器和記憶體等。如果是新手的話,推薦使用“典型(推薦)(T)”方式。而且,關于虛拟機的進階(處理器、記憶體等)設定,在建立完虛拟機後也可以進行。是以,本例中選擇“典型”類型,然後單擊“下一步”按鈕,進入如圖1.36所示對話框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (4)選擇安裝客戶機的來源,即插入安裝鏡像檔案的方法。從對話框中可以看到,預設提供了3種方式。這裡選擇“稍後安裝作業系統(S)”方式,然後單擊“下一步”按鈕,進入如圖1.37所示對話框。

  (5)在該對話框用于選擇要安裝的作業系統和版本。本例中建立的是Kali Linux(基于Debian)作業系統,是以這裡選擇Linux作業系統,版本為“Debian 9.x 64位”。然後單擊“下一步”按鈕,進入如圖1.38所示的界面。

  (6)在該對話框中需要為虛拟機建立一個名稱,并設定虛拟機的安裝位置。設定完成後,單擊“下一步”按鈕,進入如圖1.39所示對話框。

  (7)在其中設定磁盤的容量。對于滲透測試的使用者,通常在進行密碼暴力破解時,會有一個很大的密碼字典。如果密碼字典過大的話,占用的空間也大。是以,在有足夠大的磁盤時,建議設定的磁盤容量大一點,以避免造成磁盤容量不足。本例中設定為80GB。設定完後,單擊“下一步”按鈕,進入如圖1.40所示對話框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (8)該對話框中顯示了新建立的虛拟機的詳細資訊,單擊“完成”按鈕,将打開如圖1.41所示的視窗。

  (9)其中顯示了新建立的Kali Linux虛拟機。接下來就可以在該虛拟機中安裝Kali Linux作業系統了。單擊“編輯虛拟機設定”,将彈出如圖1.42所示對話框。

  (10)為了使使用者的虛拟機效率提高,建議設定記憶體(大于等于2GB)和處理器(2個處理器)。從圖1.42的左側欄中可以看到,使用者可以手動設定記憶體、處理器、硬碟、網絡擴充卡等。單擊左側的頁籤,然後在右側修改其值。例如,設定該虛拟機的記憶體,可以直接修改右側“此虛拟機的記憶體”文本框中的值,也可以通過滑鼠拖動滑塊來調整其記憶體大小。本例中要設定使用ISO鏡像檔案,是以選擇CD/DVD(IDE)選項,然後單擊“确定”按鈕,進入如圖1.43所示對話框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (11)在該對話框的右邊部分,可以看到在“連接配接”選項組中有“使用實體驅動器”選項,當實體機中插入了安裝鏡像CD光牒時,使用該選項加載鏡像CD光牒;如果沒有實體驅動器,則需要使用第二種方式“使用ISO鏡像檔案(M)”。這裡選擇“使用ISO鏡像檔案(M)”單選按鈕,然後選擇kali安裝鏡像檔案,如圖1.44所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (12)單擊“确定”按鈕儲存設定,将傳回圖1.41所示對話框。然後,單擊“開啟此虛拟機”,顯示如圖1.45所示的安裝界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (13)此時,即可開始安裝該作業系統了。由于作業系統的安裝不是本書的重點,是以這裡不再贅述。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

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所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (2)在該頁面中列出了許多程式,可以通過向下滾動滑鼠進行檢視。由于篇幅的原因,圖1.46隻截取了一小部分内容。在該頁面中,使用者可以嘗試使用各種軟體查找漏洞,并通過攻擊這些應用程式來測試使用者的技術水準。本例選擇測試WordPress,向下滾動滑鼠可以看到Instant search(及時搜尋)對話框,如圖1.47所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (3)在該對話框中輸入WordPress,按Enter鍵,進入如圖1.48所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (4)在該頁面可以看到WordPress程式已經找到,此時單擊WordPress-Blog Publishing Platform連結進入下載下傳頁面,如圖1.49所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (5)在該頁面中選擇下載下傳ISO映像檔案。單擊336MB ISO連結,顯示如圖1.50所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (6)從中可以看到正在下載下傳Turnkey WordPress系統。如果沒有開始下載下傳的話,單擊direct link連結即可開始下載下傳。下載下傳的軟體包名為turnkey-wordpress-15.1-stretch-amd64.iso。

  (7)将前面下載下傳的ISO檔案導入光驅中,即可啟動此虛拟機,如圖1.51所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (8)選擇Install to hard disk選項,按Enter鍵,進入如圖1.52所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (9)在該界面中需選擇分區的方法。系統提供了3種方法,分别是使用整個磁盤、使用整個磁盤并設定LVM和手動分區。這裡選擇第一種,然後單擊OK按鈕,進入如圖1.53所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (10)該界面顯示了磁盤的分區表資訊,此時提示是否要寫入資料。單擊Yes按鈕,進入如圖1.54所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (11)該界面顯示了複制資料的磁盤的進度。複制完後,顯示界面如圖1.55所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (12)該界面提示是否安裝GRUB引導加載程式的主引導記錄。單擊Yes按鈕,進入如圖1.56所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (13)該界面顯示WordPress Turnkey Linux已經安裝完成,詢問是否現在重新啟動系統。單擊Yes按鈕,進入如圖1.57所示的界面。

  (14)在其中為Root使用者設定一個密碼。輸入密碼後,單擊OK按鈕,進入如圖1.58所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (15)此時要求再次為Root使用者輸入相同的密碼,單擊OK按鈕,進入如圖1.59所示的界面。

  (16)為MySQL服務的root使用者設定一個密碼,設定完後單擊OK按鈕,進入如圖1.60所示的界面。

  (17)再次為MySQL服務的root使用者輸入相同的密碼,然後單擊OK按鈕,進入如圖1.61所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (18)此時要求為Wordpress的使用者admin設定一個密碼,輸入密碼後,單擊OK按鈕,進入如圖1.62所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (19)再次為Wordpress使用者admin輸入相同的密碼,然後單擊OK按鈕,進入如圖1.63所示的界面。

  (20)該界面提示為Wordpress使用者admin設定一個郵件位址,這裡使用預設的[email protected]。然後單擊Apply按鈕,進入如圖1.64所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (21)該界面顯示了初始化Hub服務資訊,單擊Skip按鈕,進入如圖1.65所示的界面。

  (22)該界面提示是否确定要跳過設定郵件位址。單擊Skip按鈕,進入如圖1.66所示的界面。

  (23)該界面提示是否現在安裝安全更新,單擊Install按鈕,開始更新該系統。如果不希望更新的話,則單擊Skip按鈕。系統安裝完成後,顯示如圖1.67所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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所示對話框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (4)在其中找到Metasploitable 2系統所在的位置,并選擇Metasploitable.vmx檔案。單擊“打開”按鈕,将打開如圖1.69所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (5)看到該頁面,表示打開了已安裝好的虛拟機。單擊“開啟此虛拟機”按鈕或按鈕,啟動Metasploitable作業系統。成功啟動該作業系統後,将顯示如圖1.70所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (6)看到該項界面,表示已成功啟動Metasploitable作業系統。但是,使用者需要登入該系統後才可以進行操作。該作業系統預設的使用者名和密碼都是msfadmin。登入成功後,将顯示如圖1.71所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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所示的界面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (3)單擊“打開虛拟機”或者在菜單欄中依次選擇“檔案(F)”|“打開(O)...”指令,打開如圖1.73所示對話框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (4)在其中選擇下載下傳好的.ova檔案,單擊“打開”按鈕,彈出如圖1.74所示對話框。

  (5)在其中設定導入虛拟機的名稱及虛拟機的儲存路徑。本例中使用預設的名稱和路徑,單擊“導入”按鈕,進入如圖1.75所示對話框。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (6)對話框中顯示導入失敗,這隻是一個警告資訊,提示導入的檔案“不能通過OVF規格一緻性驗證”。這是因為VirtualBox和VMware不是完全相容。單擊“重試”按鈕,即可成功導入。導入成功後,顯示如圖1.76所示的頁面。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (7)單擊“開啟此虛拟機”,即可啟動該虛拟機,如圖1.77所示。

  (8)此時輸入使用者名和密碼即可登入該系統。其中,預設的使用者名是ubuntu、密碼是reverse。登入成功後,顯示界面如圖1.78所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

1.6.3 虛拟機網絡

  如果要使用虛拟靶機,則需要為該虛拟機配置設定一個IP位址。在虛拟機的網絡連接配接中,有3種模式可以用來連接配接網絡,分别是橋接模式、NAT模式和僅主機模式。在設定虛拟機的網絡之前,首先介紹下這3種模式的差別。

  • 橋接模式:在該模式中,虛拟機就是一個單獨的機子,沒有什麼其他限制的。虛拟機和主機是通過虛拟VMnet0連接配接到外界的。有單獨的IP,可以随意和互連的每一個主機進行聯系。
  • NAT模式:在該模式下,虛拟系統需要借助NAT(網絡位址轉換)功能,通過宿主主機所在的網絡來通路公網。也就是說,使用NAT模式,虛拟系統可把實體主機作為路由器通路網際網路。NAT模式下的虛拟系統的TCP/IP配置資訊,是由VMnet8(NAT)虛拟網絡的DHCP伺服器提供的,無法進行手工修改。是以,該區域網路中的其他真實主機和虛拟系統無法進行通信。采用NAT模式最大的優勢是虛拟系統接入網際網路非常簡單,使用者不需要進行其他的配置,隻要宿主主機能通路網際網路即可。
  • 僅主機模式:在這種模式下,所有的虛拟系統是可以互相通信的,但虛拟系統和真實的網絡是被隔離開的。虛拟機系統和宿主主機系統是可以互相通信的,相當于這兩台主機直接通過雙絞線互連。

  1.設定虛拟機所使用的網絡類型

  當使用者了解虛拟機的網絡模式後,即可對虛拟靶機進行網絡設定了。具體操作步驟如下:

  (1)在VMware的菜單欄中,依次選擇“虛拟機”|“設定”指令,打開虛拟機設定界面,如圖1.79所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (2)在左邊區域選擇“網絡擴充卡”選項,右邊區域将顯示網絡連接配接設定,如圖1.80所示。

  (3)在“網絡連接配接”選項區域中,可以看到虛拟機提供了3種網絡連接配接類型。使用者可以根據自己的環境選擇對應的網絡類型。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  2.檢視及設定網絡類型的參數

  通常情況下,對于攻擊靶機來說,滲透測試者無法确定該主機所在的網絡。是以,在實施滲透之前,使用者需要确定主機的網絡,才可以對網絡中的靶機進行掃描,判斷靶機的IP位址及存在的漏洞等。下面将介紹如何檢視及設定網絡類型的參數。

  【執行個體1-10】檢視虛拟網絡類型的參數。具體操作步驟如下:

  (1)單擊Windows左下角的(開始程式)按鈕,在彈出的菜單欄中依次選擇“所有程式”|VMware|“虛拟機網絡編輯器(以管理者身份運作)”指令,打開“虛拟網絡編輯器”對話框,如圖1.81所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置
帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  (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所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第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秒時,已成功登入。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

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所示。圖中顯示了被記錄的所有控制台輸入和輸出資訊,方框中為輸入資訊,下面資訊為對應的輸出資訊。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  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所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  在搜尋子產品時,Rank列會顯示每個子產品的級别,如圖1.89所示。

帶你讀《從實踐中學習Metasploit 5滲透測試》之一:環境配置第1章 環 境 配 置

  在Metasploit中,如果子產品沒有設定級别,則預設級别為0。但是這些子產品并不一定很難利用。對于這類子產品,可以使用MinimumRank選項修改預設級别。例如,設定級别值為300,指令如下:

set MinimumRank 300