Wireshark常用搜尋命令與滲透分析指南

Wireshark常用搜尋命令與滲透分析指南 :mag_right: :shield:

Wireshark是一款功能強大的網絡封包分析工具,在網絡安全領域被廣泛應用於滲透測試、攻擊分析和事件響應。本文將詳細介紹Wireshark中的常用搜尋命令,特別是在分析可能的網絡入侵和惡意流量時的應用場景。

目錄

  1. 基本操作與界面介紹
  2. 常用顯示過濾器命令
  3. 網絡滲透分析場景
  4. 惡意流量識別技巧
  5. 隱蔽通道與C2通信檢測
  6. 常見攻擊模式分析
  7. 實戰案例
  8. 進階技巧與自動化分析

基本操作與界面介紹 :desktop_computer:

Wireshark的界面主要分為以下幾個部分:

  1. 顯示過濾器(Display Filter) - 用於設置過濾條件進行數據包列表過濾,位於工具欄下方。
  2. 數據包列表(Packet List Pane) - 顯示捕獲的所有數據包,每行代表一個數據包。
  3. 數據包詳細信息(Packet Details Pane) - 顯示當前選定數據包的詳細協議信息。
  4. 數據包字節視圖(Packet Bytes Pane) - 以十六進制和ASCII格式顯示數據包的原始內容。

:bulb: 小提示: Wireshark 介面可以透過 View 選單自定義,根據分析需求調整各面板大小或顯示/隱藏特定面板。

