iT邦幫忙

2021 iThome 鐵人賽

DAY 23
1
Security

資安這條路─系統化學習滲透測試系列 第 23

Day23 - 針對 Metasploitable 3 進行滲透測試(4) - 認識 Metasploit

  • 分享至 

  • xImage
  •  

複習

  1. 透過 nmap 掃描 port
  2. 利用版本查詢已知漏洞
  3. 透過人家撰寫好 exploit 進行攻擊
  4. 透過攻擊取得受害主機的權限

提升權限

我們透過上一篇介紹 bash、netcat、socat、程式語言、Msfvenom 與 Metasploit 中的模組 multi/handler,甚至學習如何從 bash 提升到 Meterpreter 的 shell。

至於這個 Metasploit、multi/handler 與 Meterpreter 是什麼呢?現在就來一探究竟吧!

簡介 Metasploit

Metasploit 是開放社群與 Rapid7 之間的開源專案,提供許多滲透測試的工具,和漏洞資訊與漏洞 payload。

Metasploit Framework (MSF)

該框架可讓使用者自己撰寫漏洞的 payload 透過,很多模組(modules)都是由 Ruby 這個程式語言撰寫而成的,該工具還包含 外掛 plugins、腳本 scripts 與很多使用者可以互動的工具。

Metasploit auxiliary modules

輔助模組,主要用來收集目標的資訊,如同之前介紹的主動掃描。

其中輔助模組包含端口掃描、識別服務、監聽密碼、確認 Windows Patch(是否有上更新)、暴力破解、模糊測試(SSH、FTP、SQL等)。

Metasploit Exploit modules

利用模組,透過撰寫好的攻擊程式,針對目標進行攻擊,主要會根據這個攻擊程式設定需要的參數,常見的參數設定為攻擊目標的 IP、攻擊 port、攻擊成功之後在目標系統執行的程式/指令(Reverse Shell 或Bind Shell)。

Metasploit 客製化

提到 Metasploit 可以根據自己的需求寫攻擊程式 exploits、模組 modules、外掛 plugins 與腳本 scripts.

Metasploit UI 介面

CLI
透過 msfconsole 執行 Metasploit 的 command Line 介面,執行速度快,還可以使用外部指令如 ping 或是透過【
tab】補完指令。

GUI
Metasploit 也有圖形化介面,叫做 Armitage。Armitage(http://www.fastandeasyhacking.com/)的官方網站這個圖形化介面主要利用 Java 撰寫而成,目前沒有更新維護。

WEB UI
Metasploit Pro 屬於商業版工具,需要錢,有十四天免費的版本。

基礎指令

啟動 Metasploit CLI - Msfconsole
msfconsole

每一次開啟的歡迎頁面都不一同,只要看到,以下的資訊表示開啟成功。

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 沒有內建的攻擊腳本,可以尋找網路上是否已經有人寫好,以下是增加新腳本的方法:

  1. 切換到想要放入的資料夾
    cd /usr/share/metasploit-framework/modules/exploits/linux/http
  2. 下載 exploit
    sudo wget https://www.exploit-db.com/download/49096 -O 49096.rb
  3. 開啟 CLI 介面
    msfconsole
  4. 重載內容
    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)
顯示可用的攻擊成功後要執行的程式
顯示用可用 payload
show payloads

設定指定 payload
set payload <路徑>

其中 lhost、lport 也就是 Reverse Shell 中攻擊機的 IP與監聽的 port。

set lhost [your IP address]

set lport [listening port]

想要把目標參數儲存於全域變數

  1. LHOST 的 IP 都是固定,可以利用 setg 設定成全域變數
    setg LHOST [ip]
  2. 儲存
    save

進階參數

如果想要避免自己的攻擊被發現,可以利用進階的設定。

進階設定
show advanced

開啟進階設定
set disablepayloadhandler true

顯示編碼器
透過使用編碼器可以用來避免簡單的 IDS/IPS 偵測。
show encoders

set encoders <Name>

利用 NOP(No Operation)
顯示 NOP 生成器。
show nops

可使用防禦的技術列表
show evasion


上一篇
Day22 - 針對 Metasploitable 3 進行滲透測試(3) - Msfvenom 與 multi/handler
下一篇
Day24 - 針對 Metasploitable 3 進行滲透測試(5) - 認識 Meterpreter
系列文
資安這條路─系統化學習滲透測試37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言