Wireshark 作為一款功能強大的網路封包分析工具,在網路安全領域扮演著至關重要的角色。理解 HTTP、HTTPS 和 TLS 協定的運作機制,以及如何利用 Wireshark 分析這些協定的流量,對於網路安全專業人員來說至關重要。HTTPS 透過 TLS/SSL 加密通道保護 HTTP 流量,使得直接分析明文內容變得困難。Wireshark 提供瞭解密 HTTPS 流量的功能,讓安全分析人員能夠深入瞭解加密流量的細節。透過設定 pre-master secret,Wireshark 可以解密 TLS 流量,揭示加密通道中的明文資料。此外,分析 TLS 握手過程中的加密套件協商、憑證交換等資訊,有助於評估通訊的安全性。不同版本的 TLS 協定在安全性、效能和功能方面存在差異,瞭解這些差異對於選擇合適的 TLS 版本至關重要。TLS 1.3 作為最新版本,在安全性方面有顯著提升,建議優先考慮使用。
擷取與分析加密流量
由於 HTTPS 使用 TLS/SSL 加密來保護通訊內容,因此直接捕捉並檢視 HTTPS 流量將無法看到明文內容。
內容解密:
此段程式碼描述了 HTTPS 的基本架構及其與 HTTP 和 TLS/SSL 加密之間的關係。
- A 是 HTTPS,表示超文字傳輸協定安全。
- B 是 TLS/SSL,表示傳輸層安全性或安全通訊層。
- C 是 HTTP,表示超文字傳輸協定。
- D 是 Encrypted Tunnel,表示加密隧道。
這些元素之間的關係表明 HTTPS 是一種使用 TLS/SSL 加密保護 HTTP 流量的方式。
要檢視 HTTPS 流量中的明文內容通常需要一些其他技術或工具來進行中間人攻擊(MITM),例如修改網路組態或使用 SSL/TLS 拆解工具等方法。
總結而言,Wireshark 是一個非常強大且靈活的工具,適用於各種網路流量分析任務。 無論是在分析未加密還是加密流量方面,Wireshark 都能提供深入且詳細的見解, 幫助資安專家識別潛在漏洞並保護網路系統免受未經授權存取及攻擊。 透過合理利用其強大功能,Wireshark 能夠大幅提升網路監控和維護工作效率, 使系統更為穩定與安全可靠。HTTPS 的廣泛應用使得直接捕捉明文內容變得困難, 但瞭解其運作原理和潛在風險對於維護網路安全至關重要。DVWA 作為一個模擬弱點環境, 為資安專家提供了實踐和學習經驗,Wireshark 則是必不可少的一項工具, 幫助進行深入分析與防範措施設計。
graph TD; A[DVWA] --> B[Unencrypted Traffic]; B --> C[HTTP]; C --> D[Clear Text Credentials]; E[Wireshark] --> F[Packet Capture]; F --> G[Tcp Filtering];
小段落標題
接下來玄貓將詳細介紹如何利用 Wireshark 分析 HTTP 與 HTTPS 流量、以及如何利用各種過濾器進行精確篩選、這些技巧不僅提升技術人員工作效率、也能在實務環境中快速發現潛在漏洞與問題、進而保障資料安全及系統穩定執行
SSL 與 TLS 的區別與版本分析
在網路安全中,SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是兩個至關重要的協定。雖然它們的名稱和基本功能相似,但它們之間存在一些關鍵的差異。以下是玄貓對 SSL 和 TLS 的深度分析。
SSL 與 TLS 的技術差異
SSL 和 TLS 之間的主要區別在於以下幾個方面:
加密套件(Cipher Suites)
TLS 支援更多現代化的加密套件,如 AES、RC4 和 Triple DES。這些加密套件提供了更強的安全性和效率。
記錄協定
TLS 使用 HMAC(Hash-Based Message Authentication Code)來進行訊息驗證。HMAC 是一種根據雜湊函式和金鑰的驗證技術,能夠在每條訊息傳輸後進行驗證。而 SSL 則使用 MAC(Message Authentication Code),這是一種簡單的標記驗證方法。
握手協定
TLS 在握手過程中計算整個握手過程的雜湊值,確保每一步都被完整驗證。這使得 TLS 更為安全,因為它能夠防止中間人攻擊。
警告訊息
TLS 提供多種警告訊息,而 SSL 只有一種「無憑證」警告訊息。這使得 TLS 能夠更詳細地報告錯誤和問題。
SSL 與 TLS 的版本演進
SSL 和 TLS 經歷了多個版本的演進,以下是主要版本的簡要說明:
- SSL 1.0:由於存在多個安全漏洞,SSL 1.0 從未正式發布。
- SSL 2.0:發布於 1995 年,但存在設計缺陷,導致後來發布了 SSL 3.0。SSL 2.0 使用了弱演算法如 MD5,並且使用相同的加金鑰匙進行身份驗證和加密。
- SSL 3.0:旨在修復 SSL 2.0 的缺陷,但在 POODLE 攻擊後被認為不安全。
- TLS 1.0:作為 SSL 3.0 的升級版本,但可能被降級到 SSL 3.0,從而容易受到降級攻擊。
- TLS 1.1:增加了對 CBC 攻擊的保護,但在 2020 年左右被許多軟體廠商廢棄。
- TLS 1.2:發布於 2008 年左右,允許客戶端和伺服器端指定使用的雜湊和演算法。支援驗證加密和資料模式,並能根據選擇的加密套件驗證資料長度。
- TLS 1.3:發布於 2018 年八月,移除了 MD5 和 SHA-224 支援,並強制要求數字簽名和完美前向保密。所有通訊在伺服器問候握手後進行加密。
捕捉與分析 TLS 網路流量
在實際應用中,捕捉和分析網路流量是網路安全分析中的重要環節。以下是玄貓對捕捉與分析 TLS 網路流量的一些見解。
Wireshark 工具的使用
Wireshark 是一款強大的網路流量分析工具,能夠捕捉和解析網路包。以下是使用 Wireshark 分析 TLS v1.2 流量的一些步驟:
下載樣本資料
首先,需要下載兩個樣本檔案:dump.pcapng
和 premaster.txt
。這些檔案可以從特定 URL 下載(例如 Wireshark 的官方網站)。
https://bugs.wireshark.org/bugzilla/attachment.cgi?id=11612
https://bugs.wireshark.org/bugzilla/attachment.cgi?id=11616
載入樣本檔案
將下載的檔案載入到 Wireshark 中。開啟 dump.pcapng
檔案後,可以看到使用的是 TLS v1.2協定。
File | Open -> dump.pcapng
檢視加密流量
選擇某個 TLS v1.2 包時,會發現原始文字是混淆的。這是因為 TLS 加密了通訊內容。
載入預主鑰檔案
為瞭解密通訊內容,需要使用預主鑰檔案 premaster.txt
。在 Wireshark 中進行以下設定:
Edit | Preferences -> Protocols -> TLS -> (Pre)-Master-Secret log filename -> premaster.txt
檢視解密後的流量
載入預主鑰檔案後,Wireshark 會顯示一個額外的標籤「Decrypted TLS」,並且可以右鍵點選包選擇「Follow | TLS Stream」來檢視解密後的通訊流。
分析 TSL 流量
在解密後的通訊流中,可以看到客戶端和伺服器端之間的加金鑰匙交換過程。這包括伺服器支援的加密套件以及最終選擇的加密套件。
Ciphers supported by the server:
...
Cipher selected by client and server:
...
技術選型與未來趨勢
在實務應用中,選擇合適的 TLS 標準非常重要。TLS 1.3 是目前最新且最安全的標準之一,應該優先考慮使用。未來趨勢將會更加關注完美前向保密和數字簽名等技術。
技術選型考量
- 安全性:選擇最新且最安全的 TLS 標準。
- 相容性:確保與現有系統相容。
- 效能:考慮加密演算法對系統效能的影響。
次段落標題:此圖示內容解說:
此圖示展示了 SSL 和 TLS 的演進歷史及各版本之間的關係。從 SSL 開始演變至目前最新且最安全的 TLS 標準(TLS 1.3)。每個版本都有其特定特徵及存在的問題或改進點。
SSL/TLS 是網路安全中的核心協定,
從早期版本開始演變至目前最新且最安全標準,
每個版本皆有其獨特特徵及需注意之處。
透過理解這些歷史背景及技術細節, 可以更好地進行網路安全分析與技術選型, 並確保系統安全性與效能平衡。
透過雲端運算處理網路流量
雲端服務的普及及企業逐漸轉向雲端運算,使得維持安全性變得尤為重要。網路偵測與回應(NDR)雲端解決方案已經出現,允許捕捉及分析網路流量。過去,在雲端網路中進行封包捕捉曾是一大挑戰,但如今已不再是問題。許多雲端提供者提供原生的封包映象功能,讓你可以在不需額外軟體的情況下進行封包捕捉。這一切都得益於虛擬私有雲(VPC)網路的使用。
VPC 是雲端環境中的邏輯分離,旨在支援私有雲端運算。VPC 的目的是讓使用雲端的組織能夠對虛擬網路有更細緻的控制,同時仍然享受公有雲資源的好處。封包映象通常在 VPC 網路中組態。
作為一名倫理駭客,你可能無法在雲端環境中進行封包捕捉。雲端提供者設有多項防護措施,確保封包映象僅限於組態允許封包捕捉的網路區段。否則,任何人都可以在雲端環境中隨意捕捉流量。然而,如果你有權存取雲端環境且它是你的目標之一,那麼你可以使用流量映象功能(如果已組態)。
應用實踐
最佳的封包捕捉與分析練習方法是應用於多種不同協定。幸運的是,Wireshark 有一個豐富的封包捕捉函式庫,你可以下載並進行分析。這些函式庫可以在以下連結找到:Wireshark SampleCaptures。
最佳實踐
關於封包捕捉與分析的網路流量時,沒有硬性規範,但玄貓在此分享一些經驗:
- 迴歸基礎:當你分析網路流量時,瞭解網路運作機制非常重要。許多現代的網路捕捉工具會提供精美的儀錶板和對封包的洞察力。然而,你仍需瞭解不同型別的網路流量。例如,如果你針對 RADIUS 驗證進行目標攻擊,你必須瞭解 RADIUS 的運作原理。同樣地,這也適用於 Active Directory 等系統。擁有良好的網路知識將幫助你確保正確處理資料封包,最終促成成功。
- 注意捕捉檔案大小:在忙碌的網路上執行封包捕捉時,捕捉檔案大小可能會快速膨脹。有時候你需要限制捕捉到的封包數量。這個過程稱為封包抽樣,透過隨機抽取封包來完成。
- 考慮加密及非加密流量:當資料在網路上傳輸時,你會遇到加密和非加密流量。如果你的目標是解碼加密流量,那麼你需要考慮任何可能需要的解密方法,例如一個包含加密金鑰的文字記錄。
使用Mermaid呈現VPC架構
flowchart TD
subgraph VPC[虛擬私有雲]
A[資源1] -->|私有連線| B[資源2]
C[資源3] -->|公共連線| D[外部網路]
end
E[外部使用者] -->|VPN| A
此圖示解說
此圖示展示了 VPC 中各資源之間如何透過私人連線和公共連線互相連線。外部使用者可以透過 VPN 連線進入 VPC 的私人資源。
密碼學基礎
密碼學是當今世界通訊的根本。從古代到現在都一直使用密碼學來加密資料以防止資料洩露和隱私問題。本章節將作為密碼學的入門,重點介紹一些關鍵方面。
本章內容
- 什麼是加密?
- 常見加密技術概覽
- 加密演算法
- 常見加密攻擊型別
- 雲端中的加密
什麼是加密?
加密聽起來很複雜,但其實並不難理解。它涉及一個數學演算法來將明文資料轉換為不可讀取的形式(即密鑰)。加密可以分為兩個主要部分:
- 加密演算法:這是一組用來達到特定目地的數學計算方式。這些演算法進一步分為對稱和非對稱演算法。對稱演算法使用相同的金鑰進行加密和解密;非對稱演算法則使用一對金鑰(公開金鑰和私人金鑰)。基本上說來,「演算法」就是用來加密資料的一種方法。
- 加密金鑰:這是一串隨機、不可預測且長度可變化的字串, 用來進行資料的加解密。
加解密程式碼範例
from cryptography.fernet import Fernet
# 生成一個新金鑰並將其儲存到檔案中
def generate_key():
key = Fernet.generate_key()
with open("secret.key", "wb") as key_file:
key_file.write(key)
# 從檔案中讀取金鑰
def load_key():
return open("secret.key", "rb").read()
# 加密訊息
def encrypt_message(message):
key = load_key()
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(message.encode())
return cipher_text
# 解密訊息
def decrypt_message(cipher_text):
key = load_key()
cipher_suite = Fernet(key)
plain_text = cipher_suite.decrypt(cipher_text)
return plain_text.decode()
內容解說:
- generate_key():此函式生成一個新金鑰並將其寫入檔案
secret.key
中。 - load_key():此函式從檔案
secret.key
中讀取先前生成的金鑰。 - encrypt_message():此函式利用先前生成並儲存好的金鑰進行訊息加密。
- decrypt_message():此函式利用相同金鑰進行訊息解密。
玄貓希望透過本章節幫助讀者建立基礎知識及瞭解如何在不同情境下運用多種技術工具來進行安全保護與資料分析。