Wireshark 封包欄位速查
網路安全監控與分析 · 封包分析單元

Wireshark 封包欄位速查

從第二層到第七層,逐一拆解每個協定的標頭格式:欄位位置、長度、意義、常見數值,以及在 Wireshark 中對應的 display filter 欄位名稱。表格可直接搜尋,過濾語法點一下即複製。

12 個協定200+ 欄位display filter 語法對照適用 Wireshark 3.x / 4.x
L2 連結層IEEE 802.3

Ethernet II 訊框 標頭 14 bytes + FCS 4 bytes

乙太網路上最常見的訊框格式。Wireshark 中每個封包的最外層通常就是它;網卡多半已在硬體剝除 FCS,所以擷取檔裡看不到最後 4 bytes。乙太網路酬載最小 46 bytes,不足處以 padding 補足。

位元組佈局
Destination MAC6 bytes
Source MAC6 bytes
EtherType2 bytes
Payload 46–1500 bytesIPv4 / ARP / IPv6 …
FCS4 bytes
Ethernet II 欄位
欄位位移 / 長度說明Wireshark 欄位
Destination MAC0–5|6 B目的端實體位址。第一個位元組的最低位為 1 表示群播;ff:ff:ff:ff:ff:ff 為廣播。第二低位為 1 表示本地管理位址(隨機化 MAC)。eth.dst
Source MAC6–11|6 B來源端實體位址。前 3 bytes 為 OUI 廠商代碼,Wireshark 會自動解析成廠商名稱。eth.src
EtherType12–13|2 B上層協定代碼。常見值:0x0800 IPv4、0x0806 ARP、0x86DD IPv6、0x8100 802.1Q VLAN、0x8864 PPPoE。若數值 ≤ 1500 則代表長度(IEEE 802.3 格式)。eth.type
Payload14–|46–1500 B上層封包。不足 46 bytes 時補 padding,Wireshark 會顯示 Trailer / Padding。eth.padding
FCS尾端|4 BCRC-32 檢查碼。多數擷取看不到(網卡已剝除),有的話可用於偵測線路錯誤。eth.fcs.status
802.1Q VLAN 標籤(插在 EtherType 之前,共 4 bytes)
欄位長度說明Wireshark 欄位
TPID16 bits標籤協定識別碼,固定 0x8100;QinQ 外層為 0x88A8。vlan.etype
PCP3 bits優先權(0–7),對應 QoS 分級。vlan.priority
DEI / CFI1 bit可丟棄指示位元。vlan.dei
VID12 bitsVLAN 編號 1–4094(0 與 4095 保留)。VLAN hopping 攻擊會出現雙層標籤。vlan.id

課堂觀察點

比對 eth.src 與 ip.src 的長期對應關係,可看出 MAC 位址欺騙;同一 IP 短時間內換 MAC 是典型徵兆。

過濾特定主機的所有流量:eth.addr == 00:1a:2b:3c:4d:5e;只看廣播:eth.dst == ff:ff:ff:ff:ff:ff。

L2 連結層RFC 826

ARP 28 bytes(Ethernet / IPv4 情境)

把 IP 位址解析成 MAC 位址。無認證機制,是區網中間人攻擊的主要切入點,也是課堂上最容易示範的攻擊流量。

位元組佈局
HW Type2
Proto Type2
HLen1
PLen1
Opcode2
Sender MAC6
Sender IP4
Target MAC6
Target IP4
ARP 欄位
欄位位移 / 長度說明Wireshark 欄位
Hardware type0–1|2 B實體網路型態,乙太網路為 1。arp.hw.type
Protocol type2–3|2 B要解析的上層協定,IPv4 為 0x0800。arp.proto.type
Hardware size4|1 BMAC 位址長度,固定 6。arp.hw.size
Protocol size5|1 BIP 位址長度,IPv4 固定 4。arp.proto.size
Opcode6–7|2 B1 Request、2 Reply、3 RARP request、4 RARP reply。arp.opcode
Sender MAC8–13|6 B發送者 MAC。攻擊者偽造回應時,這裡填的是自己的 MAC。arp.src.hw_mac
Sender IP14–17|4 B發送者 IP。gratuitous ARP 中 sender IP 等於 target IP。arp.src.proto_ipv4
Target MAC18–23|6 B目標 MAC。Request 時為全 0(尚未知道)。arp.dst.hw_mac
Target IP24–27|4 B要查詢的 IP 位址。arp.dst.proto_ipv4

