Loading...

Bài 87. (Lab) Phân tích gói tin bằng Wireshark để phát hiện tấn công

Khóa học CompTIA Security+ SY0-801 · Phần 4: Vận hành bảo mật · Bài 87 · 🎯 Objective 4.8 · ⏱️ Làm khoảng 75 phút · 🧪 Có lab (2 máy ảo) · 📝 5 câu bài tập cuối bài

🎯 Mục tiêu bài học

  • Bắt gói tin bằng tcpdump hoặc Wireshark và lưu thành tệp pcap.
  • Dùng thống kê (Protocol Hierarchy, Conversations) để có cái nhìn tổng quan trước khi đào sâu.
  • Dùng display filter để tìm: quét cổng, mật khẩu gửi dạng rõ, truy vấn DNS bất thường.
  • Dựng lại phiên bằng Follow TCP Stream và ghi lại kết luận kèm bằng chứng.

📎 Vị trí trong đề thi: Objective 4.8 về dữ liệu hỗ trợ điều tra. Bài này là lab thực hành của phần packet capture ở Bài 83. Các dấu hiệu quét cổng và mật khẩu rõ liên quan Bài 21 và Bài 30; kết luận cần được ghi nhận theo Bài 84 (giữ nguyên tệp gốc, tính hash). Lab kế tiếp: Bài 88.

⚠️ An toàn: Chỉ bắt và tạo lưu lượng giữa các máy ảo của bạn trong mạng host-only hoặc internal. Bắt gói tin trên mạng của người khác khi chưa được phép có thể vi phạm pháp luật và quy định về quyền riêng tư, vì tệp pcap có thể chứa mật khẩu và dữ liệu cá nhân.

💡 Liên hệ thực tế: "Bằng chứng nằm trong gói tin"

Sau khi kiểm tra log và NetFlow, Nam thấy một máy chủ gửi dữ liệu ra ngoài lúc 2 giờ sáng nhưng không biết gửi gì. May mắn là đoạn mạng đó có bật bắt gói tin có chọn lọc. Nam mở tệp pcap bằng Wireshark và tìm ra hai điều: một địa chỉ nội bộ quét hàng loạt cổng của máy chủ trước đó, và có phiên FTP gửi tài khoản mật khẩu dạng rõ. Hai phát hiện này khớp với dòng thời gian từ log. Đây là tình huống minh họa, không phải vụ việc có thật.

🔬 Hình 87a. Bắt, xem tổng quan, lọc, rồi dựng lại: đi từ rộng đến hẹp.

🧰 Chuẩn bị

Máy ảoHệ điều hànhIP trong labVai trò
kali Kali Linux (đã có Wireshark, tcpdump, nmap) 192.168.56.20 Tạo lưu lượng và bắt gói tin
target Metasploitable 2 hoặc máy Linux có dịch vụ FTP, HTTP 192.168.56.30 Máy mục tiêu (cố ý có lỗ hổng)
  • Đặt hai máy trong mạng host-only; không nối máy target ra Internet.
  • Nếu không muốn dùng máy mục tiêu cố ý yếu, có thể cài vsftpd trên một máy Ubuntu thường, tạo tài khoản thử, và tắt TLS cho FTP chỉ để làm lab.
  • Wireshark cần quyền bắt gói tin. Trên Kali, chạy sudo wireshark hoặc thêm người dùng vào nhóm wireshark.

🪜 Các bước thực hiện

Bước 1. Bắt gói tin ra tệp

Bắt bằng dòng lệnh, giữ tệp gốc để sau này tính hash:

bash

mkdir -p ~/lab87 && cd ~/lab87
sudo tcpdump -i eth1 -nn -w lab87.pcap host 192.168.56.30

(Thay eth1 bằng card host-only của bạn; xem bằng ip a.) Giữ cửa sổ này chạy, mở cửa sổ thứ hai để tạo lưu lượng.

Bước 2. Tạo lưu lượng mẫu

Trong cửa sổ thứ hai trên kali, tạo bốn loại lưu lượng, mỗi loại cách nhau vài giây:

bash

# 1. Quét cổng (SYN scan) vào máy target của bạn
sudo nmap -sS -p 1-1000 192.168.56.30

