Cách chụp và phân tích các gói bằng ví dụ với Tcpdump

Cach Chup Va Phan Tich Cac Goi Bang Vi Du Voi Tcpdump



Tcpdump là một công cụ phân tích mạng mạnh mẽ được sử dụng để phân tích lưu lượng mạng trong hệ thống Linux và macOS. Quản trị viên mạng sử dụng tcpdump để đánh hơi, thu thập và phân tích các gói TCP/IP trên mạng. Nó sử dụng thư viện “libpcap” giúp nắm bắt lưu lượng mạng một cách hiệu quả. Ngoài ra, tcpdump còn giúp khắc phục sự cố mạng và giám sát các hoạt động mạng theo định kỳ. Công cụ này lưu trữ dữ liệu đã chụp trong tệp “pcap”. Các tệp này được phân tích sâu hơn bằng công cụ phân tích gói TCP/IP như Wireshark hoặc thông qua một công cụ dòng lệnh khác.

Trong hướng dẫn này, chúng tôi sẽ trình bày cách cài đặt tcpdump trên hệ thống Linux cũng như cách thu thập và phân tích các gói TCP/IP bằng tcpdump.

Cách cài đặt Tcpdump

Tcpdump được cài đặt sẵn trên nhiều bản phân phối Linux. Nhưng nếu nó chưa được cài đặt trên hệ thống của bạn, bạn có thể cài đặt tcpdump trên hệ thống Linux của mình. Để cài đặt tcpdump trên hệ thống Ubuntu 22.04, hãy sử dụng lệnh sau:







$ sudo apt cài đặt tcpdump

Để cài đặt tcpdump trên Fedora/CentOS, hãy sử dụng lệnh sau:



$ sudo dnf cài đặt tcpdump

Cách chụp các gói bằng lệnh Tcpdump

Để chụp các gói bằng tcpdump, hãy khởi chạy thiết bị đầu cuối với các đặc quyền sudo bằng cách sử dụng “Ctrl+Alt+t”. Công cụ này bao gồm các tùy chọn và bộ lọc khác nhau để thu thập các gói TCP/IP. Nếu bạn muốn chụp tất cả các gói đang chạy của giao diện mạng hiện tại hoặc mặc định, hãy sử dụng lệnh “tcpdump” mà không cần bất kỳ tùy chọn nào.



$ sudo tcpdump

Lệnh đã cho sẽ ghi lại các gói của giao diện mạng mặc định trong hệ thống của bạn.





Khi kết thúc quá trình thực hiện lệnh này, tất cả số lượng gói đã thu và lọc sẽ được hiển thị trên thiết bị đầu cuối.



Hãy hiểu đầu ra.

Tcpdump cho phép phân tích các tiêu đề gói TCP/IP. Nó hiển thị một dòng cho mỗi gói và lệnh tiếp tục chạy cho đến khi bạn nhấn “Ctrl+C” để dừng nó.

Mỗi dòng được cung cấp bởi tcpdump chứa các chi tiết sau:

  • Dấu thời gian Unix (ví dụ: 02:28:57.839523)
  • Giao thức (IP)
  • Tên máy chủ nguồn hoặc IP và số cổng
  • Tên máy chủ đích hoặc IP và số cổng
  • Cờ TCP (ví dụ: Cờ [F.]) biểu thị trạng thái kết nối với các giá trị như S (SYN), F (FIN),. (ACK), P (ĐẨY), R (RST)
  • Số thứ tự của dữ liệu trong gói (ví dụ: seq 5829:6820)
  • Số xác nhận (ví dụ: ack 1016)
  • Kích thước cửa sổ (ví dụ: win 65535) biểu thị các byte có sẵn trong bộ đệm nhận, theo sau là các tùy chọn TCP
  • Độ dài của tải trọng dữ liệu (ví dụ: độ dài 991)

Để liệt kê tất cả các giao diện mạng danh sách trong hệ thống của bạn, hãy sử dụng lệnh “tcpdump” với tùy chọn “-D”.

$ sudo tcpdump -D

hoặc

$ tcpdump --giao diện danh sách