課堂觀察點

Wireshark 內建 ARP 毒化偵測:arp.duplicate-address-detected 會標出同一 IP 被宣告成不同 MAC 的情況。

ARP 掃描(主機探測)表現為短時間內大量 arp.opcode == 1 且 target IP 連續遞增。

L3 網路層RFC 791

IPv4 標頭 20 bytes(最長 60 bytes)

網路層的定址與轉送。標頭以 32-bit 為一列,前 5 列為固定欄位,之後可接選項。

位元佈局(每列 32 bits)
048121620242831
Ver4
IHL4
DSCP6
ECN2
Total Length16 bits
Identification16 bits
Flags3
Fragment Offset13
TTL8
Protocol8
Header Checksum16 bits
Source Address32 bits
Destination Address32 bits
Options + Padding0–40 bytes,僅在 IHL > 5 時存在
IPv4 欄位
欄位位置 / 長度說明Wireshark 欄位
Versionbit 0–3|4 b版本號,固定 4。ip.version
IHLbit 4–7|4 b標頭長度,單位為 4 bytes。最小 5(=20 bytes),最大 15(=60 bytes)。IHL > 5 表示有選項。ip.hdr_len
DSCPbit 8–13|6 b差異化服務代碼點,QoS 分級(如 EF=46 語音)。ip.dsfield.dscp
ECNbit 14–15|2 b明確壅塞通知。11 表示路徑上遇到壅塞(CE)。ip.dsfield.ecn
Total Lengthbyte 2–3|16 b標頭+酬載的總長度(bytes),最大 65535。與實際擷取長度不符時可能是被截斷或偽造。ip.len
Identificationbyte 4–5|16 b分片重組識別碼。同一原始封包的所有分片共用此值。部分掃描工具會用固定值(如 Nmap 的 0x1234)。ip.id
Flagsbyte 6 高 3 bbit 0 保留(必須為 0,「evil bit」)、bit 1 DF 不可分片、bit 2 MF 後面還有分片。ip.flags.df ip.flags.mf
Fragment Offsetbyte 6–7 低 13 b此分片在原封包中的位移,單位 8 bytes。重疊的位移是 teardrop 類攻擊與 IDS 規避的特徵。ip.frag_offset
TTLbyte 8|8 b存活跳數,每經一個路由器減 1,歸零即丟棄並回 ICMP Time Exceeded。初始值可推測作業系統:Linux/macOS 64、Windows 128、部分網路設備 255。ip.ttl
Protocolbyte 9|8 b上層協定編號:1 ICMP、2 IGMP、6 TCP、17 UDP、47 GRE、50 ESP、51 AH、89 OSPF。ip.proto
Header Checksumbyte 10–11|16 b僅涵蓋標頭,每一跳都要重算(因 TTL 改變)。Wireshark 因網卡 checksum offload 常顯示 incorrect,屬正常。ip.checksum.status
Source Addressbyte 12–15|32 b來源 IP。可被偽造(IP spoofing),DDoS 反射攻擊的基礎。ip.src
Destination Addressbyte 16–19|32 b目的 IP。ip.dst
Optionsbyte 20–|0–40 B如 Record Route、Timestamp、Loose/Strict Source Routing。實務上極少見,出現時通常值得追查。ip.opt.type

課堂觀察點

同時看來源與目的:ip.addr == 192.168.1.10;整個網段:ip.addr == 10.0.0.0/8。

找出所有分片封包:ip.flags.mf == 1 || ip.frag_offset > 0。

L3 網路層RFC 8200

IPv6 固定標頭 40 bytes

標頭長度固定、沒有 checksum、也不在中途分片。原本 IPv4 標頭裡的可選功能改由「延伸標頭」串接表示。

