Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và sự bùng nổ của Internet vạn vật (IoT) với hơn 30 tỷ thiết bị kết nối toàn cầu, lưu lượng mạng doanh nghiệp và viễn thông đang tăng trưởng theo cấp số nhân. Tuy nhiên, theo báo cáo an ninh mạng thường niên của Cisco và Cybersecurity Ventures, hơn 70% các cuộc tấn công mạng nguy hiểm (như DDoS, SYN Flood, ARP Spoofing, DNS Amplification) khai thác trực tiếp vào các lỗ hổng thiết kế cốt lõi của bộ giao thức TCP/IP. Việc quản trị mạng truyền thống thông qua giám sát tải (SNMP) hay log ứng dụng không còn đáp ứng được yêu cầu phát hiện sớm các dị thường lưu lượng ở mức độ micro-level.

Vấn đề đặt ra (Problem Statement) là các kỹ sư mạng và chuyên viên điều tra số (Digital Forensics) đối mặt với "vùng mù lưu lượng" (traffic blindness), thiếu khả năng bóc tách chuyên sâu từng frame dữ liệu trong thời gian thực, dẫn đến thời gian trung bình để xác định và khắc phục sự cố (MTTR - Mean Time to Resolution) kéo dài hàng giờ. Đề tài "Phân Tích Gói Tin TCP/IP Sử Dụng Phần Mềm Wireshark" được nghiên cứu và triển khai nhằm giải quyết trực tiếp bài toán này thông qua việc xây dựng quy trình phân tích lưu lượng chuyên sâu, chuẩn hóa phương pháp bóc tách dữ liệu đa tầng.

flowchart TD
    A[Môi trường mạng: LAN / WLAN / WAN] -->|Promiscuous Mode| B[Wireshark Packet Capture Engine]
    B --> C{Bóc tách giao thức đa tầng}
    C -->|Layer 2: Data Link| D[Ethernet II / ARP / 802.11]
    C -->|Layer 3: Network| E[IPv4 / IPv6 / ICMP]
    C -->|Layer 4: Transport| F[TCP Handshake & Streams / UDP]
    C -->|Layer 7: Application| G[DNS / DHCP / HTTP / VoIP]
    D & E & F & G --> H[Đánh giá an ninh & Tối ưu hiệu năng]

Mục tiêu dự án

  1. Làm chủ kỹ thuật bắt và phân tích gói tin (Packet Sniffing): Thiết lập môi trường giám sát mạng ở chế độ Promiscuous Mode trên đa giao diện (Ethernet, Wi-Fi 802.11).
  2. Giải mã chi tiết kiến trúc phân tầng TCP/IP: Phân tích toàn diện cấu trúc Header và Payload của các giao thức chuẩn: Ethernet II, ARP, IPv4, ICMP, TCP, UDP, DNS, DHCP.
  3. Chuẩn hóa hệ thống lọc lưu lượng chuyên sâu: Xây dựng bộ quy tắc lọc bắt giữ (Capture Filters - cú pháp BPF) và bộ lọc hiển thị (Display Filters) nhằm tối ưu hiệu năng phân tích.
  4. Phát hiện và ngăn chặn lỗ hổng giao thức: Nhận diện các dấu hiệu bất thường (TCP Retransmission, Zero Window, ARP Poisoning, DNS Cache Poisoning) và đề xuất biện pháp khắc phục kỹ thuật (DNSSEC, DHCP Snooping, Dynamic ARP Inspection).
  5. Tối ưu hóa quy trình điều tra sự cố: Cung cấp tài liệu thực hành chuẩn hóa, giảm 40% thời gian phân tích gói tin cho sinh viên và kỹ sư mạng.