# 2. Đăng nhập FTP bằng tài khoản thử (gửi dạng rõ)
ftp 192.168.56.30      # nhập user và password của tài khoản thử, rồi gõ: ls, bye

# 3. Truy cập web đơn giản
curl -s http://192.168.56.30/ -o /dev/null

# 4. Vài truy vấn DNS
dig example.com
dig khong-ton-tai-123456.example.com

Quay lại cửa sổ đầu, nhấn Ctrl+C để dừng bắt. Tính hash tệp gốc rồi làm việc trên bản sao:

bash

sha256sum lab87.pcap | tee lab87.pcap.sha256
cp lab87.pcap work.pcap

Bước 3. Xem tổng quan

Mở work.pcap trong Wireshark. Đừng đọc từng gói; bắt đầu từ thống kê:

MenuCho biếtCâu hỏi bạn tự hỏi
Statistics → Protocol Hierarchy Tỷ lệ các giao thức Có giao thức không mong đợi không?
Statistics → Conversations Cặp IP và cổng nào nói chuyện nhiều nhất IP nào gửi nhiều gói nhất?
Statistics → Endpoints Các đầu cuối tham gia Có địa chỉ lạ không?

Ghi lại IP nguồn gửi nhiều gói nhất và số cổng đích khác nhau nó chạm tới. Một IP chạm hàng trăm cổng trong vài giây là dấu hiệu quét cổng.

🚨 Hình 87b. Quét cổng, mật khẩu rõ, DNS bất thường và kết nối đều đặn.

Bước 4. Dùng display filter

Nhập vào thanh lọc phía trên và nhấn Enter:

Mục đíchDisplay filterCách đọc
Chỉ một IP ip.addr == 192.168.56.20 Mọi gói có IP này làm nguồn hoặc đích
Gói SYN mở kết nối tcp.flags.syn == 1 && tcp.flags.ack == 0 Nhiều dòng tới nhiều cổng khác nhau là quét cổng
Cổng bị từ chối tcp.flags.reset == 1 Máy đích trả RST cho cổng đóng
Lệnh FTP ftp.request.command == "USER" || ftp.request.command == "PASS" Tài khoản, mật khẩu gửi dạng rõ
Yêu cầu HTTP http.request Phương thức, URL, host
DNS dns Tên miền được truy vấn
DNS thất bại dns.flags.rcode == 3 NXDOMAIN: tên miền không tồn tại
Trừ một IP !(ip.addr == 192.168.56.1) Loại nhiễu để nhìn rõ hơn

🧠 Lưu ý: Display filter (lọc khi xem) khác capture filter (lọc khi bắt, ví dụ host 192.168.56.30 ở bước 1). Capture filter đã loại gói thì không lấy lại được; display filter chỉ ẩn, gói vẫn còn trong tệp.

Bước 5. Tìm quét cổng

Dùng filter SYN ở trên. Sắp xếp theo cột Destination Port hoặc mở Statistics → Conversations → TCP để thấy cùng một IP nguồn tới hàng trăm cổng đích. Đặc trưng của SYN scan là: gửi SYN, nhận SYN-ACK (cổng mở) hoặc RST (cổng đóng), rồi không hoàn tất bắt tay ba bước.

Ghi lại: IP nguồn, khoảng thời gian, số cổng, danh sách cổng mở (những cổng có SYN-ACK).

Bước 6. Tìm mật khẩu gửi dạng rõ

Dùng filter ftp. Chuột phải vào một gói FTP, chọn Follow → TCP Stream. Bạn sẽ thấy toàn bộ phiên dạng văn bản, gồm USER và PASS. Đây là lý do FTP và Telnet không an toàn và nên thay bằng SFTP, SSH (Bài 49).

Ghi lại: tài khoản thấy được, giao thức, rủi ro, và biện pháp khắc phục (tắt FTP, dùng SFTP, đổi mật khẩu đã lộ). Khi báo cáo trong đời thật, che mật khẩu trong tài liệu, không dán nguyên văn.