位元佈局(每列 32 bits)
Ver4
Traffic Class8
Flow Label20 bits
Payload Length16
Next Header8
Hop Limit8
Source Address128 bits(4 列)
Destination Address128 bits(4 列)
IPv6 欄位
欄位位置 / 長度說明Wireshark 欄位
Versionbit 0–3|4 b固定 6。ipv6.version
Traffic Classbit 4–11|8 b等同 IPv4 的 DSCP+ECN。ipv6.tclass
Flow Labelbit 12–31|20 b標示同一資料流,供路由器快速分類。ipv6.flow
Payload Lengthbyte 4–5|16 b酬載長度(不含 40 bytes 固定標頭,但含延伸標頭)。ipv6.plen
Next Headerbyte 6|8 b下一個標頭的型態,編號沿用 IPv4 Protocol:6 TCP、17 UDP、58 ICMPv6、0 Hop-by-Hop、43 Routing、44 Fragment、59 無下一標頭。ipv6.nxt
Hop Limitbyte 7|8 b相當於 IPv4 的 TTL。ipv6.hlim
Source Addressbyte 8–23|128 b來源位址。fe80::/10 為連結本地,2000::/3 為全球單播。ipv6.src
Destination Addressbyte 24–39|128 b目的位址。ff00::/8 為群播(如 ff02::1 全節點)。ipv6.dst
Fragment header延伸|8 B僅由來源端加上:含 offset、M 旗標與 32-bit identification。ipv6.fraghdr.offset
Routing header延伸|可變來源路由。Type 0 因安全問題已廢止,出現時應視為異常。ipv6.routing.type
L3 網路層RFC 792

ICMP 標頭 8 bytes + 資料

網路層的錯誤回報與診斷。錯誤訊息會夾帶原始封包的 IP 標頭+前 8 bytes,Wireshark 會展開成內嵌的子樹。

位元佈局
Type8
Code8
Checksum16
Identifier16(Echo)
Sequence16(Echo)
DataEcho 為填充資料;錯誤訊息為原封包 IP 標頭+8 bytes
ICMP 欄位與常見 Type
欄位位置 / 長度說明Wireshark 欄位
Typebyte 0|8 b0 Echo Reply、3 Destination Unreachable、5 Redirect、8 Echo Request、11 Time Exceeded、13/14 Timestamp。icmp.type
Codebyte 1|8 b同一 Type 下的細分。Type 3 的 Code:0 net unreachable、1 host unreachable、3 port unreachable(UDP 掃描的關鍵回應)、4 需分片但 DF 已設。icmp.code
Checksumbyte 2–3|16 b涵蓋整個 ICMP 訊息。icmp.checksum
Identifierbyte 4–5|16 bEcho 用於配對請求與回應,通常是行程 ID。icmp.ident
Sequencebyte 6–7|16 bEcho 序號,遞增。ping 的第幾次。icmp.seq
Databyte 8–|可變Windows ping 送 32 bytes 字母、Linux 送 56 bytes 含時間戳。異常長或內容具高熵,是 ICMP 隧道的徵兆。data.data
回應時間—Wireshark 自動計算的請求—回應延遲。icmp.resptime
ICMPv6(Next Header = 58)重點欄位
欄位 / Type數值說明Wireshark 欄位
Echo Request / Reply128 / 129IPv6 版 ping。icmpv6.type
Router Solicitation133主機請求路由器通告。icmpv6.type == 133
Router Advertisement134路由器公告前綴與參數。偽造 RA 可劫持整段 IPv6 流量。icmpv6.nd.ra.router_lifetime
Neighbor Solicitation135相當於 IPv6 的 ARP request。icmpv6.nd.ns.target_address
Neighbor Advertisement136相當於 ARP reply,可被偽造做中間人。icmpv6.nd.na.target_address
L4 傳輸層RFC 9293

TCP 標頭 20 bytes(最長 60 bytes)

連線導向、可靠傳輸。分析封包時最常打交道的協定,序號、旗標與視窗大小三者合看,就能重建整段連線行為。

