MAC Name Resolution: phân giải địa chỉ MAC tầng 2 sang địa chỉ IP tầng 3. Nếu việc phân giải này lỗi, Wireshark sẽ chuyển 3 byte đầu tiên của địa chỉ MAC sang tên hãng sản xuất đã được1.Hướng dẫn cài đặtDo Wireshark là một ứng dụng mã nguồn mở và có thể download miễn phí tại https:www.wireshark.orgdownload.html. Trong bài viết sử dụng phiên bản 1.8.1(64bit)Tiến hành cài đặtSau khi tải về tập tin lưu trên máy có dang Wiresharkwin641.8.1.exe. Click đúp vào file để tiến hành quá trình cài đặt chương trình1.Bắt và phân tích gói tin trong một số trường hợp cơ bảna.Bắt gói pingMột trong các công cụ khi kiểm tra kết nối mạng là công cụ ping.Nguyên tắc hoạt động: Lệnh ping hoạt động dựa trên ý tưởng dò tìm. Mỗi khi cần xác định xem có vật gì gần mình hay không, bạn sẽ dùng tay “sờ”, dùng gậy “khua” hoặc ném đá ra xung quanh mình. Nếu có một va chạm xảy ra thì dựa trên tiếng “pong” của va chạm bạn sẽ xác định được phương hướng của vật thể đang ở gần bạn. Tương tự như vậy, lệnh Ping cũng hoạt động bằng cách gửi gói tin truy vấn ICMP “echorequest” đến cho máy đích và lắng nghe gói tin hồi đáp ICMP “echoreply để xác định có sự hiện diện của máy đích.Request timed outNếu không kết nối được với máy đích thì Ping sẽ hiển thị thông báo là Request timed out. Thông điệp Request timed out có nghĩa là không có hồi đáp trả về. Khi gặp thông báo này thì bạn có thể có chẩn đoán các nguyên nhân gây ra lỗi như sau: Thiết bị định tuyến Router bị tắt. Địa chỉ máy đích không có thật hoặc máy đích đang bị tắt, hoặc cấm ping. Nếu máy đích khác đường mạng với máy nguồn thì nguyên nhân có thể do không có định tuyến ngược trở lại máy nguồn. Lúc này, nếu máy đích đang chạy, bạn có thể kiểm tra đường đi về của gói tin bằng cách xem lại thông số Default Gateway trên máy đích, máy nguồn và router kết nối các đường mạng.
Trang 1BÀI TẬP LỚN MÔN : TCP/IP
Đề tài: Trình bày tính năng, cách sử dụng, thực hành bắt và
phân tích gói tin trên phần mềm Wireshark
Giáo viên : Lê Thị Hồng Vân
Nguyễn Thành Đạt Lương Văn Dũng Trịnh Doãn Mạnh
Hà Nội, Tháng 10/2014.
Trang 2Mục lục.
Trang 3I Giới thiệu về Wireshark
WireShark có một bề dầy lịch sử Gerald Combs là người đầu tiên phát triển phần mềm này Phiên bản đầu tiên được gọi là Ethereal được phát hành năm 1998 Tám năm sau kể từ khi phiên bản đầu tiên ra đời, Combs từ bỏ công việc hiện tại để theo đuổi một cơ hội nghề nghiệp khác Thật không may, tại thời điểm đó, ông không thể đạt được thoả thuận với công ty đã thuê ông về việc bản quyền của thương hiệu Ethereal Thay vào đó, Combs và phần còn lại của đội phát triển đã xây dựng một thương hiệu mới cho sản phẩm “Ethereal” vào năm 2006, dự án tên là WireShark
WireShark đã phát triển mạnh mẽ và đến nay, nhóm phát triển cho đến nay đã lên tới 500 cộng tác viên Sản phẩm đã tồn tại dưới cái tên Ethereal không được phát triển thêm
Lợi ích Wireshark đem lại đã giúp cho nó trở nên phổ biến như hiện nay Nó cóthể đáp ứng nhu cầu của cả các nhà phân tích chuyên nghiệp và nghiệp dư và nó đưa ranhiều tính năng để thu hút mỗi đối tượng khác nhau
Các giao thực được hỗ trợ bởi WireShark:
WireShark vượt trội về khả năng hỗ trợ các giao thức (khoảng 850 loại), từ những loại phổ biến như TCP, IP đến những loại đặc biệt như là AppleTalk và Bit Torrent Và cũng bởi Wireshark được phát triển trên mô hình mã nguồn mở, những giao thức mới sẽ được thêm vào Và có thể nói rằng khôngcó giao thức nào mà
Wireshark không thể hỗ trợ
1. Thân thiện với người dùng: Giao diện của Wireshark là một trong những giao diện
phần mềm phân tích gói dễ dùng nhất Wireshark là ứng dụng đồ hoạ với hệ thống menu rât rõ ràng và được bố trí dễ hiểu Không như một số sản phẩm sử dụng dòng lệnh phức tạp như TCPdump, giao diện đồ hoạ của Wireshark thật tuyệt vời cho những
ai đã từng nghiên cứu thế giới của phân tích giao thức
2. Giá rẻ: Wireshark là một sản phẩm miễn phí GPL Bạn có thể tải về và sử dụng
Wireshark cho bất kỳ mục đích nào, kể cả với mục đích thương mại
3. Cộng đồng: Cộng đồng của Wireshark là một trong những cộng đồng tốt và năng
động nhất của các dự án mã nguồn mở
4. Hỗ trợ nhiều hệ điều: Wireshark hỗ trợ hầu hết các loại hệ điều hành hiện nay.
Trang 4II Một số tính năng nâng cao
ta có thể sử dụng phân giải tên DNS để giúp định danh tên của một máy tính mà
ta đang có gắng xác định như là nguồn của các gói cụ thể
Các kiểu công cụ phân giải tên trong Wireshark: có 3 loại
· MAC Name Resolution: phân giải địa chỉ MAC tầng 2 sang địa chỉ IP tầng 3
Nếu việc phân giải này lỗi, Wireshark sẽ chuyển 3 byte đầu tiên của địa chỉ MAC sangtên hãng sản xuất đã được
dissector để phiên dịch mỗi gói tin Nó quyết định dissector nào được sử dụng bằng cách sử dụng phân tích lôgic đã được cài đặt sẵn và thực hiện việc dự đoán Thật không may là Wireshark không phải lúc nào cũng đúng trong việc lựa chọn dissector phù hợp cho một gói tin Tuy nhiên, ta có thể thay đổi việc lựa chọn này trong từng trường hợp cụ thể
3 Following TCP Streams
Một trong những tính năng hữu ích nhất của Wireshark là khả năng xem các dòng TCP như là ở tầng ứng dụng Tính năng này cho phép bạn phối hợp tất cả các thông tin liên quan đến các gói tin và chỉ cho bạn dữ liệu mà các gói tin này hàm chứa
Trang 5giống như là người dùng cuối nhìn thấy trong ứng dụng Còn hơn cả việc xem các dữ liệu đang được truyền giữa máy trạm và máy chủ trong một mớhỗn độn, tính năng này sắp xếp dữ liệu để có thể xem một cách đơn giản Bạn có thể sử dụng công cụ này để bắt và giải mã một phiên instant messages được gửi bởi một người làm thuê (người này đang bị nghi ngờ phát tán các thông tin tài chính của công ty).
4 Cửa sổ thống kê phân cấp giao thức
Khi bắt được một file có kích thước lớn, chúng ta cần biết được phân bố các giaothức trong file đó, bao nhiêu phần trăm là TCP, bao nhiêu phần trăm là IP và DHCP là bao nhiêu phần trăm, Thay vì phải đếm từng gói tin để thu được kết quả, chúng ta cóthể sử dụng cửa sổ thống kê phân cấp giao thức của Wireshark Đây là cách tuyệt với
để kiểm thử mạng của bạn Ví dụ, nếu bạn biết rằng 10% lưu lượng mạng của bạn được sử dụng bởi các lưu lượng ARP, và một ngày nào đó, bạn thấy lưu lượng ARP lên tới 50%, bạn hoàn toàn có thể hiểu rằng đang có một cái gì đó không ổn xảy ra
5 Xem các Endpoints
Một Endpoint là chỗ mà kết nối kết thúc trên một giao thức cụ thể Ví dụ, có hai endpoint trong kết nối TCP/IP: các địa chỉ IP của các hệ thống gửi và nhận dữ liệu, 192.168.1.5 và 192.168.0.8 Một ví dụ ở tầng 2 có thể là kết nối giữa hai NIC vật lý vàđịa chỉ MAC của chúng Các NIC gửi và nhận dữ liệu, các MAC đó tạo nên các
endpoint trong kết nối
Khi thực hiện phân tích gói tin, bạn có thể nhận ra rằng bạn đã khoanh vùng vấn
đề chỉ còn là một enpoint cụ thể trong mạng Hộp thoại Wireshark endpoints chỉ ra
Trang 6một vài thống kê hữu ích cho mỗi endpoint, bao gồm các địa chỉ của từng máy cũng như là số lượng các gói tin và dung lượng đã được truyền nhận của từng máy.
6 Cửa số đồ thị IO
Cách tốt nhất để hình dung hướng giải quyết là xem chúng dưới dạng hình ảnh Cửa sổ đồ thị IO của Wireshark cho phép bạn vẽ đồ thị lưu lượng dữ liệu trên mạng Bạn có thể sử dụng tính năng này để tìm kiếm các đột biến hoặc những thời điểm không có dữ liệu truyền của các giao thức cụ thể mà bạn đang quan tâm Bạn có thể vẽđồng thời 5 đường trên cùng một đồ thị cho từng giao thức mà bạn quan tâm bằng các màu khác nhau Điều này giúp bạn dê dàng hơn để thấy sự khác nhau của các đồ thị
Biểu đồ lưu lượng dữ liệu mạng
Trang 7III Hướng dẫn cài đặt và sử dụng
Sau khi tải về tập tin lưu trên máy có dang Wireshark-win64-1.8.1.exe
Click đúp vào file để tiến hành quá trình cài đặt chương trình
Hình 1 Bắt đầu cài đặt
Nhấn Next để bắt đầu quá trình cài đặt
Hình 2 Thông tin bản
Trang 9Nhấn Next để tiếp tục
Hình 5 Chọn đường dẫn cài đặt
Nhấn Next để tiếp tục quá trình cài đặt
Hình 6 Cài WinPcap
Trang 10Để wireshark có thể hoạt động được, bạn phải cài đặt driver WinPcap trên máy tính của bạn( Tương tự như net framework) Nếu bạn chưa cài đặt WinPcap hoặc phiên bản cũ chương trình sẽ hỏi bạn có cài WinPcap không?
Ở đây chưa cài nên nhấn Install để cài
Trang 11Hình 9 Các điều khoản của WinPcap
Nhấn I Agree để tiếp tục quá trình cài đặt Sau đó nhấn Install để cài đặt
WinPcap lên máy
Nhấn Finish để kết thúc quá trình cài đặt WinPcap
Tiếp theo quá trình cài đặt Wireshark cũng hoàn thành Nhấn Next để tiếp tục
Trang 12Nhấn Finish để kết thúc quá trình cài đặt Tích chọn vào Run Wireshark 1.8.4
để khởi động Wireshark
Trang 132 Hướng dẫn sử dụng
Để bắt được gói tin, Wireshark phải được cài đặt trên máy tính có kết nối mạng(LAN, mạng ảo, Internet…) đang hoạt động và Wireshark phải chạy trước, trước khi quá trình trao đổi dữ liệu diễn ra
Màn hình khởi động của Wireshark
Để bắt đầu bắt gói tin, vào menu Capture chọn Interface( Ctrl + I)
Chọn Card mạng muốn bắt gói tin và nhấn Start.
Trang 14Để tùy chọn các chức năng, vào Capture chọn Option( Ctrl + K) Hộp thoại
Options cho phép thiết lập các tùy chọn, đặt các điều kiện lọc, giúp lựa chọn loại dữ liệu và số lượng dữ liệu sẽ bắt
Trước tiên, cần đảm bảo là Wireshark được thiết lập để bắt gói tin trên
Interface thích hợp( Như hình minh họa)
Một số tùy chọn:
interface ở chế độ promiscuous khi bắt các gói tin
việc phân giải địa chỉ mạng (trong các gói tin) sang dạng tên Mặc dù việc phân giải tên là có ích, tuy nhiên, việc phân giải tên cũng làm gia tăng các gói tin được bắt tại card mạng, dẫn đến làm méo mó kết quả của quá trình phân tích mạng
hoặc sau một thời gian nào đó
Trang 15Bấm nút Start để bắt đầu quá trình bắt gói tin Có thể thực hiện ping đến một máy
khác, truy cập đến website nào đó, sau đó quan sát màn hình kết quả
Vào Capture chọn Stop để dừng quá trình bắt gói tin.
Cửa sổ hiển thị kết quả bắt gói của Wireshark gồm có 3 phần
Phần danh sách các gói tin: hiển thị tất cả các gói tin đã bắt được, kèm theo thông tin vắn tắt của mỗi gói tin
Khi bấm vào mỗi gói tin trong phần “Danh sách các gói tin”, thông tin về gói tin(được chọn) sẽ hiển thị tại phần “Nội dung chi tiết mỗi gói tin”, và nội dung của góitin dưới dạng hệ số16 sẽ được hiển thị tại phần “Nội dung gói tin dạng hex”
Phần “Nội dung chi tiết mỗi gói tin” sẽ hiển thị các giao thức, các trường của mỗi giao thức, các giao thức Các trường được tổ chức theo cấu trúc cây, có thể mở rộng hoặc thu gọn cấu trúc cây để tiện quan sát
Để tìm kiếm các gói tin ta sử dụng thanh công cụ filter
Ví dụ để tìm các gói tin có giao thức TCP ta gõ TCP vào thanh công cụ Filter
và nhấn Apply
Khi đóng màn hình kết quả hoặc tắt chương trình Wireshark, sẽ có cửa sổ nhắc người sử dụng lưu lại các kết quả đã bắt
Trang 16Lệnh ping hoạt động dựa trên ý tưởng dò tìm Mỗi khi cần xác định xem có vật
gì gần mình hay không, bạn sẽ dùng tay “sờ”, dùng gậy “khua” hoặc ném đá ra xung quanh mình Nếu có một va chạm xảy ra thì dựa trên tiếng “pong” của va chạm bạn sẽ xác định được phương hướng của vật thể đang ở gần bạn
Tương tự như vậy, lệnh Ping cũng hoạt động bằng cách gửi gói tin truy vấn ICMP
“echo-request” đến cho máy đích và lắng nghe gói tin hồi đáp ICMP “echo-reply" để xác định có sự hiện diện của máy đích
Tiến hành bắt và phân tích
- Đầu tiên, chạy chương trình wireshark, thiết lập một số tùy chọn như phần trên
- Thực hiện ping( ping địa chỉ IP) tới một máy tính khác
- Sau khi thực hiện lệnh ping thành công( đã nhận được gói tin trả lời – reply), dừng quá trình bắt gói tin
Quá trình gửi và nhận các gói tin được wireshark ghi lại
Danh sách các gói tin
Ở đây, ta có thể thấy 8 dòng thể hiện quá trình ping vừa thực hiện
Nhìn vào phần Protocol: giao thức mà lệnh ping sử dụng đó là giao thức
ICMP(Internet Control Message Protocol)
Dựa vào phần Info: có thể thấy được 2 loại gói tin của lệnh ping đó là echo request và echo reply Cứ mỗi một gói echo request được gửi đi thì nhận được một gói
Trang 17echo reply trả về Dựa vào gói tin echo reply mà ta có thể kiểm tra được hoạt động của
hệ thống mạng, sự tồn tại của máy đích, kiểm định chất lượng, đo đạt tốc độ truyền dẫn của hệ thống mạng Cuối mỗi lệnh ping sẽ hiển thị thống kê về số lượng gói tin được gửi, thời gian hồi đáp và ghi nhận các gói tin bị rớt hay truyền thành công trên đường truyền …
Các thông báo của lệnh ping
• Reply from 8.8.8.8: bytes=32 time=30ms TTL=247
Khi nhận được thông báo như trên thì có nghĩa lệnh ping đã thực hiện thành công và hệ thống không có lỗi
• Request timed out
Nếu không kết nối được với máy đích thì Ping sẽ hiển thị thông báo là "Requesttimed out"
Thông điệp "Request timed out" có nghĩa là không có hồi đáp trả về Khi gặp thông báo này thì bạn có thể có chẩn đoán các nguyên nhân gây ra lỗi như sau:
- Thiết bị định tuyến Router bị tắt
- Địa chỉ máy đích không có thật hoặc máy đích đang bị tắt, hoặc cấm ping
- Nếu máy đích khác đường mạng với máy nguồn thì nguyên nhân có thể do không có định tuyến ngược trở lại máy nguồn Lúc này, nếu máy đích đang chạy, bạn
có thể kiểm tra đường đi về của gói tin bằng cách xem lại thông số Default Gateway trên máy đích, máy nguồn và router kết nối các đường mạng
- Độ trễ của quá trình hồi đáp lớn hơn 1 giây Phiên làm việc của lệnh ping mặc định là 1 giây Nhưng nếu quá trình hồi đáp lớn hơn 1 giây mà gói tin vẫn chưa đến đích thì lệnh ping cũng thông báo lỗi trên Bạn có thể sử dụng tùy chọn -w để tăng thêm thời gian hết hạn Ví dụ cho phép kéo dài quá trình hồi đáp trong vòng 5 giây sử
dụng bạn dùng lệnh ping -w 5000.
• Destination host unreachable
Thông báo cho biết không thể kết nối đến máy đích Nguyên nhân gây ra lỗi này có thể là do cáp mạng bị đứt, không gắn cáp vào card mạng, card mạng bị tắt, Driver card mạng bị hư…
b Bắt gói tin DNS
Bước 1: Chọn gói tin bạn muốn phân tích
Ta sẽ được của sổ thông tin của gói tin:
Trang 18Bước 2: Phân tích gói tin:
-+ Header Length(Độ dài header) : 20 bytes
+ Total Length( độ dài tổng): 50
- Truy vấn DNS:
Trang 19-c Bắt gói tin FTP (File Transfer Protocol)
Giao thức truyền tải file, thường được gọi là FTP, là công cụ quản lý files giữa các máy FTP cho phép truyền và tải files, quản lý thư mục, và lấy mail FTP không được thiết kế để truy nhập và thi hành files, nhưng nó là công cụ tuyệt vời để truyền tải files
Nội dung: tiến hành kết nối với máy FTP server, tải file at9b.txt về máy, thoát khỏi ftp server
Quá trình kết nối với FTP serverTrong khung danh sách các gói tin ta có thể thấy phần tạo kết nối và phần đăng nhập ( user: u775958434, pass: at9bKMA)
Trang 20Quá trình tạo kết nối, Client ( IP: 192.168.136.128) yêu cầu mở cổng dịch vụ
bằng cách gửi gói tin SYN (Gói tin TCP) với tham số Sequence number ngẫu nhiên
X (ở đây là 0) đến server (IP: 31.220.16.16)
Server hồi đáp bằng cách gửi lại client bản tin SYN-ACK trong gói tin này,
tham số Acknowledgment number được gán giá trị bằng X + 1, tham số sequence
number được gán ngẫu nhiên một giá trị Y
Để hoàn tất quá trình bắt tay ba bước, client tiếp tục gửi tới server bản tin ACK, trong bản tin này, tham số sequence number được gán cho giá trị bằng X + 1 còn tham
số acknowledgment number được gán giá trị bằng Y + 1
Quá trình tạo kết nốiNhư vậy, kết nối đã được thiết lập giữa client và server
Trang 21Để xem các giao thức nào được đóng gói trong FRAME chọn một dòng, quan sáttrong cửa sổ “nội dung chi tiết mỗi gói tin”, mở rộng phần frame
Quá trình đăng nhập vào server
Sau khi thiết lập được kết nối, client tiếp tục gửi gói tin ACK, tên tài khoản (u775958434) để truy cập vào ftp server Tiếp đó server sẽ kiểm tra trên hệ thống và gửi lại cho client thông tin về user Nếu đúng thì tiếp tục đăng nhập – điền mật khẩu
Quá trình gửi, kiểm tra mật khẩu giống như phần kiểm tra tên tài khoản
Chú ý: tham số Sequence number trong gói tin ACK server trả về phải giống với tham số Acknowledgment number trong gói tin ACK client gửi lên.
Chọn dòng có chứa tên tài khoản đăng nhập hoặc mật khẩu Nhìn vào “Nội dung gói tin dạng Hex” Tên tài khoản và mật khẩu là tường minh, không hề được mã hóa, che giấu => vấn đề bảo mật thông tin trong quá trình đăng nhập FTP là chưa có
Trang 22Quá trình tải file at9b.txt
Quá trình thoát khỏi FTP serverĐăng xuất khỏi FTP:
Khi người dùng chọn đăng xuất, client gửi gói tin ACK và yêu cầu đăng xuất khỏi server Server hồi đáp lại bằng gói tin ACK với tham số Seq giống tham số Ack mà client gửi lên Trả về dòng thông báo đã upload và download bao nhiêu dung lượng Đồng thời cũng gửi gói tin báo ngắt kết nối cho client Client gửi thêm 2 gói tin ACK
và RST để báo chính thức ngắt kết nối
Quá trình ngắt kết nối
2 Xử lý tình huống thực tế với wireshark
a. A Lost TCP Connection (mất kết nối TCP)
Một trong các vấn đề phổ biến nhất là mất kết nối mạng.Chúng ta sẽ bỏ qua nguyên nhân tại sao kêt nối bị mất, chúng ta sẽ nhìn hiện tượng đó ở mức gói tin
Ví dụ:
Một ví truyền file bị mất kết nối:
Bắt đầu bằng việc gửi 4 gói TCP ACK từ 10.3.71.7 đến 10.3.30.1
Trang 23Lỗi bắt đầu từ gói thứ 5, chúng ta nhìn thấy xuất hiện việc gửi lại gói của TCP.
Hình 3.1-2: These TCP retransmissions are a sign of a weak or dropped
connection
Theo thiết kế, TCP sẽ gửi một gói tin đến đích,
nếu không nhận được trả lời sau một khoảng thời gian
nó sẽ gửi lại gói tin ban đầu Nếu vẫn tiếp tục không
nhận được phản hồi, máy nguồn sẽ tăng gấp đôi thời
gian đợi cho lần gửi lại tiếp theo
Như ta thấy ở hình trên, TCP sẽ gửi lại 5 lần,
nếu 5 lần liên tiếp không nhận được phản hồi thì kết
nối được coi là kết thúc
Hiện tượng này ta có thể thấy trong Wireshark
như sau:
Hình 3.1-4: Windows will retransmit up to five times by default
Khả năng xác định gói tin bị lỗi đôi khi sẽ giúp chúng ta có thể phát hiện ra mấu trốt mạng bị mất là do đâu
b. Unreachable Destinations and ICMP Codes (không thể chạm tới điểm cuối và các
mã ICMP)
Một trong các công cụ khi kiểm tra kết nối mạng là công cụ ICMP ping Nếu may mắn thì phía mục tiêu trả lời lại điều đó có nghĩa là bạn đã ping thành công, còn nếu không thì sẽ nhận được thông báo không thể kết nối tới máy đích Sử dụng công
cụ bắt gói tin trong việc này sẽ cho bạn nhiều thông tin hơn thay vì chỉ dung ICMP ping bình thường Chúng ta sẽ nhìn rõ hơn các lỗi của ICMP