![Wireshark界面](https://www.wireshark.org/docs/wsug_html_chunked/wsug_graphics/ws-main.png)

搜尋功能 :key:

Wireshark具備強大的搜尋功能,可以通過以下方式快速定位重要信息:

  • 快捷鍵 Ctrl+F - 彈出搜尋對話框,支持多種搜尋模式:
    • Display Filter - 使用顯示過濾器語法搜尋
    • Hex Value - 搜尋十六進制字節值
    • String - 字符串搜尋
    • Packet list - 搜尋數據包列表中的內容
    • Packet details - 搜尋數據包詳細信息
    • Packet bytes - 搜尋數據包原始字節

:zap: 注意: 搜尋大型捕獲文件時可能需要較長時間,建議先使用顯示過濾器縮小搜尋範圍,再進行具體搜尋。

## 常用顯示過濾器命令 :wrench:

在分析疑似網絡滲透的流量時,以下過濾器命令將非常有用:

IP地址過濾

# 過濾特定IP
ip.addr == x.x.x.x      # 源或目標IP為指定地址
ip.src == x.x.x.x       # 源IP為指定地址
ip.dst == x.x.x.x       # 目標IP為指定地址

# 排除特定IP
!(ip.addr == x.x.x.x)   # 排除指定IP

# 過濾IP範圍
ip.addr >= 192.168.1.1 and ip.addr <= 192.168.1.10

協議過濾

# 基本協議過濾
http                     # HTTP協議
https                    # HTTPS協議
dns                      # DNS協議
tcp                      # TCP協議
udp                      # UDP協議
icmp                     # ICMP協議
arp                      # ARP協議
ssl                      # SSL/TLS協議

# 協議組合
http or dns              # HTTP或DNS流量

端口過濾

# 端口過濾
tcp.port == 80           # TCP端口80(HTTP)
tcp.port == 443          # TCP端口443(HTTPS)
tcp.port == 22           # TCP端口22(SSH)
tcp.port == 21           # TCP端口21(FTP)
udp.port == 53           # UDP端口53(DNS)
tcp.port == 4444         # 常見的反向shell端口

# 非標準端口(可能是後門)
!(tcp.port in {80 443 20 21 22 25 110 143 993 995 3389}) and tcp.flags.syn == 1

組合過濾

# IP與端口組合
ip.addr <mark> x.x.x.x && tcp.port </mark> 80
tcp.port <mark> 80 || udp.port </mark> 53

# 複雜邏輯
(ip.src <mark> x.x.x.x and tcp.dstport </mark> 80) or (ip.dst <mark> x.x.x.x and tcp.srcport </mark> 80)

:tada: 技巧: 在 Wireshark 顯示過濾器欄位中輸入時,語法正確的過濾條件背景會變成綠色,有語法錯誤則會變成紅色。

## 網絡滲透分析場景

在分析可能的網絡滲透案例時,以下場景與過濾器命令組合尤為重要:

1. 掃描活動檢測

# 端口掃描(大量SYN包)
tcp.flags.syn <mark> 1 and tcp.flags.ack </mark> 0

# 主機發送大量SYN包(可能是掃描器)
tcp.flags.syn <mark> 1 and tcp.flags.ack </mark> 0 and ip.src == x.x.x.x

# ICMP掃描
icmp.type == 8            # ICMP Echo請求(Ping掃描)

掃描活動檢測示意圖

攻擊者->目標主機A: SYN (端口 80)
攻擊者->目標主機A: SYN (端口 443)
攻擊者->目標主機A: SYN (端口 22)
攻擊者->目標主機B: SYN (端口 80)
攻擊者->目標主機B: SYN (端口 443)
Note right of 目標主機B: 典型端口掃描模式

2. 暴力破解檢測

# SSH暴力破解
tcp.port <mark> 22 and tcp.flags.syn </mark> 1

# HTTP基本認證(登錄嘗試)
http.authbasic

# HTTP POST登錄嘗試
http.request.method == "POST" and http.request.uri contains "login"

:fire: 重要警示: 在實際環境中,暴力破解攻擊常常會在短時間內產生大量失敗的認證嘗試,應設置閾值監控異常認證行為。

### 3. 漏洞利用檢測
# SQL注入嘗試
http.request.uri contains "'" or http.request.uri contains "%27"
http.request.uri contains "union select" or http.request.uri contains "UNION SELECT"

# 命令注入嘗試
http.request.uri contains ";" or http.request.uri contains "|" or http.request.uri contains "`"

# XSS嘗試
http.request.uri contains "<script>" or http.request.uri contains "%3Cscript%3E"

惡意流量識別技巧 :mag:

當系統已經被滲透時,以下過濾技巧可幫助識別惡意流量:

1. 數據外洩檢測

# 敏感數據檢測(例如信用卡號)
frame contains "4[0-9]{15}" or frame contains "5[1-5][0-9]{14}"  # 信用卡號格式

# 大量數據傳輸(可能是數據外洩)
tcp.len > 1000 and ip.dst == x.x.x.x

2. 異常連接檢測

# 非標準或罕見端口通信
tcp.port not in {80 443 22 25 110 143 53 123 20 21} and tcp.flags.syn == 1

# 持續時間異常長的連接
tcp.time_delta > 300      # 持續超過5分鐘的TCP連接

3. 流量統計與分析

Wireshark提供多種統計工具,有助於識別異常流量:

  • Conversations - 統計所有通信IP地址對,分析路徑:Statistics → Conversations
  • Protocol Hierarchy - 檢查協議分布,分析路徑:Statistics → Protocol Hierarchy
  • I/O Graph - 流量時間分布圖,可識別異常流量峰值,分析路徑:Statistics → I/O Graph

:chart_with_upwards_trend: 分析提示: 在 I/O Graph 中,可以添加多個過濾條件並以不同顏色顯示,以便比較不同類型流量的時間分布特徵。

## 隱蔽通道與C2通信檢測 :eye:

攻擊者通常使用隱蔽通道維持對被入侵系統的控制,以下過濾器命令可幫助發現這些隱蔽通道:

1. DNS隧道檢測

DNS隧道是最常見的隱蔽通道之一,攻擊者利用DNS請求和響應傳輸數據。

# 長度異常的DNS查詢
dns.qry.name.len > 50

# 高熵(隨機性)的DNS查詢名
dns.qry.name contains "base64" or dns.qry.name contains "enc"

# 子域名過多或異常的DNS查詢
dns.qry.name matches ".*\..*\..*\..*\..*\..*\..*"

# TXT記錄請求(常用於數據外洩)
dns.qry.type == 16       # TXT記錄類型

DNS隧道檢測流程圖

st=>start: 捕獲DNS流量
op1=>operation: 過濾長度超過50的查詢
op2=>operation: 檢查高熵值或隨機性域名
cond=>condition: 是否有異常?
op3=>operation: 深入分析可疑DNS流量
e=>end: 完成分析

st->op1->op2->cond
cond(yes)->op3->e
cond(no)->e

2. ICMP隧道檢測

# 異常大小的ICMP數據包
icmp.type == 8 and frame.len > 100

# ICMP Echo請求中包含異常數據
icmp.type == 8 and data.data contains "cmd"

3. HTTP/HTTPS隱蔽通道

# 異常的User-Agent
http.user_agent contains "Python" or http.user_agent contains "curl" or http.user_agent contains "wget"

# 非標準HTTP請求頻率
http.request and !(http.request.uri contains ".jpg" or http.request.uri contains ".png" or http.request.uri contains ".css" or http.request.uri contains ".js")

# 檢測可疑Beaconing行為(規律性請求)
http.request.method == "GET" and http.request.uri matches ".*\?id=.*"

:zap: C2檢測要點: 命令與控制(C2)通信通常具有定期的通信模式(beaconing),監控具有規律時間間隔的網絡請求尤為重要。

## 常見攻擊模式分析 :bookmark_tabs:

1. 橫向移動檢測

當攻擊者在網絡中橫向移動時,可能會留下以下痕跡:

# SMB連接(常用於內網橫向移動)
smb or smb2

# RDP連接
tcp.port == 3389

# PowerShell遠程執行
http.request.uri contains "powershell"

2. 數據抹除與反取證操作

# 大量刪除操作
smb2.cmd == 16           # SMB删除文件命令

3. Webshell活動

# 可疑文件上傳
http.request.method == "POST" and (http.request.uri contains ".php" or http.request.uri contains ".jsp" or http.request.uri contains ".asp")

# 可疑命令執行
http.request.uri contains "cmd" or http.request.uri contains "exec" or http.request.uri contains "system"

實戰案例 :computer:

案例1: 檢測網絡掃描和初始入侵

在一個實際案例中,安全團隊使用Wireshark分析流量,發現了以下可疑活動:

  1. 首先使用以下過濾器發現掃描活動:

    tcp.flags.syn <mark> 1 and tcp.flags.ack </mark> 0 and ip.src == 10.10.10.15
    
  2. 然後發現對Web伺服器的漏洞利用嘗試:

    http.request.method == "GET" and http.request.uri contains "wp-content/plugins"
    
  3. 最後檢測到成功的漏洞利用和Webshell上傳:

    http.request.method == "POST" and http.request.uri contains "upload.php"
    

案例1分析詳情
在這個案例中,攻擊者首先進行了網絡掃描尋找目標系統,利用WordPress插件漏洞進行了初始入侵,最終上傳了Webshell獲取持久訪問權限。這是典型的攻擊鏈模式,從掃描、漏洞利用到權限維持。

通過 Follow TCP Stream 功能,分析師可以看到完整的攻擊過程,包括漏洞利用代碼和上傳的Webshell內容。

### 案例2: 檢測數據外洩

在另一個案例中,分析師使用以下過濾器檢測可能的數據外洩:

  1. 首先查看與可疑外部IP的所有通信:

    ip.addr == 203.0.113.25
    
  2. 檢查是否存在大量數據傳輸:

    ip.dst == 203.0.113.25 and tcp.len > 1000
    
  3. 使用Follow TCP Stream功能分析通信內容,發現加密的敏感數據正被傳輸到外部服務器。

進階技巧與自動化分析 :gear:

1. 使用tshark進行大規模分析

Wireshark的命令行版本tshark能夠處理大型PCAP文件,並支持脚本化分析:

# 提取所有HTTP請求
tshark -r capture.pcap -Y "http.request" -T fields -e http.host -e http.request.uri

# 提取所有DNS查詢
tshark -r capture.pcap -Y "dns.qry.name" -T fields -e dns.qry.name

# 檢測SSH暴力破解
tshark -r capture.pcap -Y "tcp.port<mark>22 and tcp.flags.syn</mark>1" -T fields -e ip.src | sort | uniq -c | sort -nr

2. 使用Display Filter Expression按鈕

Wireshark提供了一個顯示過濾器表達式按鈕,可以幫助構建複雜的過濾條件:

  • 點擊過濾欄位旁邊的Expression按鈕
  • 選擇相應的協議和欄位
  • 設置匹配條件和值

3. 使用顏色規則標記可疑流量

Wireshark允許設置顏色規則來突出顯示特定流量:

  • 選擇View → Coloring Rules
  • 添加新規則,例如:
    • 名稱:"可疑DNS隧道"
    • 過濾器:"dns.qry.name.len > 50"
    • 顏色:鮮紅色

:bulb: 自動化分析提示: 使用 Wireshark 的 Lua 腳本功能可以編寫自定義檢測規則。專業安全團隊可開發專用腳本進行自動化威脅檢測。

### 4. 常用分析清單

在進行安全事件調查時,此清單可作為參考步驟:

  • 過濾異常協議流量
  • 檢查非標準端口通信
  • 分析可疑域名和IP連接
  • 檢測異常大小的數據包
  • 尋找規律性通信模式(beaconing)
  • 使用Follow Stream分析完整會話內容
  • 檢查敏感數據傳輸模式
  • 生成流量統計報告
  • 提取可疑樣本進行深入分析

結論 :checkered_flag:

Wireshark是網絡安全分析的必備工具,特別是在對疑似被滲透系統進行調查時。掌握本文介紹的常用搜尋命令和過濾技巧,將大大提高您分析網絡流量和檢測惡意活動的能力。在實際應用中,建議將這些命令與其他安全工具結合使用,形成完整的安全監控和分析體系。

:tada: 重要結語: 網絡流量分析是一項需要持續學習和實踐的技能。建議安全分析師定期更新知識,了解最新的攻擊技術和對應的檢測方法。

## 參考資源 :books:
  1. Wireshark官方文檔: https://www.wireshark.org/docs/
  2. Wireshark顯示過濾器參考: https://www.wireshark.org/docs/dfref/
  3. 網絡安全流量分析最佳實踐: https://www.sans.org/reading-room/whitepapers/detection/
  4. MITRE ATT&CK 框架: https://attack.mitre.org/

tags: wireshark 網絡安全 滲透測試 封包分析 資安 網絡分析

本文最初發布於 HackMD @BASHCAT

留言

這個網誌中的熱門文章

Arduino 課本可能沒教的事(1)

SI4432 搭配Arduino

燒錄 Arduino mini Pro 燒錄