位元佈局(每列 32 bits)
048121620242831
Source Port16 bits
Destination Port16 bits
Sequence Number32 bits
Acknowledgment Number32 bits
Offset4
Rsvd4
Flags8
Window Size16 bits
Checksum16
Urgent Pointer16
Options + Padding0–40 bytes:MSS、SACK、Window Scale、Timestamps
TCP 欄位
欄位位置 / 長度說明Wireshark 欄位
Source Portbyte 0–1|16 b來源埠。用戶端通常為 49152–65535 的暫時埠。tcp.srcport
Destination Portbyte 2–3|16 b目的埠,決定服務種類(80 HTTP、443 HTTPS、22 SSH、3389 RDP、445 SMB)。tcp.dstport
Sequence Numberbyte 4–7|32 b本段第一個位元組的序號。Wireshark 預設顯示「相對序號」(連線起點為 0),原始值請看 tcp.seq_raw。tcp.seq
Acknowledgment Numberbyte 8–11|32 b期望收到的下一個序號,僅在 ACK 旗標為 1 時有效。tcp.ack
Data Offsetbyte 12 高 4 b標頭長度,單位 4 bytes。5=20 bytes(無選項),常見 8=32 bytes。tcp.hdr_len
Flagsbyte 13|8 b見下表。三向交握為 SYN → SYN+ACK → ACK。tcp.flags
Window Sizebyte 14–15|16 b接收方目前可接收的位元組數(流量控制)。實際值需乘上 Window Scale 選項的倍數。降到 0 代表接收端緩衝區已滿。tcp.window_size
Checksumbyte 16–17|16 b涵蓋偽標頭+標頭+資料。offload 造成的 incorrect 屬正常現象。tcp.checksum.status
Urgent Pointerbyte 18–19|16 bURG 旗標為 1 時,指出緊急資料的結尾位移。現代協定幾乎不用,出現時值得留意。tcp.urgent_pointer
Option: MSSkind 2|4 B最大分段大小,只在 SYN 中協商,乙太網路典型值 1460。tcp.options.mss_val
Option: Window Scalekind 3|3 B視窗放大倍數(左移位數),只在 SYN 中協商。若擷取漏掉 SYN,Wireshark 算不出真實視窗。tcp.options.wscale.shift
Option: SACKkind 4 / 5選擇性確認,指出已收到的不連續區段,是丟包的直接證據。tcp.options.sack_le
Option: Timestampskind 8|10 BTSval / TSecr,用於 RTT 量測與 PAWS 防繞回。tcp.options.timestamp.tsval
TCP 旗標(byte 13,由高位到低位)
旗標位元意義Wireshark 欄位
CWR0x80壅塞視窗已縮小(ECN 機制)。tcp.flags.cwr
ECE0x40ECN Echo,回報路徑壅塞。tcp.flags.ece
URG0x20緊急指標有效。tcp.flags.urg
ACK0x10確認號有效。連線建立後幾乎每個封包都會設。tcp.flags.ack
PSH0x08要求立即上交應用層,不再緩衝。tcp.flags.push
RST0x04重設連線。大量 RST 代表連接埠關閉或被防火牆阻斷。tcp.flags.reset
SYN0x02請求建立連線並同步序號。tcp.flags.syn
FIN0x01正常結束連線。tcp.flags.fin
Wireshark 自行計算的分析欄位(不存在於線路上)
項目觸發條件教學用途Wireshark 欄位
Stream index每條連線一個編號追蹤單一連線最方便的入口,等同「Follow TCP Stream」。tcp.stream
Retransmission重送已傳過的序號丟包或延遲的直接證據。tcp.analysis.retransmission
Duplicate ACK重複相同 ACK 號接收端在提示缺段,通常先於快速重送。tcp.analysis.duplicate_ack
Zero window視窗降為 0接收端來不及處理,效能瓶頸在應用層。tcp.analysis.zero_window
Time delta同一 stream 前後封包間隔量測延遲、找出停頓點。tcp.time_delta
問題總覽任一異常一次列出所有被標紅的 TCP 事件。tcp.analysis.flags

課堂觀察點

只看交握起點(掃描偵測):tcp.flags.syn == 1 && tcp.flags.ack == 0。搭配 Statistics → Conversations,可看出一個來源打了幾百個埠。

NULL / FIN / Xmas 隱匿掃描:tcp.flags == 0x000、tcp.flags == 0x001、tcp.flags == 0x029。

L4 傳輸層RFC 768

UDP 標頭 8 bytes

無連線、無重送、無流量控制。標頭只有四個欄位,是課堂上對照 TCP 複雜度的最佳教材。

