我們透過上一篇介紹 bash、netcat、socat、程式語言、Msfvenom 與 Metasploit 中的模組 multi/handler,甚至學習如何從 bash 提升到 Meterpreter 的 shell。
至於這個 Metasploit、multi/handler 與 Meterpreter 是什麼呢?現在就來一探究竟吧!
Metasploit 是開放社群與 Rapid7 之間的開源專案,提供許多滲透測試的工具,和漏洞資訊與漏洞 payload。
該框架可讓使用者自己撰寫漏洞的 payload 透過,很多模組(modules)都是由 Ruby 這個程式語言撰寫而成的,該工具還包含 外掛 plugins、腳本 scripts 與很多使用者可以互動的工具。
輔助模組,主要用來收集目標的資訊,如同之前介紹的主動掃描。
其中輔助模組包含端口掃描、識別服務、監聽密碼、確認 Windows Patch(是否有上更新)、暴力破解、模糊測試(SSH、FTP、SQL等)。
利用模組,透過撰寫好的攻擊程式,針對目標進行攻擊,主要會根據這個攻擊程式設定需要的參數,常見的參數設定為攻擊目標的 IP、攻擊 port、攻擊成功之後在目標系統執行的程式/指令(Reverse Shell 或Bind Shell)。
提到 Metasploit 可以根據自己的需求寫攻擊程式 exploits、模組 modules、外掛 plugins 與腳本 scripts.
CLI
透過 msfconsole 執行 Metasploit 的 command Line 介面,執行速度快,還可以使用外部指令如 ping 或是透過【
tab】補完指令。
GUI
Metasploit 也有圖形化介面,叫做 Armitage。Armitage(http://www.fastandeasyhacking.com/)的官方網站這個圖形化介面主要利用 Java 撰寫而成,目前沒有更新維護。
WEB UI
Metasploit Pro 屬於商業版工具,需要錢,有十四天免費的版本。
啟動 Metasploit CLI - Msfconsolemsfconsole
每一次開啟的歡迎頁面都不一同,只要看到,以下的資訊表示開啟成功。
msf6 >
指令整理
指令可分成三種類型:一般基本指令、攻擊設定指令、攻擊執行指令。
指令類型 | 名稱 | 說明 |
---|---|---|
Core | 一般基本指令 | 常用的指令,如search、set、version、cd、exit |
Module Commands | 模組相關指令 | 從使用特定模組到列出資訊等,如 show、use、info |
Job | 連線指令 | 管理連線,如 jobs、kill、handler |
Resource Script | 批次處理指令 | 如果有想重複作的腳本可以利用 makerc 儲存攻擊流程,在利用 resource 引入。 |
Database Backend | 資料庫相關指令 | 支援 PostgreSQL 儲存掃描資訊、攻擊結果。 |
Credentials Backend | 密碼相關指令 | 測試過程中可能取得密碼相關的值,如帳號、密碼、NTLM Hash、md、JTR、REALM |
Developer | 開發者相關指令 | 查看 framework.log 或是重載 Ruby 函示庫 |
幫助列表msf6 > help
或 ?
會列出所有可以使用的指令。
如果想要找指定的指令,是否有參數可以使用:msf6 > help [command]
尋找指定POC
因為 Metasploit 內建 2100 種不同的漏洞腳本,因此透過搜尋關鍵字找到自己需要的腳本。msf6 > search <keyword>
範例示範msf6 > search wordpress
尋找關鍵字POC
透過特定的關鍵字可以更快找到自己需要的腳本。
確認 search 有哪些關鍵字和參數可以使用:msf6 > help search
查詢 cve 2021 且類型為攻擊的腳本:msf6 > search cve:2021 type:exploit
查詢 cve 2021 且受害類型為 windows 平台:msf6 > search cve:2021 platform:windows
增加新腳本
如果發現 Metasploit 沒有內建的攻擊腳本,可以尋找網路上是否已經有人寫好,以下是增加新腳本的方法:
cd /usr/share/metasploit-framework/modules/exploits/linux/http
sudo wget https://www.exploit-db.com/download/49096 -O 49096.rb
msfconsole
msf6 > reload_all
使用指定 exploit
當我們找到想要使用的腳本之後,透過use
加上腳本路徑,就可以使用該腳本。msf6 > use <exploit path>
查看該 exploit 的資訊
進入 exploit 可以看到 CLI 前面變成腳本的路徑,此時輸入 info
可以查看該 exploit 的資訊,包含名稱、是用平台、架構等。
msf6 exploit(xxxxxx) > info
顯示攻擊參數設定
輸入 show options
可以找到
msf6 exploit(xxxxxx) > show options
設定參數內容
從上圖可以知道可以分成主要攻擊模組設定(Module options)與攻擊程式設定(Payload options)與攻擊目標(Exploit target)。
set <參數名稱> <參數值>`` ![](https://i.imgur.com/4iLjHiF.png)
顯示可用的攻擊成功後要執行的程式
顯示用可用 payloadshow payloads
設定指定 payloadset payload <路徑>
其中 lhost、lport 也就是 Reverse Shell 中攻擊機的 IP與監聽的 port。
set lhost [your IP address]
set lport [listening port]
想要把目標參數儲存於全域變數
setg
設定成全域變數setg LHOST [ip]
save
如果想要避免自己的攻擊被發現,可以利用進階的設定。
進階設定show advanced
開啟進階設定set disablepayloadhandler true
顯示編碼器
透過使用編碼器可以用來避免簡單的 IDS/IPS 偵測。show encoders
set encoders <Name>
利用 NOP(No Operation)
顯示 NOP 生成器。show nops
可使用防禦的技術列表show evasion