Bước 7. Xem DNS và xuất đối tượng

  • Lọc dns rồi nhìn cột Info: có tên miền lạ, quá dài, hoặc nhiều truy vấn NXDOMAIN liên tiếp không? Đó là dấu hiệu của DGA (tên miền sinh tự động) hoặc DNS tunneling. Trong lab này, truy vấn tên miền không tồn tại ở bước 2 sẽ cho một dòng NXDOMAIN để bạn làm quen.
  • Với HTTP, vào File → Export Objects → HTTP để xem các tệp đã được tải trong lưu lượng (nếu có). Đây là cách lấy lại tệp bị truyền từ pcap, và cũng là lý do pcap cần bảo quản chặt.

Bước 8. Nhận ra kênh điều khiển (C2) và giới hạn của mã hóa

Beaconing là khi một máy kết nối đều đặn theo chu kỳ tới một IP lạ (ví dụ mỗi 60 giây). Trong Wireshark, bạn có thể dùng Statistics → I/O Graphs để thấy các "nhịp" đều nhau, hoặc lọc theo cặp IP và xem thời điểm từng gói. Lab này không tạo C2 thật, nhưng hãy ghi nhớ cách nhận biết.

Nếu lưu lượng dùng TLS (HTTPS), bạn không thấy nội dung, chỉ thấy metadata: IP, cổng, thời gian, lượng dữ liệu, tên máy chủ trong phần mở đầu bắt tay (SNI, nếu không bị mã hóa), thông tin chứng chỉ. Lọc tls.handshake.type == 1 để xem các gói ClientHello. Đây là lý do NetFlow và log vẫn cần thiết (Bài 83).

Bước 9. Ghi kết luận

Điền bảng ngắn, giống một mục trong báo cáo điều tra:

Phát hiệnBằng chứng (filter, số gói)Mức chắc chắnHành động đề xuất
Quét cổng từ 192.168.56.20 Filter SYN, số cổng chạm tới Cao Chặn hoặc điều tra máy nguồn
FTP gửi mật khẩu rõ Follow TCP Stream, gói số... Cao Tắt FTP, dùng SFTP, đổi mật khẩu
Truy vấn NXDOMAIN Filter dns.flags.rcode == 3 Thấp: có thể do lab Theo dõi, không kết luận vội

Phân biệt rõ sự kiện (thấy trong gói) và diễn giải (suy đoán ý đồ), như đã học ở Bài 84.

🛠️ Lỗi thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Không bắt được gói nào Sai card mạng, thiếu quyền Kiểm tra ip a, chạy bằng sudo
Tệp pcap rất nhỏ hoặc trống Capture filter sai IP Kiểm tra lại IP trong lệnh tcpdump
Không thấy lệnh FTP FTP dùng TLS, hoặc dịch vụ ở cổng khác Dùng FTP thường trong lab, hoặc chọn Decode As
Filter bị tô đỏ Sai cú pháp Xem gợi ý màu: xanh là hợp lệ, đỏ là lỗi
Không đọc được nội dung HTTPS Lưu lượng đã mã hóa Chỉ phân tích metadata; không cố giải mã khi không có khóa hợp pháp

🧹 Dọn dẹp

  • Lưu lab87.pcap, lab87.pcap.sha256 và ghi chú; xóa tệp pcap khi không cần vì có thể chứa mật khẩu.
  • Hoàn nguyên snapshot của máy target; không để máy cố ý có lỗ hổng chạy lâu.

📘 Nối lý thuyết với lab

Khái niệmTrong lab
Packet capture tcpdump, Wireshark ghi gói tin ra pcap
Capture filter và display filter host ... khi bắt; ftp, dns khi xem
Quét cổng Nhiều SYN tới nhiều cổng, SYN-ACK và RST
Giao thức không an toàn FTP gửi mật khẩu rõ
DNS bất thường NXDOMAIN, tên miền dài
Bảo quản bằng chứng Hash tệp gốc, làm việc trên bản sao (Bài 84)
Hạn chế của mã hóa TLS chỉ cho thấy metadata

🎯 Mẹo làm bài