位元佈局
Source Port16 bits
Destination Port16 bits
Length16 bits
Checksum16 bits
PayloadDNS / DHCP / QUIC / RTP …
UDP 欄位
欄位位置 / 長度說明Wireshark 欄位
Source Portbyte 0–1|16 b來源埠。UDP 不需連線,可為 0(表示不期待回應)。udp.srcport
Destination Portbyte 2–3|16 b目的埠:53 DNS、67/68 DHCP、123 NTP、161 SNMP、443 QUIC、500 IKE、1900 SSDP。udp.dstport
Lengthbyte 4–5|16 b標頭+資料的總長度,最小 8。udp.length
Checksumbyte 6–7|16 bIPv4 下可為 0 表示不檢查;IPv6 下強制必填。udp.checksum
Stream indexWireshark 計算同一組 IP/埠配對的編號,便於追蹤。udp.stream

課堂觀察點

放大反射攻擊的特徵是「小請求換大回應」:udp.srcport == 53 && udp.length > 512,同理可看 NTP monlist(123)與 SSDP(1900)。

應用層UDP 67 / 68RFC 2131

DHCP 固定 236 bytes + magic cookie + 選項

沿用 BOOTP 的訊框格式。前段是固定欄位,真正的訊息型態藏在選項 53 裡。Wireshark 3.0 之後欄位名稱由 bootp.* 改為 dhcp.*。

DHCP 固定欄位
欄位位移 / 長度說明Wireshark 欄位
op0|1 B1 BOOTREQUEST(用戶端送出)、2 BOOTREPLY(伺服器回應)。dhcp.type
htype / hlen1–2|各 1 B硬體型態(1=Ethernet)與位址長度(6)。dhcp.hw.type
hops3|1 B經過的中繼代理數;非 0 表示跨網段由 relay 轉送。dhcp.hops
xid4–7|4 B交易識別碼,把 Discover/Offer/Request/ACK 四個封包串成同一次租約流程。dhcp.id
secs / flags8–11|各 2 B已耗秒數;flags 最高位為 broadcast 旗標。dhcp.flags.bc
ciaddr12–15|4 B用戶端現有 IP(續租時才填)。dhcp.ip.client
yiaddr16–19|4 B伺服器配發給用戶端的 IP,Offer/ACK 的重點欄位。dhcp.ip.your
siaddr / giaddr20–27|各 4 B下一階段開機伺服器 IP/中繼代理 IP。dhcp.ip.relay
chaddr28–43|16 B用戶端硬體位址,前 6 bytes 為 MAC。DHCP starvation 攻擊會偽造大量不同的 chaddr。dhcp.hw.mac_addr
sname / file44–235|64+128 B伺服器主機名與開機映像檔名(PXE 環境會用到)。dhcp.server
Magic cookie236–239|4 B固定 0x63825363,標示其後為 DHCP 選項。dhcp.cookie
常用 DHCP 選項
選項編號說明Wireshark 欄位
Message Type531 Discover、2 Offer、3 Request、4 Decline、5 ACK、6 NAK、7 Release、8 Inform。dhcp.option.dhcp
Subnet Mask1子網路遮罩。dhcp.option.subnet_mask
Router3預設閘道。惡意 DHCP 伺服器就是靠竄改這裡做中間人。dhcp.option.router
DNS Server6網域名稱伺服器,同樣是攻擊者偏好竄改的欄位。dhcp.option.domain_name_server
Requested IP50用戶端希望續用的 IP。dhcp.option.requested_ip_address
Lease Time51租約秒數。dhcp.option.ip_address_lease_time
Server Identifier54回應的 DHCP 伺服器 IP。網段內出現非預期的值=流氓 DHCP。dhcp.option.dhcp_server_id
Parameter Request List55用戶端索取的參數清單。其順序構成作業系統指紋,可用於資產識別。dhcp.option.request_list_item
Hostname12用戶端主機名稱,資產盤點的好材料。dhcp.option.hostname

課堂觀察點

找出網段中所有回應的 DHCP 伺服器:dhcp.option.dhcp == 2,再看 ip.src 是否只有一個合法來源。

應用層UDP / TCP 53RFC 1035

