CƠ SỞ LÝ THUYẾT MẠNG MÁY TÍNH
Kiến trúc phân tầng
Để giảm độ phức tạp trong thiết kế và cài đặt mạng, các mạng máy tính được tổ chức theo kiểu phân tầng (layering) Mỗi tầng trong cấu trúc đa tầng này được xây dựng dựa trên tầng trước đó và cung cấp dịch vụ cho tầng cao hơn Số lượng và chức năng của các tầng phụ thuộc vào thiết kế của từng nhà sản xuất, như mạng SNA của IBM, DECnet của Digital hay ARPANET Nguyên tắc chính của mạng phân tầng là mọi hệ thống đều có cấu trúc phân tầng giống nhau, với mục đích cung cấp dịch vụ nhất định cho tầng cao hơn.
Tầng i của hệ thống A sẽ hội thoại với tầng i của hệ thống B, các quy tắc và quy ước dùng trong hội thoại gọi là giao thức mức I
Giữa hai tầng kề nhau tồn tại một giao diện (interface) xác định các thao tác nguyên thuỷ của tầng dưới cung cấp lên tầng trên
Trong hệ thống mạng, dữ liệu không được truyền trực tiếp từ tầng này sang tầng khác, ngoại trừ tầng thấp nhất sử dụng đường truyền vật lý để chuyển các bit từ hệ thống này sang hệ thống khác Dữ liệu được gửi từ hệ thống gửi (sender) đến hệ thống nhận (receiver) qua đường truyền vật lý, sau đó tiếp tục đi lên các tầng cao hơn Khi hai hệ thống kết nối, chỉ tầng thấp nhất có liên kết vật lý, trong khi các tầng cao hơn chỉ có liên kết logic (liên kết ảo) để hỗ trợ thiết kế và cài đặt phần mềm truyền thông Do đó, khi viết chương trình cho tầng N, cần hiểu rõ yêu cầu của tầng N+1 và khả năng của tầng N-1.
Hình 1.1: Minh họa kiến trúc phân tầng tổng quát
Nguyên tắc để xây dựng kiến trúc phân tầng như sau:
Để đơn giản cần hạn chế số lượng các tầng
Tạo ranh giới các tầng sao cho các tương tác và mô tả các dịch vụ là tối thiểu
Chia các tầng trong hệ thống để tách biệt các chức năng khác nhau, đồng thời đảm bảo rằng các tầng sử dụng các công nghệ khác nhau cũng được phân chia rõ ràng.
Các chức năng giống nhau được đặt vào cùng một tầng
Chọn ranh giới các tầng theo kinh nghiệm đã được chứng tỏ là thành công
Các chức năng được định vị sao cho có thể thiết kế lại tầng mà ảnh hưởng ít nhất đến các tầng kế nó
Tạo ranh giới giữa các tầng sao cho có thể chuẩn hóa giao diện tương ứng
Tạo một tầng khi dữ liệu được xử lý một cách khác biệt
Cho phép thay đổi chức năng hoặc giao thức trong một tầng không làm ảnh hưởng đến các tầng khác
Mỗi tầng chỉ có các ranh giới (giao diện) với các tầng kề trên và kề dưới nó
Có thể chia một tầng thành các tầng con khi cần thiết
Tạo tầng con để cho phép giao diện với các tầng kế cận
Cho phép hủy bỏ các tầng con nếu thấy không cần thiết.
Bộ giao thức TCP/IP
Bộ giao thức TCP/IP, hay còn gọi là bộ giao thức liên mạng, là một tập hợp các giao thức truyền thông quan trọng mà Internet và hầu hết các mạng máy tính thương mại sử dụng Bộ giao thức này được đặt tên theo hai giao thức chính là TCP (Giao thức Điều khiển Giao vận) và IP (Giao thức Liên mạng).
1.2.2 Cấu trúc phân tầng của TCP/IP
Bộ giao thức TCP/IP được thiết kế gồm 4 tầng được mô tả theo hình dưới:
Hình 1.2.2: Bộ giao thức TCP/IP
1.2.3 Đóng gói dữ liệu trong TCP/IP
Bộ giao thức TCP/IP sử dụng phương pháp đóng gói dữ liệu để trừu tượng hóa các giao thức và dịch vụ, cho phép các giao thức ở tầng cao hơn tận dụng các giao thức ở tầng thấp hơn nhằm đạt được mục tiêu truyền tải thông tin.
Hình 1.2.3-a: Cách đóng gói dữ liệu
Các tầng trên đỉnh gần gũi với người sử dụng, trong khi các tầng thấp hơn gần với thiết bị truyền thông Mỗi tầng bao gồm nhiều giao thức, trong đó có một giao thức phục vụ cho tầng trên và một giao thức sử dụng dịch vụ từ tầng dưới (trừ tầng đỉnh và tầng đáy) Dưới đây là bảng liệt kê một số giao thức của các tầng.
DNS, TFTP, TLS/SSL, FTP, Gopher, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP,SMPP, SNMP, SSH, Telnet, Echo, RTP, PNRP, rlogin, ENRP
Tra nsport TCP, UDP, DCCP, SCTP, IL, RUDP, RSVP
Inte rnet IP (IPv4, IPv6), ICMP, IGMP, ICMPv6
Lin k ARP, RARP, OSPF (IPv4/IPv6), IS-IS, NDP
Hình 1.2.3-b: Một số giao thức trên các tầng của TCP/IP
A Sơ lược chức năng các tầng a Tầng ứng dụng (Application Layer) Đây là tầng cao nhất trong cấu trúc phân lớp của TCP/IP Tầng này bao gồm tất cả các chuơng trình ứng dụng sử dụng các dịch vụ sẵn có thông qua một chồng giao thức TCP/IP Các chương trình ứng dụng tương tác với một trong các giao thức của tầng giao vận để truyền hoặc nhận dữ liệu Mỗi chương trình ứng dụng lựa chọn một kiểu giao thức thích hợp cho công việc của nó Chương trình ứng dụng chuyển dữ liệu theo mẫu mà tầng giao vận yêu cầu b Tầng giao vận (Transport Layer)
Tầng giao vận đóng vai trò quan trọng trong việc cung cấp giao tiếp thông tin giữa các chương trình ứng dụng thông qua các kết nối end-to-end Nó không chỉ điều chỉnh lưu lượng thông tin mà còn đảm bảo sự vận chuyển tin cậy, giúp dữ liệu đến nơi mà không bị lỗi Để thực hiện điều này, phần mềm giao thức hỗ trợ bên nhận gửi lại thông báo xác nhận về việc nhận dữ liệu, trong khi bên gửi có thể truyền lại các gói tin bị mất hoặc bị lỗi Dữ liệu được chia thành các đơn vị nhỏ hơn, gọi là packets, và mỗi packet sẽ được chuyển đến tầng tiếp theo cùng với địa chỉ đích để tiếp tục quá trình truyền dẫn.
Tầng mạng xử lý giao tiếp thông tin từ một máy này tới một máy khác
Tầng giao vận chấp nhận yêu cầu gửi gói tin đến địa chỉ máy đích, sử dụng giao thức TCP hoặc UDP để bọc gói tin trong IP Datagram Nó điền thông tin vào phần header và quyết định phương thức giao phát gói tin, có thể là trực tiếp hoặc qua Router, trước khi chuyển datagram tới giao diện mạng phù hợp Tầng mạng cũng xử lý các Datagram đến, kiểm tra tính hợp lệ và quyết định xử lý cục bộ hay chuyển tiếp Đối với các datagrams có địa chỉ đích cục bộ, phần mềm tầng mạng sẽ xoá phần header và chọn giao thức tầng giao vận thích hợp để xử lý packet.
Tầng thấp nhất trong bộ giao thức TCP/IP đảm nhận vai trò chấp nhận các datagram từ tầng trên, như IP datagram, và truyền phát chúng qua một mạng cụ thể Hiện nay, mô hình TCP/IP đã không còn bao gồm các đặc tả vật lý, do đó tầng liên kết cũng không đề cập đến vấn đề phần cứng hay truyền tín hiệu vật lý.
B Các giao thức chính và khuôn dạng dữ liệu tương ứng
Trong phần này, chúng ta sẽ phân tích các giao thức và khuôn dạng dữ liệu chính của bộ giao thức TCP/IP Để dễ dàng phân biệt, chúng ta sẽ xem xét từng tầng của TCP/IP theo thứ tự từ dưới lên trên, bắt đầu với Ethernet.
Ethernet là một giao thức thuộc tầng liên kết trong bộ giao thức TCP/IP, được quy định theo tiêu chuẩn IEEE 802.3, chủ yếu được sử dụng trong mạng cục bộ (LAN) Giao thức này cho phép truyền tải dữ liệu giữa điểm nguồn và điểm đích thông qua địa chỉ MAC (Media Access Control) Ethernet hiện đang phổ biến hơn so với các giao thức khác như FDDI hay Token Ring, nhờ vào tính hiệu quả và khả năng kết nối cao.
Cấu trúc của một đơn vị dữ liệu trong giao thức Ethernet (gọi là Ethernet frame) có cấu trúc như sau: (đơn vị tính theo byte)
Cấu trúc của một header Ethernet bao gồm nhiều thành phần quan trọng Đầu tiên là phần mở đầu (Preamble) dài 7 byte, chứa giá trị 10101010, giúp đồng bộ đồng hồ giữa thiết bị gửi và nhận Tiếp theo là SOF (Start frame delimiter) dài 1 byte với giá trị 10101011, đánh dấu sự bắt đầu của frame Đối với các hệ thống Ethernet hiện đại hoạt động ở tốc độ 100 Mbps hoặc 1000 Mbps, PRE và SOF không còn cần thiết Địa chỉ đích (DA) dài 6 byte xác định địa chỉ MAC của thiết bị nhận, trong khi địa chỉ nguồn (SA) cũng dài 6 byte, xác định địa chỉ MAC của thiết bị gửi Cuối cùng, trường Length/Type dài 2 byte chỉ ra độ dài của frame và loại giao thức của tầng cao hơn, thường là DIX Ethernet (DEC-Intel-Xerox) phổ biến hơn trong các ứng dụng hiện nay.
For a DIX Ethernet frame using the IP protocol, the two bytes are represented as 0800h, while for ARP, they are 0806h The Data Payload contains information ranging from 46 to 1500 bytes in length Additionally, the Trailer, known as the Frame Check Sequence (FCS), includes a 32-bit CRC for error correction.
PRE SOF DA SA Length/Type Data Payload FCS
Ethernet sử dụng phương thức truy cập CSMA/CD, dẫn đến việc không thể tránh khỏi các frame lỗi do xung đột Nếu tỷ lệ frame lỗi vượt quá 1% tổng số frame, điều này cho thấy hệ thống mạng đang gặp vấn đề Các frame lỗi trong Ethernet bao gồm:
Frame có độ lớn nhỏ hơn 64 byte
Frame có độ lớn lớn hơn 1518 byte
Frames with appropriate size but incorrect CRC indicate late collisions, which can signal serious issues within the network if multiple such frames are present Additionally, the Address Resolution Protocol (ARP) plays a crucial role in network communication by mapping IP addresses to MAC addresses.
Giao thức phân giải địa chỉ ARP là phương pháp tìm kiếm địa chỉ vật lý (địa chỉ tầng liên kết) từ địa chỉ IP hoặc các kiểu địa chỉ mạng khác Mặc dù ARP chủ yếu được sử dụng để chuyển đổi giữa địa chỉ IP và địa chỉ MAC, nó cũng tương thích với nhiều loại địa chỉ trong các mạng khác nhau Sự phổ biến của IPv4 và Ethernet khiến ARP trở thành công cụ chính cho việc chuyển đổi địa chỉ trong các mạng LAN.
FDDI, Token Ring, IEEE 802.11 hay ATM
Khi giao tiếp với máy chủ, giao thức ARP sử dụng bộ đệm ARP thay vì truy vấn địa chỉ vật lý trực tiếp Bộ đệm này lưu trữ các địa chỉ IP đã được phân giải gần nhất Nếu địa chỉ MAC tương ứng với địa chỉ IP đích có trong bộ đệm, nó sẽ được sử dụng để truyền thông.
Cấu trúc của một đơn vị dữ liệu giao thức ARP như sau:
0 Hardware type (HTYPE) Protocol type (PTYPE)
32 Hardware length (HLEN) Protocol length
96 Sender hardware address (SHA) Sender protocol address (SPA)
128 Sender protocol address (SPA) Target hardware address (THA)
Hình 1.2.3-d : Cấu trúc một đơn vị dữ liệu ARP
Hardware type (HTYPE) Mỗi giao thức tầng liên kết (link layer) sẽ được gán một số để phân biệt (ví dụ như Ethernet là 1)
Protocol type (PTYPE) Dùng để phân biệt giao thức tầng Internet, ví dụ như với IP là 0x0800
Hardware length (HLEN) Độ dài tính theo byte của địa chỉ vật lý Đối với Ethernet giá trị này là 6
Protocol length (PLEN) Độ dài tính theo byte của địa chỉ logic Đối với IP giá trị này là 4
Operation Xác định hành động mà bên gửi gói tin đang thực hiện: 1 cho request, 2 cho reply, 3 cho RARP request và 4 cho RARP reply
Sender hardware address (SHA) Địa chỉ vật lý của trạm gửi
Sender protocol address (SPA) Địa chỉ logic của trạm gửi (ví dụ như địa chỉ IP)
Target hardware address (THA) Địa chỉ vật lý của trạm đích Trường này được để trống đối với gói tin request
Target protocol address (TPA) Địa chỉ logic của trạm đích c RARP (reserve address resolution protocol)
KỸ THUẬT CHẶN BẮT SNIFFER
Các khái niệm căn bản về Sniffer
Sniffer, ban đầu là tên một sản phẩm của Network Associates mang tên Sniffer Network Analyzer, là một chương trình giúp theo dõi lưu lượng thông tin trong hệ thống mạng Khi tìm kiếm từ khóa "Sniffer", bạn sẽ tìm thấy nhiều thông tin về các công cụ Sniffer phổ biến hiện nay Chương trình này hoạt động tương tự như thiết bị nghe lén trên điện thoại, nhưng được thiết kế để hoạt động trong môi trường mạng máy tính Để có thể phân tích và hiểu dữ liệu nhị phân, Sniffer cần có tính năng phân tích giao thức (Protocol Analysis) và giải mã (Decode) dữ liệu Người dùng có thể triển khai Sniffer trên bất kỳ Host nào trong mạng thông qua chế độ hỗn tạp (promiscuous mode).
Sniffer được sử dụng với hai mục đích khác nhau: một là công cụ hỗ trợ quản trị mạng trong việc theo dõi và bảo trì hệ thống mạng, hai là chương trình có thể bị lạm dụng để nghe lén và thu thập thông tin trên mạng Dưới đây là một số tính năng của Sniffer được áp dụng trong cả hai hướng tích cực và tiêu cực.
Phân tích hiệu năng làm việc hoặc sự cố mạng
Nhận biết sự xâm nhập mạng, rò rỉ thông tin, lấy về thông tin liên quan tới quá trình xâm nhập
Quản lý sử dụng mạng
Tập hợp thông tin báo cáo về trạng thái mạng
Sửa lỗi, bảo trì các hình thái, giao thức mạng
Lọc lấy thông tin cần thiết được lưu chuyển trên mạng, đưa về dạng phù hợp để con người có thể đọc
Chặn bắt các thông tin nhạy cảm như mật khẩu, username của người dùng khác trên mạng nhằm xâm nhập hệ thống của họ
2.1.3 Các khái niệm liên quan
Packet là một đơn vị dữ liệu được định dạng để lưu chuyển trên mạng
Network Traffic là lượng thông tin di chuyển vào và ra khỏi hệ thống mạng Để đo lường và kiểm soát Network Traffic, việc chặn bắt các gói tin (Packet capture) là cần thiết.
Packet capture là quá trình chặn bắt dữ liệu trên mạng, bao gồm hai phương pháp chính: Deep Packet Capture (DPC) và Deep Packet Inspection (DPI) DPC cho phép chặn bắt toàn bộ gói tin, bao gồm cả header và payload, và lưu trữ chúng trong bộ nhớ Trong khi đó, DPI là quá trình kiểm tra và đánh giá nhằm phát hiện nguyên nhân sự cố mạng, xác định rủi ro bảo mật và đảm bảo mạng hoạt động đúng kỹ thuật và pháp lý Sự kết hợp giữa DPC và DPI giúp quản lý và phân tích luồng gói tin trên mạng, đồng thời lưu giữ thông tin cho các mục đích sau này Thực tế, packet capture có thể ghi lại header mà không cần lưu trữ toàn bộ nội dung payload, giúp giảm yêu cầu bộ nhớ và tránh các vấn đề pháp lý, trong khi vẫn đảm bảo thông tin cần thiết.
Packet Analyzer (Sniffer) là công cụ phần mềm hoặc phần cứng dùng để giám sát lưu lượng mạng, cho phép theo dõi thông tin truyền tải trên một mạng hoặc một phần của mạng Công cụ này có khả năng chặn bắt và phân tích các gói tin, từ đó giải mã nội dung để phục vụ cho nhiều mục đích khác nhau.
Công nghệ Ethernet hoạt động dựa trên nguyên lý chia sẻ, cho phép tất cả các máy tính trong một mạng cục bộ cùng sử dụng đường truyền chung Điều này có nghĩa là mọi máy tính đều có khả năng nhận diện lưu lượng dữ liệu trên mạng Phần cứng Ethernet được thiết kế để lọc và loại bỏ các dữ liệu không thuộc về nó, bằng cách bỏ qua các Frame có địa chỉ MAC không hợp lệ Khi chức năng lọc này bị tắt và chế độ hỗn tạp (promiscuous mode) được kích hoạt, Sniffer có thể theo dõi toàn bộ lưu lượng thông tin giữa các máy trong mạng, miễn là chúng cùng chia sẻ một hệ thống mạng.
Các thành phần của một chương trình sniffer a Hardware
Phần cứng của network adapter đáp ứng đầy đủ các tiêu chuẩn kỹ thuật, đồng thời có thể tích hợp các tính năng đặc biệt như kiểm tra lỗi CRC, lỗi điện thế và lỗi cáp để nâng cao hiệu suất và độ tin cậy của kết nối mạng.
Để chặn bắt các gói tin vào/ra trong một mạng gián tiếp, card mạng cần hỗ trợ chế độ đa hỗn tạp (promiscuous mode), và hầu hết các card mạng hiện nay đều có tính năng này Tuy nhiên, với sự chuyển mình từ hub sang switch trong các mạng hiện tại, việc chặn bắt gói tin đã trở nên phức tạp hơn so với trước đây.
Phần quan trọng nhất của hệ thống là khả năng bắt giữ lưu lượng mạng trên đường dây, lưu trữ dữ liệu vào bộ đệm và lọc ra thông tin cần thiết Bộ đệm đóng vai trò quan trọng trong việc quản lý và xử lý dữ liệu hiệu quả.
Dữ liệu sau khi được lấy về sẽ được lưu trữ tạm thời tại buffer Thường có
Có hai phương pháp sử dụng buffer: ghi dữ liệu cho đến khi buffer đầy hoặc sử dụng phương pháp vòng tròn, trong đó dữ liệu mới nhất sẽ thay thế dữ liệu cũ nhất Ngoài ra, việc phân tích dữ liệu theo thời gian thực cũng là một yếu tố quan trọng trong quản lý buffer.
Phân tích traffic về protocol, kiểm tra lỗi khi capture packet e Decode
Giải mã và hiển thị nội dung của network traffic dưới dạng phù hợp tùy thuộc vào yêu cầu
Một vài chương trình cho phép chúng ta tự tạo cho mình những packet và đưa chúng lên mạng.
Giải pháp phòng chống Sniffer
Một số phương thức đơn giản nhất để phát hiện chương trình sniffer:
Gửi một gói tin ping tới địa chỉ IP mà không phải là Ethernet Adapter, gồm những bước như sau:
Giả sử máy nghi ngờ có địa chỉ IP 10.0.0.1 và MAC là 00-40-05-A4-79-32
Gửi một gói tin “ICMP Echo Request” (ping) có IP của máy nghi ngờ và địa chỉ MAC thay đổi (ví dụ 00-40-05-A4-79-31)
Nếu như ta nhận được phản hồi tức là máy nghi ngờ đã bỏ chức năng Ethernet Filter, do đó nó đang lắng nghe trên đường dây
Tương tự như Ping nhưng sử dụng gói tin ARP thay cho ICMP
Nhiều chương trình sniffer tự động chuyển đổi địa chỉ IP qua DNS, cho phép phát hiện chế độ promiscuous của một máy thông qua lưu lượng DNS mà nó tạo ra Để thực hiện điều này, cần thiết lập máy nghi ngờ gửi yêu cầu tới DNS server mà chúng ta kiểm soát, sau đó phân tích lưu lượng để xác định.
Phương pháp này phát hiện hành động Sniff trên từng đoạn mạng bằng cách sử dụng thông tin từ địa chỉ nguồn và địa chỉ đích trong mỗi Header của IP.
Để kiểm tra kết nối giữa hai máy tính, bạn cần ping từ máy tính nguồn đến máy tính đích, nhưng phải vô hiệu hóa tính năng Routing trên máy tính nguồn Điều này giúp đảm bảo gói tin không đến được đích Nếu nhận được phản hồi, có thể hệ thống mạng của bạn đã bị cài đặt Sniffer Để thực hiện phương pháp này, bạn cần điều chỉnh một số tùy chọn trong Header IP, cho phép Router bỏ qua các địa chỉ IP đến và tiếp tục chuyển tiếp đến các địa chỉ IP trong tùy chọn Source-Route của Router.
Bob và Anna đang nằm trên một đoạn mạng Khi một người khác gửi cho Anna vài Packet IP và yêu cầu chuyển đến Bob, Anna không thể thực hiện điều này vì cô không phải là Router, do đó, cô sẽ Drop tất cả các Packet IP Mặc dù không nhận được Packet nào, Bob vẫn có khả năng trả lời nhờ sử dụng các chương trình Sniffer, điều này cho thấy một sự bất hợp lý trong quá trình truyền tải dữ liệu.
2.2.5 Phương pháp giăng bẫy (Decoy)
Phương pháp này tương tự như ARP, nhưng áp dụng cho các mạng rộng lớn hơn Nhiều giao thức sử dụng mật khẩu không được mã hóa, tạo cơ hội cho hacker khai thác Bằng cách giả lập các client sử dụng dịch vụ như POP, FTP, Telnet, IMAP với người dùng không có quyền hoặc không tồn tại, hacker có thể thu thập thông tin quý giá Khi sniff được những dữ liệu này, họ sẽ tìm cách kiểm tra và khai thác chúng.
2.2.6 Phương pháp kiểm tra sự chậm trễ của gói tin (Latency)
Phương pháp này nhằm giảm thiểu lưu thông trên mạng bằng cách gửi lượng thông tin lớn đến máy tính nghi ngờ cài đặt Sniffer Tuy nhiên, nếu máy tính đó không có dữ liệu gì, hiệu ứng sẽ không đáng kể Bạn có thể ping máy tính nghi ngờ trước và trong thời gian chịu tải để so sánh sự khác biệt Dù vậy, phương pháp này không hiệu quả, vì các gói IP gửi đi có thể gây ra trễ và thất lạc Hơn nữa, các Sniffer hoạt động ở chế độ "User Mode" cũng do CPU xử lý độc lập, dẫn đến kết quả không chính xác.
2.2.7 Phương pháp chống Sniffer trong mạng Lan
Kiểm tra Mac address của Default Gateway của máy tinh
Hình 2.2.7-a : Kiểm tra Mac address của Default Gateway
Ta thấy default Gateway là : 192.168.1.1 Để xác định Mac Address của Default ta tiến hành Ping địa chỉ này
Hình 2.2.7-b : Xác định Mac address của Default Gateway và chạy lệnh : arp –s
Hình 2.2.7-c : thực hiện lệnh arp –s
Sau đó chạy lệnh arp –a để hiển thị Mac của :
Hình 2.2.7-d : thực hiện lệnh arp –s
Chúng ta thấy Mac address của 192.168.1.1 là : 00-23-f8-91-1e-58
Chúng ta sẽ add địa chỉ này vào máy tính của mình bằng lệnh :
Hình 2.2.7-e : add địa chỉ Mac
Kiểm tra lại bằng lệnh arp-s ta sẽ thấy kiểu của nó sẽ thay đổi thành statics :
Bây giờ chúng ta có thể trình duyệt web , quản lý web server an toàn hơn….
WIRESHARK
Tổng quan về Wireshark
WireShark có một lịch sử phong phú, được phát triển lần đầu bởi Gerald Combs Phiên bản đầu tiên, mang tên Ethereal, được phát hành vào năm 1998 Tám năm sau, Combs rời bỏ công việc để theo đuổi cơ hội nghề nghiệp mới nhưng không thể đạt được thỏa thuận về bản quyền thương hiệu Ethereal với công ty cũ Do đó, Combs cùng đội phát triển đã quyết định xây dựng một thương hiệu mới cho sản phẩm này.
2006, dự án tên là WireShark
WireShark đã phát triển mạnh mẽ với đội ngũ phát triển lên đến 500 cộng tác viên Sản phẩm này trước đây được biết đến với tên gọi Ethereal nhưng đã không còn đượ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ó đáp ứng nhu cầu của cả nhà phân tích chuyên nghiệp và nghiệp dư, cung cấp nhiều tính năng hấp dẫn cho từng đối tượng người dùng khác nhau.
Các giao thực được hỗ trợ bởi WireShark:
Wireshark nổi bật với khả năng hỗ trợ khoảng 850 giao thức khác nhau, từ những giao thức phổ biến như TCP và IP đến các giao thức đặc biệt như AppleTalk và Bit Torrent Nhờ vào việc phát triển trên nền tảng mã nguồn mở, Wireshark có thể dễ dàng tích hợp các giao thức mới, cho thấy rằng không có giao thức nào mà Wireshark không thể hỗ trợ.
Wireshark có giao diện thân thiện với người dùng, được coi là một trong những phần mềm phân tích gói dễ sử dụng nhất Ứng dụng này sở hữu hệ thống menu rõ ràng và bố trí dễ hiểu, giúp người dùng dễ dàng thao tác Khác với những sản phẩm sử dụng dòng lệnh phức tạp như TCPdump, giao diện đồ họa của Wireshark rất phù hợp cho những ai đã từng tìm hiểu về phân tích giao thức.
Wireshark là một phần mềm miễn phí theo giấy phép GPL, cho phép người dùng tải về và sử dụng cho mọi mục đích, bao gồm cả 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.
Sử lý một số tình huống cơ bản với Wireshark
Trong phần này, chúng ta sẽ tập trung vào việc sử dụng Wireshark để phân tích gói tin nhằm giải quyết một vấn đề cụ thể trong mạng.
Tôi xin đưa ra một số tình huống điển hình
3.2.1 A Lost TCP Connection (mất kết nối TCP)
Một trong những vấn đề thường gặp là mất kết nối mạng Thay vì tìm hiểu nguyên nhân gây ra tình trạng này, chúng ta sẽ xem xét hiện tượng mất kết nối ở cấp độ gói tin.
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
Hình 3.2.1-a : 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
Theo thiết kế của TCP, khi gửi một gói tin đến đích mà không nhận được phản hồi, hệ thống sẽ tự động gửi lại gói tin đó sau một khoảng thời gian nhất định Nếu vẫn không có phản hồi, máy nguồn sẽ tăng gấp đôi thời gian chờ cho lần gửi lại tiếp theo.
Hình 3.2.1-c: TCP sẽ gửi một gói tin
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.2.1-d : 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
Unreachable Destinations and ICMP Codes (không thể chạm tới điểm cuối và các mã ICMP)
Công cụ ICMP ping là một trong những công cụ quan trọng để kiểm tra kết nối mạng Nếu nhận được phản hồi từ máy mục tiêu, điều đó cho thấy bạn đã ping thành công; ngược lại, nếu không có phản hồi, bạn sẽ nhận 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 sẽ cung cấp nhiều thông tin hơn so với việc chỉ sử dụng ICMP ping thông thường, giúp bạn nhìn rõ hơn các lỗi liên quan đến ICMP.
Hình 3.2.1 e : 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áy 10.2.99.99
So với ping thông thường, kết nối từ địa chỉ 10.2.99.99 có dấu hiệu bị đứt Bên cạnh đó, cũng cần lưu ý đến các mã lỗi của ICMP, chẳng hạn như mã lỗi 1 (Host unreachable).
Hình 3.2.1-f : This ICMP type 3 packet is not what we expected
3.2.2 Unreachable Port (không thể kết nối tới cổng)
Một trong những nhiệm vụ phổ biến là kiểm tra kết nối tới một cổng trên máy đích, nhằm xác định xem cổng đó có mở và sẵn sàng nhận yêu cầu hay không.
Để kiểm tra xem dịch vụ FTP có hoạt động trên một server hay không, ta cần gửi gói tin ICMP đến cổng 21, cổng mặc định cho FTP Nếu máy đích phản hồi với gói ICMP loại 0 và mã lỗi 2, điều đó có nghĩa là không thể kết nối đến cổng 21.
The ping request illustrated in Figure 3.2.2-a involves three packets, highlighting that the recorded packet size exceeds the default 32 bytes typically sent during a ping to a Windows-based computer.
Kích thước gói tin ở đây là 3,072 bytes
Determining 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)
Chúng tôi có hai nhân viên mới, Hải và Thanh, được sắp xếp ngồi cạnh nhau với hai máy tính riêng biệt Sau khi thiết lập và kết nối cả hai máy tính vào mạng, một vấn đề đã xảy ra: máy tính của Hải hoạt động tốt và kết nối Internet bình thường, trong khi máy tính của Thanh lại không thể truy cậ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ửa lỗi đó
Các thông tin chúng ta có
cả 2 máy tính đều mới
Cả hai máy đều được cấu hình với địa chỉ IP và có khả năng ping đến các máy khác trong mạng, cho thấy rằng chúng không có sự khác biệt nào trong cấu hình.
Cài đặt Wireshark trực tiếp lên cả 2 máy
Trên máy của Hải, quá trình làm việc bắt đầu với giao thức HTTP, trong đó đầu tiên sẽ thực hiện một ARP broadcast nhằm tìm kiếm địa chỉ của gateway ở tầng mạng.
Khi máy tính của Hải nhận được thông tin từ địa chỉ 192.168.0.10, nó sẽ thiết lập kết nối với máy gateway, từ đó tạo ra phiên làm việc với giao thức HTTP để truy cập thông tin bên ngoài.
Hình 3.2.2.-b: Hải’s computer completes a handshake, and then HTTP data transfer begins
Trường hợp máy tính của Thanh
Hình 3.2.2-3: Thanh’s computer appears to be sending an ARP
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 đề
NetBIOS là một giao thức cũ, thường được sử dụng trước khi TCP/IP trở thành tiêu chuẩn chính cho kết nối Internet Khi TCP/IP không hoạt động, NetBIOS sẽ được sử dụng thay thế Do đó, máy của Thanh không thể kết nối Internet nếu TCP/IP gặp sự cố.
Chi tiết yêu cầu ARP trên 2 máy