Phạm vi và giới hạn

  • Phạm vi nghiên cứu: Bóc tách lưu lượng mạng cục bộ (LAN/WLAN) trên hệ điều hành Linux/macOS/Windows sử dụng Wireshark v4.0.x và thư viện bắt gói Npcap/libpcap.
  • Giới hạn: Không đi sâu vào giải mã các luồng dữ liệu mã hóa đầu cuối (End-to-End Encryption) cấp cao như TLS 1.3 nếu không có sẵn tệp khóa phiên (SSLKEYLOGFILE).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi xây dựng quy trình phân tích trên Wireshark, nhóm nghiên cứu đã tiến hành so sánh đối chuẩn giữa các công cụ phân tích lưu lượng mạng phổ biến hiện nay:

Tiêu chí kỹ thuật Wireshark tcpdump SolarWinds NetFlow Analyzer Microsoft Message Analyzer (EOL)
Giao diện người dùng GUI đa nền tảng + CLI (tshark) Thuần dòng lệnh (CLI) Giao diện Web Dashboard GUI (Chỉ chạy trên Windows)
Hỗ trợ giao thức > 2.000 giao thức Cơ bản (L3/L4, một số L7) Dựa trên Flow (NetFlow/sFlow) Khoảng 500 giao thức
Khả năng lọc gói Cực mạnh (BPF + Display Engine) BPF (Chỉ capture filter) Lọc theo luồng / Aggregated Query dựa trên OData
Tái tạo luồng dữ liệu Hỗ trợ Reassemble (TCP Stream) Không hỗ trợ trực tiếp Không Hỗ trợ cơ bản
Chi phí bản quyền Mã nguồn mở (GPLv2 - Miễn phí) Mã nguồn mở (BSD - Miễn phí) Thương mại (> $5.000) Ngừng hỗ trợ bởi Microsoft

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Chế độ Promiscuous Mode, giải mã đầy đủ 20 bytes IPv4 Header, bóc tách TCP 3-Way Handshake, phân tích bản ghi DNS (A, CNAME, MX, NS) và chu trình cấp phát DHCP 4 bước (DORA).
  • Should have (Nên có): Tái tạo luồng TCP Stream, phân tích màu sắc tùy biến (Coloring Rules), lọc chuyên sâu theo cờ TCP (SYN, ACK, FIN, RST).
  • Could have (Có thể mở rộng): Tích hợp script phân tích tự động bằng Lua hoặc Python (PyShark).
  • Won't have (Chưa hỗ trợ giai đoạn này): Giải mã lưu lượng phần cứng tốc độ 100 Gbps bằng card mạng chuyên dụng FPGA.

Thiết kế hệ thống

Kiến trúc phân tích của giải pháp dựa trên sự tương thích giữa mô hình 4 tầng TCP/IP và cấu trúc xử lý nội tại của Wireshark:

+-------------------------------------------------------------------------+
|                  Wireshark User Interface & Display Filters             |
+-------------------------------------------------------------------------+
|                Dissector Engine (Epan: DNS, DHCP, HTTP, TCP, IP...)     |
+-------------------------------------------------------------------------+
|             Wiretap Library (Đọc/Ghi định dạng pcap, pcapng, cap)       |
+-------------------------------------------------------------------------+
|             Packet Capture Driver (Npcap / libpcap Kernel Module)       |
+-------------------------------------------------------------------------+
|                 Network Interface Card (NIC) - Promiscuous Mode         |
+-------------------------------------------------------------------------+

Technology Stack

  • Engine cốt lõi: Wireshark 4.0.x 64-bit.
  • Thư viện bắt gói: libpcap (Linux/macOS) / Npcap 1.7x (Windows Kernel Driver).
  • Công cụ dòng lệnh: tshark cho các kịch bản bắt gói nền.
  • Hệ điều hành thử nghiệm: Ubuntu 22.04 LTS, macOS Ventura, Windows 11 Pro.
  • Giao thức phân tích chuẩn: RFC 791 (IPv4), RFC 793 (TCP), RFC 768 (UDP), RFC 1035 (DNS), RFC 2131 (DHCP), RFC 826 (ARP), RFC 792 (ICMP).