DNS 標頭 12 bytes + 四個區段

標頭之後依序為 Question、Answer、Authority、Additional 四段,每段的筆數由標頭的計數欄位決定。超過 512 bytes 時改走 TCP,前面會多 2 bytes 長度欄位。

標頭位元佈局
Transaction ID16 bits
QR
Opcode4
AA
TC
RD
RA
Z3
RCODE4
QDCOUNT16
ANCOUNT16
NSCOUNT16
ARCOUNT16
Question / Answer / Authority / Additional可變長度
DNS 標頭與記錄欄位
欄位位置 / 長度說明Wireshark 欄位
Transaction IDbyte 0–1|16 b配對查詢與回應。可預測的 ID 是 DNS 快取毒化的前提。dns.id
QRbit 16|1 b0 查詢、1 回應。dns.flags.response
Opcodebit 17–20|4 b0 標準查詢、4 Notify、5 Update(動態更新)。dns.flags.opcode
AAbit 21|1 b授權回應,來自該網域的權威伺服器。dns.flags.authoritative
TCbit 22|1 b回應被截斷,用戶端應改用 TCP 重問。dns.flags.truncated
RD / RAbit 23–24|各 1 b要求遞迴/伺服器支援遞迴。對外開放遞迴的伺服器易被當成放大攻擊跳板。dns.flags.recdesired
RCODEbit 28–31|4 b0 NOERROR、2 SERVFAIL、3 NXDOMAIN(網域不存在)、5 REFUSED。大量 NXDOMAIN 是 DGA 惡意程式的典型徵兆。dns.flags.rcode
QDCOUNT / ANCOUNTbyte 4–7|各 16 b問題數與答案數。dns.count.answers
NSCOUNT / ARCOUNTbyte 8–11|各 16 b授權記錄數與附加記錄數(OPT/EDNS0 放在這裡)。dns.count.add_rr
QNAMEQuestion|可變查詢名稱,以「長度+標籤」序列編碼,結尾為 0。dns.qry.name
QTYPEQuestion|16 b1 A、28 AAAA、5 CNAME、15 MX、16 TXT、2 NS、12 PTR、252 AXFR(區域轉送)。dns.qry.type
TTLAnswer|32 b快取秒數。極短 TTL(如 < 60)配合頻繁變動的 A 記錄是 fast-flux 的特徵。dns.resp.ttl
RDATAAnswer|可變實際資料:A 記錄為 4 bytes IP、AAAA 為 16 bytes、TXT 為字串。dns.a dns.aaaa dns.txt
查詢名稱長度Wireshark 計算用來抓 DNS 隧道:資料被編碼成超長的子網域名稱。dns.qry.name.len
回應時間Wireshark 計算查詢到回應的延遲,可用來找解析瓶頸。dns.time

課堂觀察點

DNS 隧道:dns.qry.name.len > 50 && !mdns,再看查詢名稱是否為高熵的 base32/base64 片段。

未授權的區域轉送嘗試:dns.qry.type == 252。

應用層TCP 80RFC 9110

HTTP/1.1 純文字,行尾為 CRLF

不是固定位元組格式,而是「起始行 + 標頭行 + 空行 + 主體」。Wireshark 把每個標頭都解析成獨立欄位,因此可以直接對標頭內容下過濾條件。