"Xem nội dung gói tin chi tiết" → packet capture (Wireshark, tcpdump). "Nhiều SYN tới nhiều cổng" → quét cổng. "Tài khoản đọc được trong lưu lượng" → giao thức không mã hóa (FTP, Telnet, HTTP). "Lọc khi bắt hay khi xem?" → capture filter là khi bắt, display filter là khi xem. "Kết nối đều đặn tới IP lạ" → beaconing, nghi C2. "Rất nhiều NXDOMAIN, tên miền ngẫu nhiên" → DGA. "Dữ liệu lọt qua DNS" → DNS tunneling. "Bắt gói tin ở đâu thấy lưu lượng?" → SPAN hoặc TAP. "Phân tích pcap thế nào để giữ bằng chứng?" → hash tệp gốc, làm trên bản sao.

📌 Tóm tắt nhanh

  • Bắt gói tin ra pcap, hash tệp gốc, phân tích trên bản sao.
  • Đi từ tổng quan (Protocol Hierarchy, Conversations) đến chi tiết (display filter, Follow TCP Stream).
  • Quét cổng, mật khẩu rõ, DNS bất thường và beaconing là bốn mẫu hình cơ bản.
  • TLS che nội dung; vẫn có metadata để phân tích.
  • Kết luận cần bằng chứng, mức chắc chắn và hành động đề xuất; pcap có thể chứa dữ liệu nhạy cảm nên phải kiểm soát truy cập.

📝 Bài tập đánh giá

Tự chọn đáp án cho từng câu, rồi đối chiếu với phần đáp án ở cuối bài.

Câu 1. Trong Wireshark thấy một IP gửi gói SYN tới hàng trăm cổng khác nhau của một máy chủ trong vài giây, phần lớn nhận RST. Đây là dấu hiệu của gì?

  • A. Sao lưu dữ liệu định kỳ
  • B. Quét cổng (port scan)
  • C. Cập nhật phần mềm
  • D. Đăng nhập VPN

Câu 2. Sự khác nhau giữa capture filter và display filter là gì?

  • A. Capture filter chỉ dùng cho HTTPS
  • B. Hai loại hoàn toàn giống nhau
  • C. Display filter loại bỏ vĩnh viễn gói khỏi tệp
  • D. Capture filter quyết định gói nào được ghi lại khi bắt; display filter chỉ ẩn hoặc hiện gói trong tệp đã có

Câu 3. Trong tệp pcap thấy rõ tài khoản và mật khẩu của một phiên đăng nhập. Nhiều khả năng nhất giao thức đó là gì?

  • A. SSH
  • B. FTP hoặc Telnet không mã hóa
  • C. HTTPS với TLS
  • D. IPsec

Câu 4. Một máy nội bộ kết nối tới một IP lạ đúng mỗi 60 giây, gửi gói nhỏ và đều đặn suốt nhiều giờ. Nhận định hợp lý nhất?

  • A. Có thể là beaconing tới máy chủ điều khiển, cần điều tra thêm
  • B. Chắc chắn là lưu lượng bình thường
  • C. Do màn hình bị khóa
  • D. Do firewall hỏng

Câu 5. Vì sao cần tính hash tệp pcap gốc và phân tích trên bản sao?

  • A. Để nén tệp nhỏ hơn
  • B. Để Wireshark chạy nhanh hơn
  • C. Để chứng minh tệp gốc không bị thay đổi và giữ giá trị bằng chứng
  • D. Để giải mã nội dung TLS

👉 Đáp án

Câu 1: B — Nhiều SYN tới nhiều cổng, nhận RST ở cổng đóng, là đặc trưng của quét cổng.

Câu 2: D — Capture filter lọc lúc bắt (gói bị loại không lấy lại được); display filter chỉ ẩn hoặc hiện trong tệp đã có.

Câu 3: B — FTP và Telnet truyền tài khoản, mật khẩu dạng rõ; SSH, HTTPS, IPsec thì mã hóa.

Câu 4: A — Kết nối đều đặn theo chu kỳ tới IP lạ gợi ý beaconing, cần ghép thêm log và NetFlow.

Câu 5: C — Hash chứng minh tệp gốc không đổi; phân tích trên bản sao để bảo toàn bằng chứng.


📚 Bài viết thuộc khóa học CompTIA Security+ của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
Bài 86: (Lab) Quét lỗ hổng bằng Greenbone (OpenVAS) và lập báo cáo Mục lục khóa học CompTIA Security+ Bài 88: (Lab) Diễn tập ứng phó sự cố ransomware theo tình huống