Contents 1. Giới thiệu. 2 1.1 Wireshark là gì? 2 1.2 Mục đích sử dụng Wireshark. 2 1.3 Chức năng. 2 2. Giao diện người dùng. 2 2.1 Thanh menu. 3 2.2 Thanh công cụ chính. 4 2.3 Thanh lọc (Filter Toolbar). 5 2.4 Ô liệt kê gói tin (Packet List Pane). 5 2.5 Ô chi tiết gói tin (packet detail pane). 6 2.6 Ô mã nhị phân gói tin. 6 2.7 Thanh trạng thái (Statusbar). 6 3. Sử dụng Wireshark để bắt và phân tích gói tin. 6 3.1 Cách bắt gói tin. 6 3.2 Phân tích gói tin. 8 4. Phân tích gói tin SNMP. 10 4.1 Cấu trúc của PDU GETQUEST. 10 4.2 Cấu trúc của PDU GetResponse. 11 4.3 Cấu trúc của PDU GetNextRequest 12 4.4 Cấu trúc của PDU SetRequest 13 4.5 Cấu trúc của PDU Trap. 14
Trang 1Contents
Trang 21. Giới thiệu.
1.1 Wireshark là gì?
Wireshark là một phần mềm dùng để phân tích các gói tin trong mạng Phân tích gói tin trên mạng là cố gắng bắt các gói tin trên mạng và cố gắng hiển thị dữ liệu gói tin chi tiết nhất có thể
Nó giống như một thiết bị đo lường được dùng để kiểm tra những gì đang xảy ra trong cáp mạng, giống như một vôn-kế được thợ điện dùng để kiểm tra những gì đang xảy ra trong dây điện
Trong quá khứ, những công cụ có chức năng như vậy thường rất đắt tiền, độc quyền hoặc cả hai
Wireshark có lẽ là một trong những mã nguồn mở phân tích gói tin trong mạng tốt nhất hiện nay
1.2 Mục đích sử dụng Wireshark.
Dưới đây là một số mục đích khi sử dụng wireshark:
- Nhân viên quản trị mạng dùng Wireshark để khắc phục sự cố các vấn đề mạng
- Kỹ sư an ninh mạng dùng Wireshark để kiểm tra vấn đề an ninh mạng
- Các nhà phát triển dùng Wireshark để gỡ các lỗi khi triển khai giao thức
- Người sử dụng dùng nó để tìm hiểu lõi của giao thức mạng
Bên cạnh các chức năng trên, Wireshark còn có thể hữu ích trong nhiều tình huống khác
1.3 Chức năng.
Sau đây là một số chức năng mà Wireshark cung cấp:
- Dùng cho hệ điều hành UNIX và Windows
- Bắt gói dữ liệu trực tiếp từ giao diện mạng
- Hiển thị nội dung gói tin rất chi tiết
- Mở và lưu dữ liệu gói tin bị bắt
- Nhập và xuất dữ liệu gói tin và bắt gói tin từ nhiều chương trình khác nhau
- Bộ lọc gói tin trên nhiều tiêu chí
- Tìm kiếm các gói tin trên nhiều tiêu chí
- Nhiều màu sắc hiển thị dựa trên loại gói tin
Và nhiều hơn nữa…
2. Giao diện người dùng.
Dưới đây là giao diện tổng quát của chương trình
Trang 3Hình 1: Giao diện tổng quát của chương trình.
2.1 Thanh menu.
File: chứa các lệnh mở hay kết hợp các file dữ liệu thu thập, lệnh lưu/ in/ kết xuất
toàn bộ hoặc một phần file dữ liệu thu thập, và lệnh đóng chương trình Wireshark
Edit: chứa các lệnh tìm gói tin, tham chiếu thời gian hoặc đánh dấu một hay nhiều
gói tin, thiết lập các tùy chọn
View: chứa lệnh điều khiển việc hiển thị dữ liệu thu được, bao gồm việc tô màu các
gói tin, phóng to, biểu diễn gói tin trong cửa sổ riêng, mở rộng hoặc thu hẹp cây chi tiết gói tin…
Go: chứa các mục để đi đến một gói tin cụ thể.
Capture: bắt đầu hoặc kết thúc việc bắt gói tin, thiết lập bộ lọc gói tin.
Trang 4Analyze: chứa các mục để thao tác các bộ lọc hiển thị, kích hoạt hoặc vô hiệu hóa
mổ xẻ các giao thức, cấu hình người dùng chỉ định giải mã và theo một dòng TCP
Statistics: chứa các mục để hiển thị các cửa sổ thống kê khác nhau, bao gồm 1 bản
tóm tắt của gói tin đã bị bắt, hiển thị thống kê phân cấp và nhiều hơn
Telephony: chứa các mục để hiển thị cửa sổ thống kê liên quan đến thoại, bao gồm
phân tích đường truyền, lưu lượng, hiển thị giao thức thông kê phân cấp
Tools: chứa các công cụ có sẵn trong Wireshark.
Internals: chứa các mục để hiển thị thông tin Wireshark.
Help: chứa mục để giúp đỡ người dùng.
2.2 Thanh công cụ chính.
Thanh công cụ chính chứa các lệnh giúp người sử dụng nhanh chóng tìm thấy các lệnh cần thiết
Toolbar
Icon
Toolbar Item Coresponding
Menu Item
Description
Interfaces Capture/
Interfaces
Mục này trả về hộp thoại Capture Interfaces List
Options Capture/Options Mục này trả về hộp thoại
Capture Options
Stop Capture/Stop Dừng bắt gói tin
động lại cho thuận tiện
capture để xem
Save File/Save As Save file capture dang chạy Close File/Close Đóng capture hiện tại
Reload View/Reload Tải lại lần nữa file capture
Find Packet File/Print Mở một hộp thoại để tìm một gói tin
Go Back Edit/Find Packet Nhảy trở lại lịch sử gói tin
Trang 5Go Forward Go/Go Forward Nhảy về phía trước trong lịch
sử gói tin
Go to Packet Go/Go to Packet Mở hộp thoại cho phép chỉ địnhđến một số gói tin
Go To First Packet
Go/First Packet Nhảy đến gói tin đầu tiên của
file capture
Go To Last Packet Go/Last Packet Nhảy đến gói tin cuối cùng của file capture
danh sách gói tin
Auto Scroll in
Live Capture
View/Auto Scroll
in Live Capture
Cuộn hay không cuộn trong quá trình bắt gói tin
Normal Size View/Normal Size Thiết lập kích thước mặc định
100%
Resize Columns
View/Resize Columns
Thay đổi kích thước cột
Capture Filters Capture/CaptureFilters Mở hộp thoại cho phép thiết lậplọc gói tin
Display Filters
Analyze/Display Filters
Mở hộp thoại cho phép thiết lập
và chỉnh sửa lọc gói tin
Coloring Rules View/ColoringRules Mở hộp thoại cho phép thiết lậpmàu cho gói tin
Preferences
.
Edit/Preferences Mở hộp thoại cho phép thiết lập
ưu tiên dối với nhiều thông số
Help Help/Contents Giúp đỡ người dùng
2.3 Thanh lọc (Filter Toolbar).
Thanh lọc được sử dụng để tìm kiếm gói tin mọt cách nhanh chóng bằng cách viết loại
gói tin vào ô Filter.
Trang 62.4 Ô liệt kê gói tin (Packet List Pane).
Ô liệt kê gói tin hiển thị tóm tắt về mỗi gói tin bắt được
Mỗi dòng trong danh sách ứng với một gói tin trong file dữ liệu thu thập Nếu chọn 1 dòng trong ô này, ô Packet Details và Packet Bytes sẽ hiển thị thông tin chi tiết về gói tin tương ứng, khi phân tích một gói tin, Wireshark sẽ lấy thông tin từ bộ phân tích giao thức và dắt vào các cột Vì thông tin về giao thức ở tầng cao sẽ ghi đè lên thông tin của giao thức ở tầng thấp nên sẽ chỉ nhìn thấy thông tin giao thức tầng cao nhất có thể
2.5 Ô chi tiết gói tin (packet detail pane).
Ô chi tiết gói tin hiển thị chi tiết thông tin gói tin được chọn ở ô liệt kê gói tin
2.6 Ô mã nhị phân gói tin.
Ô mã nhị phân hiển thị dữ liệu biểu diễn dưới dạng cơ số 16 của gói tin dược chọn Cột bên trái ghi vị trí tương đối của dữ liệu trong gói tin , cột ở giữa là dữ liệu được biểu diễn dưới dạng cơ số 16 và cột bên phải là ký tự ASCII tương ứng hoặc là dấu
“.” nếu ký tự không biểu diễn được
2.7 Thanh trạng thái (Statusbar).
Thanh trạng thái biểu diễn một số thông tin thêm về trạng thái hiện tại của chương trình và các dữ liệu thu thập được thông thường phần bên trái sẽ hiển thị thông tin liên quan đến ngữ cảnh (tên, kích thước của file, thời gian thực hiện), trong khi phần bên phải hiển thị số lượng gói tin hiện đã thu thập được
Trang 73. Sử dụng Wireshark để bắt và phân tích gói tin.
3.1 Cách bắt gói tin.
Sau khi cài đặt, khởi động chương trình và chọn thành phần trong interface để bắt đầu hoạt động ví dụ nếu muốn giám sát lưu lượng mạng qua mạng wireless thì chọn card mạng wifi tương ứng nhấn Capture Option để hiển thị nhiều tùy chọn khác
Ngay sau đó chúng ta sẽ thấy các gói dữ liệu bắt đầu xuất hiện, Wireshark sẽ bắt từng gói tin- package ra và vào hệ thống mạng Nếu đang giám sát thông tin trên Wireless trong chế độ Promiscuous thì sẽ thấy các gói dữ liệu khác trong toàn bộ hệ thống
Trang 8Nếu muốn dừng quá trình này thì ấn nút Stop trên thanh công cụ chính (Main Toolbar)
Mỗi gói tin tương ứng với một Frame Mỗi Frame sẽ có một màu sắc khác nhau tương ứng với protocol của nó
Ví dụ: SSDP: xanh lá cây, TCP: màu xám, UDP: xanh da trời, ICMP: màu tím…và màu đen là gói TCP đang có vấn đề
3.2 Phân tích gói tin.
Cách đơn giản nhất để sử dụng Filter sau đó nhấn enter Ví dụ, nếu gõ TCP thì chỉ thấy các gói tin TCP
Trang 9Để kiểm tra thông tin gói tin ta chon một gói tin bất kỳ để kiểm tra các phần thông tin
cụ thể hơn
Trang 104. Phân tích gói tin SNMP.
4.1 Cấu trúc của PDU GETQUEST.
• Request-id : mã số của request ID này là số ngẫu nhiên do manager tạo ra, agent khi gửi bản tin GetResponse cho request nào thì nó phải gửi requestID giống như lúc nhận
• Giữa manager và agent có thể có nhiều request & reponse, một request và một response là cùng một phiên trao đổi khi chúng có requestID giống nhau
• Error-status : nếu = 0 là thực hiện thành công không có lỗi, nếu <> 0 là có lỗi xảy ra
và giá trị của nó mô tả mã lỗi Trong bản tin GetRequest, GetNextRequest, SetRequest thì
• error-status luôn = 0
• Error-index : số thứ tự của objectid liên quan đến lỗi nếu có Trong variable-bindings có nhiều objectid, được đánh số từ 1 đến n, một bản tin GetRequest có thể lấy cùng lúc nhiều object
• Variable-bindings : danh sách các cặp [ObjectID – Value] cần lấy thông tin, trong
đó objectId là định danh của object cần lấy, còn value không mang giá trị Khi agent gửi bản tin trả lời thì nó sẽ copy lại bản tin này và điền vào value bằng giá trị của object
Dùng Wireshark để bắt gói tin ta sẽ thấy cấu trúc của một bản tin Getrequest như sau:
Trang 11Trong hình trên là cấu trúc một bản tin SNMP với PDU là GetRequest Bao gồm các thông tin :
• Version là v1, số 0 trong ngoặc là giá trị của trường version, nếu giá trị này là 0 nghĩa là version1
• Community là “public”
• Request-id = 2142061952
• Error-status = 0, nghĩa là không có lỗi Trong bản tin getresponse thì error-status mới được dùng
• Error-index = 0
• Phần variable-bindings bao gồm 1 item, mỗi item là 1 cặp objectid-value
• Objectid là 1.3.6.1.2.1.1.3.0, theo mib-2 thì đó là sysuptime.0
• Scalar instance index = 0, đây là chỉ số index của sysUptime Do một thiết bị chỉ có một khái niệm
• sysUptime nên index là 0 (sysUptime.0) Nếu bạn request ifDescr chẳng hạn thì mỗi interface sẽ có một
• description khác nhau và sẽ có index khác nhau
• Value = unSpecified Do bản tin là GetRequest nên value sẽ không mang giá trị, giá trị sẽ được ghi vào
• và trả về trong bản tin GetResponse
4.2 Cấu trúc của PDU GetResponse.
• Request-id : mã số của request ID này phải giống với request-id của bản tin
GetRequest trước đó
• Error-status : mang một trong các giá trị noError(0), tooBig(1), noSuchName(2), badValue(3), readOnly(4), genErr(5) Nếu agent lấy thông tin để trả lời request thành công thì error-status là noError(0)
Trang 12• Objectid : định danh của object được trả về Nếu trước đó là GetRequest thì objectid
sẽ giống với objectid trong bản tin request, nếu trước đó là GetNextRequest thì objectid sẽ là định danh của object nằm sau (nằm sau trong mib) objectid của
request
Hình sau là bản tin trả lời cho GetRequest sysUpTime ở trên, với giá trị trả về là
109852988 (centi giây)
4.3 Cấu trúc của PDU GetNextRequest
Cấu trúc GetNextRequest giống với GetRequest, chỉ khác ở byte chỉ ra bản tin là GetNextRequest PDU
Hình sau là bản tin GetNextRequest với objectid là sysContact, sau đó agent sẽ gửi bản tin GetReponse trả lời với objectid là sysName, vì sysName nằm sau sysContact trong mib Chú ý request-id là giống nhau
Trang 134.4 Cấu trúc của PDU SetRequest
Cấu trúc SetRequest cũng giống với GetRequest, objectid-value chỉ ra đối tượng và giá trị cần set
Hình sau là bản tin SetRequest đặt lại tên của thiết bị là “Cisco2950”
Trang 144.5 Cấu trúc của PDU Trap.
Cấu trúc của bản tin trap của SNMPv1 như sau :
• Enterprise : kiểu của object gửi trap Đây là một OID giúp nhận dạng thiết bị gửi trap là thiết bị gì; nhận dạng chi tiết đến hãng sản xuất, chủng loại, model OID này bao gồm một chỉ số
• doanh nghiệp (enterprise number) và chỉ số id của thiết bị của hãng do hãng tự định nghĩa
• Agent address : địa chỉ IP của nguồn sinh ra trap Có thể bạn sẽ thắc mắc tại sao lại
có IP của nguồn sinh ra trap trong khi bản tin IP chứa gói SNMP đã có địa chỉ nguồn Giả sử mô hình giám sát của bạn như sau : tất cả trap sender được cấu hình
để gửi trap đến một trap receiver trung gian, gọi là trap
• relay, sau đó trap relay mới gửi đến nhiều trap receiver cùng lúc; thì lúc này bản tin trap nhận được tại trap receiver sẽ có IP là của trap relay, trong khi IP của nguồn phát sinh trap thực sự nằm trong agent address
• Generic-trap : kiểu của các loại trap generic
• Specific-trap : kiểu của các loại trap do người dùng tự định nghĩa
• Time-stamp : thời gian tính từ lúc thiết bị được khởi động đến lúc gửi bản tin trap, tính bằng centi giây
• Variable-bindings : các cặp objectID – value mô tả các object có liên quan đến trap Hình sau là bản tin trap thông báo interface FastEthernet0/21 đã UP
Trang 15• Enterprise = 1.3.6.1.4.1.9.1.324, đây là định danh của thiết bị Cisco switch Catalyst
2950 (.9.1.324)
• Agent-addr = 192.168.47.253
• Generic-trap = 3, cho biết đây là bản tin trap kiểu generic, giá trị 3 nghĩa là linkUp
• Specific-trap = 0, do đây là trap kiểu generic nên không sử dụng đến specific
• Time-stamp = 173729742
• Variable-bindings gồm 4 item, chỉ ra 4 cặp objectid-value, gồm : ifIndex=21, ifDescr=“FastEthernet0/21”, ifType=6, và một object riêng của Cisco có value=7570 (2 ký tự hexa 0x750x70 là chữ “up”)