網路安全領域中,流量分析是相當重要的技能。透過分析網路流量,可以理解網路行為、找出異常活動,並進一步防禦潛在的攻擊。本文將介紹如何使用 Kali Linux 和 Metasploitable 2 虛擬機器進行 ARP 欺騙攻擊和網路流量分析,並使用 Wireshark 工具捕捉和分析 HTTP 和 HTTPS 流量,瞭解加密與未加密流量的差異。首先,我們會利用 arpspoof 工具模擬 ARP 欺騙攻擊,藉此攔截目標主機的網路流量。接著,使用 urlsnarf 快速檢視網頁流量,並示範如何利用 Wireshark 進行更深入的封包分析。我們會以 Metasploitable 2 作為目標虛擬機器,示範如何擷取 HTTP 流量,並觀察明文傳輸的使用者名稱和密碼等敏感資訊。最後,我們將探討 HTTPS 加密流量的特性,以及如何在擁有金鑰的情況下解密 HTTPS 流量以進行分析。

技術應用與實踐

現在我們已經完成了實驗環境設定,讓我們來進行一些根據本章內容的練習。

ARP 欺騙攻擊

首先我們來進行 ARP 欺騙攻擊(ARP Spoofing),這是一種常見且危險的攻擊手法。

假設我們的 pfSense 路由器 IP 地址是 192.168.1.1 ,而 Windows 10 機器的 IP 地址是 192.168.1.20 。

首先我們需要在 Kali 中啟用封包轉送功能:

$ sudo -i
$ echo 1 > /proc/sys/net/ipv4/ip_forward

接著在終端機中輸入以下指令來開始欺騙 ARP 包:

$ sudo arpspoof -i eth0 -t 192.168.1.20 192.168.1.1

此指令會不斷執行直到您按下 Ctrl + C 鍵結束它:

ARP 欺騙 Windows 10 機器

接著我們再開啟另一個終端機視窗並輸入以下指令來開始欺騙 pfSense 路由器:

$ sudo arpspoof -i eth0 -t 192.168.1.1 192.168.1.20

執行後會看到以下結果:

ARP 欺騙 pfSense 路由器

內容解密:

  • ARP 欺騙原理:透過欺騙 ARP 傳輸協定來篡改 MAC 地址對應表。
  • 封包轉送:啟用 Kali 的封包轉送功能以便攔截和轉發封包。
  • ARP 欺騙攻擊:利用兩組指令分別欺騙 pfSense 路由器和 Windows 目標機。

URLSnarf 工具使用

為了快速檢視 Web 流量,有一款工具叫做 URLSnarf ,它是 dSniff 集合中的一部分工具。您可以在您的實驗室中嘗試這些工具只需輸入以下指令即可:

$ sudo urlsnarf -i eth0

此指令會檢查所有 Web 流量並顯示出被存取過的 URL 。以下是範例結果:

URLSnarf 檢視目標存取 URL

內容解密:

  • URLSnarf 工具:用於檢查並顯示所有被存取過的 URL 。
  • dSniff 集合:提供多種安全測試工具。
  • 命令使用:透過簡單指令即可快速掌握目標存取紀錄。

最佳實踐

如果您想要捕捉所有流量以便進一步分析及防禦作業則可以使用 Wireshark 。透過之前學習內容發起 Wireshark 在 Kali 上進行封包捕捉動作然後觀察一些有趣現象即可發現幾乎所有傳輸流量皆可被擷取觀察進行分析並做進階處理。

防禦策略

當涉及到檢測像 ARP 欺騙攻擊這樣複雜攻擊技術時就有些棘手了。確保所有網際網路流量都加密是防止任何竊聽的一種很好方法。許多現代瀏覽器現在要求網站支援某種形式的加密技術技術而最常見的是 HTTPS Everywhere 擴充套件 官方頁面。此外也會發現現代化設計防禦硬體裝置也有某種形式反欺騙技術可以在某程度防護欺騙攻擊發生。

最佳實踐:

  • 加密保護:所有網際網路流量必須加密以防止竊聽。
  • 防禦措施:利用 HTTPS Everywhere 或其他防禦工具來增加安全性。
  • 現代化硬體:使用具有反欺騙技術功能之硬體裝置以提升安全防護能力。

捕捉與分析網路流量

在第一章「網路入門」中,我們涵蓋了多種網路活動。其中一項需要探討的技能是捕捉和分析網路流量。擁有捕捉和分析封包的能力在進行道德駭客活動時至關重要。你可能會發現敏感資訊,例如登入憑證,特別是在使用的服務不安全的情況下。因此,讓我們在本章探討這些技能。

在本章中,我們將涵蓋以下主要主題:

  • 捕捉網路流量
  • 使用雲端環境中的網路流量
  • 將所學知識付諸實踐
  • 最佳實踐

