Điều tra sự cố mạng: So sánh các phương pháp thu thập gói tin
Khi một cảnh báo bất thường kích hoạt trên máy chủ nội bộ hoặc hệ thống giám sát mạng ghi nhận lưu lượng outbound tăng đột biến, việc tìm ra nguyên nhân gốc rễ đòi hỏi khả năng quan sát ở cấp độ gói tin (packet-level visibility). Tùy thuộc vào tài nguyên máy chủ và phạm vi sự cố, các đội ngũ bảo mật thường dựa vào ba quy trình điều tra chính:
| Phương pháp | Trường hợp sử dụng chính | Ảnh hưởng tài nguyên | Khả năng xem Payload |
|---|---|---|---|
| Kiểm tra gói tin sâu qua GUI (Wireshark) | Phân loại điều tra sau sự cố (forensic triage), tái cấu trúc giao thức và xác minh chữ ký mã độc. | Tốn nhiều bộ nhớ với file lớn; tối ưu nhất khi chạy trên máy trạm của chuyên viên phân tích. | Kiểm tra toàn bộ payload từ Layer 2 đến Layer 7. |
| Công cụ bắt gói tin CLI (tcpdump / tshark) | Thu thập trực tiếp không cần giao diện (headless) trên các node production, lọc gói tin bằng script, ghi lại với chi phí tài nguyên thấp. | Chiếm dụng RAM tối thiểu, phụ thuộc CPU khi thông lượng đạt mức 10+ Gbps. | Xem được đầy đủ payload, định dạng qua đầu ra terminal hoặc file PCAP thô. |
| Bản ghi Flow (NetFlow / IPFIX / sFlow) | Thiết lập đường cơ sở lưu lượng (baselining) dài hạn, phát hiện bất thường về thể tích, kiểm toán băng thông. | Chi phí lưu trữ rất thấp nhờ cơ chế thu thập mẫu (ví dụ: 1:1000 gói tin). | Chỉ có metadata (IP, port, số lượng gói tin, timestamp; không có payload). |
Bản tóm tắt flow cho thấy một máy chủ nội bộ đã gửi 2.4 GB dữ liệu đến một IP bên ngoài không xác định vào lúc 3:15 sáng. Wireshark sẽ cho bạn thấy chính xác những gì bên trong các gói tin đó: bản sao lưu cơ sở dữ liệu dạng plain-text, tín hiệu beacon gửi tới máy chủ điều khiển C2, hoặc các chuỗi SQL injection nhắm vào một dịch vụ đang mở.
Ưu và nhược điểm của việc kiểm tra gói tin sâu với Wireshark
Ưu điểm
- Giải mã giao thức toàn diện: Wireshark hỗ trợ giải mã sẵn hơn 3.000 giao thức, bóc tách các header lồng nhau từ TCP, quá trình bắt tay TLS, bản ghi DNS cho đến các giao thức độc quyền.
- Tái cấu trúc luồng hội thoại: Bạn có thể tái cấu trúc toàn bộ TCP stream chỉ với một cú nhấp chuột để đọc payload dạng cleartext, các phiên giao dịch HTTP hoặc payload nhị phân thô.
- Cú pháp Display Filter chi tiết: Các biểu thức boolean nâng cao cho phép bạn xác định chính xác bất thường về thời gian ở mức micro giây, tình trạng sụt giảm đột ngột kích thước cửa sổ TCP, hay các tổ hợp TCP flag đáng ngờ.
Nhược điểm
- Chiếm dụng nhiều bộ nhớ RAM: Việc tải trực tiếp các file capture PCAP thô lớn hơn 1–2 GB vào Wireshark có thể làm cạn kiệt RAM và làm đơ giao diện ứng dụng.
- Điểm mù mã hóa: Khi TLS 1.3 bảo vệ phần lớn lưu lượng web hiện đại, việc kiểm tra payload đòi hỏi phải có khóa bí mật phiên (pre-master session secrets qua
SSLKEYLOGFILE) hoặc log giải mã từ thiết bị SSL termination phía trước. - Rủi ro trên môi trường Production: Tuyệt đối không chạy ứng dụng phân tích gói tin GUI trực tiếp trên các máy chủ production. Làm như vậy sẽ mở rộng bề mặt tấn công và lãng phí tài nguyên máy chủ quan trọng.
Kiến trúc khuyến nghị để phân tích lưu lượng an toàn
Hãy giữ lớp thu thập gói tin (capture layer) tách biệt hoàn toàn với môi trường phân tích. Bắt gói tin trên máy chủ mục tiêu bằng các công cụ CLI gọn nhẹ, sau đó chuyển các file capture về máy trạm cách ly để kiểm tra trên Wireshark.
Để ghi lại lưu lượng trên Linux mà không cần cấp toàn quyền root shell cho kỹ sư, hãy cấu hình tcpdump với các Linux capability chuyên dụng:
# Tạo user group chuyên dụng để capture gói tin
sudo groupadd pcap
sudo usermod -a -G pcap $USER
# Gán capture capabilities cho binary tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
Các jump host và máy chủ thu thập forensic cần có mật khẩu mạnh và tách biệt ngay từ đầu. Tôi sử dụng công cụ tạo mật khẩu tại toolcraft.app/vi/tools/security/password-generator để tạo thông tin xác thực máy chủ 32 ký tự—công cụ này thực thi hoàn toàn phía client trong trình duyệt mà không gửi bất kỳ dữ liệu nào qua mạng. Khi các node thu thập đã được bảo mật nghiêm ngặt, hãy tải các file PCAP về máy cục bộ để tiến hành phân loại.
Hướng dẫn triển khai từng bước
1. Thu thập lưu lượng không cần GUI với tcpdump
Việc bắt gói tin không kiểm soát có thể làm đầy dung lượng ổ cứng máy chủ chỉ trong vài phút. Thay vào đó, hãy cấu hình một ring buffer để giới hạn kích thước từng file và tự động xoay vòng (rotate):
# Bắt gói tin trên eth0, ghi 5 file xoay vòng dung lượng 100MB mỗi file
tcpdump -i eth0 -nn -s 0 -W 5 -C 100 -w /var/log/incident_capture.pcap
Hãy để quá trình thu thập chạy trong suốt khoảng thời gian diễn ra sự cố, dừng tiến trình bằng tổ hợp phím Ctrl+C, và chuyển file incident_capture.pcap sang máy trạm phân tích cục bộ của bạn.
2. Áp dụng các bộ lọc hiển thị (Display Filters) thiết yếu
Display filter hoạt động trên dữ liệu capture đã nạp vào bộ nhớ. Hãy dán trực tiếp các quy tắc cú pháp này vào thanh filter của Wireshark để cô lập các dấu hiệu xâm phạm (IOC) phổ biến:
- Cô lập IP khả nghi và bỏ qua các cổng dịch vụ tiêu chuẩn:
ip.addr == 192.168.1.50 && !(tcp.port in {80, 443, 22, 53}) - Định vị các yêu cầu gửi thông tin xác thực dạng cleartext:
http.request.method == "POST" || ftp.request.command in {"USER", "PASS"} - Bắt lỗi NXDOMAIN (thường gặp khi mã độc quét vòng lặp tên miền DGA):
dns.flags.rcode == 3
3. Phát hiện hoạt động trinh sát mạng và quét cổng (Port Scan)
Kẻ tấn công luôn quét mục tiêu trước khi thực hiện khai thác. Mỗi kỹ thuật quét đều để lại những dấu vết đặc trưng không thể nhầm lẫn trong header của gói tin.
Phát hiện kỹ thuật quét ẩn TCP SYN (Stealth Scan)
Kỹ thuật quét ẩn SYN (chẳng hạn như nmap -sS -T4) gửi các gói tin TCP chỉ thiết lập cờ SYN. Trình quét không bao giờ hoàn tất quá trình bắt tay ba bước (three-way handshake) mà sẽ hủy các gói SYN-ACK phản hồi bằng cờ RST. Để cô lập các nỗ lực kết nối nửa mở (half-open) này:
tcp.flags.syn == 1 && tcp.flags.ack == 0 && tcp.window_size <= 1024
Hãy kiểm tra khung Packet List. Khi một địa chỉ IP duy nhất gửi gói tin đến hàng nghìn cổng đích liên tiếp chỉ trong vài giây, bạn đã bắt quả tang một đợt quét cổng đang diễn ra.
Phát hiện kỹ thuật quét NULL, FIN và XMAS
Kẻ tấn công đôi khi sử dụng các tổ hợp cờ TCP phi chuẩn để vượt qua các tường lửa không lưu trạng thái (stateless firewall) đời cũ:
- NULL Scan (Không đặt bất kỳ cờ nào):
tcp.flags == 0x000 - FIN Scan (Chỉ đặt cờ FIN):
tcp.flags == 0x001 - XMAS Scan (Đặt cùng lúc các cờ FIN, PSH và URG):
tcp.flags == 0x029
Các stack tuân thủ chuẩn RFC 793 sẽ từ chối những gói tin dị dạng này. Các ứng dụng hợp lệ không bao giờ tạo ra chúng, vì vậy bất kỳ gói tin nào khớp với bộ lọc đều cần được điều tra ngay lập tức.
4. Tái cấu trúc phiên và trích xuất file nhị phân
Khi phát hiện một kết nối đáng ngờ—chẳng hạn như một interactive shell hoặc một yêu cầu API trái phép—bạn có thể ghép nối lại toàn bộ luồng dữ liệu:
- Nhấp chuột phải vào gói tin đáng ngờ trong danh sách gói tin (packet list).
- Chọn Follow > TCP Stream.
- Quan sát hộp thoại mã ASCII: các lệnh từ client hiển thị màu đỏ, phản hồi từ máy chủ hiển thị màu xanh lam.
Nếu kẻ tấn công tải payload giai đoạn hai hoặc web shell qua giao thức HTTP không mã hóa, bạn có thể xuất trực tiếp file đó qua Wireshark:
- Nhấp vào File > Export Objects > HTTP…
- Tìm payload mục tiêu trong danh sách đối tượng.
- Nhấp Save để xuất file nhị phân vào một máy ảo cô lập hoặc thư mục sandbox phục vụ phân tích tĩnh.
5. Phát hiện đánh cắp dữ liệu qua DNS Tunneling
DNS tunneling cung cấp cho kẻ tấn công một kênh chuyển dữ liệu ra ngoài (egress) bí mật khi tất cả các cổng outbound khác đã bị chặn. Mã độc sẽ mã hóa các file bị đánh cắp hoặc lệnh C2 vào các chuỗi subdomain (chẳng hạn như a8f3b2.c2server.com) gửi đến máy chủ phân giải tên miền do kẻ tấn công kiểm soát.
Chạy bộ lọc này để bắt các truy vấn có tên miền dài gửi đến các resolver bên ngoài:
dns.flags.response == 0 && dns.qry.name.len > 35
Kiểm tra các chuỗi truy vấn. Các subdomain có độ hỗn loạn (entropy) cao, trông giống chuỗi Base64 xuất hiện dồn dập hơn 50 yêu cầu mỗi phút tới cùng một tên miền gốc là dấu hiệu rõ ràng của hành vi đánh cắp dữ liệu đang diễn ra.