訊息結構
Request LineGET /index.html HTTP/1.1
Header FieldsHost: … ␍␊ User-Agent: … ␍␊
CRLF空行
Message Body可選
HTTP 請求 / 回應欄位
欄位出現位置說明Wireshark 欄位
Method請求行GET、POST、PUT、DELETE、HEAD、OPTIONS。異常的 PUT/DELETE 或大量 OPTIONS 值得追查。http.request.method
Request URI請求行請求的路徑與查詢字串。SQL injection、路徑穿越(../)都在這裡現形。http.request.uri
Version請求/狀態行HTTP/1.0 或 HTTP/1.1。http.request.version
Status Code狀態行2xx 成功、3xx 轉址、4xx 用戶端錯誤(401 未授權、403 禁止、404 找不到)、5xx 伺服器錯誤。連續 401/403 是暴力破解的跡象。http.response.code
Host請求標頭目標主機名。在共用 IP 的虛擬主機環境中,是唯一能辨識實際站台的欄位。http.host
User-Agent請求標頭用戶端識別字串。工具類特徵(curl、python-requests、sqlmap、Nikto)常直接寫在這裡。http.user_agent
Referer請求標頭來源頁面網址,可重建使用者的瀏覽路徑。http.referer
Cookie / Set-Cookie請求/回應標頭工作階段權杖。明文 HTTP 下可被直接竊取,是課堂上示範 session hijacking 的素材。http.cookie http.set_cookie
Content-Length兩者主體位元組數。與 Transfer-Encoding 同時出現時可能是請求走私(request smuggling)。http.content_length
Content-Type兩者主體的 MIME 型態。宣稱是圖片卻傳出可執行檔,即為異常。http.content_type
Server回應標頭伺服器軟體與版本,是資產盤點與弱點比對的來源。http.server
Authorization請求標頭Basic 認證僅為 base64 編碼,等同明文。http.authorization
Message Body空行之後實際內容。可用「File → Export Objects → HTTP」直接還原傳輸的檔案。http.file_data
回應時間Wireshark 計算請求到回應的耗時。http.time

課堂觀察點

抓明文憑證:http.request.method == "POST" && http.file_data contains "password"。

找可疑的下載:http.response.line contains "application/octet-stream",再用 Export Objects 取出檔案算雜湊。

L5–L6 會議 / 表達層TCP 443RFC 8446

TLS 紀錄層 5 bytes + 訊息

加密之後看不到內容,但交握階段是明文。ClientHello 與 ServerHello 裡的欄位足以辨識目的站台、用戶端軟體與加密強度,是加密流量分析的主戰場。

TLS Record 紀錄層
Content Type1 byte
Version2 bytes
Length2 bytes
Fragment訊息內容,最大 2^14 bytes
TLS 紀錄層與交握欄位
欄位位置 / 長度說明Wireshark 欄位
Content Typebyte 0|1 B20 ChangeCipherSpec、21 Alert、22 Handshake、23 Application Data。tls.record.content_type
Record Versionbyte 1–2|2 B0x0301 TLS 1.0、0x0303 TLS 1.2。TLS 1.3 為相容性仍寫 0x0303,真實版本放在 supported_versions 延伸中。tls.record.version
Lengthbyte 3–4|2 B後續 fragment 的位元組數。tls.record.length
Handshake Typefragment byte 01 ClientHello、2 ServerHello、11 Certificate、12 ServerKeyExchange、16 ClientKeyExchange、4 NewSessionTicket。tls.handshake.type
Random交握|32 B用戶端/伺服器亂數,參與金鑰推導。前 4 bytes 早期為時間戳。tls.handshake.random
Session ID交握|0–32 B工作階段重用識別碼。tls.handshake.session_id
Cipher Suites交握|可變用戶端支援的加密套件清單(依偏好排序);ServerHello 則只回一個選定值。清單內容與順序構成 JA3 指紋。tls.handshake.ciphersuite
SNI延伸 0Server Name Indication,明文的目標網域名稱。加密流量中辨識連往何處的最關鍵欄位。tls.handshake.extensions_server_name
ALPN延伸 16協商的應用協定:h2、http/1.1。tls.handshake.extensions_alpn_str
Supported Versions延伸 43TLS 1.3 真正的版本協商位置(0x0304)。tls.handshake.extensions.supported_version
Certificate交握訊息 11伺服器憑證鏈。可展開看 CN、SAN、簽發者與有效期;自簽或即將過期的憑證是重要線索。tls.handshake.certificate
AlertContent Type 21Level(1 warning/2 fatal)與描述,例如 handshake_failure、certificate_unknown。tls.alert_message.desc
Application DataContent Type 23已加密的內容;沒有金鑰則只能看長度與時序。tls.app_data

課堂觀察點

列出所有交握中出現過的網域:tls.handshake.extensions_server_name(加入為欄位後再 File → Export Packet Dissections)。

找出仍使用舊版協定的連線:tls.handshake.type == 1 && tls.handshake.version < 0x0303。若要解密,可在 Preferences → Protocols → TLS 指定瀏覽器輸出的 SSLKEYLOGFILE。

