導讀
網路監控保持意識
網路通訊與流量概述
-
網路通訊:指透過網路傳輸的資料,像是發送電子郵件、串流視訊或造訪網站等活動都會產生網路流量。
-
網路流量:指的是透過網路傳輸的資料量,並可能包括不同的傳輸資料類型,如HTTP。
-
網路資料:指的是裝置之間傳輸的資料。
網路監控的重要性
- 網路監控有助於偵測可疑活動,並保持對網路活動的態勢感知。
- 收集和分析網路流量是偵測異常網路行為的關鍵步驟。
了解您的網路
-
網路連接設備使用網路協定進行通訊,交換的資訊包括:
-
基線:用於建立網路的正常或預期行為,幫助識別異常活動。
監控網路的方法
-
監控基線偏差:在確定基線後,可以監控網路,識別與基線的任何偏差,尤其是異常資料傳輸。
-
流量分析:檢查網路通訊的移動,並注意協定和連接埠的匹配情況。
-
命令與控制(C2):惡意行為者可能透過不常用的協定或連接埠進行通訊,例如使用HTTPS協定透過非標準連接埠進行攻擊。
資料包有效負載與時間模式
-
資料包有效負載:網路資料包包含與資料包傳輸相關的元件。這包括來源和目標 IP 位址等詳細信息,以及資料包有效負載資訊(即傳輸的實際資料)。通常,這些資料是加密的,需要解密才能讀取。組織可以監控資料包的有效負載訊息,以發現異常活動,例如在網路外部傳輸的敏感數據,這可能表明可能存在資料外洩攻擊。
-
時間模式分析:網路封包包含與時間相關的資訊。此資訊對於理解時間模式很有用。例如,一家在北美營運的公司在上午 9 點到下午 5 點之間經歷大量流量,這是正常網路活動的基線。如果大量流量突然超出網路活動的正常時間,則視為超出基準並應進行調查。
透過網路監控,組織可以及時偵測網路入侵,並透過保護網路組件來防止網路入侵的發生。
網路保護與安全分析
-
安全營運中心(SOC):負責監控系統的安全性,專注於偵測與回應威脅。
-
網路營運中心(NOC):負責監控網路效能,確保網路正常運作。
常見網路監控工具
-
入侵偵測系統(IDS):
- 監控系統活動,發出可能入侵的警報。
- 偵測封包有效負載的內容,識別惡意活動模式。
-
網路協定分析器(封包嗅探器):
- 擷取和分析網路內的資料流量,如
tcpdump
與Wireshark
等工具。
- 安全專業人員可以使用這些工具進行資料包捕獲,調查潛在的惡意活動。
網路流量監控的重要性
-
網路流量監控的重要性:
- 幫助安全專業人員偵測、預防和回應攻擊。
- 監控偏差的網路流量模式已產生顯著成果,即使訊息被加密,監控仍然重要。
-
資料外洩攻擊的過程:
-
初始存取:
- 攻擊者需獲得初始存取權限(例如透過社交工程或網路釣魚攻擊)。
- 可能發送帶附件的釣魚電子郵件或欺騙目標輸入憑據。
-
維持存取:
- 攻擊者嘗試保持存取權限並避免檢測,使用橫向移動策略擴大訪問權限。
-
識別有價值資產:
- 審視網路環境,識別敏感數據和有價值的資產(如專有程式碼、個人資訊、財務記錄)。
-
資料準備:
- 攻擊者收集、包裝和減少資料大小,以隱藏被盜資料並繞過安全控制。
-
資料滲透:
- 透過各種方法將資料傳輸到選定的目的地,例如發送電子郵件。
-
防禦策略:
-
阻止攻擊者進入:
-
監控網路活動:
- 監控可疑活動(如外部 IP 位址的多次登入),及早識別可能的妥協。
-
資產管理與保護:
- 編目所有資產並應用適當的安全控制措施防範未經授權存取。
-
偵測和回應資料外洩:
-
偵測異常:
- 透過網路監控識別指標(如大型內部文件傳輸、大量外部上傳、意外的文件寫入)。
-
使用 SIEM 工具:
- 偵測活動警報並進行調查,阻止攻擊。
- 可以封鎖 IP 位址,使用防火牆規則等方法防止攻擊。
-
網路監控的進一步學習:
- 資料外洩攻擊是眾多攻擊之一,透過網路監控可以發現多種攻擊。
- 即將學習如何使用資料包嗅探器分析網路通訊。
網路流量的識別
- 無論是員工發送電子郵件還是惡意行為者試圖竊取機密數據,都可以透過檢查網路流量來識別這些操作。
- 了解網路通訊可以提供對活動的寶貴見解,有助於了解環境並防禦潛在威脅。
封包的基本概念
- 當資料被發送時,它被分成資料包。
- 資料包包含傳遞訊息的地址和路由信息,類似於郵件中的信封。
資料包的組件
-
標題: 包含網路協定和連接埠類型(如信封上的名稱和地址)。
-
有效負載: 包含實際傳遞的資料(如信封內的信)。
-
頁腳: 表示資料包的結束。
網路協定和連接埠
- 網路協定是一組規則,用於決定網路上裝置之間的資料傳輸。
- 連接埠是電腦上的非實體位置,用於組織資料傳輸。
觀察網路封包
- 資料包是不可見的,但可以使用資料包嗅探器來擷取。
- **資料包
了解有關數據包捕獲的更多信息
-
安全分析師的角色
- 監控和分析網路流量。
- 產生資料包捕獲,分析捕獲的流量以識別網路上的異常活動。
-
網路分析的三個主要方面
封包
- 資料包是網路中從一個裝置傳輸到另一個裝置的基本資訊單元。
- 偵測網路入侵從資料包層級開始,因為資料包構成網路資訊交換的基礎。
- 每次在網路上執行活動(如造訪網站)時,都會傳送和接收資料包。
- 資料包有助於透過網路傳輸資訊。
- 資料包提供有價值的信息,有助於調查期間為事件添加背景資訊。
- 資料包包含三個部分:
標頭
- 資料包的最基本組成部分。
- 根據所使用的協議,資料包可以有多個標頭(如乙太網路標頭、IP 標頭、TCP 標頭等)。
- 提供用於將資料包路由到目的地的資訊。
有效負載
- 包含正在傳送的實際資料。
- 例如:將圖像上傳到網站時,資料包的有效負載將是影像本身。
頁尾
- 也稱為尾部,位於資料包的末端。
- 乙太網路協定使用頁尾來提供錯誤檢查訊息。
- 注意:大多數協定(例如 Internet 協定 (IP))不使用頁尾。
網路協定分析儀
- 網路協定分析器(封包嗅探器)是擷取和分析網路內資料流量的工具。
- 例子:tcpdump、Wireshark 和 TShark。
- 用於監視網路和識別可疑活動,收集網路統計資料和解決網路效能問題。
- 可能被惡意行為者用於擷取敏感資料。
網路協定分析器的工作原理
- 必須透過網路介面卡 (NIC) 收集資料包。
- NIC 必須切換到監視模式或混雜模式以擷取所有可見的網路封包。
- 網路協定分析器以原始二進位格式收集網路流量,並將其轉換為人類可讀的格式。
抓取封包
- 資料包嗅探是透過網路擷取和檢查資料包的做法。
- 封包擷取 (p-cap) 是包含截獲的封包的檔案。
- 可以使用網路協定分析器查看和進一步分析資料包擷取。
P-cap 檔案格式
-
Libpcap: 專為類別 Unix 系統設計。
-
WinPcap: 專為 Windows 作業系統的裝置設計,較舊的文件格式。
-
npcap: 由 Nmap 設計的函式庫。
-
PCAPng: 現代文件格式,可同時擷取資料包和儲存資料。
封包基本構造
1. 調查資料包詳細信息的背景
- 已經學會使用網路協定分析器(資料包嗅探器)攔截網路通訊。
- 瞭解如何分析資料包擷取(p-cap)以了解網路上的活動。
- 安全分析師需要使用資料包分析技能來檢查網路資料包並識別可疑活動。
2. IPv4 和 IPv6 標頭介紹
IPv4:
-
IPv4 是最常用的 IP 版本,標頭包含 13 個欄位:
-
Version: 表示 IP 版本,IPv4 使用。
-
IHL: 指定 IPv4 標頭的長度。
-
ToS: 傳輸資料包的優先級資訊。
-
總長度: 封包的總長度。
-
辨識: 用於重組分段資料包。
-
Flags: 提供分段資訊。
-
片段偏移: 確定片段的順序。
-
TTL: 限制封包在網路中的存活時間。
-
協定: 指定資料包中使用的協定。
-
標頭校驗和: 錯誤檢查。
-
來源位址: 發送方位址。
-
目標位址: 接收方位址。
-
選項: 可選的安全選項。
IPv6:
-
IPv6 具有更大的位址空間,標頭包含 8 個欄位:
-
Version: 表示 IP 版本,IPv6 使用。
-
流量類別: 提供資料包優先級資訊。
-
流標籤: 標識資料包的流。
-
有效負載長度: 資料部分的長度。
-
下一個標頭: 指示 TCP 等後續標頭類型。
-
跳數限制: 資料包在網路中傳輸的時間限制。
-
來源位址: 發送方位址。
-
目標位址: 接收方位址。
3. 使用 Wireshark 調查資料包
-
Wireshark 是一個開源網路協定分析器,透過 GUI 可視化網路通訊。
- 使用基本過濾功能來隔離需要的資料包以進行分析。
4. Wireshark 的顯示過濾器
- 顯示過濾器能夠篩選封包,根據協定、IP 位址、連接埠等屬性過濾。
-
比較運算符:
-
==
或 eq
表示等於。
-
!=
或 ne
表示不等於。
- 還有其他運算符如
>
、<
、>=
等。
-
contains 運算符 用於過濾包含特定文字的資料包。
-
匹配運算符 則使用正規表示式過濾資料包。
5. 使用過濾器工具列
- Wireshark 的過濾器工具列允許對封包進行過濾,例如過濾 DNS 封包。
- 可以自訂顏色來區分協定。
6. 過濾協定、IP 和 MAC 位址
- 根據協定名稱過濾封包,例如 DNS、HTTP、FTP 等。
- 使用 IP 位址進行過濾:
- 使用 MAC 位址進行過濾。
7. 過濾連接埠
- 根據連接埠號碼過濾資料包。
- 例如,DNS 使用 TCP 或 UDP 連接埠 53,TCP 郵件協定使用連接埠 25。
Wireshark 封包分析任務重點
任務 1: 使用 Wireshark 探索數據
-
目標: 使用 Wireshark 開啟網路封包擷取文件,了解數據在應用程式中的呈現方式。
-
步驟:
- 開啟 Windows 桌面上的
sample.pcap
檔案,啟動 Wireshark。
- 封包擷取檔案為
.pcap
格式,圖標顯示一個魚翅在二進位數字上方。
- 若出現「軟體更新」對話框,選擇「跳過此版本」。
- 透過 Wireshark 的三窗格介面檢視網路封包流量。
- 瞭解各資料包屬性:
-
No.: 資料包在該檔案中的索引號。
-
Time: 封包的時間戳。
-
來源: 資料包的來源 IP。
-
目的地: 目標 IP。
-
Protocol: 資料包使用的協定。
-
長度: 資料包的總長度。
-
Info: 封包內的摘要資訊。
- 使用著色規則快速分類封包。
-
DNS 流量: 淺藍色。
-
TCP/HTTP 流量: 綠色。
- 尋找「Echo (ping) request」封包,對應的協定為 ICMP。
任務 2: 應用 Wireshark 過濾器並檢查封包
-
目標: 使用過濾器檢查與特定 IP 位址相關的資料包。
-
-
步驟:
- 輸入過濾器:
ip位址 == 142.250.1.139
,按 Enter 應用過濾器。
- 清單中僅剩來源或目標 IP 為
142.250.1.139
的封包。
- 雙擊第一個 TCP 封包,查看詳細資料。
- 依次展開以下子樹檢查封包:
-
Frame: 檢視封包總體資訊。
-
Ethernet II: 查看來源與目標 MAC 位址。
-
Internet 協定版本 4 (IPv4): 查看 IP 層資訊。
-
TCP: 檢查 TCP 連接埠、序號及標誌。
- 檢查 TCP 目標連接埠。
任務 3: 使用過濾器選擇封包
-
目標: 透過 IP 或 MAC 位址過濾封包。
-
步驟:
- 過濾來源 IP:
ip.src == 142.250.1.139
。
- 過濾目標 IP:
ip.dst == 142.250.1.139
。
- 過濾 MAC 位址:
eth.addr == 42:01:ac:15:e0:02
。
- 展開 Ethernet II 子樹檢視 MAC 位址。
- 檢查協定欄位中顯示的內部協定。
任務 4: 使用過濾器探索 DNS 封包
-
目標: 使用過濾器選擇並分析 DNS 流量。
-
步驟:
- 過濾 DNS 流量:
udp.連接埠 == 53
。
- 雙擊第一個封包,檢查 DNS 查詢 子樹,查看查詢網站的名稱。
- 雙擊第四個封包,檢查 Answers 子樹,查看查詢的答案與 IP 位址。
任務 5: 使用過濾器探索 TCP 封包
-
目標: 根據 TCP 連接埠選擇與檢查 Web 流量封包。
-
步驟:
- 過濾 TCP 連接埠 80 流量:
tcp.埠 == 80
。
- 選擇與 HTTP 相關的封包,進一步分析有效負載中的資料。
Tcpdump 概述
Tcpdump 是什麼
-
Tcpdump 是一種流行的網路分析器。
- 預先安裝於許多 Linux 發行版上,也可以安裝在大多數類 Unix 作業系統上(如 macOS)。
- 能夠輕鬆捕捉和監控各種網路流量(如 TCP、IP、ICMP 等)。
Tcpdump 的使用方式
-
Tcpdump 是一個命令列工具,無圖形使用者介面。
- 透過命令列選項和標誌,可以輕鬆過濾網路流量,尋找特定 IP 位址、協定 或 連接埠號。
Tcpdump 命令示例
markdown
複製程式碼
使用 tcpdump 抓包
在本程式的前面部分中,您了解到 Linux root 使用者(或超級使用者)具有修改系統的提升權限。您也了解到,sudo
指令會暫時向 Linux 中的特定使用者授予提升的權限。與許多其他資料包嗅探工具一樣,您需要具有管理員等級的權限才能使用 tcpdump 擷取網路流量。這意味著您需要以 root 使用者身分登入或能夠使用 sudo
命令。以下是用於捕獲資料包的 tcpdump 語法的細分:
sudo tcpdump [-i 介面] [選項] [表達式]
markdown
複製程式碼
-
sudo tcpdump
指令開始使用 sudo
提升的權限來執行 tcpdump。
-
-i
參數指定捕捉網路流量的網路介面。您必須指定要從中擷取的網路介面才能開始擷取封包。例如,如果您指定 -i any
,您將嗅探來自系統上所有網路介面的流量。
這些選項是可選的,使您能夠更改命令的執行。表達式是一種進一步過濾網路流量資料包的方法,以便您可以隔離網路流量。您將在下一節中了解有關選項和表達式的更多資訊。
注意:在開始擷取網路流量之前,您必須確定要使用哪個網路介面來擷取封包。您可以使用 -D
標誌來列出系統上可用的網路介面。
選項
使用 tcpdump,您可以將選項(也稱為標誌)套用到命令末尾以過濾網路流量。短選項被縮寫並由連字符和單個字符(如 -i
)表示。長選項使用雙連字符(如 --interface
)拼寫出來。 Tcpdump 有超過 50 個選項可供您探索手冊頁。在這裡,您將研究幾個基本的 tcpdump 選項,包括如何寫入和讀取封包擷取檔案。
注意:選項區分大小寫。例如,小寫的 -w
是一個單獨的選項,其用途與大寫的 -W
選項不同。
注意:使用短選項編寫的 tcpdump 選項可以在選項與其值之間有或沒有空格。例如,sudo tcpdump -i any -c 3
和 sudo tcpdump -iany -c3
是等效的指令。
-w
使用 -w
標誌,您可以將嗅探到的網路封包寫入或儲存到封包擷取檔案中,而不僅僅是在終端中將其列印出來。這非常有用,因為您可以參考此保存的文件以供以後分析。在此命令中, tcpdump 從所有網路介面擷取網路流量並將其儲存到名為 packetcapture.pcap
的封包擷取檔案中:
sudo tcpdump -i any -w packetcapture.pcap
go
複製程式碼
-r
使用 -r
標誌,您可以透過指定檔案名稱作為參數來讀取資料包擷取檔案。以下是讀取名為 packetcapture.pcap
的檔案的 tcpdump 指令的範例:
sudo tcpdump -r packetcapture.pcap
go
複製程式碼
-v
如您所知,資料包包含大量資訊。預設情況下,tcpdump 不會列印出資料包的所有資訊。此選項代表“詳細”,可讓您控制希望 tcpdump 列印多少資料包資訊。您可以使用三個級別的詳細信息,具體取決於您希望 tcpdump 列印多少資料包資訊。級別為 -v
、-vv
和 -vvv
。以下是詳細讀取 packetcapture.pcap
檔的 tcpdump 指令範例:
sudo tcpdump -r packetcapture.pcap -v
go
複製程式碼
-c
-c
選項代表計數。此選項可讓您控制 tcpdump 將捕獲的資料包數量。例如,指定 -c 1
將只列印出一個資料包,而 -c 10
將列印 10 個資料包。此範例告訴 tcpdump 僅捕獲它從任何網路介面嗅探到的前三個封包:
sudo tcpdump -i any -c 3
go
複製程式碼
-n
預設情況下,tcpdump 將執行名稱解析。這意味著 tcpdump 自動將 IP 位址轉換為名稱。它還會將連接埠解析為使用這些連接埠的常用關聯服務。這可能會產生問題,因為 tcpdump 的名稱解析並不總是準確的。例如,tcpdump 可以擷取來自連接埠 80 的流量,並在輸出中自動將連接埠 80 轉換為 HTTP。然而,這是一種誤導,因為連接埠 80 並不總是使用 HTTP;它可能使用不同的協定。
此外,名稱解析使用所謂的反向 DNS 查找。如果您在攻擊者的系統上執行反向 DNS 查找,他們可能會收到警報,表示您正在透過他們的 DNS 記錄對其進行調查。
使用 -n
標誌會禁用數字到名稱的自動映射,並且被認為是嗅探或分析流量時的最佳實踐。使用 -n
將不會解析主機名,而 -nn
將不會同時解析主機名或連接埠。以下是 tcpdump 命令的範例,該命令詳細讀取 packetcapture.pcap
檔案並禁用名稱解析:
sudo tcpdump -r packetcapture.pcap -v -n
markdown
複製程式碼
專業提示:您可以將選項組合在一起。例如,-v
和 -n
可以組合為 -vn
。但是,如果一個選項在其後面接受一個參數,例如 -c 1
或 -r capture.pcap
,那麼您就不能將其他選項組合到它。
表達式
在 tcpdump 命令中使用過濾器表達式也是可選的,但了解如何以及何時使用過濾器表達式在封包分析過程中會很有幫助。使用過濾表達式的方法有很多種。
如果要特別依照協定搜尋網路流量,可以使用過濾表達式來隔離網路封包。例如,您可以使用篩選器表達式 ip6
進行過濾以僅尋找 IPv6 流量。
您也可以使用布林運算子(例如 and
、or
或 not
)來進一步過濾特定 IP 位址、連接埠等的網路流量。下面的範例讀取 packetcapture.pcap
檔案並使用 and
布林運算子組合兩個表達式 ip
和連接埠 80:
sudo tcpdump -r packetcapture.pcap -n 'ip and port 80'
markdown
複製程式碼
專業提示:您可以使用單引號或雙引號來確保 tcpdump 執行所有表達式。您也可以使用括號對不同的表達式進行分組並確定優先順序。對表達式進行分組對於複雜或冗長的命令很有幫助。例如,命令 ip and (port 80 or port 443)
告訴 tcpdump 在過濾 IPv4 之前優先執行括號中的過濾器。
解釋輸出
一旦您執行命令來捕獲資料包,tcpdump 就會將該命令的輸出列印為嗅探到的資料包。在輸出中,tcpdump 為每個資料包列印一行文本,每行都以時間戳記開頭。以下是單一 TCP 封包的命令和輸出範例:
sudo tcpdump -i any -v -c 1
go
複製程式碼
此命令告訴 tcpdump 在 -i any
網路介面上捕獲封包。選項 -v
列印包含詳細資訊的資料包,選項 -c 1
指示 tcpdump 只列印出一個資料包。以下是該封包的命令輸出:
16:52:23.084151 IP (tos 0x0, ttl 64, id 38489, offset 0, flags [DF], proto TCP (6), length 60) localhost.36142 > localhost.8888: Flags [S], cksum 0xfe00 (correct), seq 2850046199, win 65495, options [mss 65495,sackOK,TS val 296451458 ecr 0,nop,wscale 7], length 0
markdown
複製程式碼
資料包列印在終端視窗中,並包含大量資訊。通常情況下,使用者不需要這麼多資訊來進行分析。因此,您可以選擇禁用詳細輸出。對於 TCP 資料包,您需要了解的三個最重要的資訊是資料包的來源、目的地和協定。讓我們來分解此資料包:
-
16:52:23.084151
是時間戳,顯示封包何時被嗅探到。
-
IP
指示封包是來自 IP 協定的封包。
-
localhost.36142
是資料包的來源,來自 localhost
(系統回送介面)。其來源連接埠為 36142。
-
localhost.8888
是資料包的目的地,發送到 localhost
的連接埠 8888。
-
TCP (6)
表明此封包是 TCP 協定資料包(協定 6 是 TCP)。