Wireshark là Phần mềm Nguồn mở và Miễn phí (FOSS) và được phát triển bởi một cộng đồng các nhà phát triển nhiệt tình. Wireshark (Trước đây là Ethereal) được sử dụng để thu thập và điều tra lưu lượng truy cập trên mạng. Với Wireshark, người ta có thể thấy những gì đang diễn ra trên mạng của họ: Bạn có thể thấy lưu lượng truy cập đến từ đâu và đi đến đâu. Nếu bạn đang làm việc trong môi trường sản xuất, bạn sẽ nhận được rất nhiều lưu lượng truy cập. Sẽ rất cồng kềnh khi kiểm tra lưu lượng truy cập này nếu không biết về các chức năng lọc của Wireshark. Sử dụng bộ lọc, bạn có thể thấy chính xác loại lưu lượng truy cập mà bạn muốn và mọi thứ khác sẽ bị xóa khỏi cảnh.
Về cơ bản, có hai loại bộ lọc trong Wireshark: Bộ lọc chụp và Bộ lọc hiển thị. Có sự khác biệt giữa cú pháp của hai loại và cách chúng được áp dụng.
Bộ lọc chụp được áp dụng trước khi bắt đầu hoạt động chụp. Theo cách này, chỉ lưu lượng mà bạn muốn xem được lưu trữ. Bộ lọc này không thể thay đổi sau khi bắt đầu hoạt động chụp. Mặt khác, bộ lọc hiển thị được áp dụng cho tất cả các gói tin đã chụp. Bộ lọc này có thể bị hủy và thay đổi sau đó (Có thể áp dụng trong khi đang chụp).
Trong bộ lọc hiển thị, hoạt động chụp thực sự được lưu trữ trong bộ đệm theo dõi. Do đó, nó chỉ ẩn lưu lượng truy cập không quan trọng với bạn và chỉ hiển thị lưu lượng truy cập mà bạn quan tâm.
Bộ lọc sẽ được áp dụng cho giao diện đã chọn. Một cách khác là sử dụng menu Thu thập và chọn menu phụ Tùy chọn (1).
Tương đương, bạn cũng có thể nhấp vào biểu tượng bánh răng (2), trong cả hai trường hợp, cửa sổ bên dưới sẽ nhắc:
Trong hộp văn bản có nhãn là 'Nhập bộ lọc thu thập', chúng ta có thể viết bộ lọc thu thập đầu tiên của mình. Nhưng nếu muốn, bạn có thể sử dụng biểu tượng dấu trang để sử dụng các bộ lọc được tạo sẵn.
Bộ lọc thu thập được viết theo định dạng bộ lọc libpcap. Chúng được xây dựng từ một chuỗi các biểu thức nguyên thủy. Các biểu thức này được nối với nhau bằng các phép nối (và/hoặc) và có thể bắt đầu bằng 'không'. Sau đây là cú pháp:
Để minh họa cho điều này, giả sử chúng ta muốn thu thập lưu lượng UDP từ hoặc đến máy chủ 192.168.18.161. Biểu thức bộ lọc capture, trong trường hợp này, sẽ là:
udp và host 192.168.18.161
Một số nguyên hàm để sử dụng trong biểu thức trên có thể là:
tcp và tcp.port == 80
Một cách khác là sử dụng biểu thức:
tcp && tcp.port == 80
Dưới đây, chúng tôi đã liệt kê các biểu thức boolean thường dùng trong bộ lọc Hiển thị:
1. == or eq (Phép toán bằng)
2. && or and (Phép toán And)
3. || (double pipe) or or (Or operation)
Chúng ta sẽ đề cập đến những gì?
Trong hướng dẫn này, chúng ta sẽ khám phá cách tạo và áp dụng hiệu quả các bộ lọc trong Wireshark. Hãy bắt đầu ngay bây giờ.Giới thiệu về Bộ lọc Wireshark
Bộ lọc Wireshark là tất cả về việc đơn giản hóa tìm kiếm gói tin của bạn. Ví dụ, nếu bạn chỉ muốn xem lưu lượng TCP hoặc các gói tin từ một địa chỉ IP cụ thể, bạn cần áp dụng các bộ lọc thích hợp trong thanh bộ lọc. Wireshark không hiểu các câu đơn giản như “lọc lưu lượng TCP” hoặc “Hiển thị cho tôi lưu lượng từ đích X”. Vì vậy, bạn cần tìm hiểu một số cú pháp và quy tắc lạ mắt để áp dụng các bộ lọc này.Về cơ bản, có hai loại bộ lọc trong Wireshark: Bộ lọc chụp và Bộ lọc hiển thị. Có sự khác biệt giữa cú pháp của hai loại và cách chúng được áp dụng.
Bộ lọc chụp được áp dụng trước khi bắt đầu hoạt động chụp. Theo cách này, chỉ lưu lượng mà bạn muốn xem được lưu trữ. Bộ lọc này không thể thay đổi sau khi bắt đầu hoạt động chụp. Mặt khác, bộ lọc hiển thị được áp dụng cho tất cả các gói tin đã chụp. Bộ lọc này có thể bị hủy và thay đổi sau đó (Có thể áp dụng trong khi đang chụp).
Trong bộ lọc hiển thị, hoạt động chụp thực sự được lưu trữ trong bộ đệm theo dõi. Do đó, nó chỉ ẩn lưu lượng truy cập không quan trọng với bạn và chỉ hiển thị lưu lượng truy cập mà bạn quan tâm.
Viết Bộ lọc thu thập
Trước tiên, chúng ta hãy bắt đầu với bộ lọc thu thập. Bạn có thể tìm thấy bộ lọc thu thập trên màn hình đầu tiên sau khi khởi chạy Wireshark:Bộ lọc sẽ được áp dụng cho giao diện đã chọn. Một cách khác là sử dụng menu Thu thập và chọn menu phụ Tùy chọn (1).
Tương đương, bạn cũng có thể nhấp vào biểu tượng bánh răng (2), trong cả hai trường hợp, cửa sổ bên dưới sẽ nhắc:
Trong hộp văn bản có nhãn là 'Nhập bộ lọc thu thập', chúng ta có thể viết bộ lọc thu thập đầu tiên của mình. Nhưng nếu muốn, bạn có thể sử dụng biểu tượng dấu trang để sử dụng các bộ lọc được tạo sẵn.
Bộ lọc thu thập được viết theo định dạng bộ lọc libpcap. Chúng được xây dựng từ một chuỗi các biểu thức nguyên thủy. Các biểu thức này được nối với nhau bằng các phép nối (và/hoặc) và có thể bắt đầu bằng 'không'. Sau đây là cú pháp:
Mã:
[không] nguyên thủy [và|hoặc [không] nguyên thủy ...]
udp và host 192.168.18.161
Một số nguyên hàm để sử dụng trong biểu thức trên có thể là:
- [src|dst] host <host>: Được sử dụng để lọc theo địa chỉ IP hoặc tên của máy chủ. Nó có thể đứng trước src|dst để xác định địa chỉ nguồn hoặc đích.
- ether [src|dst] host <ehost>: Được sử dụng để lọc theo địa chỉ máy chủ Ethernet. Nó cũng có thể đứng trước src|dst để xác định địa chỉ nguồn hoặc đích.
- gateway host <host>: Được sử dụng để lọc các gói đã sử dụng host làm gateway.
- [src|dst] net <net> [{mask <mask>}|{len <len>}]: Được sử dụng để lọc theo số mạng. Nó cũng có thể đứng trước src|dst để xác định địa chỉ nguồn hoặc đích.
- [tcp|udp] [src|dst] port <port>: Được sử dụng để lọc theo số cổng TCP và UDP.
Viết Bộ lọc Hiển thị
Để viết bộ lọc hiển thị, một điều bạn cần là kiến thức về toán tử boolean. Đúng vậy, bạn nói đúng, chúng ta đang nói về các phép toán AND, OR và NOT cơ bản. Sử dụng các phép toán này, chúng ta cũng có thể kết hợp nhiều truy vấn bộ lọc thành một. Ví dụ, nếu chúng ta đang tìm kiếm lưu lượng TCP và các gói tin sử dụng cổng 80, chúng ta có thể viết bộ lọc như sau:tcp và tcp.port == 80
Một cách khác là sử dụng biểu thức:
tcp && tcp.port == 80
Dưới đây, chúng tôi đã liệt kê các biểu thức boolean thường dùng trong bộ lọc Hiển thị:
1. == or eq (Phép toán bằng)
2. && or and (Phép toán And)
3. || (double pipe) or or (Or operation)