L2 連結層IEEE 802.11

802.11 無線訊框 MAC 標頭 24–30 bytes

需在 monitor mode 下擷取才看得到管理與控制訊框。擷取檔前面通常還有 Radiotap 標頭,那是網卡加上的中繼資訊,並非空中實際傳輸的內容。

MAC 標頭位元組佈局
Frame Control2
Duration2
Address 16 · 接收端
Address 26 · 傳送端
Address 36 · BSSID
Seq Ctrl2
Frame Body可變
FCS4
802.11 欄位
欄位位置 / 長度說明Wireshark 欄位
TypeFC bit 2–3|2 b0 管理、1 控制、2 資料。wlan.fc.type
SubtypeFC bit 4–7|4 b管理:8 Beacon、4 Probe Request、5 Probe Response、11 Authentication、12 Deauthentication。控制:11 RTS、12 CTS、13 ACK。wlan.fc.subtype
To DS / From DSFC bit 8–9|各 1 b決定四個位址欄位的意義;兩者皆為 1 時是 WDS 橋接,會出現第四個位址。wlan.fc.tods wlan.fc.fromds
RetryFC bit 11|1 b重送旗標。比例偏高代表訊號差或干擾。wlan.fc.retry
ProtectedFC bit 14|1 b訊框主體已加密(WEP/WPA/WPA2)。wlan.fc.protected
Duration / IDbyte 2–3|2 B預約通道的微秒數(NAV),用於虛擬載波偵測。wlan.duration
Address 1byte 4–9|6 B接收端位址(RA)。wlan.ra
Address 2byte 10–15|6 B傳送端位址(TA)。wlan.ta
Address 3byte 16–21|6 B依 DS 位元而定,多半是 BSSID(AP 的 MAC)。wlan.bssid
Sequence Controlbyte 22–23|2 B高 12 bits 為序號、低 4 bits 為分片號。序號跳動不連續可能有偽造訊框。wlan.seq
SSID(Beacon)Frame Body 標籤 0網路名稱。長度為 0 表示隱藏 SSID。wlan.ssid
訊號強度Radiotap網卡量測的 dBm 值,可用來估算裝置遠近、定位流氓 AP。radiotap.dbm_antsignal
通道頻率Radiotap擷取當下的頻道,MHz。radiotap.channel.freq

課堂觀察點

去認證攻擊:wlan.fc.type_subtype == 0x000c,短時間內大量 deauth 指向同一用戶端即為攻擊。

WPA2 四向交握(解密流量需要它):eapol。裝置探測歷史:wlan.fc.type_subtype == 0x0004 可看出用戶端曾連過哪些 SSID。

語法速查

Display Filter 語法規則

display filter(分析已擷取的封包)與 capture filter(BPF,擷取當下就過濾)語法不同,兩者不可互換 —— 這是課堂上最常見的混淆點。

運算子與常用寫法
類別語法說明範例
比較== != > < >= <=數值與位址比較。!= 用在多值欄位(如 ip.addr)語意易錯,建議寫成 !(...)。ip.ttl <= 5
邏輯&& || ! and or not組合條件,可用括號分組。tcp && !(tcp.port == 443)
存在欄位名只寫欄位名,表示「此欄位存在」。http.cookie
集合in {…}一次比對多個值。tcp.port in {80 443 8080}
子字串contains在欄位或酬載中找位元組序列或字串。frame contains "admin"
正規表示式matchesPCRE 比對,預設不分大小寫。http.host matches "\\.(ru|cn)$"
切片[起始:長度]取欄位的部分位元組。eth.src[0:3] == 00:1a:2b
時間frame.time_relative相對於擷取起點的秒數,可框出時間區間。frame.time_relative > 10
長度frame.len線路上的封包長度;frame.cap_len 為實際擷取長度。frame.len > 1400
封包編號frame.number封包在檔案中的序號。frame.number == 42

教學提示

要知道任何欄位的正確名稱,在封包明細窗格點選該欄位,狀態列左下角就會顯示;或右鍵 → Apply as Filter 直接生成語法。這比背名稱有效得多。

沒有符合的欄位。試試 ttl、SYN、SNI,或切換上方的分層。