Phân tích gói tin, thông thường được quy vào việc nghe các gói tin và phân tích giao thức, mô tả quá trình bắt và phiên dịch các dữ liệu sống như là các luồng đang lưu chuyển trong mạng
Trang 1PHÂN TÍCH GÓI TIN VỚI WIRESHARK
Trang 2MỤC LỤC
MỤC LỤC 2
Giới thiệu 3
1.Thế nào là phân tích gói tin? 3
2.Các bước để nghe gói tin: 4
I Các cách thức nghe gói tin trên mạng 5
1.Living Promiscuously (chế độ bắt tất cả các gói tin đi qua) 5
2.“Nghe” trong mạng có Hub 5
3.“Nghe” trong mạng Switched 6
Port Mirroring 6 Hubbing Out 7 ARP Cache Poisoning 8 4.Nghe trong mạng sử dụng Router 9
Network Maps 10
II Giới thiệu WireShark 11
Một số tính năng nâng cao của Wireshark 12
1.Name Resolution 12 2.Protocol Dissection 13 3.Following TCP Streams 13 4.Cửa sổ thống kê phân cấp giao thức 13 5.Xem các Endpoints 14
6.Cửa số đồ thị IO 15
Trang 3Giới thiệu
Hàng ngày, có hàng triệu vấn đề lỗi trong một mạng máy tính, từ việc đơn giản là nhiễm Spyware cho đến việc phức tạp như lỗi cấu hình router, và các vấn đề này không thể được xử lý tất cả lập tức Tốt nhất
là chúng ta có thể hi vọng thực hiện công việc đó bằng cách chuẩn bị đầy đủ các kiến thức và các công cụ
tương ứng với các vấn đề Tất cả các vấn đề trên mạng đều xuất phát ở mức gói, nơi mà không có gì được
che dấu đối với chúng ta, nơi mà không có thứ gì bị ẩn đi bởi các cấu trúc menu, các hình ảnh bắt mắt
hoặc là các nhân viên không đáng tin cậy Không có gì bí mật ở đây, và chúng ta có thể điều khiển được
mạng và giải quyết các vấn đề Đây chính là thế giới của phân tích gói tin
Thế nào là phân tích gói tin?
1
Phân tích gói tin, thông thường được quy vào việc nghe các gói tin và phân tích giao thức, mô tả quá trình bắt và phiên dịch các dữ liệu sống như là các luồng đang lưu chuyển trong mạng với mục tiêu hiểu rõ
hơn điều gì đang diễn ra trên mạng Phân tích gói tin thường được thực hiện bởi một packet sniffer, một
công cụ được sử dụng để bắt dữ liệu thô trên đang lưu chuyển trên đường dây Phân tích gói tin có thể
giúp chung ta hiểu cấu tạo mạng, ai đang ở trên mạng, xác định ai hoặc cái gì đang sử dụng băng thông, chỉ
ra những thời điểm mà việc sử dụng mạng đạt cao điểm, chỉ ra các khả năng tấn công và các hành vi phá
hoại, và tìm ra các ứng dụng không được bảo mật
Có một vài kiểu chương trình nghe gói tin, bao gồm cả miễn phí và sản phẩm thương mại Mỗi chương
trình được thiết kế với các mục tiêu khác nhau Một vài chương trình nghe gói tin phổ biến như là
tcpdump (a command-line program), OmniPeek, và Wireshark (cả hai đều là chương trình có giao diện đồ
hoạ) Khi lựa chọn chương trình nghe gói tin, ta cần phải quan tâm đến một số vấn đề: các giao thức mà
chương trình cần hỗ trợ, tính dễ sử dụng, chi phí, hỗ trợ kỹ thuật và chương trình hỗ trợ cho hệ điều hành
nào
Các bước để nghe gói tin:
2
Quá trình nghe gói tin được chia làm 3 bước: thu thập dữ liệu, chuyển đổi dữ liệu và phân tích
Thu thập dữ liệu: đây là bước đầu tiên, chương trình nghe gói tin chuyển giao diện mạng được lựa chọn sang chế độ Promiscuous Chế độ này cho phép card mạng có thể nghe tất cả các gói tin đang lưu chuyển trên phân mạng của nó Chương trình nghe gói sử dụng chế độ này cùng với việc truy nhập ở mức thấp để bắt các dữ liệu nhị phân trên đường truyền
Chuyển đổi dữ liệu: trong bước này, các gói tin nhị phân trên được chuyển đổi thành các khuôn dạng có thể đọc được
Phân tích: phân tích các gói tin đã được chuyển đổi
Có vài chương trình khác nhau về nghe gói tin, trong tiểu luận này, chúng tôi xin giới thiệu một chương trình điển hình với nhiều tính năng mạnh hỗ trợ việc bắt và phân tích gói tin Đó là WireShark
Nội dung các phần chính:
Phần I: Các cách thức nghe gói tin trên mạng
Trang 4Phần II: Giới thiệu WireShark Phần III: Các tính huống với WireShark Phần IV: Xử lý các tình huống mạng với WireShark
Trang 5I Các cách thức nghe gói tin trên mạng
Để thực hiện việc bắt các gói tin trên mạng, ta phải chỉ ra những vị trí tương ứng để đặt “máy nghe”
vào hệ thống đường truyền của mạng Quá trình này đơn giản là đặt “máy nghe” vào đúng vị trí vật lý nào
trong một mạng máy tính Việc nghe các gói tin không đơn giản chỉ là cắm một máy xách tay vào mạng và
bắt gói Thực tế, nhiều khi việc đặt máy nghe vào mạng khó hơn việc phân tích các gói tin Thách thức của
việc này là ở chỗ là có một số lượng lớn các thiết bị mạng phần cứng được sử dụng để kết nối các thiết bị
với nhau Lý do là vì 3 loại thiết bị chính (hub, switch, router) có nguyên lý hoạt động rất khác nhau Và
điều này đòi hỏi ta phải nắm rõ được cấu trúc vật lý của mạng mà ta đang phân tích
Chúng ta sẽ nghiên cứu một số mạng thực tế để chỉ ra cách tốt nhất để bắt các gói tin trong từng môi trường mạng sử dụng Hub, Switch và Router
Living Promiscuously (chế độ bắt tất cả các gói tin đi qua)
1
Trước khi nghe các gói tin trên mạng, ta cần một card mạng có hỗ trợ chế độ Promiscuous Chế độ Promiscuous cho phép card mạng nhìn thấy thất cả các gói tin đi qua hệ thống dây mạng Khi một card
mạng không ở chế độ này, nó nhìn thấy một số lượng lớn các gói tin trên mạng nhưng không gửi cho nó,
nó sẽ huỷ (drop) các gói tin này Khi nó ở chế độ Promiscuous, nó bắt tất cả các gói tin và gửi toàn bộ tới
CPU
“Nghe” trong mạng có Hub
2
Việc nghe trong một mạng có hub là một điều kiện trong mơ cho việc phân tích gói tin Cơ chế hoạt động của Hub cho phép gói tin được gửi tất cả các cổng của hub Hơn nữa, để phân tích một máy tinh trên
một hub, tất cả các công việc mà bạn cần làm là cắm máy nghe vào một cổng còn trống trên hub Bạn có
thể nhìn thấy tất cả các thông tin truyền và nhận từ tất cả các máy đang kết nối với hub đó, của sổ tầm
nhìn của bạn không bị hạn chế khi mà máy nghe của bạn được kết nối với một mạng hub
“Nghe” trong mạng Switched
3
Một môi trường switched là kiểu mạng phổ biến mà bạn làm việc Switch cung cấp một phương thức hiệu quả để vận chuyển dữ liệu thông qua broadcast, unicast, multicast Switch cho phép kết nối song công
(full-duplex), có nghĩa là máy trạm có thể truyền và nhận dữ liệu đồng thời từ switch Khi bạn cắm một
máy nghe vào một cổng của switch, bạn chỉ có thể nhìn thấy các broadcast traffic và những gói tin gửi và
nhận của máy tính mà bạn đang sử dụng
Trang 6Có 3 cách chính để bắt được các gói tin từ một thiết bị mục tiêu trên mạng switch: port mirroring, ARP cache poisoning và hubbing out
Port Mirroring
Port mirroring hay còn gọi là port spanning có thể là cách đơn giản nhất để bắt các lưu lượng từ thiết bị mục tiêu trên mạng switch Với cách này, bạn phải truy cập được giao diện dòng lệnh của switch mà máy
mục tiêu cắm vào Tất nhiên là switch này phải hỗ trợ tính năng port mirroring và có một port trống để bạn
có thể cắm máy nghe vào Khi ánh xạ cổng, bạn đã copy toàn bộ lưu lượng đi qua cổng này sang một cổng
khác
Hubbing Out
Một cách đơn giản khác để bắt các lưu lượng của thiết bị mục tiêu trong một mạng switch là hubbing
Trang 7out Hubbing out là kỹ thuật mà trong đó bạn đặt thiết bị mục tiêu và máy nghe vào cùng một phân mạng
bằng cách đặt chúng trực tiếp vào một hub
Rất nhiều người nghĩ rằng hubbing out là lừa dối, nhưng nó thật sự là một giải pháp hoàn hảo trong các tình huống mà bạn không thể thực hiện port mirroring nhưng vẫn có khả năng truy cập vật lý tới switch mà
thiết bị mục tiêu cắm vào
Trong hầu hết các tình huống, hubbing out sẽ giảm tính năng song công của thiết bị mục tiêu (full to haft) Trong khi phương thức này không phải là cách sạch sẽ nhất để nghe, và nó thường được bạn sử dụng
như là một lựa chọn khi mà switch không hỗ trợ port mirroring
Khi hubbing out, chắc chắn rằng bạn sử dụng một cái hub chứ không phải là một switch bị gắn nhầm nhãn Khi mà bạn sử dụng hub, hãy kiểm tra để chắc chắn rằng nó là một hub bằng cách cắm 2 máy tính
vào nó và nhìn xem cái một máy có thể nhìn thấy lưu lượng của cái còn lại không
ARP Cache Poisoning
Địa chỉ tầng 2 (địa chỉ MAC) được sử dụng chung với hệ thống hệ thống địa chỉ tầng 2 Tất cả các thiết
bị trong một mạng liên lạc với nhau thông qua địa chỉ IP Do switch làm việc tại tầng 2, vì vậy nó phải có
khả năng phiên dịch địa chỉ tầng 2 (MAC) sang địa chỉ tầng 3 (IP) hoặc ngược lại để có thể chuyển tiếp gói
tin tới thiết bị tương ứng Quá trình phiên dịch được thực hiện thông qua một giao thức tầng 3 là ARP
(Address Resolution Protocol) Khi một máy tính cần gửi dữ liệu cho một máy khác, nó gửi một yêu cầu
ARP tới switch mà nó kết nối Switch đó sẽ gửi một gói ARP broadcast tới tất cả các máy đang kết nối với
nó để hỏi Khi mà máy đích nhận được gói tin này, nó sẽ thông báo cho switch bằng cách gửi địa chỉ MAC
của nó Sau khi nhận được gói tin phản hồi, Switch định tuyến được kết nối tới máy đích Thông tin nhận
được được lưu trữ trong ARP cache của switch và switch sẽ không cần phải gửi một thông điệp ARP
broadcast mới mỗi lần nó cần gửi dữ liệu tới máy nhận
ARP cache poisoning là một kỹ thuật nâng cao trong việc nghe đường truyền trong một mạng switch
Nó được sử dụng phổ biến bởi hacker để gửi các gói tin địa chỉ sai tới máy nhận với mục tiêu để nghe trộm
đường truyền hiện tại hoặc tấn công từ chối dịch vụ, nhưng ARP cache poisoning chỉ có thể phục vụ như
Trang 8là một cách hợp pháp để bắt các gói tin của máy mục tiêu trong mạng switch ARP cache poisoning là quá
trình gửi một thông điệp ARP với địa chỉ MAC giả mạo tới switch hoặc router nhằm mục đích nghe lưu
lượng của thiết bị mục tiêu Có thể sử dụng chương trinh Cain & Abel để thực hiện việc này
(http://www.oxid.it)
Nghe trong mạng sử dụng Router
4
Tất cả các kỹ thuật nghe trong mạng switch đều có thể được sử dụng trong mạng router Chỉ có một việc cần quan tâm khi mà thực hiện với mạng router là sự quan trọng của việc đặt máy nghe khi mà thực
hiện xử lý một vấn đề liên quan đến nhiều phân mạng Broadcast domain của một thiết bị được mở rộng
cho đến khi nó gặp router Khi đó, lưu lượng sẽ được chuyển giao sang dòng dữ liệu router tiếp theo và
bạn sẽ mất liên lạc với các gói tin đó cho đến khi bạn nhận được một ACK của các máy nhận trả về Trong
tình hướng này, dữ liệu sẽ lưu chuyển qua nhiều router, vì vậy rất quan trọng để thực hiện phân tích tất cả
lưu lượng trên các giao diện của router
Ví dụ, liên quan đến vấn đề liên kết, bạn có thể gặp phải một mạng với một số phân mạng được kết nối với nhau thông qua các router Trong mạng đó, một phân mạng liên kết với một phân mạng với mục đích
lưu trữ và tham chiếu dữ liệu Vấn đề mà chúng ta đang cố gắng giải quyết là phân mạng D không thể kết
nối với các thiết bị trong phân mạng A
Trang 9Khi mà bạn nghe lưu lượng của một thiết bị trong phân mạng D Khi đó, bạn có thể nhìn tháy rõ ràng lưu lượng truyền tới phân mạng A, nhưng không có biên nhận (ACK) nào được gửi lại Khi bạn nghe luồng
lưu lượng ở phân mạng cấp trên để tìm ra nguyên nhân vấn đề, bạn tìm ra rằng lưu lượng bị huỷ bởi router
ở phân mạng B Cuối cùng dẫn đến việc bạn kiểm tra cấu hình của router, nếu đúng, hãy giải quyết vấn đề
đó của bạn Đó là một ví dụ điển hình lý do vì sao cần nghe lưu lượng của nhiều thiết bị trên nhiều phân
mạng với mục tiêu xác định chính xác vấn đề
Network Maps
Để quyết định việc đặt máy nghe ở đâu, cách tốt nhất là bạn phải biết được một cách rõ ràng mạng mà bạn định phân tích Nhiều khi việc xác định vấn đề đã chiếm nửa khối lượng công việc trong việc xử lý sự
cố
II Giới thiệu 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,
Trang 10Combs 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 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ó giao thứ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 đồ 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
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.
Một số tính năng nâng cao của Wireshark
Name Resolution
1
Dữ liệu truyền trong mạng thông qua một vài hệ thống địa chỉ, các địa chỉ này thường dài và khó nhớ (Ví dụ: MAC) Phân giải điạch chỉ là quá trình mà một giao thức sử dụng để chuyển đổi một địa chỉ loại
này thành một địa chỉ loại khác đơn giản hơn Chúng ta có thể tiết kiệm thời gian bằng cách sử dụng một
vài công cụ phân giải địa chỉ để file dữ liệu ta bắt được dễ đọc hơn Ví dụ như là chúng 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 sang tên hãng sản xuất đã được IEEE đặc tả,
ví dụ: Netgear_01:02:03
Network Name Resolution: chuyển đổi địa chỉ tầng 3 sang một tên DNS dễ đọc như là MarketingPC1.
Transport Name Resolution: chuyển đổi một cổng sang một tên dịch vụ tương ứng với nó, ví dụ: cổng
80 là http
Trang 11Protocol Dissection
2
Một protocol dissector cho phép Wireshark phân chia một giao thức thành một số thành phần để phân tích ICMP protocol dissector cho phép Wireshark phân chia dữ liệu bắt được và định dạng chúng như là
một gói tin ICMP Bạn có thể nghĩ rằng một dissector như là một bộ phiên dịch giữa dòng dữ liệu trên
đường truyền và chương trình Wireshark Với mục đích để hỗ trợ một giao thức nào đó, một dessector cho
giao thức đó phải được tích hợp trong Wireshark Wireshark sử dụng đồng thời vài 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ể
Following TCP Streams
3
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 giố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)
Cửa sổ thống kê phân cấp giao thức
4
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 giao thứ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
Xem các Endpoints
5
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