CHƯƠNG 4 PHÂN TÍCH DỮ LIỆU
4.1.4 Phân tích NSM với Tcpdump
Tcpdump là một công cụ bắt và phân tích gói tin tiêu chuẩn trong môi trường Unix, thực hiện phân tích gói tin bằng dòng lệnh. Công cụ này rất hữu ích vì giúp người dùng luôn lấy được dữ liệu khi cần mà không có bất kỳ phiền phức nào. Điều này làm cho tcpdump là công cụ lý tưởng để xem xét các gói tin hay luồng dữ liệu trao đổi. Nhược điểm ở đây cũng chính là sự đơn giản của nó, tức là thiếu các tính năng phân tích bổ trợ như môi trường làm việc đồ họa giống Wireshark. Đồng thời không có khái niệm về trạng thái cũng như khả năng diễn dịch các giao thức ở tầng ứng dụng.
Phần này sẽ mô tả một số kiến thức cơ bản cần khi sử dụng tcpdump. Bắt đầu là khả năng bắt gói tin trực tiếp từ đường truyền với việc chạy trực tiếp tcpdump không cần tham số, tương đương với việc chạy tcpdump để bắt gói tin từ giao diện mạng đánh số thứ tự thấp nhất. Tcpdump mô tả mỗi gói tin bằng cách hiển thị một dòng các thông tin tóm lược ra màn hình. Nếu sử dụng tham số
-i, sẽ chỉ ra giao diện mạng cần bắt gói tin, và tham số -nn để tắt phân giải tên giao thức và host. Khi bắt gói tin, tốt nhất là càng che giấu (stealthy) càng tốt. Điều này là để giảm các lưu lượng được tạo thêm không liên quan tới sự kiện đang cần xem xét. Do đó, nên dùng tham số –n
để ngăn chặn việc phân giải tên bởi vì có thể gây ra việc sinh thêm gói tin trên mạng khi thực hiện tiến trình phân giải DNS.
Nếu cần lưu lại gói tin đã bắt giữ để phân tích sau đó, có thể sử dụng tham số -w để chỉ ra tên tệp cần lưu. Ví dụ câu lệnh tcpdump như sau:
sudo tcpdump –nni eth1 –w packets.pcap
Hình 4.17 Đọc gói tin từ một tệp với tcpdump
Dữ liệu đầu ra của tcpdump mặc định đưa ra một số thông tin cơ bản về mỗi gói tin. Định dạng đầu ra có thể khác nhau tùy thuộc giao thức đang sử dụng, nhưng định dạng phổ biến nhất là:
TCP:
[Timestamp] [Layer 3 Protocol] [Source IP].[Source Port] > [Destination IP].[Destination Port]: [TCP Flags], [TCP Sequence Number], [TCP Acknowledgement Number], [TCP Windows Size], [Data Length]
UDP:
[Timestamp] [Layer 3 Protocol] [Source IP].[Source Port] > [Destination IP].[Destination Port]: [Layer 4 Protocol], [Data Length]
Có thể yêu cầu tcpdump hiển thị thêm thông tin trong phần tóm lược bằng cách thêm tham số
“-v”. Số lượng thông tin thêm vào tỷ lệ với số tham số v được thêm, nhiều nhất là 3. Hình 4.18 thể hiện cùng gói tin như trên nhưng với tham số –vvv.
Hình 4.18 Đọc gói tin với nhiều thông tin hơn
Các dữ liệu này rất hữu dụng nhưng chúng vẫn chưa mô tả hoàn toàn đầy đủ thông tin. Để hiển thị tất cả thông tin về gói tin cần chạy tcpdump với tham số -x, các thông tin được hiển thị dưới dạng hệ cơ số 16 (xem Hình 4.19).
Hình 4.19 Xem đầy đủ các gói tin dưới dạng hệ cơ số 16
Một cách khác là hiển thị các gói tin dưới dạng ASCII, với tham số –A (Hình 4.20).
Hình 4.20 Xem đầy đủ các gói tin dưới dạng ASCII
Một tham số hữu ích khác là –X, được dung để hiển thị gói tin dưới cả 2 dạng hệ cơ số 16 và ASCII cạnh nhau (Hình 4.21).
Hình 4.21 Xem đầy đủ các gói tin dưới dạng ASCII và hệ cơ số 16
Trong nhiều trường hợp phải làm việc với các tệp tin PCAP lớn hơn, cần phải sử dụng các bộ lọc để chỉ hiện thị các dữ liệu cần xem xét, hoặc lọc các dữ liệu không có giá trị. Tcpdump sử dụng định dạng BPF (Berkeley Packet Filter). Có thể gọi bộ lọc bằng cách thêm vào cuối câu lệnh, đặt trong dấu ngoặc đơn cho dễ nhìn. Ví dụ nếu chỉ muốn xem các gói tin với cổng đích TCP là 8080, có thể gọi lệnh sau:
tcpdump -nnr packets.pcap 'tcp dst cổng 8080'
Hoặc sử dụng tham số -w để tạo tệp tin mới chỉ chứa các gói tin phù hợp với bộ lọc này: tcpdump -nnr packets.pcap 'tcp dst cổng 8080' -w packets_tcp8080.pcap
Trường hợp cần làm việc với một số lượng lớn các tham số tùy chọn khi phân tích các gói tin bắt giữ, để dễ dàng cho việc chỉnh sửa, tcpdump cho phép sử dụng tham số -F để xác định một tệp tin lọc chứa các tham số BPF.
Ngoài ra, để biết thêm các cách sử dụng tham số khác, có thể tham khảo tại trang web http://www.tcpdump.org. Hoặc tham khảo thêm công cụ Tshark tương tự tcpdump nhưng có thêm một số tính năng hữu ích như thống kê và lọc theo giao thức tầng ứng dụng.