Trong lĩnh vực công nghệ thông tin, WireShark là phần mềm bắt gói tin hàng đầu được sử dụng trong việc theo dõi, giám sát và phân tích traffic Network. Bài viết này tôi sẽ hướng dẫn sử dụng WireShark toàn tập từ căn bản đến nâng cao: cài đặt, cách bắt gói tin, cách đọc gói tin, cách phân tích gói tin, cách viết Wireshark Expression để filter traffic khi capture hoặc khi phân tích.
Wireshark là gì?
Wireshark là một ứng dụng dùng để bắt (capture), phân tích và xác định các vấn đề liên quan đến network như: rớt gói tin, kết nối chậm, hoặc các truy cập bất thường. Phần mềm này cho phép quản trị viên hiểu sâu hơn các Network Packets đang chạy trên hệ thống, qua đó dễ dàng xác định các nguyên nhân chính xác gây ra lỗi.
Sử dụng WireShark có thể capture các packet trong thời gian thực (real time), lưu trữ chúng lại và phân tích chúng offline. Ngoài ra, nó cũng bao gồm các filter, color coding và nhiều tính năng khác, cho phép người dùng tìm hiểu sâu hơn về lưu lượng mạng cũng như inspect (kiểm tra) các packets.
Ứng dụng được viết bằng ngôn ngữ C và hệ điều hành Cross-platform, ngoài ra còn bao gồm có các bản phân phối Linux, Windows, OS X, FreeBSD, NetBSD và OpenBSD. Đây là một phần mềm mã nguồn mở, được cấp phép GPL do đó được miễn phí sử dụng, tự do chia sẻ và sửa đổi.
Từng được biết đến với cái tên Ethereal, phần mềm được xây dựng bởi Gerald Combs vào năm 1998. Hiện nay, có một tổ chức toàn cầu gồm nhiều chuyên gia mạng, cũng như các Developer phần mềm hàng đầu tham gia cùng The WireShark Team phát triển phần mềm này. Đội ngũ chuyên gia này không ngừng cập nhật các công nghệ và giao thức mới. Phiên bản ổn định nhất hiện nay là 2.2.6 ra mắt ngày 12 tháng 4 năm 2017.
Đây là phần mềm hoàn toàn an toàn để sử dụng. Nhiều cơ quan chính phủ, tập đoàn, tổ chức phi lợi nhuận và tổ chức giáo dục đều sử dụng Wireshark để khắc phục các sự cố, cũng như ứng dụng vào việc giảng dạy. Có thể nói, cách tốt nhất để tìm hiểu về mạng chính là sử dụng để theo dõi các lưu lượng truy cập.
Dĩ nhiên, đây là một công cụ có khả năng dò tìm dữ liệu trong các packet rất mạnh mẽ. Do đó cũng có nhiều câu hỏi được đặt ra xoay quanh tính hợp pháp của nó. Nhiều người dùng cũng như chuyên gia đã nhấn mạnh rằng, chỉ nên sử dụng trên các mạng mà mình có thẩm quyền. Việc dùng Wireshark để xem các packet không được cho phép hoàn toàn không được khuyến khích.
Phần mềm Wireshark dùng để làm gì?
Wireshark là một phần mềm dùng để phân tích và giám sát lưu lượng mạng. Dưới đây là một số chức năng chính của Wireshark:
- Phân tích Gói Tin: Wireshark cho phép bạn theo dõi và phân tích từng gói tin dữ liệu trên mạng. Bạn có thể xem các thông tin chi tiết như nguồn, đích, loại gói tin, dữ liệu payload và nhiều thông tin khác.
- Đánh giá Hiệu suất Mạng: Wireshark cung cấp thông tin về thời gian phản hồi (response time), độ trễ (latency), và các thống kê khác, giúp đánh giá hiệu suất của mạng.
- Phân tích Giao thức: Wireshark hỗ trợ nhiều giao thức mạng khác nhau. Bạn có thể xem và phân tích giao thức HTTP, TCP, UDP, IP, DNS, và nhiều giao thức khác.
- Điều tra Vấn đề Mạng: Khi xảy ra vấn đề mạng, Wireshark là một công cụ mạnh mẽ để phân tích và xác định nguyên nhân của sự cố.
- Bảo mật Mạng: Wireshark có thể được sử dụng để phát hiện các hoạt động độc hại trên mạng. Nó cho phép bạn xem gói tin để phát hiện các tấn công mạng, như phishing hoặc kiểm soát truy cập không được ủy quyền.
- Giáo dục và Học tập: Wireshark là một công cụ hữu ích cho sinh viên, chuyên gia mạng, và người quan tâm đến việc hiểu rõ cách mạng hoạt động. Nó cung cấp một cách thức thực hành để nắm bắt và hiểu các khái niệm mạng.
WireShark hoạt động như thế nào?
WireShark là một công cụ dùng để capture và phân tích các packet. Nó capture các lưu lượng mạng trên mạng cục bộ, sau đó sẽ lưu trữ nó để phân tích offline. Có thể capture các lưu lượng mạng từ các kết nối Ethernet, Bluetooth, Wireless (IEEE.802.11), Token Ring, Frame Relay…
Wireshark cho phép thiết lập filter (bộ lọc) trước khi bắt đầu capture hoặc thậm chí là trong quá trình phân tích. Do đó, ta có thể thu hẹp phạm vi tìm kiếm trong quá trình theo dõi mạng.
Chức năng của Wireshark là gì?
Các dữ liệu capture ở dạng binary được chuyển thành định dạng giúp bạn dễ dàng đọc được. Với hơn 2000 giao thức mạng được hỗ trợ, điều này giúp xác định lưu lượng truy cập đang đi qua hệ thống mạng của bạn.
Với khối lượng lưu lượng khổng lồ truyền hệ thống mạng, các công cụ của Wireshark sẽ giúp lọc các lưu lượng đó ra để phân tích chúng. Bộ capture filter sẽ chỉ thu thập các loại lưu lượng truy cập mà bạn quan tâm. Sau đó, hiển thị chi tiết lưu lượng mà bạn muốn kiểm tra. Module phân tích giao thức mạng cũng cung cấp các công cụ tìm kiếm, các biểu thức và tô màu, giúp dễ phân tích hơn.
Các tính năng nổi bật của phần mềm bắt gói tin Wireshark:
- Hỗ trợ phân tích sâu hàng trăm giao thức và liên tục được cập nhật.
- Live capture và phân tích offline.
- Hoạt động đa nền tảng: Windows, Linux, MacOS, Solaris, FreeBSD, OpenBSD…
- Các gói tin đã capture có thể xem bằng giao diện hoặc sử dụng command line (tshark).
- Display filter mạnh mẽ.
- Hỗ trợ phân tích VoIP chuyên sâu.
- Hỗ trợ read/write nhiều định dạng: tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (compressed and uncompressed), Sniffer® Pro, and NetXray®, Network Instruments Observer, NetScreen snoop, Novell LANalyzer, RADCOM WAN/LAN Analyzer, Shomiti/Finisar Surveyor, Tektronix K12xx, Visual Networks Visual UpTime, WildPackets EtherPeek/TokenPeek/AiroPeek …
- File capture được nén bằng gzip có thể được giải nén “on the fly”.
- Capture dữ liệu từ Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, Frame Relay, FDDI …
- Hỗ trợ decryption của nhiều giao thức như: IPsec, ISAKMP, Kerberos, SNMPv3, SSL/TLS, WEP, and WPA/WPA2.
- Coloring rules cho phép thiết lập màu sắc cho các packet giúp phân tích nhanh và hiệu quả hơn.
- Output có thể export sang XML, PostScript®, CSV, hoặc plain text.
Mục đích sử dụng Wireshark là gì?
Wireshark được sử dụng để chặn và phân tích lưu lượng TLS được mã hóa. Các session key đối xứng được lưu trữ trong trình duyệt. Và với cài đặt trình duyệt thích hợp, quản trị viên có thể load các session key đó và kiểm tra các lưu lượng ở dạng đã được giải mã.
Ứng dụng cũng đi kèm với các công cụ đồ họa để hình dung các số liệu thống kê. Điều này giúp bạn dễ dàng phát hiện các xu hướng chung, cảnh báo các phát hiện để quản lý dễ dàng và hiệu quả hơn.
Có rất nhiều cách dùng Wireshark, trong lĩnh vực giáo dục, nó còn là một công cụ học tập rất hiệu quả. Việc sử dụng Wireshark để bắt và đọc gói tin, xem cách các packet di chuyển, thậm chí đào sâu vào các lớp byte, kiểm tra các header của packet – là một cách để học và dạy người khác về Network. Chính vì thế, đây là một phần không thể thiếu trong các chương trình đào tạo hiện nay.
Ngoài ra, bạn có thể tham khảo thêm về bảo mật mạng qua các bài viết sau:
Các điểm hạn chế của WireShark
Bên cạnh những tính năng hữu ích của WireShark, thì công cụ này cũng có một số điểm hạn chế sau đây mà bạn nên cân nhắc khi sử dụng:
Khả năng xử lý tài nguyên: Đây là một ứng dụng yêu cầu nhiều tài nguyên, đặc biệt khi phải xử lý lưu lượng mạng lớn. Quá trình phân tích gói tin chi tiết có thể tiêu tốn lượng lớn bộ nhớ và tài nguyên CPU, nhất là khi ghi lại hoặc phân tích lưu lượng mạng với tốc độ cao trong thời gian dài. Điều này có thể làm giảm hiệu suất hệ thống hoặc khiến máy tính hoạt động chậm lại.
Độ phức tạp khi sử dụng: Wireshark là công cụ phân tích mạng mạnh mẽ nhưng có giao diện và tính năng phức tạp. Người dùng mới có thể gặp khó khăn trong việc làm quen và khai thác hết các chức năng của công cụ này. Việc nắm vững kiến thức cơ bản về phân tích mạng là cần thiết để tận dụng tối đa Wireshark.
Yêu cầu quyền truy cập mạng: Để sử dụng Wireshark phân tích lưu lượng mạng, người dùng cần có quyền truy cập và điều khiển các giao diện mạng trên hệ thống. Điều này có thể là hạn chế khi sử dụng trong các môi trường công ty hoặc hệ thống mạng có quản lý nghiêm ngặt.
Không hỗ trợ phân tích mã hóa SSL/TLS: Wireshark không thể giải mã và phân tích dữ liệu từ các kết nối sử dụng giao thức mã hóa SSL/TLS, do đặc điểm bảo mật của các giao thức này và giới hạn của công cụ trong việc giải mã các kết nối mã hóa.
Khả năng xử lý tài nguyên hạn chế của Wireshark, đặc biệt khi phân tích lưu lượng mạng lớn, có thể ảnh hưởng đến hiệu suất phân tích và khiến quá trình chậm chạp. Để khắc phục điều này, bạn có thể cân nhắc sử dụng
Tài liệu hướng dẫn sử dụng Wireshark
Có rất nhiều tài liệu hướng dẫn và video hướng dẫn cách sử dụng Wireshark cho từng mục đích cụ thể. Nhưng để nắm được những thông tin và cách thức chuẩn hóa hơn, bạn nên bắt đầu tìm hiểu một số tài liệu chính thức trên trang Wikipedia thay vì các tài liệu Wireshark tiếng Việt. Đôi khi các tài liệu Việt Nam dịch chưa chuẩn xác các thuật ngữ chuyên ngành sẽ gây cho bạn nhiều khó khăn hơn.
Hướng dẫn tải và cài đặt Wireshark
Tải và cài đặt Wireshark tương đối dễ dàng. Phiên bản cơ bản hiện đang hoàn toàn miễn phí.
Đối với Windows
Phần mềm này có hỗ trợ Windows phiên bản 32 bit và 64 bit. Bạn hãy chọn phiên bản chính xác cho hệ điều hành đang sử dụng. Tính đến thời điểm viết thì Wireshark 3.4.5 là phiên bản mới nhất.
Đối với macOS
Bản cài đặt chính thức cho macOS đã được hỗ trợ trên trang chủ, bạn chỉ việc download và mở file .dmg để bắt đầu cài đặt và kéo thả biểu tượng của Wireshark vào thư mục /Applications để hoàn tất.
Đối với Ubuntu
Từ terminal prompt, chạy lệnh sau:
sudo apt-get install wireshark
sudo dpkg-reconfigure Wireshark-common
sudo adduser $USER wireshark
Các lệnh giúp tải package xuống, update package và thêm các đặc quyền cho người dùng để khởi chạy.
Đối với RedHat Fedora
Từ Terminal Prompt, chạy lệnh sau:
sudo dnf install Wireshark-qt
sudo usermod -a -G Wireshark username
Trong đó, dòng lệnh đầu tiên sẽ cài đặt GUI và phiên bản CLI của WireShark. Dòng lệnh thứ hai sẽ thêm quyền sử dụng cho nó, thay username thành user hiện tại bạn đang sử dụng.
Đối với Kali Linux
Hiện tại, Wireshark đã được cài đặt sẵn trong các bản phân phối Kali Linux. Hãy kiểm tra menu ở option “Sniffing & Spoofing” để sử dụng.
Hướng dẫn sử dụng Wireshark
Sử dụng Wireshark để bắt gói tin
Sau khi download và cài đặt, bạn có thể khởi động nó bằng cách double-click vào tên của Network interface trong danh sách phía dưới “Capture” để bắt đầu bắt gói tin trên card mạng đó. Đường biểu diễn phía sau tên Interface thể hiện lưu lượng mạng đang sử dụng.
Sau đó, các packet sẽ bắt đầu hiển thị theo thời gian thực. Wireshark sẽ capture từng packet được gửi đến hoặc đi từ hệ thống của ta.
Nếu chế độ Promiscuous được enable (theo mặc định), bạn cũng có thể xem tất cả các packet khác trên mạng thay vì chỉ các packet được gửi đến network adapter của mình.
Để kiểm tra chế độ Promiscuous, bạn click vào Capture > Options và kiểm tra xem hộp Enable promiscuous mode on all interfaces có được kích hoạt chưa (nằm ở dưới cùng của cửa sổ).
Sau đó, bạn click vào nút Stop màu đỏ (ở góc trên bên trái của cửa sổ – hoặc chọn Capture > Stop) nếu muốn dừng việc capture lại.
Ngoài cách bắt gói tin và sử dụng giao diện như trên, bạn cũng có thể dùng cách bắt gói tin bằng cách sử dụng command line được đề cập ở phần nâng cao phía dưới bài viết.
Giao diện WireShark
Bạn sẽ dành rất nhiều thời gian để thao tác trên giao diện chính của phần mềm này. Đây là nơi liệt kê danh sách các packet đã được capture, parse và thể hiện dưới định dạng mà chúng ta có thể dễ dàng đọc thông tin và phân tích chúng.
Giao diện chính của Wireshark được chia thành 3 phần:
- Packet List: Chứa danh sách toàn bộ packet của file capture hiện tại. Nó thể hiện số thứ tự của gói tin, thời gian mà mà gói tin được bắt, source và destination IP, protocol của packet, chiều dài gói tin và các thông tin tổng quan khác.
- Packet Details: Khi bạn chọn một gói tin ở phần Packet List, thông tin chi tiết của gói tin sẽ được thể hiện ở phần Packet Detail. Các thông tin chi tiết có thể được collapsed hoặc expanded bằng cách click vào mũi tên hình tam giác ở đầu dòng.
- Packet Bytes: Thể hiện packet ở định dạng raw dưới dạng hex hoặc binary và thể hiện cách mà packet được truyền trên đường truyền.
Mở gói tin và lưu gói tin
Để mở gói tin bằng Wireshark, bạn chọn File > Open và tìm đến đường dẫn của file cần mở.
Để lưu gói tin đã capture, bạn click vào File > Save, sau đó chọn đường dẫn để lưu trữ, đặt tên cho file capture và định dạng sẽ lưu.
Cách lọc các gói tin trong phần mềm Wireshark
Hãy khám phá cách sử dụng Wireshark để lọc gói tin. Trong tình huống khi bạn muốn theo dõi lưu lượng truy cập của một ứng dụng thực hiện cuộc gọi điện về nhà, Wireshark có khả năng tạm thời đóng tất cả các ứng dụng khác đang sử dụng mạng, giúp người dùng giảm thiểu lưu lượng truy cập. Tuy nhiên, cần lưu ý rằng bạn sẽ phải xử lý một lượng lớn gói dữ liệu cần được lọc.
Một cách cơ bản để sử dụng Wireshark để lọc là nhập điều kiện vào hộp bộ lọc ở đầu cửa sổ và sau đó nhấp vào Apply hoặc nhấn Enter. Ví dụ, nếu bạn nhập dns vào bộ lọc, chỉ các gói tin DNS sẽ được hiển thị. Wireshark cung cấp chức năng tự động hoàn thành bộ lọc khi bạn bắt đầu nhập.
Ngoài ra, bạn cũng có thể truy cập Analyze > Display Filters để chọn các bộ lọc mặc định của Wireshark hoặc thêm bộ lọc mới và lưu chúng để sử dụng sau này.
Khi muốn xem chi tiết một cuộc trò chuyện TCP giữa máy khách và máy chủ, bạn có thể chuột phải vào một tệp và chọn Follow > TCP Stream. Điều này sẽ hiển thị cuộc trò chuyện TCP đầy đủ. Bạn cũng có thể theo dõi các cuộc trò chuyện của các giao thức khác để hiểu rõ hơn về cách chúng hoạt động.
Sau khi áp dụng bộ lọc, Wireshark sẽ tự động hiển thị các gói tin liên quan đến cuộc trò chuyện, giúp bạn hiểu rõ cách lọc gói tin trong Wireshark.
Cách Color Coding trong Wireshark
Trên máy tính, Wireshark sử dụng màu sắc để đánh dấu các gói tin, giúp người dùng nhanh chóng xác định các loại lưu lượng khi thực hiện truy cập. Các màu sắc mặc định trong Wireshark có các ý nghĩa như sau:
- Màu tím nhạt: Đại diện cho lưu lượng TCP.
- Màu xanh dương nhạt: Biểu thị lưu lượng UDP.
- Màu đen: Chỉ các gói tin có lỗi.
Để hiểu rõ hơn về ý nghĩa cụ thể của từng màu, bạn có thể truy cập mục View > Coloring Rules trong Wireshark. Ngoài ra, người dùng cũng có khả năng tự tùy chỉnh màu sắc theo ý muốn cá nhân thông qua cách thức Color Coding trong Wireshark.
Cách kiểm tra gói tin trong Wireshark
Để kiểm tra gói tin trong máy tính sử dụng Wireshark, bạn bắt đầu bằng cách nhấp chuột vào một gói tin cụ thể. Sau đó, để tạo một bộ lọc, bạn có thể nhấp chuột phải vào bất kỳ chi tiết nào trong gói tin và sử dụng menu con Apply as Filter để tạo bộ lọc dựa trên thông tin đó. Việc tự tạo bộ lọc giúp người dùng tập trung vào các gói tin cụ thể và thuận tiện trong quá trình phân tích dữ liệu mạng.
Phân tích gói tin với Wireshark
Tìm kiếm gói tin (Find Packet)
Để tìm kiếm gói tin, chúng ta có thể sử dụng thanh công cụ Find Packet bằng cách bấm phím Ctrl + F, một hộp thoại mới sẽ xuất hiện nằm giữa thanh Filter và Packet List:
Chúng ta có thể tìm kiếm packet dựa vào:
- Display Filter: Nhập vào một biểu thức filter (expression-based filter), Wireshark sẽ tìm kiếm các gói tin khớp với biểu thức này.
- Hex value: Tìm kiếm dựa trên giá trị Hex.
- String: Tìm kiếm dựa trên chuỗi dữ liệu.
- Regular Expression: Tìm kiếm dựa trên biểu thức Regex.
Options | Ví dụ |
---|---|
Display filter | tcp.src port==80 hoặc ip.src==192.168.1.1 |
Hex | 010108ffff |
String | Quantrilinux.vn hoặc GET / |
Regular Expression | GET .* HTTP |
Wireshark Filter
Filter cho phép bạn lọc ra những packet nào sẽ dùng để phân tích. Sử dụng Wireshark filter bằng cách khai báo một biểu thức để quy định việc thêm vào (inclusion) hoặc loại bỏ (exclusion) các gói tin. Nếu có những gói tin bạn không cần phân tích, có thể viết filter để loại bỏ chúng. Ngược lại, có những gói tin quan trọng bạn muốn phân tích kỹ, có thể viết filter để lọc riêng chúng ra. Có hai loại filter chính:
- Capture Filters: Chỉ định các packet sẽ được capture và quá trình bắt gói tin chỉ capture những packet thỏa điều kiện này.
- Display filters: Áp dụng filter lên các gói tin đã được capture, mục tiêu là để ẩn đi những packet không cần thiết và chỉ thể hiện những packet thỏa điều kiện chỉ định.
Capture Filter và Display Filter sử dụng cấu trúc ngữ pháp khác nhau nên chúng ta sẽ xem xét chi tiết từng loại.
Capture Filter
Được áp dụng trong quá trình bắt gói tin để giới hạn số lượng gói tin sẽ được bắt. Lý do chính để sử dụng filter này nhằm cải thiện performance và giới hạn số lượng dữ liệu capture được chỉ chứa các thông tin chúng ta quan tâm, giúp việc phân tích trở nên hiệu quả hơn. Điều này cực kỳ hữu ích khi áp dụng bắt gói tin bằng Wireshark trên các hệ thống có lưu lượng mạng cao, dữ liệu trao đổi lớn.
Chúng ta có thể khai báo biểu thức cho Capture Filter ở Capture > Capture Filters hoặc khai báo ở phần …using this filter khi lựa chọn card mạng:
Wireshark Capture Filter sử dụng cú pháp của Berkeley Packet Filter (BPF):
- Mỗi filter gọi là một expression.
- Mỗi expression chứa một hoặc nhiều primitives. Các primitives được kết hợp với nhau bằng các “Logical Operator” như AND (&&), OR (||) và NOT (!) .
- Mỗi primitives chứa một hoặc nhiều qualifiers, theo sau là một ID name hoặc number. Các BPF Qualifiers bao gồm:
Qualifiers | Mô tả | Ví dụ |
---|---|---|
Type | Chỉ định ID name hoặc number ta sẽ tham chiếu | host, net, port |
Dir | Chỉ định hướng của dữ liệu (transfer direction) | src, dst |
Proto | Protocol | ether, ip, tcp, udp, http, ftp |
- Cú pháp tổng quan: Bắt các gói tin gửi đến host 192.168.0.10 và sử dụng giao thức TCP, port 80:
Một vài Wireshark Expression tham khảo cho phần Capture Filter:
Expression | Ý nghĩa |
---|---|
host 172.18.5.4 | Wireshark filter by IP: Bắt gói tin liên quan đến IP 172.18.5.4 |
src 192.168.0.10 | Wireshark filter source IP: Bắt các gói tin có source IP là 192.168.0.10 |
dst 192.168.0.1 | Wireshark filter destination IP: Bắt các gói tin có destination IP là 192.168.0.1 |
net 192.168.0.0/24 hoặc: net 192.168.0.0 mask 255.255.255.0 | Bắt gói tin liên quan đến subnet 192.168.0.0/24 |
src net 192.168.0.0/24 hoặc: src net 192.168.0.0 mask 255.255.255.0 | Bắt các gói tin có source IP thuộc subnet 192.168.0.0/24 |
dst net 192.168.0.0/24 hoặc: dst net 192.168.0.0 mask 255.255.255.0 | Bắt các gói tin có destination IP thuộc subnet 192.168.0.0/24 |
port 53 | Wireshark port filter: Bắt gói tin DNS |
port 67 or port 68 | Bắt gói tin DHCP |
host 192.168.1.1 and not (port 80 or 443) hoặc: host 192.168.1.1 and not port 80 and not port 443 | Capture tất cả traffic liên quan đến IP 192.168.1.1 nhưng không phải traffic HTTP/HTTPS |
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550) hoặc: tcp portrange 1501-1549 | Capture các packet nằm trong range port từ 1501-1549 |
ip | Wireshark IPv4 filter |
ip6 | Wireshark IPv6 filter |
tcp | Bắt gói tin TCP |
udp | Bắt gói tin UDP |
icmp | Bắt gói tin ICMP |
http | Wireshark HTTP filter |
https | Wireshark HTTPS filter |
tcp[13] & 32 == 32 | TCP packets với cờ URG được bật |
tcp[13] & 16 == 16 | TCP packets với cờ ACK được bật |
tcp[13] & 8 == 8 | TCP packets với cờ PSH được bật |
tcp[13] & 4 == 4 | TCP packets với cờ RST được bật |
tcp[13] & 2 == 2 | TCP packets với cờ SYN được bật |
tcp[13] & 1 == 1 | TCP packets với cờ FIN được bật |
icmp[0:2] == 0x0301 | ICMP destination unreachable, host unreachable |
Display Filter
Display Filter giúp lọc ra những packet thỏa điều kiện trong file capture để thể hiện lên cho người dùng. Display filter chỉ lọc và thể hiện packet thỏa điều kiện chứ không xóa bỏ những packet không thỏa điều kiện, dữ liệu trong file capture hoàn toàn không bị ảnh hưởng.
Sử dụng Display Filter bằng cách nhập biểu thức (expression) vào Filter textbox phía trên phần Packet List. Bạn cũng có thể nhấp vào phần Expression để lựa chọn các pre-defined filters có sẵn ứng với từng giao thức.
Cú pháp của Wireshark Display Filter phần lớn tuân theo cú pháp:
protocol.feature.subfeature COMPARISION_OPERATOR value LOGICAL_OPERATOR protocol.feature.subfeature COMPARISION_OPERATOR value
Trong đó, Comparison Operators bao gồm:
Operator | Ý nghĩa |
---|---|
== | Bằng (equal to) |
!= | Không bằng (not equal to) |
> | Lớn hơn (greater than) |
< | Nhỏ hơn |
>= | Lớn hơn hoặc bằng (greater than or equal) |
<= | Nhỏ hơn hoặc bằng (less than or equal) |
Logical Operators bao gồm:
Operator | Ý nghĩa |
---|---|
and | tất cả các điều kiện phải được thỏa mãn |
or | một trong các điều kiện được thoả mãn |
xor | một và chỉ một điều kiện được thỏa mãn |
not | không điều kiện nào được phép thảo mãn |
Một vài Wireshark Expression tham khảo cho phần Display Filter:
Expression | Ý nghĩa |
---|---|
tcp.port eq 25 or icmp | Lọc gói tin TCP liên quan port 25 hoặc sử dụng giao thức ICMP |
ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16 | Lọc traffic trao đổi trong mạng LAN của subnet 192.168.0.0/16 |
tcp.window_size == 0 && tcp.flags.reset != 1 | TCP buffer full và source kết nối báo hiệu cho Destination ngừng gửi dữ liệu |
udp contains 81:60:03 | UDP packet chứa 3 bytes 81:60:03 ở vị trí bất kỳ trong header hoặc payload |
http.request.uri matches “gl=se$” | HTTP request có URL tận cùng bằng chuỗi “gl=se” |
ip.addr == 192.168.0.1 hoặc: ip.src == 192.168.0.1 or ip.dst == 192.168.0.1 | Wireshark filter by ip: Lọc tất cả traffic liên quan đến IP 192.168.0.1 |
! ( ip.addr == 192.168.0.1 ) hoặc: ! (ip.src == 192.168.0.1 or ip.dst == 192.168.0.1) | Lọc tất cả traffic KHÔNG liên quan đến IP 192.168.0.1 |
tcp.flags.syn == 1 | Các gói tin TCP có cờ SYN được bật |
tcp.flags.syn == 1 && tcp.flags.ack == 1 | Các gói tin TCP có cờ SYN/ACK được bật |
http.host == “quantrilinux.vn” | HTTP request có Host header là “quantrilinux.vn” |
http.response.code == 404 | Các HTTP request có response status code là 404 |
smtp || imap || pop | Traffic liên quan đến email (SMTP, IMAP, POP) |
! tcp.port == 22 | Loại bỏ traffic SSH |
! arp | Loại bỏ traffic ARP |
ip.version == 4 | Wireshark IPv4 filter: Lọc tất cả các gói tin IP version 4 |
tcp.srcport == 80 | Wireshark port filter: Lọc tất cả gói tin TCP có source port là 80 |
tcp.port == 80 | Lọc tất cả các gói tin có liên quan đến port 80 |
udp.port == 67 or udp.port == 68 | Traffic DHCP |
dns | Filter traffic liên quan DNS |
http | Wireshark http filter |
https | Wireshark https filter |
ip.src == 192.168.0.1 | Wireshark filter source ip |
ip.dst == 192.168.0.1 | Wireshark filter destination ip |
Ngoài ra, người dùng có thể Click vào Analyze > Display Filters để chọn một filter trong các filter mặc định. Từ đây, bạn có thể thêm hoặc custom các filter và lưu chúng để có thể dễ dàng truy cập sau này.
Một tính năng hữu ích khác là Follow TCP stream, bạn chọn một packet rồi click chuột phải vào packet chọn Follow > TCP Stream. Sau đó, một hộp thoại sẽ hiện ra cho thấy dữ liệu trao đổi giữa Client và Server trong luồng tương ứng và các packet liên quan. Bạn có thể click vào các giao thức khác trong menu Follow để xem đầy đủ các đoạn hội thoại, nếu có thể.
Cuối cùng, đóng cửa sổ lại và một filter sẽ được áp dụng tự động. Bây giờ, Wireshark đang hiển thị các packet tạo nên đoạn hội thoại đó.
Cách đọc gói tin trong Wireshark
Click vào một packet để chọn nó, sau đó xem thêm chi tiết về nó.
Ở khung cửa sổ Paket List sẽ cung cấp cho chúng ta các thông tin như:
- No: Số thứ tự của gói tin trong file capture hiện tại.
- Time: Thời gian tương đối mà gói tin này được bắt, tính từ lúc bắt đầu quá trình bắt gói tin.
- Source: Địa chỉ source IP của kết nối.
- Destination: Địa chỉ destination IP của kết nối.
- Length: Chiều dài của gói tin.
- Protocol: Giao thức của gói tin
- Info: Các thông tin tổng quan liên quan đến gói tin.
Ở khung cửa sổ của Packet Details sẽ cho ta thông tin chi tiết từng Layer của packet như:
- Frame: Interface
- Ethernet: Destination, Source, Mac Address
- Internet: Source IP, Destination IP, TTL, Protocol, Flags, Checksum, Identification, Total Length…
- TCP/UDP/ICMP: Source Port, Destination Port, Sequence Number, ACK Number, Flags, TCP Options …
- Application Layer: HTTP, DNS, SMTP…
Chúng ta có thể click vào hình mũi tên ở đầu mỗi dòng để thể hiện thêm thông tin chi tiết.
Ở khung cửa sổ của Packet Bytes thể hiện gói tin ở dạng Hex. Khi click chọn 1 trường nào đó ở phần Packet Details, những bytes liên quan đến phần đó sẽ được tô đậm ở phần Packet Bytes tương ứng.
Bạn cũng có thể tạo thêm các filter ở đây. Chỉ cần click chuột phải vào một trong số các chi tiết, rồi chọn Apply as Filter để tạo một filter dựa theo đó.
WireShark nâng cao
Bên cạnh khả năng capture và filter nổi tiếng, còn có một số tính năng Wireshark nâng cao khác biến đây trở thành công cụ lợi hại cho các nhà quản trị mạng và phân tích bảo mật.
Tùy chọn chỉnh màu trong WireShark
Người dùng có thể tô màu cho các packet ở trong Packet List theo Display Filter, nhằm nhấn mạnh các packet cần đánh dấu. Bạn cũng có thể thêm vào các quy tắc ở đây để tô màu cho các packet theo chỉ định.
Chế độ Promiscuous trong WireShark
Theo mặc định, Wireshark chỉ capture các packet đến và đi từ máy tính mà nó chạy. Tuy nhiên, bạn có thể chỉnh chạy ở Promiscuous Mode trong Capture Settings. Khi đó, ngoài việc capture các packet được chỉ định cho nó, máy chạy Wireshark cũng có thể capture được các packet khác không dành cho nó, thay vì loại bỏ chúng.
Wireshark Statistics
Phần menu Statistic cung cấp những thông tin thống kê có giá trị liên quan đến file capture hiện tại như:
- Capture File Properties: Các thông số tổng quan của file capture
- Protocol Hierarchy: Tổng quan về protocol
- Conversation: Thông tin về các luồng trao đổi giữa client và server
- Endpoints: Danh sách những IP tham gia kết nối, số lượng packets và bytes tương ứng.
- Packet Lengths: Thống kê về chiều dài của các gói tin tham gia kết nối.
- I/0 Graph: Biểu đồ kết nối.
- Thống kê liên quan đến các giao thức như: HTTP, HTTP2, DNS, DHCP…
- IPv4/IPv6 Statistics: Thống kê về danh sách IP, số lượng packet, tần số kết nối.
Wireshark Command Line
Ứng dụng cũng hỗ trợ một Command Line Interface (CLI) nếu hệ điều hành đang sử dụng không có một GUI. Cách kết hợp hiệu quả nhất là dùng CLI để capture, rồi lưu lại bản log để có thể reivew bằng GUI.
Các lệnh trong Wireshark
- wireshark: Chạy trong chế độ GUI
- wireshark -h: Hiển thị tham số command line khả dụng
- wireshark -a duration:300 -i eth1 -w Wireshark: Capture các lưu lượng trên Ethernet interface 1 trong 5 phút (300 giây). -a là tự động (auto) dừng việc capture. -i chỉ định interface sẽ capture
Lời kết
Qua bài viết này, có thể thấy Wireshark là một công cụ phân tích và đánh giá hệ thống mạng cực kì mạnh mẽ. Nếu bạn sử dụng với mục đích rõ ràng, hy vọng bài viết về tài liệu hướng dẫn sử dụng Wireshark toàn tập từ căn bản đến nâng cao này của Vietnix sẽ giúp các bạn sử dụng Wireshark một cách thuần thục và hiệu quả hơn.