技術要求

為了完成本章,你需要以下工具:

  • Kali Linux 2022.1 或更新版本
  • 支援監控模式的無線網路介面卡
  • Metasploitable 2

在本章中,我們將引入新的實驗室元素:一台名為Metasploitable 2的故意易受攻擊的虛擬機器。儘管這個虛擬機器映像已經推出幾年了,但它仍然非常有價值,因為它可以讓你練習你的技能。

你可以從以下連結下載Metasploitable 2:https://sourceforge.net/projects/metasploitable/files/Metasploitable2/

下載後,你需要解壓縮該檔案。然後可以使用你的虛擬機器軟體開啟這台虛擬機器。

警告

這台虛擬機器對多種攻擊手段易受攻擊。如果將其暴露在網際網路上時請謹慎操作。

現在我們的實驗室準備就緒,讓我們深入本章內容。

捕捉網路流量

捕捉網路流量的技術也稱為嗅探。可以將嗅探想像成偷聽對話。當你偷聽兩個人的對話時,你可以瞭解到很多關於這兩個人或他們談論話題的資訊。同樣地,在電腦領域,偵聽網路流量可以讓你獲得大量資訊。例如,考慮一下穿過網路的各種流量型別。包括電子郵件、網頁瀏覽和身份驗證。所有這些類別都有受保護和未受保護的通訊選項。這意味著它們可以是加密的或未加密的。

進行封包捕捉時,你需要使用一個網路嗅探器。嗅探器基本上是將網路介面卡轉換為監聽裝置,使其在促狹模式下工作。促狹模式允許網路介面卡監聽並接收穿過網路的所有封包,即使它不是針對它而來。請記住,網路介面卡的預設操作僅與針對它而來的流量一起工作。

嗅探器可以是軟體或硬體基礎的。你已經見過一個軟體基礎的嗅探器—Wireshark。我們將在本章中使用這個工具。

當談到硬體基礎的嗅探器時,你經常會看到使用到網路拋接器。網路拋接器基本上是一個裝置,允許你物理拋接網路電纜與來源和目標電腦之間的傳輸。下圖顯示了一個典型的網路拋接器—Throwing Star LAN拋接器。你可以透過搜尋引擎進行搜尋找到這個裝置。這些裝置線上上隨處可見。

此圖示

內容解密:

  • 促狹模式(Promiscuous Mode):當一個網路卡進入促狹模式時,它會接收所有穿過它所連線之網路中的封包(包括非對該卡傳送之封包),而不是僅接收針對自己的封包。
  • Wireshark:Wireshark 是一種強大且廣泛使用的開源軟體包分析工具。
  • 硬體基礎嗅探器(Hardware-based Sniffer):例如Throwing Star LAN 拋接器等硬體裝置可提供更高精確度及安全性地捕捉及分析封包。
  • 常見應用:例如篩選應用程式連線、排除連線問題、伺服器效能檢視及事件時間表建立等作業活動。

在本章中提到過,當進行封包捕捉和分析時,可能會發現敏感資訊;然而這並不是唯一應用場景。封包捕捉可以因為有益於道德駭客及網路管理員而進行多種原因:

  • 驗證程式在網路上是否具備連結性及其與其他系統之間互動狀況
  • 排除連線問題
  • 識別緩慢之網路效能或瓶頸
  • 建立事件時間表以便進行網路鑑識
  • 利用深層封包檢查識別潛在侵害指標

當談到封包捕捉時,最終決定如何精確地想要得到結果。如果只需要一般效果層級封包捕捉則可用軟體封包捕捉方式即可解決問題;相反地如果需要更精確度則要以硬體捕捉裝置方式做解決方案。

接下來我們集中精力於捕捉網路流量。本章我們將處理有線及無線兩型別之環境。首先從有線環境開始說明、然後再說明無線環境;並會使用專門無線卡進行操作。

捕捉與分析有線網路流量

在此小節中我們將使用 Wireshark 與 Kali Linux 作業系統進行有線環境之流量捕捉與分析。 首先必須取得 Metasploitable 2 虛擬機器之 IP 位址;開啟虛擬機器之後會出現登入頁面如下圖所示:

此圖示

登入詳細資訊已提供給你;登入後使用以下命令確認 IP 位址:

$ ifconfig

請記錄 IP 位址;舉例來說我的 IP 位址是192.168.111.170

然後切換至 Kali Linux 作業系統開始執行封包捕捉操作。

要開始執行 Wireshark 工具則需從終端機視窗輸入以下命令:

$ sudo wireshark

你需要以 sudo 模式執行 Wireshark 命令因為我們要啟用電腦之促狹模式功能來監聽所有流量。

如果有任何原因導致未安裝 Wireshark 則可利用以下命令來安裝:

$ sudo apt install wireshark