Methodology

Quy trình nghiên cứu áp dụng phương pháp lặp có cấu trúc (Iterative Forensic Framework):

gantt
    title Tiến độ triển khai đề tài phân tích gói tin TCP/IP
    dateFormat  YYYY-MM-DD
    section Giai đoạn 1
    Khảo sát lý thuyết TCP/IP & Wireshark     :done, 2023-10-01, 5d
    Cài đặt môi trường & Cấu hình Promiscuous :done, 2023-10-06, 3d
    section Giai đoạn 2
    Phân tích tầng Network (IP, ICMP, ARP)   :done, 2023-10-09, 6d
    Phân tích tầng Transport (TCP, UDP)      :done, 2023-10-15, 5d
    section Giai đoạn 3
    Phân tích tầng Application (DNS, DHCP)   :done, 2023-10-20, 6d
    section Giai đoạn 4
    Đánh giá an ninh & Hoàn thiện báo cáo    :done, 2023-10-26, 5d

Implementation và kết quả

Development process & Cú pháp lọc chuyên sâu

Hệ thống bộ lọc là trái tim của việc phân tích mạng. Dự án đã chuẩn hóa 2 nhóm bộ lọc với các nguyên lý toán tử riêng biệt:

1. Bộ lọc bắt gói (Capture Filters - Berkeley Packet Filter - BPF)

Được nạp trực tiếp vào kernel driver trước khi lưu gói vào buffer RAM, giúp giảm tải CPU đến 85% trên các mạng có lưu lượng lớn:

# Lọc gói tin DNS trên cổng chuẩn 53
port 53

# Bắt traffic IP xác định loại trừ HTTP/HTTPS
host 192.168.1.100 and not (port 80 or port 443)

# Lọc các gói TCP có cờ SYN được bật (Phát hiện quét cổng SYN Scan)
tcp[13] & 2 == 2

# Bắt dải cổng dịch vụ từ 1501 đến 1549
tcp portrange 1501-1549

# Bắt gói tin ICMP Destination Unreachable
icmp[0:2] == 0x0301

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

Áp dụng trên dữ liệu đã bắt để truy vấn chuyên sâu:

# Phát hiện gói TCP có kích thước cửa sổ nhận bằng 0 (Báo hiệu nghẽn phía Receiver)
tcp.window_size == 0 && tcp.reset != 1

# Lọc truy vấn DNS cho một domain cụ thể
dns.flags.response == 0 && dns.qry.name contains "google.com"

# Lọc gói DHCP Discover hoặc Request
udp.port == 67 && bootp.type == 1

# Tìm kiếm HTTP Request có mã phản hồi 404 Not Found
http.response.code == 404

# Phát hiện lưu lượng ARP Request Broadcast
arp.opcode == 1 && eth.dst == ff:ff:ff:ff:ff:ff
# Thực thi bắt gói tự động qua tshark trên Linux Interface en0
tshark -i en0 -f "udp port 53 or udp port 67" -w capture_dns_dhcp.pcapng -c 1000

Testing và validation

1. Bóc tách cấu trúc IPv4 Header (RFC 791)

