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í.
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
| Primitive | Ví dụ | Giải thích |
|---|---|---|
| host | host 192.168.1.1 | Bắt lưu lượng đi/đến từ IP này |
| net | net 192.168.1.0/24 | Bắt lưu lượng trong dải mạng |
| port | port 80 | Bắt cổng 80 (cả TCP và UDP) |
| portrange | portrange 1-1024 | Bắt một dải cổng |
| proto | icmp | Bắt giao thức cụ thể (tcp, udp, icmp, arp) |
| src / dst | src host 10.0.0.5 | Chỉ định nguồn hoặc đích |
Ví dụ nâng cao
host 192.168.1.10 and port 443not arp and not port 53src 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
| English | Ký 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ắt | Chức năng |
|---|---|
Ctrl + K | Mở menu Capture Options |
Ctrl + E | Bắt đầu/Dừng capture |
Ctrl + R | Reload file capture hiện tại |
Ctrl + F | Tìm kiếm gói tin (bằng string, hex, display filter) |
Ctrl + G | Đi đến gói tin số X |
Ctrl + Shift + O | Mở tùy chọn Preferences |
Ctrl + Alt + Shift + T | Mở 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 |
|---|---|
| Chat | Các luồng giao tiếp thông thường (SYN, FIN). |
| Note | Các sự kiện đáng chú ý (HTTP 200 OK). |
| Warn | Các lỗi nhỏ (TCP Retransmission, Window Full). |
| Error | Cá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.
- Thiết lập biến môi trường (Windows/Linux):
SSLKEYLOGFILE=C:\path\to\sslkeylog.log. - Trong Wireshark:
Edit -> Preferences -> Protocols -> TLS. - Pre-Master-Secret log filename: Trỏ tới file
.logtrê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.src9. 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
| Protocol | Field Name | Mô tả |
|---|---|---|
| IP | ip.version | Phiên bản (4 hoặc 6) |
| TCP | tcp.flags.push | Cờ PSH (đẩy dữ liệu ngay) |
| UDP | udp.length | Độ dài payload UDP |
| HTTP | http.user_agent | Thông tin trình duyệt/thiết bị |
| DNS | dns.flags.response == 0 | Là câu hỏi (Query) |
| ARP | arp.opcode == 1 | ARP Request |
