Trong bài viết trước, chúng ta đã cùng nhau tìm hiểu về MAC Attacks trong Phần 2 của Module 8. Bằng cách nắm vững các kỹ thuật tấn công này, chúng ta đã tích luỹ thêm kiến thức và kỹ năng để hiểu rõ hơn về cách mà các kẻ tấn công có thể xâm nhập vào mạng của chúng ta.
Và giờ, ta sẽ thảo luận về các kỹ thuật DHCP Attack. DHCP (Dynamic Host Configuration Protocol) không chỉ là một phần quan trọng trong việc quản lý và cấp phát địa chỉ IP trong mạng, mà còn là một mục tiêu tiềm năng cho các kẻ tấn công.
DHCP Starvation Attack
DHCP là gì?
DHCP là giao thức server-client cung cấp địa chỉ IP cho một máy chủ IP. Ngoài việc cung cấp địa chỉ IP, DHCP server cũng cung cấp thông tin liên quan đến cấu hình như subnet mask và default gateway. Khi một thiết bị DHCP client khởi động, nó sẽ tham gia vào việc phát sóng dữ liệu mạng. DHCP có khả năng cấu hình địa chỉ IP cho các máy trạm kết nối vào mạng. Việc phân phối cấu hình IP cho các máy trạm này giúp đơn giản hóa việc duy trì mạng IP của người quản trị. Máy chủ DHCP lưu trữ thông tin cấu hình TCP/IP trong một cơ sở dữ liệu, bao gồm các thông số cấu hình TCP/IP hợp lệ, địa chỉ IP hợp lệ và thời gian cung cấp dịch vụ.
DHCP hoạt động như thế nào?
- Client phát sóng một yêu cầu DHCPDISCOVER/SOLICIT để yêu cầu thông tin cấu hình DHCP.
- Một DHCP-relay agent bắt được yêu cầu của client và gửi nó tới các DHCP server có sẵn trong mạng.
- DHCP server gửi dạng unicast DHCPOFFER/ADVERTISE, chứa địa chỉ MAC của client và server.
- Relay agent gửi DHCPOFFER/ADVERTISE dưới dạng broadcast trong subnet của client.
- Client gửi broadcast DHCPREQUEST/REQUEST yêu cầu DHCP server cung cấp thông tin cấu hình DHCP.
- DHCP server gửi một tin nhắn DHCPACK/REPLY dạng unicast đến client với cấu hình và thông tin IP.
Thông điệp DHCP Request/Reply
Một thiết bị đã có địa chỉ IP có thể trao đổi request/reply để nhận các thông số cấu hình khác từ DHCP server. Khi DHCP client nhận được một DHCP offer, client sẽ ngay lập tức phản hồi bằng cách gửi một gói DHCP request. Các thiết bị không sử dụng DHCP để lấy IP vẫn có thể sử dụng các khả năng cấu hình khác của DHCP. Một client có thể broadcast một thông điệp DHCPINFORM để yêu cầu bất kỳ server nào có sẵn gửi thông số sử dụng mạng.
Các DHCP server phản hồi với các thông số được yêu cầu và/hoặc thông số mặc định được chứa trong các tùy chọn DHCPACK. Nếu DHCP request đến từ một địa chỉ phần cứng thuộc vào danh sách dự trữ của DHCP server và yêu cầu không phải là cho địa chỉ IP mà DHCP server đã đề nghị, thì đề nghị của DHCP server là không hợp lệ. DHCP server có thể đưa địa chỉ IP đó trở lại trong danh sách và đề nghị cho một client khác.
Cấu trúc gói tin IPv4 DHCP
DHCP cho phép giao tiếp trên mạng bằng cách cấu hình các thiết bị mạng. Nó gán địa chỉ IP và thông tin khác cho các máy tính để chúng có thể giao tiếp trên mạng theo chế độ client-server. DHCP có hai chức năng chính: cung cấp các thông số cấu hình cụ thể cho từng client và phân chia các địa chỉ mạng cho các client đó.
Một loạt các thông điệp DHCP được sử dụng trong việc giao tiếp giữa DHCP server và DHCP client. Các thông điệp DHCP có cùng định dạng với các thông điệp của Bootstrap Protocol (BOOTP). Điều này là vì DHCP duy trì tính tương thích với các agent chuyển tiếp BOOTP, loại bỏ nhu cầu thay đổi phần mềm khởi tạo của BOOTP client để tương tác với các DHCP server.
Bảng dưới đây chi tiết các trường của thông điệp DHCP IPv4:
Trường | Mô tả |
---|---|
Message Type (DHCP Type) | Loại thông điệp DHCP |
Hardware Type | Loại phần cứng (VD: Ethernet) |
Hardware Length | Độ dài của địa chỉ phần cứng |
Hops | Số lượng agent chuyển tiếp thông điệp DHCP |
Transaction ID | ID giao dịch duy nhất giữa DHCP server và client |
Seconds | Thời gian kể từ khi client bắt đầu khởi động |
Flags | Cờ (VD: đặt cờ Broadcast) |
Client IP Address | Địa chỉ IP của client |
Your IP Address | Địa chỉ IP được cấp cho client bởi DHCP server |
Server IP Address | Địa chỉ IP của DHCP server |
Gateway IP Address | Địa chỉ IP của default gateway |
Client Hardware Address | Địa chỉ phần cứng của client |
Server Hostname | Tên DHCP server |
Boot Filename | Tên boot file |
Options | Các option bổ sung trong thông điệp DHCP |
DHCP Starvation Attack
Trong DHCP starvation attack, hacker gửi liên tục các DHCP request đến DHCP server và sử dụng hết tất cả các địa chỉ IP có sẵn mà DHCP server có thể cấp. Kết quả là server không thể cấp thêm địa chỉ IP nào nữa dẫn đến bị tấn công từ chối dịch vụ (DoS attack). Do vấn đề này, người dùng hợp lệ không thể nhận hoặc gia hạn địa chỉ IP của mình, dẫn đến việc họ không thể truy cập vào mạng nữa. Hacker gửi broadcast các DHCP request với địa chỉ MAC giả mạo thông qua các công cụ như Yersinia, Hyenae và Gobbler.
DHCP Starvation Attack Tools
Các công cụ tấn công DHCP Starvation gửi một số lượng lớn yêu cầu đến DHCP server, dẫn đến việc cạn kiệt các địa chỉ trong address pool của server. Kết quả là DHCP server không thể cấp phát các cấu hình cho các client mới.
Yersinia là một công cụ được thiết kế để tận dụng các điểm yếu trong các giao thức mạng khác nhau như DHCP. Nó giả vờ là một framework phân tích và kiểm thử mạng và hệ thống đã triển khai. Như được hiển thị bên dưới, hacker sử dụng Yersinia để tấn công DHCP Starvation trên mục tiêu.
Rogue DHCP Server Attack
Ngoài các cuộc tấn công kiểu DHCP starvation, hacker còn có tấn công MITM kiểu như nghe lén (sniffing) đối với DHCP server. Hacker sau khi tiêu thụ không gian địa chỉ IP của DHCP server thì chúng thiết lập một DHCP server giả mạo không nằm trong sự kiểm soát của người quản trị. DHCP server giả mạo này giả mạo một server hợp lệ sau đó cung cấp IP và thông tin mạng khác cho các máy khách khác trên mạng, đóng vai trò là default gateway. Các client kết nối với mạng và có địa chỉ IP được gán bởi server giả mạo sẽ trở thành mục tiêu của tấn công MITM, các gói tin được chuyển tiếp từ những client này sẽ đến server giả mạo.
Phòng tránh DHCP Starvation
Ta nên bật tính năng port security để phòng chống DHCP starvation. Tính năng port security giới hạn số lượng địa chỉ MAC tối đa trên cổng switch. Khi vượt quá giới hạn này, switch sẽ từ chối các yêu cầu địa chỉ MAC tiếp theo (gói tin) từ nguồn bên ngoài.
Một số lệnh cấu hình port security trên Cisco switch:
- switchport port-security: Cấu hình các tham số cổng switch để bật tính năng port security.
- switchport port-security maximum 1: Cấu hình số lượng tối đa các địa chỉ MAC an toàn cho cổng là 1.
- switchport port-security violation restrict: Thiết lập chế độ vi phạm và hành động cần thiết khi phát hiện vi phạm bảo mật đồng thời từ chối các gói tin có địa chỉ nguồn không xác định cho đến khi số lượng địa chỉ MAC an toàn đủ được xóa bỏ.
- switchport port-security aging time 2: Cấu hình thời gian hết hạn địa chỉ MAC an toàn trên cổng là 2 phút.
- switchport port-security mac-address sticky: Kích hoạt chế độ sticky learning trên interface bằng cách chỉ nhập từ khóa MAC-address sticky. Khi sticky learning được kích hoạt, interface sẽ thêm tất cả các địa chỉ MAC an toàn đã học vào cấu hình chạy và chuyển đổi các địa chỉ này thành các địa chỉ MAC sticky an toàn.
Phòng tránh DHCP Rogue – DHCP Attack
Để phòng chống tấn công từ rogue server, ta có thể bật tính năng DHCP snooping có sẵn trên các switch. Nó được cấu hình trên cổng mà DHCP server kết nối vào. Khi đã cấu hình, DHCP snooping không cho phép các cổng khác trên switch đáp ứng các gói tin DHCP Discover gửi từ các client. Do đó, ngay cả khi hacker kết nối một DHCP giả mạo vào switch, họ cũng không thể đáp ứng các gói tin DHCP Discover.
Cấu hình DHCP snooping trên thiết bị Cisco IOS
ip dhcp snooping
: Kích hoạt DHCP snooping.ip dhcp snooping vlan number [number] | vlan {vlan range}
: Kích hoạt hoặc vô hiệu hóa DHCP snooping trên một hoặc nhiều VLAN. Ví dụ:ip dhcp snooping vlan 4,104
.ip dhcp snooping trust
: Cấu hình interface là interface tin cậy (trusted) hoặc không tin cậy (untrusted).ip dhcp snooping limit rate
: Cấu hình số lượng gói tin DHCP mà một interface có thể nhận trong mỗi giây (pps).end
: Thoát khỏi chế độ cấu hình.show ip dhcp snooping
: Xác nhận cấu hình.
Lưu ý: Mọi cổng trong VLAN đều mặc định là không tin cậy.
Cấu hình giới hạn địa chỉ MAC (MAC limiting) trên các switch Juniper
Giả sử có ba thiết bị được kết nối vào một switch và là các thiết bị tin cậy với các interface ge-0/0/1, ge-0/0/2 và ge-0/0/3. Ngoài ra, giả sử có một DHCP server với interface ge-0/0/8 kết nối phía sau, tổng cộng có 4 interface được kết nối vào switch.
■ Chạy các lệnh sau để áp dụng giới hạn địa chỉ MAC một cách nhanh nhất:
set interface ge-0/0/1 mac-limit 3 action drop
set interface ge-0/0/2 mac-limit 3 action drop
Hoặc, làm theo các bước dưới đây để áp dụng cấu hình giới hạn địa chỉ MAC.
Bước 1: Chạy lệnh sau để cấu hình giới hạn địa chỉ MAC là 3 trên interface ge-0/0/1 của thiết bị đầu tiên và chỉ định hành động khi vượt quá giới hạn:
set interface ge-0/0/1 mac-limit 3 action drop
Bước 2: Chạy lệnh sau để cấu hình giới hạn địa chỉ MAC là 3 trên interface ge-0/0/2 của thiết bị thứ hai và chỉ định hành động khi vượt quá giới hạn:
set interface ge-0/0/2 mac-limit 3 action drop
Bước 3: Thực hiện các lệnh sau để xem kết quả:
show
interface ge-0/0/1.0 {
mac-limit 3 action drop;
}
interface ge-0/0/2.0 {
mac-limit 3 action drop;
}
Bước 4: Xác minh quá trình giới hạn địa chỉ MAC trên switch cụ thể:
show ethernet-switching table
Cấu hình DHCP Filtering trên một switch:
DHCP Filtering cho phép người quản trị xác định xem liệu traffic có được chuyển tiếp giữa các nút tin cậy hay không. Khi DHCP Filtering được áp dụng, switch tương ứng kiểm tra tính hợp pháp của các gói tin/thông điệp trước khi chuyển tiếp chúng cho client. Với việc áp dụng filtering này, client có thể nhận được số port và IP từ DHCP server hợp lệ.
Chạy các lệnh sau để bật DHCP Filtering cho switch:
config
<IP address> dhcp filter
exit
exit
Chạy các lệnh sau để bật DHCP Filtering cho một interface:
config
interface 0/11
<IP address> dhcp filter trust
exit
exit
Hiển thị cấu hình DHCP Filtering:
show <IP address> dhcp filtering
Lưu ý: Cần thay <IP address>
bằng địa chỉ IP thích hợp.