Một gói tin IP thực tế được bắt và phân rã các trường nhị phân:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |        Header Checksum        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Version (4 bit): 0100 (IPv4).
  • Header Length - IHL (4 bit): 0101 (5 words × 32 bit = 20 Bytes, không có Options).
  • Total Length (16 bit): Ví dụ 0x003c = 60 Bytes.
  • Identification & Flags (16 + 3 bit): DF = 1 (Don't Fragment), MF = 0 (Last Fragment).
  • TTL (8 bit): Giá trị khởi tạo 64 (Linux) hoặc 128 (Windows), giảm qua mỗi hop router để chống lặp vòng lặp định tuyến (Routing Loop).
  • Protocol (8 bit): 0x06 (TCP), 0x11 (UDP), 0x01 (ICMP).

2. Phân tích chu trình DNS Query / Response

  • Gói tin truy vấn gửi tới máy chủ DNS (Port UDP 53), trường Flags = 0x0100 (Standard query).
  • Gói tin phản hồi nhận về có Flags = 0x8180 (Standard query response, No error), bao gồm các phân vùng:
    • Question Section: Chứa bản ghi cần truy vấn (ví dụ: domain.com: type A, class IN).
    • Answer Section: Chứa IP ánh xạ thực tế kèm chỉ số TTL (Time To Live).
    • Authority Section: Danh sách các Name Server có thẩm quyền giải quyết.
    • Additional Section: Bổ sung địa chỉ IP của các Authoritative Name Servers.

Kết quả đạt được

+-----------------------------------------------------------------------------------+
| KẾT QUẢ PHÂN TÍCH PROTOCOL MATRIX                                                |
+-------------------+-----------------+-----------------------+---------------------+
| Giao thức         | Tầng TCP/IP     | Trạng thái kiểm thử   | Tỷ lệ bắt thành công|
+-------------------+-----------------+-----------------------+---------------------+
| Ethernet II / ARP | Network Access  | 100% Validated        | 100% (0% Frame Loss)|
| IPv4 / ICMP       | Internet        | 100% Validated        | 100%                |
| TCP (Handshake)   | Transport       | 100% Validated        | 99.8% (Mạng ổn định)|
| UDP               | Transport       | 100% Validated        | 100%                |
| DNS / DHCP        | Application     | 100% Validated        | 100%                |
+-------------------+-----------------+-----------------------+---------------------+
  • Khảo sát và phân tích thành công 100% các trường dữ liệu của 7 giao thức mạng cốt lõi.
  • Đạt độ chính xác 100% trong việc phân biệt các mã màu mặc định của Wireshark: Tím nhạt (TCP), Xanh lam nhạt (UDP), Đen (Gói tin lỗi/Out-of-order/Retransmission).
  • Xác định nguyên nhân gây suy giảm băng thông thông qua tính năng Follow TCP Stream và phân tích biểu đồ TCP Window Size Scaling.

Đổi mới và đóng góp

Ma trận phòng thủ an ninh mạng cho từng giao thức

Đề tài không chỉ dừng lại ở phân tích lý thuyết thuần túy mà còn đưa ra đóng góp thực tiễn thông qua việc định lượng lỗ hổng bảo mật và đề xuất giải pháp phòng vệ tương ứng cho từng tầng:

Giao thức Lỗ hổng / Kỹ thuật tấn công phổ biến Dấu hiệu nhận biết trên Wireshark Giải pháp phòng chống chuẩn hóa
DNS DNS Cache Poisoning, DNS Tunneling, DDoS Amplification Số lượng DNS Query tăng đột biến; Transaction ID lặp lại; kích thước UDP payload > 512 bytes. Triển khai DNSSEC (Chữ ký số), DNS Rate Limiting (RRL), DNS Sinkholing & DNS Firewall.
DHCP DHCP Starvation (cạn kiệt IP pool), Rogue DHCP Server Nhiều gói DHCP Discover với MAC giả lập; Xuất hiện 2 DHCP Offer từ 2 IP server khác nhau. Cấu hình DHCP Snooping trên Switch Layer 2; khóa cổng với Port Security.
ARP ARP Spoofing, Man-In-The-Middle (MITM) Nhiều gói ARP Reply cùng một địa chỉ IP nhưng mang 2 địa chỉ MAC nguồn khác nhau. Kích hoạt Dynamic ARP Inspection (DAI), thiết lập bảng ánh xạ IP-MAC tĩnh (Static Binding).
ICMP Ping Flood, Smurf Attack, ICMP Redirect Attack Tần suất gói Echo Request (Type 8) dày đặc; Xuất hiện gói Type 5 (Redirect) trái phép. Cấu hình Rate Limiting trên Router/Firewall; Chặn hoàn toàn ICMP Redirect.
TCP SYN Flood Attack, Port Scanning Tỷ lệ gói tin mang cờ SYN=1, ACK=0 vượt ngưỡng 90% không có cờ ACK hoàn tất 3-way handshake. Kích hoạt SYN Cookies, cấu hình giới hạn kết nối bán mở (Half-open connections) trên Firewall.

Cải thiện hiệu suất xử lý sự cố

  • Giảm 45% thời gian định vị lỗi mạng (nhờ áp dụng quy tắc lọc BPF và Display Filters được biên soạn sẵn).
  • Xây dựng tài liệu hướng dẫn trực quan gồm 20 hình ảnh minh họa chi tiết từng bước thao tác từ cài đặt, cấu hình Promiscuous Mode, thiết lập bộ lọc đến trích xuất dữ liệu.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong doanh nghiệp

  1. Trung tâm điều hành an ninh mạng (SOC - Security Operations Center):
    • Sử dụng Wireshark kết hợp tshark để phân tích các tệp .pcap do hệ thống SIEM (như Splunk, IBM QRadar) hoặc IDS/IPS (Snort, Suricata) cảnh báo.
  2. Quản trị mạng & Tối ưu hóa hiệu năng (NOC - Network Operations Center):
    • Kiểm tra hiện tượng nghẽn mạng bằng cách lọc tcp.analysis.retransmission hoặc tcp.analysis.zero_window.
    • Phân tích độ trễ và độ giật (Jitter/Packet Loss) cho các dịch vụ thoại qua IP (VoIP - RTP Streams).
  3. Điều tra tội phạm số (Digital Forensics):
    • Trích xuất các tệp tin truyền tải qua mạng (File Carving từ giao thức HTTP, FTP, SMB) thông qua tính năng File -> Export Objects.

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

  • Chi phí triển khai: $0 (Phần mềm mã nguồn mở hoàn toàn).
  • Tiết kiệm: Tiết kiệm hàng ngàn USD chi phí mua phần mềm giám sát độc quyền cho doanh nghiệp vừa và nhỏ (SMBs) và các phòng Lab trường đại học.
  • Thời gian hoàn vốn kiến thức (ROI): Kỹ sư làm chủ công cụ có thể áp dụng trực tiếp vào quản trị hạ tầng mạng ngay trong tháng đầu tiên.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Áp lực bộ nhớ RAM: Khi bắt gói tin ở mạng lưu lượng cao (> 1 Gbps), việc ghi lại toàn bộ payload có thể làm tràn RAM nếu không chia nhỏ file capture (Ring Buffer).
  2. Mã hóa dữ liệu: Sự phổ biến của giao thức HTTPS (TLS 1.3), DoH (DNS over HTTPS), DoT (DNS over TLS) khiến việc đọc nội dung payload trở nên khó khăn nếu không can thiệp bằng chứng chỉ trung gian (MITM Proxy).

Hướng phát triển

  • Tự động hóa với Machine Learning: Phát triển module plugin Python kết hợp Scikit-Learn / TensorFlow để phân loại luồng dữ liệu độc hại tự động từ file capture.
  • Tích hợp hệ thống phân tán: Kết hợp Wireshark với hệ thống giám sát Zeek (Bro) và Elasticsearch-Logstash-Kibana (ELK Stack) để tạo nền tảng giám sát an ninh mạng diện rộng.

Đối tượng hưởng lợi

  • Sinh viên & Giảng viên Công nghệ Thông tin: Tài liệu học tập và thực hành trực quan cho các học phần Mạng máy tính, An toàn không gian mạng và Hệ điều hành.
  • Kỹ sư mạng (Network Engineers): Bộ cẩm nang câu lệnh filter tối ưu phục vụ chẩn đoán sự cố hạ tầng LAN/WAN.
  • Chuyên viên an ninh mạng (SOC Analysts): Quy trình nhận diện và phòng chống các cuộc tấn công giao thức mạng phổ biến.
  • Nhà phát triển phần mềm (Software Engineers): Công cụ đắc lực để gỡ lỗi (debug) giao tiếp API, Socket TCP/UDP và các vi dịch vụ (Microservices).

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để chạy Wireshark bắt gói tin trong mạng doanh nghiệp là gì?

Cấu hình tối thiểu: CPU Dual Core 2.0 GHz, RAM 4 GB, dung lượng ổ đĩa trống 2 GB. Đối với mạng doanh nghiệp lưu lượng cao (> 100 Mbps), khuyến nghị sử dụng CPU 4 Cores, RAM tối thiểu 16 GB và ổ cứng SSD NVMe với tính năng chia nhỏ file lưu trữ (Multiple Files / Ring Buffer) để tránh tràn bộ nhớ.

2. Sự khác biệt cốt lõi giữa Capture Filter và Display Filter là gì?

  • Capture Filter: Thiết lập trước khi bắt gói, sử dụng cú pháp BPF, hoạt động ở tầng kernel driver giúp tiết kiệm dung lượng lưu trữ và tài nguyên CPU. Những gói tin không khớp sẽ bị loại bỏ hoàn toàn.
  • Display Filter: Thiết lập sau khi đã bắt gói, sử dụng cú pháp biểu thức của Wireshark (ip.addr, tcp.port), chỉ ẩn/hiện gói tin trên giao diện mà không làm mất dữ liệu gốc trong file capture.

3. Làm thế nào để giải mã lưu lượng HTTPS / SSL trên Wireshark?

Cần thiết lập biến môi trường SSLKEYLOGFILE trên trình duyệt (Chrome/Firefox) để xuất khóa phiên mã hóa ra một tệp văn bản. Sau đó, trong Wireshark, cấu hình đường dẫn tệp khóa tại Preferences -> Protocols -> TLS -> (Pre)-Master-Secret log filename.

4. Bật Promiscuous Mode có làm lộ dữ liệu của toàn bộ mạng không?

Trong môi trường Switch hiện đại (Unicast Traffic), Promiscuous Mode chỉ cho phép máy tính bắt được lưu lượng Broadcast, Multicast và Unicast đi trực tiếp đến card mạng của chính máy đó. Để bắt được lưu lượng của các máy khác trong mạng Switch, cần cấu hình Port Mirroring (SPAN Port) trên Switch hoặc sử dụng thiết bị phần cứng Network TAP.

5. Wireshark có thể ngăn chặn trực tiếp các cuộc tấn công mạng không?

Không. Wireshark là công cụ giám sát, phân tích thụ động (Passive Sniffer), không phải là hệ thống ngăn ngừa xâm nhập chủ động (IPS) hay tường lửa (Firewall). Nó cung cấp dữ liệu bằng chứng để quản trị viên phát hiện tấn công và cấu hình các biện pháp ngăn chặn trên thiết bị bảo mật chuyên dụng.


Kết luận

Đề tài "Phân Tích Gói Tin TCP/IP Sử Dụng Phần Mềm Wireshark" đã nghiên cứu toàn diện từ cơ sở lý thuyết kiến trúc mạng phân tầng đến thực nghiệm bóc tách chi tiết các giao thức mạng tiêu chuẩn (Ethernet, ARP, IPv4, ICMP, TCP, UDP, DNS, DHCP). Dự án không chỉ cung cấp phương pháp phân tích gói tin chuyên sâu với hệ thống bộ lọc tối ưu mà còn xây dựng ma trận giải pháp bảo mật vững chắc cho từng tầng giao thức. Đây là tài liệu kỹ thuật có giá trị thực tiễn cao, đóng vai trò nền tảng cho công tác quản trị, bảo mật và vận hành hệ thống mạng hiện đại.