Wireshark Cheat Sheet :simple-wireshark: 🛜

Wireshark là công cụ phân tích giao thức mạng mạnh mẽ nhất thế giới. Tài liệu này cung cấp các từ khóa, cú pháp bộ lọc và các kỹ thuật phân tích chuyên sâu.


1. Quy trình xử lý gói tin (Packet Flow)

Cần hiểu cách Wireshark tiếp nhận dữ liệu để đặt bộ lọc đúng vị trí.

graph TD A[Network Interface] --> B{Capture Filter} B -- Match --> C[Capture Engine/Dumpcap] C --> D[Data Buffer/Pcap File] D --> E{Display Filter} E -- Match --> F[Packet List Pane] F --> G[Packet Details & Bytes]

2. Capture Filters (Bộ lọc khi bắt)

Bộ lọc này sử dụng cú pháp BPF (Berkeley Packet Filter). Nó được thiết lập trước khi bắt đầu quá trình capture để giảm tải cho CPU và ổ đĩa.

Cú pháp cơ bản

[not] primitive [and|or] primitive

PrimitiveVí dụGiải thích
hosthost 192.168.1.1Bắt lưu lượng đi/đến từ IP này
netnet 192.168.1.0/24Bắt lưu lượng trong dải mạng
portport 80Bắt cổng 80 (cả TCP và UDP)
portrangeportrange 1-1024Bắt một dải cổng
protoicmpBắt giao thức cụ thể (tcp, udp, icmp, arp)
src / dstsrc host 10.0.0.5Chỉ định nguồn hoặc đích

Ví dụ nâng cao

host 192.168.1.10 and port 443
not arp and not port 53
src net 172.16.0.0/16 and (dst port 80 or dst port 443)

3. Display Filters (Bộ lọc khi hiển thị)

Đây là công cụ mạnh nhất của Wireshark, dùng để lọc dữ liệu sau khi đã capture.

Toán tử so sánh & logic

EnglishKý hiệuÝ nghĩa
eq==Bằng
ne!=Khác
gt>Lớn hơn
lt<Nhỏ hơn
ge>=Lớn hơn hoặc bằng
le<=Nhỏ hơn hoặc bằng
and&&Và (cả 2 điều kiện)
or`
not!Phủ định

Các bộ lọc phổ biến theo tầng (Layers)


4. Phân tích luồng (Stream Analysis)

Wireshark có khả năng gộp các gói tin lẻ tẻ thành một hội thoại hoàn chỉnh.

Follow Stream

Chuột phải vào một gói tin -> Follow -> TCP/UDP/HTTP Stream.

  • Màu đỏ: Dữ liệu từ Client gửi đi.
  • Màu xanh: Dữ liệu từ Server phản hồi.

TCP Window & Sequence Numbers

  • tcp.seq: Số thứ tự gói tin (dùng để ghép dữ liệu).
  • tcp.ack: Số xác nhận đã nhận dữ liệu.
  • tcp.window_size: Khả năng nhận dữ liệu còn lại của thiết bị (nếu = 0 là nghẽn).

5. Các phím tắt thần thánh (Shortcuts)

Phím tắtChức năng
Ctrl + KMở menu Capture Options
Ctrl + EBắt đầu/Dừng capture
Ctrl + RReload file capture hiện tại
Ctrl + FTìm kiếm gói tin (bằng string, hex, display filter)
Ctrl + GĐi đến gói tin số X
Ctrl + Shift + OMở tùy chọn Preferences
Ctrl + Alt + Shift + TMở bảng thống kê hội thoại (Conversations)

6. Chẩn đoán chuyên sâu (Expert Info)

Wireshark tự động phân tích các dấu hiệu bất thường trong mạng và phân loại:

LevelÝ nghĩa
ChatCác luồng giao tiếp thông thường (SYN, FIN).
NoteCác sự kiện đáng chú ý (HTTP 200 OK).
WarnCác lỗi nhỏ (TCP Retransmission, Window Full).
ErrorCác lỗi nghiêm trọng (Mã lỗi 4xx, 5xx, Checksum error).

7. Giải mã lưu lượng mã hóa (TLS/SSL Decryption)

Để đọc được nội dung HTTPS, bạn cần cung cấp Key Log File.

  1. Thiết lập biến môi trường (Windows/Linux): SSLKEYLOGFILE=C:\path\to\sslkeylog.log.
  2. Trong Wireshark: Edit -> Preferences -> Protocols -> TLS.
  3. Pre-Master-Secret log filename: Trỏ tới file .log trên.

8. TShark - Wireshark dòng lệnh

Dành cho việc tự động hóa hoặc chạy trên server không có giao diện (GUI).

# Bắt gói tin trên interface eth0 và lưu vào file
tshark -i eth0 -w output.pcap

# Đọc file và lọc theo IP
tshark -r output.pcap -Y "ip.addr == 192.168.1.1"

# Chỉ trích xuất các trường cụ thể (ví dụ: HTTP Host)
tshark -r capture.pcap -T fields -e http.host -e ip.src

9. Thủ thuật “Pro” để xử lý sự cố (Troubleshooting)

Tìm độ trễ (Latency)

Sử dụng cột Time Delta để xem khoảng cách thời gian giữa các gói tin.

  • tcp.time_delta > 0.5: Tìm các phản hồi TCP mất hơn 0.5 giây.

Tìm các gói tin bị mất

  • tcp.analysis.lost_segment: Chỉ ra rằng Wireshark thấy số Sequence nhảy cóc, chứng tỏ có gói bị mất giữa chừng.

Lọc theo nội dung (String Matching)

  • frame contains "password": Tìm từ khóa “password” trong toàn bộ dữ liệu thô của gói tin.
  • http.authbasic: Tìm các gói tin sử dụng xác thực Basic Auth (thường chứa base64 của user:pass).

10. Bảng tra cứu nhanh Field Names

ProtocolField NameMô tả
IPip.versionPhiên bản (4 hoặc 6)
TCPtcp.flags.pushCờ PSH (đẩy dữ liệu ngay)
UDPudp.lengthĐộ dài payload UDP
HTTPhttp.user_agentThông tin trình duyệt/thiết bị
DNSdns.flags.response == 0Là câu hỏi (Query)
ARParp.opcode == 1ARP Request