Tìm hiểu phần mềm WireShark
Trang 1Phân tích gói tin với WIRESHARK
1.Giới thiệu qua một chút về Wireshark
WireShark có một bề dầy lịch sử Gerald Combs là người đầu tiên pháttriển phần mềm này Phiên bản đầu tiên được gọi là Ethereal được phát hànhnăm 1998 Tám năm sau kể từ khi phiên bản đầu tiên ra đời, Combs từ bỏ côngviệc hiện tại để theo đuổi một cơ hội nghề nghiệp khác Thật không may, tạithờ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ạicủ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 ra nhiề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ông có giaothức nào mà Wireshark không thể hỗ trợ
• 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 đồ
Trang 2số 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ủaphân tích giao thức.
• 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
• Hỗ trợ: 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ở
• Hệ điều hành hỗ trợ Wireshark: Wireshark hỗ trợ hầu hết các loại hệ
điều hành hiện nay
1.1 Vài tác dụng của phần mềm Ethereal:
- Nhà quản trị mạng có thể sử dụng phần mềm này cho việc giải quyết vấn đề
mạng (Network Troubleshoot)
- Những chuyên gia về bảo mật có thể thử các vấn đề bảo mật thông qua sản
phẩm này
- Chúng ta có thể dùng phần này để thấy được sự thực thi của các protocol.
- Có thể dùng để học các giao thức mạng ở bên trong.
1.2 Các đặc điểm của phần mềm.
- Có thể chạy trên môi trường UNIX hay Windown
- Capture các packet với những thông tin cực kỳ chi tiết
- Có thể mở ra và lưu dữ những dữ liệu capture
- Có thể import và export những packet đến và từ nhiều chương trình capture
Trang 3- Lọc các gói tin packet trên nhiều tiêu chuẩn
- Tìm các gói tin trên nhiều tiêu chuẩn
- Có thể bôi màu những gói tin dựa vào những tiêu chuẩn filter
Phần mềm này không thể làm những việc.
Như bất kỳ một công cụ nào khác, wireshark có thể được dùng cho một số việc vàkhông cho một số việc khác Ở đây là một số việc mà wireshark không thể làm
- Nó không thể dùng để vạch ra một mạng Thay vào đó cong cụ Nmap có thể đảmnhiệm chức năng này
- Nó không sinh ra các dữ liệu mạng, nó là một công cụ bị động Những công cụnhư Nmap, ping và traceroute là ví dụ về các công cụ có khả năng sinh ra các dữliệu mạng Những công cụ này là công cụ chủ động
- Nó chỉ có thể chỉ ra thông tin chi tiết về các giao thức mà nó thật sự hiểu Nóhiểu được rrats nhiều các giao thức và có thể mở rộng ra, vig vậy bạn có thể thêmvào các giao thức hỗ trợ cho nó nếu không hiểu Tuy nhiên bạn sẽ chỉ có thể xemđược các dữ liệu mà nó bắt được dưới dạng hexdump
- Nó chỉ có thể bắt được dữ liệu tốt khi giao diện driver của hệ điều hành hỗ trợ
Ví dụ của việc này là việc bắt dữ liêu thông qua mạng không dây Nó không làmviệc tốt với môt số phần mềm và phần cứng kết hợp
1.3 Cài đặt WireShark.
Wireshark là một ứng dụng mã nguồn mở và có thể download miễn phí tạitrang http://www.wireshark.org Sau khi download Wireshark về, tập tin lưu trênmáy có dạng wireshark-setup-x.y.z.exe Để khởi động tiến trình cài đặt, bạn thực
Trang 4Các bước cài đặt như sau:
Nhấn kép vào file cài đặt
Hình 1: Bắt đầu cài đặt
Ấn Next để tiếp tục
Hình 2: Thông tin bản quyền.
Nhấn “I Agree” để tiếp tục
Trang 5Hình 3: Trang Components của Wireshark
GTK1 và GTK2 là 2 bộ giao diện đồ họa của WireShark Chỉ nên chọnGTK1 khi bạn đang ở chế độ đồ họa 256 màu (thường ở chế độ này GTK2 hoạtđộng không được tốt), hoặc khi GTK2 hoạt động không được tốt vì một lý do nào
đó ngoài ra, bạn nên chọn GTK2 với nhiều tính năng nâng cao hơn so với GTK.TShark là giao diện dòng lệnh của WireShark Phần Plugin/Extensions và Toolsbạn để ở chế độ mặc định
Hình 4: Cửa sổ Additional Tasks
Trang 6Hình 5: Chọn đường dẫn đến thư mục bạn định cài Wireshark
Mặc định, wireshark sẽ được cài đặt trong thư mục C:\Program
Files\Wireshark Bạn có thể chọn đường dẫn khác bằng cách nhấn vào
“Browse…”
Sau cùng, Nhấn “Next” để tiếp tục
Hình 6: Bạn có cài winpcap không?
Để Wireshark có thể hoạt động được, bạn phải cài đặt driver Winpcap trênmáy tính của bạn Trình cài đặt wireshark sẽ kiểm tra xem bạn đã cài đặt winpcapchưa Nếu chưa cài đặt winpcap hoặc bạn đã cài rồi nhưng phiên bản cũ hơn,chương trình sẽ hỏi bạn có cài winpcap không?
Trang 7Start WinPcap service "NPF" at startup: Cho phép user không có quyền
admin có thể bắt gói tin bằng wireshark
Hình 7: Đang trong tiến trình cài đặt
Hình 8: Cửa số cài đặt Winpcap
Trang 8Hình 9: Cửa số cài đặt Winpcap
Nhấn “Next” để tiếp tục
Hình 10: Thông tin bản quyền của Winpcap
Nhấn “I Agree” để tiếp tục
Trang 9Hình 11: Bạn đã cài đặt xong Winpcap
Nhấn “Finish” để hoàn thành cài đặt Winpcap và tiếp tục cài đặt Wireshark
Hình 12: Tiếp tục tiến trình cài đặt Wireshark
Nhấn “Next” để tiếp tục
Trang 10Hình 13: Hoàn thành việc cài đặt Wireshark trên Windows
1.4 Giao diện và một số hướng dẫn sử dụng.
Khởi động Wireshark trên windows đơn giản bằng cách nhấn kép vàoshortcut trên menu Start Điều này sẽ giúp mở ra màn hình chính của Wireshark
Hình 14: Giao diện của Wireshark
Trang 11Giao diện của Wireshark rất đơn giản.
1 Title bar: Thanh này sẽ chứa những thông tin khác nhau phụ thuộc vào
những gì Wireshark đang làm Nếu nó đang bắt dữ liệu mạng, nó sẽ hiểu thị giaođiện đang sử dụng Nếu nó đang hiển thị dữ liệu từ lần bắt dữ liệu trước đó, têncủa file chứa trong dữ liệu bắt được đó sẽ được hiển thị (untitled sẽ được hiển thịnếu lần bắt đó được trình diễn, dừng lại và không được lưu lại) Ngược lại nó sẽ
hiển thị tên của ứng dụng: Wireshark network Protocol Analyzer.
2 Menu bar: Thanh này cung cấp khả năng truy cập đến các tính năng của
c View - Chức năng thay đổi cách hiển thị thông tin của Wireshark.
d Go - Chức năng tìm vị trí của một packet chỉ rõ.
e Capture - Chức năng bắt đầu và dừng lại các lần bắt, lưu lại các filter và
Trang 12f Analyze - Chức năng giải thích và lọc dữ liệu bắt được.
g Statistics - Chức năng thống kê phân tích dữ liệu bắt được.
h Help - Chức năng trợ giúp.
3 Main tool bar: Lối tắt để sử dụng các chức năng thường dùng trong thanh
menu
4 Filter tool bar: Truy cập nhanh đến chức năng filter.
5 Packet list pane: Hiển thị tất cả các packet trong file bắt hiện tại.
6 Packet details pane: Chỉ rõ các chi tiết của packet được chọn hiện tại
trong khung Packet List
7 Packet bytes pane: Chế độ xem hexdum của packet hiện tại trong Packet
List
8 Status bar: Cung cấp các thông điệp và thông tin phản hồi đến người
dùng
Ví dụ về cách làm việc của wireshark
Trong ví dụ này, Wireshark bắt các packet trên mạng không dây của laptop Sau
đó khởi động Thunderbird để lấy lại email từ Comcast và Gmail
1 Đầu tiên khởi động wireshark
2 Sau đó chọn Capture -> Interfaces từ thanh menu.
3 Sau đó hộp thoại Interfaces sẽ được mở ra Chọn giao diện mà bạn muốn sử
dụng Đây là điều quan trong khi Wireshark (như với bất kì trình phân tích giaothức nào khác) chỉ có thể bắt dữ liệu từ một mạng mà nó kết nối đến một cách tựnhiên Tôi dùng Ethernet adapter không dây trong laptop vì vậy sẽ chọn Inteladapter trong danh sach Nhấn nút "Start" Tiến trình bắt dữ liệu sẽ được bắt đầu.Sau một thời gian ngắn, bạn sẽ thấy cửa sổ chính của Wireshark (danh sáchpacket, chi tiết và khung byte) được điền đầy với các dữ liệu
Trang 134 Bây giờ sẽ khởi động Thunderbird và đăng nhập vào cả hai tài khoản Gmail và
Comcast Tại thời điểm này sẽ chờ đợi cho tất cả các mail download về và sau đó
sẽ dừng việc bắt mạng bằng cách chọn Capture -> Stop từ thanh menu Nhấn File
và Save để lưu việc bắt dữ liệu này vào đĩa sau khi tất cả các dữ liệu đã được bắt
5 Bắt được 2 phiên POP3 hoàn thiện với Wireshark Để lấy riêng thông tin về các
phiên pop tôi sẽ dùng một filter Trong thanh filter bạn điền vào đoạn text sau vànhấn nút "apply": tcp.port eq 110 Điều này sẽ giới hạn các hiển thị về traffice trêncổng tcp 110 (cổng pop) Cũng nên chú ý rằng Wireshark hiểu được POP (PostOffice Protocol), vì vậy nó sẽ trình diễn được các bít của thông tin như câu lệnhPOP và các thông tin chứng thực Tôi không kết nối đến Comcast mail server sửdụng SSL vì vậy mật khẩu của tôi được chứa trong các traffic dưới dạng clear textnghĩa là các dữ liệu không được mã hóa Tôi phải chọn screenshot này một cáchkhôn ngoan và thật sự dùng cái này để khắc phục các sự cố về người dùng clientkết nối đến pop và imap server
Trang 146 Kéo thanh cuộn xuống phía dưới của dữ liệu bắt được sau khi đã dùng filter nó
chỉ hiện ra một cuộc đàm thoại giữa hai host: laptop và Comcast mail server Điều
gì xảy ra với Gmail? Bởi vì dùng SSL với tài khoản gmail và kết nối SSL POPđược kết hợp với cổng 995 chứ không phải cổng 110 Trong thanh filter điền vàođoạn text sau và nhấn "apply": tcp.port eq 995 Điều này sẽ trình diễn tất cả cácPOP thông qua SSL Nhưng chú ý rằng không có bất kỳ thông tin chi tiết nào khác
sẽ có về giao thức ứng dụng này Giao thức dùng trên cổng 995 là TCP, SSl vàTLS Bạn sẽ thấy một số packet đi kèm với các key, nhưng đó là tất cả để làm vớivấn đề bảo mật kết hợp với SSL và TLS Tất cả dữ liệu của ứng dụng này đã bị mãhóa
Trang 151.4 một số tình huống cơ bản
Trong phần này chúng ta sẽ đề cập đến vấn đề cụ thể hơn Sử dụng Wireshark vàphân tích gói tin để giải quyết một vấn đề cụ thể của mạng
Chúng tôi xin đưa ra một số tình huống điển hình
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ỏ quanguyê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 16Hình 3.1-1: This capture begins simply enough with a few ACK packets.
Lỗ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 droppedconnection
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 saumộ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
Trang 17Như 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 đượcphả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ấutrốt mạng bị mất là do đâu
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 maymắ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ònnế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ụngcô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ỉ dungICMP ping bình thường Chúng ta sẽ nhìn rõ hơn các lỗi của ICMP
Trang 18Hình 3.1-5: A standard ping request from 10.2.10.2 to 10.4.88.88
Hình dưới đây cho thấy thông báo không thể ping tới 10.4.88.88 từ máy10.2.99.99
Như vậy so với ping thông thường thì ta có thể thấy kết nối bị đứt từ 10.2.99.99.Ngoài ra còn có các mã lỗi của ICMP, ví dụ : code 1 (Host unreachable)
Hình 3.1-6: This ICMP type 3 packet is not what we expected
Unreachable Port (không thể kết nối tới cổng)
Một trong các nhiệm vụ thông thường khác là kiểm tra kết nối tới một cổng trênmột máy đích Việc kiểm tra này sẽ cho thấy cổng cần kiểm tra có mở hay không,
có sẵn sang nhận các yêu cầu gửi đến hay không
Trang 19Ví dụ, để kiểm tra dịch vụ FTP có chạy trên một server hay không, mặc định FTP
sẽ làm việc qua cổng 21 ở chế độ thông thường Ta sẽ gửi gói tin ICMP đến cổng
21 của máy đích, nếu máy đích trả lời lại gói ICMP loại o và mã lỗi 2 thì có nghĩa
là không thể kết nối tới cổng đó.s
Fragmented Packets
Hình 3.1-7: This ping request requires three packets rather than one because thedata being transmitted is
above average size
Ở đây có thể thấy kích thước gói tin ghi nhận được lớn hơn kích thước gói tin mặcđịnh gửi đi khi ping là 32 bytes tới một máy tính chạy Windows
Kích thước gói tin ở đây là 3,072 bytes
Trang 20Determining Whether a Packet Is Fragmented (xác định vị trí gói tin bị phân đoạn)
No Connectivity (không kết nối)
Vấn đề : chúng ta có 2 nhân viên mới Hải và Thanh và được sắp ngồi cạnh nhau
và đương nhiên là được trang bị 2 máy tính Sauk hi được trang bị và làm các thaotác để đưa 2 máy tính vào mạng, có một vấn đề xảy ra là máy tính của Hải chạytốt, kết nối mạng bình thường, máy tính của Thanh không thể truy nhập Internet Mục tiêu : tìm hiểu tại sao máy tính của Thanh không kết nối được Internet và sửalỗi đó
Các thông tin chúng ta có
• cả 2 máy tính đều mới
• cả 2 máy đều được đặt IP và có thể ping đến các máy khác trong mạngNói tóm lại là 2 máy này được cấu hình không có gì khác nhau
Trang 21Hình 3.1-12: Hải’s computer completes a handshake, and then HTTP data transferbegins.
Trường hợp máy tính của Thanh
Hình 3.1-13: Thanh’s computer appears to be sending an ARP request to adifferent IP address
Hình trên cho thấy yêu cầu ARP không giống như trường hợp ở trên Địa chỉgateway được trả về là 192.168.0.11
Như vậy có thể thấy NetBIOS có vấn đề
Trang 22NetBIOS là giao thức cũ nó sẽ được thay thế TCP/IP khi TCP/IP không hoạt động.Như vậy là máy của Thanh không thể kết nối Internet với TCP/IP.
Chi tiết yêu cầu ARP trên 2 máy :
Trang 23Hiện tượng : máy tính của A có hiện tượng như sau, khi sử dụng trình duyệt IE,
trình duyệt tự động trỏ đến rất nhiều trang quảng cáo Khi A thay đổi bằng tay thìvẫn bị hiện tượng đó thậm chí khở động lại máy cũng vẫn bị như thế
Thông tin chúng ta có
• A không thạo về máy tính lắm
• Máy tính của A dùng Widows XP, IE 6
Tiến hành
Vì hiện tượng này chỉ xảy ra trên máy của A và trang home page của A bị thay đổikhi bật IE nên chúng ta sẽ tiếp hành bắt gói tin từ máy của A Chúng ta không nhấtthiết phải cài Wireshark trực tiếp từ máy của A Chúng ta có thể dùng kỹ thuật
“Hubbing Out”
Phân tích
Hình 3.1-16: Since there is no user interaction happening on A’s computer at thetime of this capture, all of these packets going across the wire should set off some
Trang 24Chi tiết gói tin thứ 5:
Hình 3.1-17: Looking more closely at packet 5, we see it is trying to downloaddata from the Internet
Từ máy tính gửi yêu cầu GET của HTTP đến địa chỉ như trên hình
Hình 3.1-18: A DNS query to the weatherbug.com domain gives a clue to theculprit
Gói tin trả lại bắt đầu có vấn đề : thứ tự các phần bị thay đổi
Một số gói tiếp theo có sự lặp ACK
Trang 25Sau một loạt các thay đổi trên thì có truy vấn DNS đến deskwx.weatherbug.comĐây là địa chỉ A không hề biết và không có ý định truy cập.
Như vậy có thể là có một process nào đó đã làm thay đổi địa chỉ trang chủ mỗi khi
IE được bật lên Dùng một công cụ kiểm tra process ẩn ví dụ như Process Explore
và thấy rằng có tiến trình weatherbug.exe đang chạy Sau khi tắt tiến trình này đikhông còn hiện tượng trên nữa
Thông thường các tiến trình như weatherbug có thể là virus, spyware
Giao diện Process Explore
Trang 26Lỗi kết nối FTP
Tình huống : có tài khoản FTP trên Windows Server 2003 đã update service
packs vừa cài đặt xong, phần mềm FTP Server hoàn toàn bình thường, khoản đúngnhưng không truy nhập được
Trang 27Hình 3.1-19: The client tries to establish connection with SYN packets but gets noresponse; then it sends a
few more
Client gửi các gói tin SYN để bắt tay với server nhưng không có phản hồi từserver
Server :
Trang 28Hình 3.1-20: The client and server trace files are almost identical
Có 3 lý do có thể dẫn đến hiện tượng trên
• FTP server chưa chạy, điều này không đúng vì FTP server của chúng ta đãchạy như kiểm tra lúc đầu
• Server quá tải hoặc có lưu lượng quá lớn khiến không thể đáp ứng yêu cầu.Điều này cũng không chính xác vì server vừa mới được cài đặt
• Cổng 21 bị cấm ở phía clien hoặc phía server hoặc ở cả 2 phía Sau khikiểm tra và thấy rằng ở phía Server cấm cổng 21 cả chiều Incoming vàOutgoing trong Local Security Policy