Bài này sẽ giới thiệu qua giao thức ARP; việc lợi dụng điểm yếu của giao thức là ARP luôn xử lí các gói tin phúc đáp cho dù không có yêu cầu để tấn công theo kiểu giả mạo đồng thời đề ra một số cách phòng chống.
1.Giới thiệu chung về giao thức ARP:
ARP (Address Resolution Protocol) [15]: Đây là giao thức dùng để chuyển đổi giữa địa chỉ lớp 3 thành địa chỉ vật lí lớp 2. Sở dĩ cần phải có giao thức chuyển đổi như vậy là do có nhiều giao thức lớp 3 như IP; IPX,… mỗi giao thức lại có qui ước về địa chỉ logic riêng. Khi được đóng gói vào một frame tại lớp thì tất cả các địa chỉ này cần phải được qui đổi thành một kiểu địa chỉ thống nhất (địa chỉ MAC) nhằm giúp cho mọi thiết bị có thể trao đổi với các thiết bị khác khi chúng nằm trong cùng một môi trường truyền dẫn vật lí.
Mặc dù ARP là giao thức lớp 3, tuy nhiên nó lại được coi là giao thức IP cấp thấp bởi vì gói tin ARP không được đóng gói với header của các giao thức lớp 3 mà được đóng gói bởi frame lớp 2. ARP không chỉ được sử dụng trong mạng LAN ethernet mà còn có thể sử dụng cho các mạng LAN dạng token ring hoặc FDDI. Tuy nhiên do việc sử dụng mạng LAN ethernet ngày nay là quá phổ biến nên trong báo cáo này, em chỉ đề cập tới ARP chạy trong mạng LAN ethernet.
Cấu trúc một bản tin ARP bao gồm các trường:
Hinh 1.1
Trong đó:
Hardware type và protocol type qui định kiểu của phần cứng và của protocol được dùng ở lớp network.
Opcode: cho biết bản tin ARP là yêu cầu (=1) hoặc phúc đáp (=2)
HW addr length: độ dài của địa chỉ vật lí.
Protocol addr length: độ dài của địa chỉ logic.
4 trường còn lại là địa chỉ vật lí và địa chỉ logic nguồn và đích.
1.1.Quá trình gửi bản tin ARP:
Khi một gói tin được gửi từ lớp mạng xuống, module Address Resolution ở lớp dưới cần phải chuyển đổi <kiểu protocol, kiểu địa chỉ logic đích> thành địa chỉ vật lí 48 bit.
Khi đó module này sẽ kiểm tra trong bảng ánh xạ của nó gọi là ARP cache để tìm xem có một cặp ánh xạ giữa địa chỉ logic đích với một địa chỉ vật lí nào đó hay không.
Nếu tìm được một ánh xạ như vậy, module sẽ trả về địa chỉ vật lí và địa chỉ này sẽ được dùng để chuyển đến đúng đích. Nếu không có ánh xạ như vậy, nó sẽ gửi đi bản tin ARP có địa chỉ vật lí đích là địa chỉ broadcast và Opcode=1. Bản tin này sẽ được gửi đến tất cả các thiết bị có trong mạng.
Ví dụ: một máy có địa chỉ IP là 192.168.1.1 muốn gửi đi bản tin ARP để tìm địa chỉ vật lí của máy có địa chỉ IP 192.168.1.2 thì bản tin ARP request sẽ có cấu trúc:
Hinh 1.2
1.2.Quá trình nhận bản tin ARP:
Khi một host trên mạng nhận được bản tin yêu cầu ARP, nó sẽ xử lí như sau:
Kiểm tra xem có cùng HW type, Protocol type không. Nếu có, nó sẽ kiểm tra xem <protocol type, kiểu địa chỉ logic người gửi> có tồn tại trong bảng ARP cache của nó hay không. Nếu có thì cập nhật lại địa chỉ MAC tương ứng nếu thấy có thay đổi và đặt cờ Merge-flag = true.
Kiểm tra xem địa chỉ logic của nó có trùng với địa chỉ logic đích mà gói tin gửi đến hay không. Nếu có và cờ Merge là false, nó sẽ cập nhật <protocol type, kiểu địa chỉ logic và vật lí của người gửi> vào bảng ARP cache của mình. Nếu không, gói tin ARP request sẽ bị hủy.
Kiểm tra opcode: nếu opcode là request thì gửi lại bản tin ARP theo dạng unicast thông báo cho máy yêu cầu biết được địa chỉ MAC của mình.
Thiết bị yêu cầu, sau khi nhận được bản tin ARP reply, sẽ cập nhật lại bảng ARP cache của mình và chuyển frame đến đích theo địa chỉ MAC nhận được. Trong trường hợp không có một bản tin reply nào đến có nghĩa là thiết bị mà nó muốn trao đổi không nằm cùng mạng LAN với nó, nếu trong mạng có cấu hình proxy ARP (thiết bị dùng để trả lời các ARP request) thì proxy ARP này sẽ có nhiệm vụ gửi bản tin ARP phúc đáp với địa chỉ MAC của nó như thể là phúc đáp của máy đích. Khi đó gói tin lớp 2 sẽ được đóng gói với địa chỉ MAC là địa chỉ MAC của proxy ARP và mọi thông tin sẽ được gửi đến proxy ARP này. Nếu không tồn tại proxy ARP trong mạng; gói tin sẽ bị huỷ và thông báo lỗi lên lớp trên.
1.3.Các đặc điểm của giao thức ARP:
Mỗi ánh xạ IP-MAC trong ARP cache đều chỉ tồn tại trong một khoảng thời gian cố định (trừ các ánh xạ đã được đặt tĩnh). Việc đề ra khoảng thời gian này là cần thiết khi một host nào đó:
1. Di dời khỏi mạng hoặc kết nối của host vào mạng bị hỏng
2. Địa chỉ logic của host được gán lại cho một địa chỉ vật lí mớiKhi đó bảng ARP cache của host có thể bị xoá trắng, tuy nhiên ánh xạ địa chỉ MAC-địa chỉ logic của nó vẫn còn tồn tại trong các bảng ARP cache của các máy khác. Điều này có thể dẫn đến trường hợp gói tin vẫn truyền đi được nhưng không đến được đích.
Biện pháp khắc phục trong trường hợp thứ nhất có thể là:
Khi thiết lập kết nối bị hỏng, module Address Resolution cần phải được thông báo để loại bỏ ánh xạ ra khỏi bảng ARP cache của nó hoặc đặt một khoảng thời gian timeout cho mỗi kết nối giữa hai máy. Mỗi khi một máy nhận được bất kì một gói tin nào đó từ máy kia, nó sẽ gia hạn thời gian timout cho ánh xạ và sau khoảng thời gian timeout mà nó vẫn không nhận được bản tin nào từ máy kia, ánh xạ giữa địa chỉ MAC-địa chỉ logic của máy kia sẽ bị loại bỏ khỏi bảng ARP cache của nó.
Sử dụng một module xử lí thời gian timeout. Sau một khoảng thời gian nào đó, module này sẽ thực hiện việc loại bỏ ánh xạ ra khỏi bảng ARP cache. Tuy nhiên, trước khi tiến hành việc loại bỏ, module sẽ gửi đi một bản tin ARP request đến host cần phải loại bỏ. Nếu sau một khoảng thời gian rất ngắn mà nó không nhận được bản tin ARP reply từ host đó, nó sẽ tiến hành loại bỏ ánh xạ ra khỏi bảng.
Biện pháp khắc phục trong trường hợp thứ hai: khi nhận được một bản tin ARP, host sẽ kiểm tra xem địa chỉ vật lí nguồn đã tồn tại trong bảng ARP cache của nó chưa, nếu đã tồn tại rồi thì nó sẽ ghi đè địa chỉ mới này lên.
Đặc điểm stateless của ARP:
1. Khi một host nhận được một bản tin ARP reply, nó sẽ cập nhật lại thông tin vào ARP cache mặc dù nó không gửi đi ARP request.
2. Gratuitous ARP: đây là một bản tin được gửi đi bởi một host, yêu cầu địa chỉ MAC cho chính địa chỉ IP của nó. Trường hợp này xảy ra khi trong mạng LAN có một host khác cũng có cùng địa chỉ IP hoặc có một host tuyên bố rằng nó vừa thay đổi địa chỉ MAC.
2.Các phương thức tấn công:
Lợi dụng điểm yếu của giao thức ARP là giao thức stateless: có nghĩa là một host khi nhận bản tin reply vẫn cập nhật thông tin trong đó vào ARP cache mặc dù nó hoàn toàn không gửi đi ARP request; kẻ tấn công lợi dụng điểm yếu này để gửi đi bản tin gratuitous giả mạo địa chỉ MAC nguồn tới máy nạn nhân. Kết quả là mọi thông tin máy
bị tấn công gửi đi tới một host có địa chỉ IP được chứng thực sẽ được chuyển qua máy của kẻ tấn công trước tiên. Một loạt các hình thức là hệ quả của kiểu tấn công giả mạo này có thể là: DoS; man-in-the-middle (MITM); chiếm đường truyền hoặc phiên truyền []…
2.1.Giả mạo ARP (ARP spoofing):
Có hai hình thức dựa trên kiểu giả mạo ARP này:
Hình thức thứ nhất: kẻ tấn công gửi đi bản tin ARP reply với địa chỉ MAC là địa chỉ broadcast ở lớp 2 FF:FF:FF:FF:FF:FF. Kết quả là thông tin máy nạn nhân khi gửi unicast đến một host nào đó cũng bị coi là gửi đến tất cả các host trong mạng.
Hình thức thứ hai: kẻ tấn công gửi ra toàn mạng bản tin ARP reply giả mạo địa chỉ MAC của một server nào đó trong mạng bằng một địa chỉ MAC không tồn tại. Kết quả là khi các host yêu cầu một dịch vụ nào đó trên server thì sẽ không được đáp ứng. Gói tin yêu cầu có gửi đi nhưng sẽ bị huỷ vì không có host nào nhận cả. Đây chính là kiểu tấn công DoS.
2.2.Kiểu tấn công Man-in-the-middle (MITM):
Theo cách tấn công này, kẻ tấn công sẽ dùng bản tin ARP reply giả mạo gửi đến cả hai máy nạn nhân. Ví dụ:
Hình 2.1: Sơ đồ tấn công Man-in-the-middle
Giả sử có hai máy A và B cần trao đổi thông tin với nhau. Máy X gửi bản tin ARP reply cho máy A với địa chỉ IP nguồn là địa chỉ của B còn địa chỉ MAC nguồn là địa chỉ của X. Ngược lại; X cũng gửi tới B bản tin giả mạo với địa chỉ IP nguồn là địa chỉ IP của A và địa chỉ MAC nguồn là địa chỉ MAC của X.
Kết quả là khi A và B trao đổi thông tin với nhau; toàn bộ thông tin này sẽ được trung chuyển qua X mà hai host này không hề hay biết. Kẻ tấn công có thể thay đổi hoặc đánh cắp thông tin tuỳ theo ý định tấn công. Tuy nhiên, để thực hiện thành công kiểu tấn công này, trên máy của kẻ tấn công phải sử dụng phần mềm chuyển gói tin thời gian thực: gói tin đến từ A hoặc B phải được gửi đi ngay tức khắc và mọi gói tin đều phải giữ nguyên thông số TTL (time to live).
3.Cách phòng chống:
Việc phòng chống kiểu tấn công gửi bản tin ARP giả mạo nói riêng và các bản tin giả mạo khác nói chung có thể được tiếp cận theo nhiều hướng: hướng thứ nhất là làm cách nào đó đảm bảo rằng người dùng được cấp quyền tham gia vào mạng là những người đáng tin cậy (có thể coi hướng tiếp cận này là kiểu chứng thực hướng người dùng) hoặc cấp quyền cho một số hạn chế người dùng tham gia vào mạng.Ví dụ như chứng thực kiểu port-based dựa vào chuẩn 802.1x; cấu hình static ARP. Hướng tiếp cận thứ hai là cải tiến các giao thức lớp 2; thêm vào các giao thức đó các thông tin chứng thực. Ví dụ như việc sử dụng giao thức S-ARP. Hướng tiếp cận thứ ba là sử dụng phần mềm phát hiện gói tin giả mạo.
3.1.Chứng thực kiểu port-based (chuẩn 802.1x):
3.1.1.Giới thiệu chung về chuẩn IEEE 802.1x:
Chuẩn 802.1x [19] ra đời nhằm xây dựng một mô hình chứng thực kiểu client-server nhằm hạn chế người dùng tham gia vào mạng LAN thông qua các cổng vật lí có thể truy cập được.
Mô hình triển khai của 802.1x:
Hình 2.2: Sơ đồ chứng thực 802.1x
Chức năng của từng khối trong mô hình trên:
Client: đây có thể là máy trạm hoặc các thiết bị có nhu cầu được chứng thực để có đủ thẩm quyền tham gia vào mạng.
Authenticator (switch): có nhiệm vụ trung chuyển các thông tin chứng thực qua lại giữa client và server dùng để chứng thực.
Authentication server: dựa vào thông tin client gửi đến để ra quyết định xem client có đủ thẩm quyền để tham gia vào mạng hay không.
Authenticator và authentication server có thể được tích hợp chung trên một thiết bị nhưng để tránh trường hợp client tiếp xúc trực tiếp và có thể có các hành động làm tổn hại server; authentication server thường được nối thông qua một switch và server này tồn tại trong suốt với client.
Quá trình trao đổi bản tin giữa authenticator và authentication server được thực hiện thông qua giao thức chứng thực EAP (Extensible Authentication Protocol) dùng cho kết nối điểm điểm còn quá trình trao đổi bản tin giữa authenticator và client được thực hiện thông qua giao thức chứng thực EAPOL (EAP over LAN).
Một điểm cần chú ý : trước khi client được chứng thực, chỉ có một số giao thức cơ bản được dùng để trao đổi qua lại giữa nó và switch: giao thức STP; CDP... Chỉ sau khi client được chứng thực; các frame dữ liệu khác mới được trao đổi một cách bình thường.
3.1.2.Giao thức chứng thực mở rộng điểm điểm EAP_PPP:
Quá trình chứng thực được biểu diễn qua sơ đồ:
Hình 2.3: Sơ đồ chứng thực EAP_PPP
Sau khi kết nối vật lí được thiết lập; authenticator sẽ gửi một hoặc một vài bản tin request đến client. Các bản tin request này có một vài dạng như: yêu cầu ID của user; chứa các thông tin mã hóa phục vụ chứng thực như One-time-password; mã hóa MD-5...Client sau khi nhận được các request này, căn cứ vào thông tin nhận được sẽ phải tính toán ra một số trường tương ứng với thông tin nhận được và gửi trả bản tin phúc đáp cho authenticator.
Các thông tin được tính toán này còn tùy thuộc vào từng kiểu request của authenticator. Sau khi nhận được bản tin phúc đáp, authenticator kiểm tra xem tính toán đó có đúng không. Nếu đúng, nó sẽ gửi lại bản tin success cho client và client được chứng thực còn ngược lại client sẽ nhận được bản tin failure và không được cấp quyền tham gia vào mạng.
Cấu trúc chung của một bản tin EAP:
Hình 2.4: Cấu trúc bản tin EAP
trong đó:
Code chỉ ra kiểu của bản tin EAP:
1.Request 2.Response 3.Success 4.Failure
Identifier:độ dài một byte; dùng để match giữa response và request và do đó một hệ thống chức thực kiểu này tại một thời điểm chỉ có thể cấp quyền cho tối đa 256 client.
Length: độ dài 2 byte; chỉ ra độ lớn của cả bản tin EAP.
Data: có độ dài là không hoặc nhiều byte tùy thuộc vào kiểu bản tin EAP.
Các kiểu bản tin request/response: có thêm một trường type để chỉ ra kiểu bản tin request/response sẽ được dùng để trao đổi và thông số này được thống nhất trong bản tin request và response trong cùng một phiên chứng thực; có 6 kiểu bản tin request/response :
1. Identity: được authenticator gửi để yêu cầu ID của client; trong trường hợp này thì thường ID sẽ được người dùng nhập vào.
2. Notification: được authenticator gửi cho client một bản tin được hiển thị; ví dụ thông báo cho client biết password đã hết hiệu lực.
3. Nak: đây chỉ có thể là bản tin Response. Nó được gửi để đáp trả lại request có kiểu chứng thực mong muốn không được chấp nhận (ví dụ client muốn được chứng thực theo MD5 trong khi authenticator lại chỉ chấp nhận chứng thực theo One-Time Password) .
4. MD5-challenge.
5. One-Time Password.
6. Generic token Card
Trong đó các kiểu 4;5;6 đều là các kiểu chứng thực có thể được lựa chọn. Tư tưởng chung của các kiểu chứng thực này là chứng thực dựa vào mã mật [16]. Client và authenticator sẽ chia sẻ chung một khoá mật. Để chứng thực người dùng, authenticator sẽ gửi cho client một bản tin trong đó có chứa một số ngẫu nhiên dùng để xác định phiên truyền (bản tin này được gọi là challenge).
Hình 2.5: Mô hình chứng thực sử dụng mã mật
Sau khi client nhận được bản tin; nó phải dùng thuật toán băm một chiều tính toán ra kết quả dựa vào số ngẫu nhiên và mã mật mà nó đang giữ. Kết quả này sẽ được gửi lại cho authenticator. Đồng thời authenticator cũng chạy thuật toán trên và sẽ dùng kết quả thu được so sánh với kết quả do client gửi đến. Nếu hai kết quả trùng khớp, client được chứng thực và ngược lại.
3.1.3.Giao thức chứng thực mở rộng EAP trong mạng LAN:
Tư tưởng cơ bản của giao thức EAPOL cũng tương tự như giao thức EAP-PPP [17] tuy nhiên khi chứng thực cho các host trong một mạng LAN thì giao thức EAPOL có khác biệt đôi chút: EAPOL cần có một đối tượng trung gian authenticator dùng để trung chuyển thông tin chứng thực giữa client và authentication server.
Hình 2.6: Mô hình chứng thực EAPOL
Quá trình trao đổi bắt đầu khi một máy trạm thiết lập kết nối vật lí tới authenticator (trong trường hợp này là một switch). Switch sẽ gửi yêu cầu UserId của client. Sau khi nhận được phúc đáp của client; switch phải chuyển thông tin này sang định dạng EAP gửi đến authentication server. Server gửi lại bản tin yêu cầu Access-Challenge. Bản tin này thường cũng chứa thông tin mã hoá MD5 hoặc OTP để yêu cầu client tính toán và gửi lại kết quả.
Dựa trên kết quả tính toán do client gửi đến, authentication server sẽ quyết định xem client có phải hợp lệ hay không. Khi client không muốn tham gia vào mạng nữa; nó phải gửi lại bản tin EAPOL-off đến switch và switch sẽ coi như cổng của host nối với nó là chưa được chứng thực.
Việc host có thể tham gia vào mạng hay không hoàn toàn tuỳ thuộc vào trạng thái của port trên switch mà nó kết nối tới. Cổng trên switch này có một trong ba trạng thái:
Authorized: cổng đã được chứng thực rồi: trong trường hợp này, khi client nối vào một cổng không hỗ trợ 802.1x; nó bắt đầu gửi đi EAPOL-start tuy nhiên sẽ không nhận được hồi âm từ switch. Sau một khoảng thời gian tiếp tục gửi bản tin EAPOL-start đi mà vẫn không thấy hồi âm thì host sẽ mặc định coi mình đã được chứng thực rồi.
Unauthorized: cổng không thể được cấp quyền: switch sẽ bỏ qua mọi nỗ lực thiết lập quyền kết nối của client.
Auto: khi thiết lập chế độ này, cổng sẽ tạm thời ở trong trạng thái unauthorized tuy nhiên vẫn cho các bản tin EAPOL-start đi qua và nếu client được chứng thực; cổng này sẽ chuyển sang trạng thái authorized còn ngược lại cổng vẫn ở trong trạng thái unauthorized tuy nhiên việc yêu cầu chứng thực có thể được thực hiện lại.
Chú ý: nếu kết nối giữa host và switch bị down hoặc host gửi EAPOL-off đến cổng của switch thì cổng này sẽ được chuyển sang trạng thái unauthorized.
Cấu trúc các bản tin dùng để trao đổi: Một EAPOL frame cho mạng Ethernet có cấu trúc như sau:
Hình 2.7: Cấu trúc bản tin EAPOL
Trong đó có một số trường đáng quan tâm:
Packet Type: có độ dài 1 byte, dùng để xác định kiểu bản tin được trao đổi: có 5 kiểu bản tin :
1. EAP-packet
2. EAPOL-Start
3. EAPOL-Logoff
4. EAPOL-Key
5. EAPOL-Encapsulated-ASF-Alert
Packet Body: tuỳ nội dung từng packet type ; nếu packet type là EAPOL-Key: chứa khoá dùng để xác thực thì Packet body sẽ chứa các mô tả khoá.
3.1.4.Cấu hình chứng thực kiểu port-based:
Sơ đồ: mô hình triển khai 802.1x.
Yêu cầu thiết bị: cả máy trạm và switch đều hỗ trợ chuẩn 802.1x sử dụng giao thức lớp 2 EAPOL
Các lệnh cấu hình:
Cấu hình trên switch về phía máy trạm:
Switch(config)#aaa new-model :câu lệnh cho phép kích hoạt tính năng chứng thực trên switch.
Switch(config)#aaa authentication dot1x {default|list-name} method1
[method2…] :câu lệnh dùng để định ra một loạt các phương thức có thể
dùng để chứng thực; các phương thức có thể là:
1. group{group-name|radius|tacacs+ }: dùng một hoặc một nhóm các server dùng để chứng thực.
2. enable: cho phép dùng password để chứng thực người dùng.
3. line: password trong các trường hợp 802.1x được sử dụng cho switch line (console hoặc vty_virtual terminal).
4. local: username và password được định nghĩa ngay trên switch.
5. none: không cần chứng thực.
Switch(config)# dot1x system-auth-control: câu lệnh cho phép sử dụng chuẩn 802.1x trên switch.
Switch(config-if)# dot1x port-control {force-authorized|force-unauthorized|auto}: đặt một cổng vào một trong ba chế độ
Cấu hình trên switch về phía server chứng thực (RADIUS server hoặc TACACS+ server):
Switch(config)#radius-server host {hostname |ip-address}[ key string ]
Switch(config)#tacacs -server host {hostname |ip-address}[ key string ]
Trong đó key là khoá mật được chia sẻ chung giữa switch và server chứng thực.
3.2.Static ARP:
Để ngăn chặn việc một host cập nhật lại ánh xạ IP_MAC theo bản tin ARP giả mạo; ta có thể cấu hình ánh xạ IP_MAC tĩnh của các host trong mạng lên tất cả các host. Tuy nhiên cách làm này chỉ phù hợp với mạng rất nhỏ bởi:
Việc lưu toàn bộ ánh xạ IP_MAC của tất cả các host là không cần thiết vì một host thường không trao đổi với tất cả các host trên mạng.
Ngăn cản việc cấu hình DHCP server và làm tăng hoạt động của người quản trị bởi vì việc thay đổi địa chỉ của một host sẽ khiến người quản trị phải cấu hình lại bảng ánh xạ trên tất cả các host.
Đối với một số hệ điều hành như Windows, bảng ARP tĩnh này thực ra cũng chỉ tồn tại trong một phiên làm việc; khi người dùng khởi động lại máy, toàn bộ bảng ánh xạ tĩnh này sẽ bị xóa.
Câu lệnh cấu hình ánh xạ tĩnh trên hệ điều hành Windows:
arp[-s InetAddr EtherAddr [IfaceAddr]]
trong đó: InetAddr là địa chỉ IP; EtherAddr là địa chỉ MAC và IfaceAddr là địa chỉ của giao diện cần áp dụng.Ví dụ: arp -s 10.0.0.80 00-AA-00-4F-2A-9C



LinkBack URL
About LinkBacks












Trả lời với trích dẫn
