Bắt các gói tin bằng Tcpdump và phân tích chúng bằng Wireshark trên Ubuntu

theanh

Administrator
Nhân viên
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách phân tích các gói mạng trên Linux. Tôi sẽ sử dụng Công cụ Tcpdump và Wireshark. Hướng dẫn này sử dụng Ubuntu làm HĐH, nhưng cũng có thể áp dụng cho các bản phân phối Linux khác.

Tại sao bạn cần Tcpdump?​

Một câu hỏi hiển nhiên có thể nảy sinh trong đầu là tại sao lại quan tâm đến Tcpdump khi bạn có thể làm hầu hết mọi thứ với Wireshark. Vâng, đây là câu trả lời cho điều này: Đôi khi, sử dụng Tcpdump để bắt gói thuận tiện hơn so với Wireshark. Ví dụ: nếu máy đích mà bạn đang bắt gói là máy từ xa không cài đặt Wireshark hoặc chỉ là máy từ xa không có giao diện, trong cả hai trường hợp, Tcpdump đều rất tiện dụng. Để xem các tùy chọn khác nhau có thể sử dụng với Tcpdump, hãy tìm kiếm các trang hướng dẫn.

Tcpdump là gì?​

Tcpdump là một giải pháp thay thế dòng lệnh cho Wireshark. Nó phục vụ cùng mục đích như Wireshark, đó là thu thập và phân tích lưu lượng truy cập. Tcpdump là một ứng dụng riêng biệt và không nên coi là giao diện dòng lệnh Wireshark. Vì nó dựa trên giao diện dòng lệnh nên không dễ xử lý như Wireshark. Người dùng mới có thể thấy khó khăn lúc đầu khi họ bắt đầu sử dụng và có thể thấy nhiều lệnh và cú pháp khó nhớ.

Tóm tắt hướng dẫn này​

Bây giờ chúng ta hãy chuyển sang mục đích chính của hướng dẫn này. Trong hướng dẫn này, chúng ta sẽ xem cách chúng ta có thể tương tác Tcpdump với Wireshark. Sau đây chúng tôi sẽ chỉ ra công việc chúng ta sẽ làm trong hướng dẫn này:
  1. Kết nối với máy từ xa (Host 2) bằng SSH.
  2. Ghi lại lưu lượng bằng Tcpdump và lưu Capture.
  3. Gửi tệp Capture đến máy tại chỗ (Host 1) có cài đặt Wireshark.
  4. Sử dụng Wireshark để phân tích phiên Tcpdump đã ghi lại.

Kiểm tra trước khi bay​

Đối với hướng dẫn này, chúng tôi sử dụng hai máy Ubuntu 20.04. Bạn cần tự cấu hình chúng. Cấu hình IP của chúng tôi như sau:

Máy chủ 1 (Máy tại chỗ): 192.168.186.150

Máy chủ 2 (Máy từ xa): 192.168.186.201

Các bước được đề cập trong hướng dẫn này được cho là có thể hoạt động trên bất kỳ hệ thống Linux nào đáp ứng các yêu cầu sau:
  1. Máy chủ tại chỗ (Máy chủ 1) đã cài đặt Wireshark và cấu hình SSH.
  2. Truy cập SSH từ máy chủ tại chỗ (Máy chủ 1) đến máy chủ từ xa (Máy chủ 2).
  3. Tcpdump và SSH được cấu hình trên máy chủ từ xa (Máy chủ 2).
  4. Tài khoản người dùng ‘sudo’ trên Máy chủ 2 để chạy Tcpdump và trên Máy chủ 1 (tùy thuộc vào cách cấu hình Wireshark).

Bắt đầu thôi…​

Để tiến hành tiếp, hãy kết nối từ máy tại chỗ của bạn (Host 1) đến máy từ xa (Host 2) bằng giao thức truy cập SSH. Chúng tôi đã thiết lập kết nối SSH giữa hai máy. Vì vậy, chúng tôi sẽ sử dụng lệnh bên dưới từ thiết bị đầu cuối Host 1 để kết nối với Host 2:

$ ssh ‘user_name’@’IP_of_Host2’

Tại đây, hãy thay thế ‘user_name’ bằng tên người dùng của Host 2 mà chúng tôi đang kết nối đến và ‘IP_of_Host2’ là địa chỉ IP của Host 2. Xem hình ảnh bên dưới để tham khảo:


Bây giờ hãy kiểm tra các giao diện khả dụng trên máy từ xa mà Tcpdump có thể chụp. Để thực hiện lệnh này, hãy sử dụng lệnh:

$ tcpdump --list-interfaces

Đầu ra mẫu:

1.enp0s3 [Đang hoạt động, Đang chạy]
2.lo [Đang hoạt động, Đang chạy, Vòng lặp]
3.any (Thiết bị giả chụp trên tất cả các giao diện) [Đang hoạt động, Đang chạy]
4.eno1 [Đang hoạt động]
5.bluetooth-monitor (Bluetooth Linux Monitor) [không có]
6.nflog (Giao diện nhật ký bộ lọc mạng Linux (NFLOG)) [không có]
7.nfqueue (Giao diện hàng đợi bộ lọc mạng Linux (NFQUEUE)) [không có]
8.bluetooth0 (Bộ điều hợp Bluetooth số 0) [không có]


Như bạn có thể xem, giao diện ‘enpos3’ đã hoạt động. Vì vậy, hãy đặt nó làm giao diện mục tiêu và chạy lệnh tcpdump tại đây. Khi bạn cảm thấy mình đã bắt đủ gói tin, chỉ cần nhấn ‘Ctrl+c’ để hoàn tất việc bắt gói tin. Lệnh là:

$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap


Trong lệnh trên, chúng tôi đã sử dụng các tùy chọn sau với Tcpdump:
  1. -s: Các phiên bản cũ hơn của Tcpdump cắt các gói tin thành 68 hoặc 96 byte. Tùy chọn ‘-s’ được sử dụng để bắt các gói tin có độ dài đầy đủ.
  2. -i: Tùy chọn này chọn giao diện để lắng nghe.
  3. -w: Tùy chọn này lưu các gói tin thô đã bắt được vào một tệp thay vì hiển thị chúng trên thiết bị đầu cuối.
Lưu lượng đã bắt được được lưu trữ trong tệp có tên 'my_remote_capture.pcap'. Bây giờ chúng ta sẽ chuyển tệp này đến Host 1 để phân tích bằng Wireshark. Để chuyển tệp, chúng ta sử dụng lệnh 'scp'. Một lần nữa, chúng ta đã cấu hình 'scp' để hoạt động giữa hai máy. Cú pháp lệnh được hiển thị như bên dưới:

$ scp my_remote_capture.pcap 'username'@'IP_of_remote_machine':

Ở đây 'username' là tên người dùng trên Máy chủ 1 và 'IP_of_remote_machine' cũng là IP của Máy chủ 1.


Trên máy tại chỗ (Máy chủ 1), hãy kiểm tra xem bạn đã nhận được tệp chưa. Trong trường hợp của chúng tôi, chúng tôi đã nhận được tệp thành công và chúng tôi sẽ mở tệp đó bằng Wireshark như được hiển thị bên dưới:


Đây là ảnh chụp màn hình của tệp Capture từ Host 1:


Phân tích tệp Capture​

Chúng ta hãy áp dụng bộ lọc hiển thị cho tệp trên. Vì chúng tôi đã kết nối với Host 2 bằng SSH, nên sẽ có một số dấu vết của giao thức SSH. Trên trường văn bản tương ứng với bộ lọc hiển thị, nhập ‘ssh’:


Trong hình trên, chúng ta chỉ có thể thấy các gói tin có giao thức ‘SSH’.

Kết thúc…​

Xin chúc mừng, cuối cùng chúng ta đã trình diễn được cách thực hiện Chụp từ xa trên máy. Chúng ta đã thấy cách kết hợp Tcpdump với Wireshark.
 
Back
Bên trên