Lệnh này liệt kê tất cả các giao diện mạng được kết nối hoặc chạy trên hệ thống Linux của bạn.

Chụp các gói của giao diện mạng được chỉ định

Nếu bạn muốn chụp các gói TCP/IP đi qua một giao diện cụ thể, hãy sử dụng cờ “-i” cùng với lệnh “tcpdump” và chỉ định tên giao diện mạng.

$ sudo tcpdump -i lo

Lệnh đã cho sẽ nắm bắt lưu lượng truy cập tại giao diện “lo”. Nếu bạn muốn hiển thị thông tin dài dòng hoặc chi tiết về gói, hãy sử dụng cờ “-v”. Để in chi tiết toàn diện hơn, hãy sử dụng cờ “-vv” với lệnh “tcpdump”. Việc sử dụng và phân tích thường xuyên góp phần duy trì môi trường mạng mạnh mẽ và an toàn.

Tương tự, bạn có thể nắm bắt lưu lượng ở bất kỳ giao diện nào bằng lệnh sau:

$ sudo tcpdump -i bất kỳ

Chụp các gói bằng một cổng cụ thể

Bạn có thể chụp và lọc các gói bằng cách chỉ định tên giao diện và số cổng. Ví dụ: để chụp các gói mạng đi qua giao diện “enp0s3” bằng cổng 22, hãy sử dụng lệnh sau:

$ tcpdump -i enp0s3 cổng 22

Lệnh trước đó sẽ ghi lại tất cả các gói đang truyền từ giao diện “enp0s3”.

Chụp các gói giới hạn bằng Tcpdump

Bạn có thể sử dụng cờ “-c” với lệnh “tcpdump” để chụp một số gói được chỉ định. Ví dụ: để chụp bốn gói ở giao diện “enp0s3”, hãy sử dụng lệnh sau:

$ tcpdump -i enp0s3 -c 4

Thay thế tên giao diện bằng hệ thống của bạn.

Các lệnh Tcpdump hữu ích để nắm bắt lưu lượng mạng

Sau đây, chúng tôi đã liệt kê một số lệnh “tcpdump” hữu ích sẽ giúp bạn nắm bắt và lọc lưu lượng mạng hoặc gói một cách hiệu quả:

Sử dụng lệnh “tcpdump”, bạn có thể chụp các gói của giao diện có IP đích hoặc IP nguồn được xác định.

$ tcpdump -i {tên giao diện} dst {destination-ip}

Bạn có thể chụp các gói có kích thước ảnh chụp nhanh là 65535 byte, khác với kích thước mặc định là 262144 byte. Trong các phiên bản cũ hơn của tcpdump, kích thước chụp được giới hạn ở 68 hoặc 96 byte.

$ tcpdump -i enp0s3 -s 65535

Cách lưu các gói đã chụp vào một tệp

Nếu bạn muốn lưu dữ liệu đã ghi vào một tệp để phân tích thêm, bạn có thể thực hiện. Nó nắm bắt lưu lượng truy cập tại một giao diện được chỉ định và sau đó lưu nó vào tệp “.pcap”. Sử dụng lệnh sau để lưu trữ dữ liệu đã chụp vào một tệp:

$ tcpdump -i -s 65535 -w .pcap

Ví dụ: chúng tôi có giao diện “enps03”. Lưu dữ liệu đã chụp này vào tệp sau:

$ sudo tcpdump -i enps03 -w dump.pcap

Trong tương lai, bạn có thể đọc tệp đã ghi này bằng Wireshark hoặc các công cụ phân tích mạng khác. Vì vậy, nếu bạn muốn sử dụng Wireshark để phân tích các gói, hãy sử dụng đối số “-w” và lưu nó vào tệp “.pcap”.

Phần kết luận

Trong hướng dẫn này, chúng tôi đã trình bày cách thu thập và phân tích các gói bằng tcpdump với sự trợ giúp của các ví dụ khác nhau. Chúng tôi cũng đã học cách lưu lưu lượng truy cập đã ghi vào tệp “.pcap” mà bạn có thể xem và phân tích bằng Wireshark và các công cụ phân tích mạng khác.