內容解密:

  • ifconfig命令:ifconfig(interface configuration)用於組態或檢視Linux系統中的網路裝置(網路介面卡)。
  • Wireshark:Wireshark 是一種強大且廣泛使用的開源軟體包分析工具。
  • Kali Linux:Kali Linux 是一種專門為滲透測試設計的一款 Linux 發行版。
  • IP位址:每台連結至電腦之聯機裝置必須具有唯一IP位址才能互相溝通交換資料。
  • Promiscuous Mode:當一個網路卡進入促狹模式時,它會接收所有穿過它所連線之網路中的封包(包括非對該卡傳送之封包),而不是僅接收針對自己的封包。
  • sudo命令:sudo是英文Superuser do命令簡寫,表示以系統管理員身份執行指定之命令。

至此已完成有線環境流量抓取與解析部分說明;若需要進階進階技巧則參考Hak5官方影片

擷取與分析網路流量

在開啟 Wireshark 之後,玄貓會在 Kali Linux 上啟動一個網頁瀏覽器。Kali Linux 預設使用 Firefox。在瀏覽器中,我們將導航至 Metasploitable 2 虛擬機器的 IP 地址。接下來,你應該會看到 Metasploitable 2 的選單,如下圖所示:

DVWA 的未加密流量擷取

首先,玄貓會使用 DVWA(Damn Vulnerable Web Application)。點選名為 DVWA 的連結,你會進入登入頁面。在此刻,我們會暫停並開始在 Wireshark 上進行封包擷取。

請記住,你可以使用看起來像鯊魚鰭的圖示(Shark fin icon)來開始封包擷取,或者雙擊介面來開始擷取。

擷取開始後,你應該會在 Wireshark 儀錶板上看到結果出現。接著,切換到你的瀏覽器,並在登入頁面上使用使用者名稱 admin 和密碼 password 登入。當你看到 DVWA 的首頁時,你可以在 Wireshark 上按下停止按鈕(Stop icon)。你的螢幕應該會顯示類別似以下的截圖:

分析未加密流量

現在我們擁有了封包擷取結果,讓我們來探索一下可以做些什麼。當我們登入 DVWA 應用程式時,我們建立了一個正常的超文字傳輸協定(HTTP)連線。HTTP 是不安全的,這意味著使用此協定傳輸的任何流量都是以明文形式傳輸的。

手動檢視封包擷取中的資料可能會非常耗時且繁瑣,因此讓我們利用過濾器來簡化生活。

首先我們來探索目標過濾器。過濾器將使用 Metasploitable 2 虛擬機器的 IP 地址進行應用。在我的環境中,這個 IP 地址是 192.168.111.170。請記住,你的 IP 地址可能會不同。如果你不確定 IP 地址是什麼,請重新檢視「捕捉並分析有線網路流量」部分的開頭。

Wireshark 的過濾器根據以下語法:

[Protocol].[header/field] [operator: +,==,!=] [value]

根據這個語法,我們將使用的過濾器是 ip.dst == 192.168.111.170。在此處,我們定義了 IP 協定和 dst 欄位。然後設定比對運算元 == 和值 192.168.111.170

應用過濾器後,你應該會看到所有針對 Metasploitable 2 虛擬機器的流量。結果應該與以下截圖類別似:

更精確的過濾

過濾器幫助我們縮小範圍,讓我們可以專注於所有針對指定目的地的流量。然而,你會發現結果仍然相當廣泛。因此,讓我們利用另一個過濾器來查詢根據 TCP 的任何登入操作。我們將使用以下過濾器:

tcp contains login

應用後,結果應該與以下截圖類別似:

現在,結果更加精確了。讓我們來探索這些結果中的資料。展開各個部分將提供有關源和目的地 MAC 地址(乙太網 II)的資訊。我們能看到源和目的地 IP 地址(Internet Protocol Version 4),以及源和目的地 TCP 停止(Transmission Control Protocol)。最後是超文字傳輸協定部分,這提供了有關實際網路請求的資訊。當你展開這些欄位時,你會注意到使用者名稱和密碼是以明文形式顯示的:

擷取與分析加密流量

目前大多數網站使用超文字傳輸協定安全(HTTPS)進行通訊。事實上,許多瀏覽器現在預設強制使用 HTTPS。HTTPS 與 HTTP 沒有太大差異,唯一不同的是它在通訊流中使用傳輸層安全性(TLS)或安全通訊層(SSL)加密。TLS/SSL 執行驗證以證明您正在通訊的網站是誰聲稱它是誰。因此想像 HTTPS 通訊是一個包含 HTTP 流量的加密隧道。

此圖示

  graph TD;
    A[HTTPS] --> B[TLS/SSL];
    B --> C[HTTP];
    C --> D[Encrypted Tunnel];