Phần này sẽ trình bày về các kỹ thuật DNS poisoning (đầu độc DNS). Bằng cách áp dụng kỹ thuật này, hacker có thể thu thập được ID của DNS request bằng cách nghe trộm và gửi một phản hồi độc hại cho người gửi trước khi DNS server thực sự phản hồi.
Tổng quan kỹ thuật DNS Poisoning
DNS là giao thức dùng để chuyển đổi tên miền (ví dụ: sinhviencntt.net) thành địa chỉ IP (ví dụ: 208.66.172.56). Giao thức này sử dụng bảng DNS chứa tên miền và địa chỉ IP tương ứng được lưu trữ trong một cơ sở dữ liệu phân tán lớn. Trong DNS poisoning, còn được gọi là DNS spoofing, hacker đánh lừa một DNS server tin rằng nó đã nhận được thông tin chính xác, trong khi thực tế thì không nhận được gì. Hacker cố gắng chuyển hướng nạn nhân đến một server độc hại thay vì server chủ hợp lệ. Hacker sẽ thay đổi các entries trong bảng DNS.
Khi nạn nhân truy cập vào một trang web, hacker sẽ thay đổi các entries trong bảng DNS để máy của nạn nhân chuyển hướng URL đến server của hacker. Do đó, nạn nhân kết nối đến server của hacker mà không hề hay biết. Lúc này hacker có thể xâm nhập vào hệ thống của nạn nhân và đánh cắp dữ liệu.
Đầu độc DNS có thể được thực hiện bằng cách sử dụng các kỹ thuật sau đây:
- Đầu độc DNS mạng nội bộ (Intranet DNS Spoofing)
- Đầu độc DNS Internet (Internet DNS Spoofing)
- Đầu độc DNS thông qua máy chủ Proxy (Proxy Server DNS Poisoning)
- Đầu độc bộ nhớ cache DNS (DNS Cache Poisoning)
Intranet DNS Spoofing
Hacker có thể tấn công DNS poisoning trên một mạng LAN có switch với sự trợ giúp của kỹ thuật ARP poisoning. Hacker đầu tiên phải được kết nối với mạng LAN và có khả năng nghe lén lưu lượng hoặc gói tin trong mạng LAN đó. Sơ đồ dưới đây mô tả cách tấn công DNS poisoning mạng nội bộ:
Trong sơ đồ, hacker đầu độc router bằng cách chạy arpspoof/dnsspoof để chuyển hướng DNS request của các client đến máy của hacker. Sau khi nhận được DNS request, hacker gửi một câu trả lời DNS giả mạo chuyển hướng client này đến một trang web giả mạo được thiết lập bởi hacker. Do hacker sở hữu trang web đó nên chúng có thể xem tất cả thông tin được gửi bởi client đến trang web. Hacker lúc này thu thập thông tin cần thiết và sau đó chuyển hướng client đến trang web thực sự.
Internet DNS Spoofing
Internet DNS Spoofing còn được gọi là remote DNS poisoning. Hacker sẽ thiết lập một DNS server giả mạo với địa chỉ IP tĩnh.
Hacker sử dụng Trojan để tấn công, đây là cuộc tấn công Man-in-the-Middle (MITM), trong đó hacker thay đổi các entries DNS trên chính máy tính của nạn nhân. Hacker thay thế IP DNS của nạn nhân bằng một IP giả mạo. Như vậy, lưu lượng truy cập của nạn nhân sẽ được chuyển hướng đến hệ thống của hacker.
Hình dưới đây minh họa cách hacker thực hiện kiểu tấn công này.
DNS Cache Poisoning
DNS cache poisoning, hay còn gọi là độc chiếm bộ nhớ cache DNS, là quá trình thay đổi hoặc thêm các bản ghi DNS giả mạo vào bộ nhớ cache của DNS resolver, nhằm chuyển hướng một truy vấn DNS đến một trang web độc hại. Giao thức DNS sử dụng bộ nhớ cache để lưu trữ các tên miền đã được phân giải gần đây. Hacker sẽ điền vào bộ nhớ cache những tên miền đã được sử dụng gần đây cùng với địa chỉ IP tương ứng. Khi nhận được yêu cầu từ người dùng, DNS resolver sẽ kiểm tra bộ nhớ cache DNS trước tiên; nếu tìm thấy tên miền mà người dùng yêu cầu trong bộ nhớ cache, resolver sẽ nhanh chóng trả về địa chỉ IP tương ứng. Giúp giảm tải lưu lượng và thời gian phân giải DNS.
Hacker nhắm vào các entries trong bộ nhớ cache DNS này. Nếu DNS resolver không thể xác minh rằng phản hồi DNS đến từ một server tin cậy hay không, nó sẽ lưu các entries không chính xác này cục bộ và phục vụ cho người dùng nào có những yêu cầu tương tự. Hacker thay thế IP mà người dùng yêu cầu bằng IP giả mạo. Khi người dùng yêu cầu tên miền đó, DNS resolver sẽ kiểm tra entries trong bộ nhớ cache DNS và chọn entry tương ứng. Sau đó, nó chuyển hướng nạn nhân đến server giả mạo của hacker thay vì server dự định ban đầu.
SAD DNS Attack
SAD DNS (Selective Availability Denial of Service) là một biến thể mới của DNS Cache Poisoning, trong đó hacker inject các bản ghi DNS có hại vào bộ nhớ cache DNS để chuyển hướng toàn bộ lưu lượng truy cập đến server của chính hacker. Với kỹ thuật này, hacker cố gắng đánh lừa trình duyệt của client để truy cập vào các trang web giả mạo thay vì trang web thật. Hacker tận dụng các side channels, các lỗ hổng như dnsmasq, unbound và BIN trong hệ điều hành, … để thực hiện kiểu tấn công này.
DNS Poisoning Tools
DerpNSpoof là một công cụ DNS poisoning giúp giả mạo gói yêu cầu DNS của một IP cụ thể hoặc một nhóm máy trong mạng. Bằng cách sử dụng công cụ này, ta có thể tạo ra một danh sách các bản ghi DNS giả mạo và load nó khi chạy công cụ để chuyển hướng nạn nhân đến trang web khác.
Phòng tránh DNS Spoofing
- Triển khai DNSSEC (Domain Name System Security Extensions).
- Sử dụng SSL (Secure Socket Layer) để bảo mật lưu lượng truy cập.
- Cấu hình tường lửa để hạn chế việc truy vấn DNS ra bên ngoài.
- Triển khai hệ thống phát hiện xâm nhập (IDS).
- Sử dụng giới hạn tốc độ trả lời không tồn tại (NXDOMAIN rate limiting) của DNS.
- Sử dụng bảng ARP và bảng IP tĩnh.
- Không cho phép lưu lượng đi ra sử dụng port nguồn UDP 53 làm port mặc định.
- Kiểm tra định kỳ DNS server để loại bỏ các lỗ hổng.
- Sử dụng các công cụ phát hiện sniffing.
- Sử dụng Cơ sở Hạ tầng Khóa công khai (PKI) để bảo vệ server.
- Giữ duy nhất một loạt hoặc một dải cụ thể địa chỉ IP để đăng nhập vào hệ thống.
- Sử dụng DNS Cookie RFC 7873 hoặc vô hiệu hóa gói tin ICMP đi ra để ngăn tấn công SAD DNS.
- Sử dụng mã hóa 0x20 và DNS cookies.
- Giảm thời gian chờ cho các truy vấn để ngăn chặn tấn công SAD DNS.
- Sử dụng các khóa Remote Name Daemon Control (RNDC) nếu phản hồi được thực hiện trên port 53.
- Cấu hình STUB zones cho các tên miền được truy cập thường xuyên.
Các biện pháp phòng ngừa này giúp tăng cường bảo mật mạng và giảm khả năng bị tấn công độc chiếm DNS.