DNS cache Poisoning và khắc phục

Sau đây là bài viết và hướng dẫn được tổng hợp từ nhiều nguồn nhằm giới thiệu phần nào về DNS poisoning và phương thức hạn chế

Lỗ hổng DNS cache poisoning đang đặt các hệ thống máy chủ DNS tại Việt Nam cũng như trên toàn thế giới trước nguy cơ bị tin tặc tấn công đầu độc trên diện rộng. Đây là một lỗ hổng đặc biệt nghiêm trọng nhất là khi hacker đã có phương thức mới để có khả năng khai thác thành công lỗ hổng này. Điều này gây hoang mang cho nhiều quản trị mạng khi không có công cụ để kiểm tra xem hệ thống máy chủ DNS của mình có mắc lỗi này hay không và cách khắc phục như thế nào.

Khuyến cáo đối với người sử dụng cá nhân

Đối với người sử dụng cá nhân, cần thận trọng trong thời gian này khi truy cập Internet. Nếu vào một website quen thuộc nhưng lại gặp hiện tượng không bình thường, bạn nên thông báo ngay với quản trị mạng của cơ quan, hỗ trợ kỹ thuật của các ISP để có biện pháp xử lý kịp thời. Bạn cũng nên cập nhật đầy đủ các bản vá của hệ điều hành và phần mềm diệt virus để tránh nguy cơ bị lây nhiễm mã độc.

Tìm hiểu cơ bản DNS (bonus cho bài này thôi ^^)

DNS (Domain Name System) là một hệ cơ sở dữ liệu phân tán dùng để ánh xạ giữa các tên miền và các địa chỉ IP. DNS đưa ra một phương pháp đặc biệt để duy trì và liên kết các ánh xạ này trong một thể thống nhất.

Trong phạm vi lớn hơn, các máy tính kết nối với internet sử dụng DNS để tạo địa chỉ liên kết dạng URL (Universal Resource Locators). Theo phương pháp này, mỗi máy tính sẽ không cần sử dụng địa chỉ IP cho kết nối mà chỉ cần sử dụng tên miền (domain name) để truy vấn đến kết nối đó.

Theo đó, khi máy chủ DNS nhận được yêu cầu phân giải địa chỉ (request) từ máy trạm, nó sẽ tra cứu bộ đệm (cache) và trả về địa chỉ IP tương ứng với tên miền mà máy trạm yêu cầu. Tuy nhiên, nếu không tìm thấy trong bộ đệm, máy chủ DNS sẽ chuyển yêu cầu phân giải tới một máy chủ DNS khác.

Để hiểu rõ hơn về hoạt động của DNS chúng ta xét ví dụ và tham khảo hình vẽ dưới đây:

image
Domain Name System

Giả sử PC A muốn truy cập đến trang web http://www.yahoo.com và server vnn chưa lưu thông tin về trang web này, các bước truy vấn sẽ diễn ra như sau:

Đầu tiên PC A gửi một request hỏi server quản lý tên miền vnn hỏi thông tin về http://www.yahoo.com

Server quản lý tên miền vnn gửi một truy vấn đến server top level domain.

  • Top level domain lưu trữ thông tin về mọi tên miền trên mạng. Do đó nó sẽ gửi lại cho server quản lý tên miền vnn địa chỉ IP của server quản lý miền com (gọi tắt server com).
  • Khi có địa chỉ IP của server quản lý tên miền com thì lập tức server vnn hỏi server com thông tin về yahoo.com. Server com quản lý toàn bộ những trang web có domain là com, chúng gửi thông tin về địa chỉ IP của server yahoo.com cho server vnn
  • Lúc này server vnn đã có địa chỉ IP của yahoo.com rồi. Nhưng PC A yêu cầu dịch vụ www chứ không phải là dịch vụ ftp hay một dịch vụ nào khác. Do đó server vnn tiếp tục truy vấn tới server yahoo.com để yêu cầu thông tin về server quản lý dịch vụ www của yahoo.com
  • Lẽ đương nhiên khi nhận được truy vấn thì server yahoo.com gửi lại cho server vnn địa chỉ IP của server quản lý http://www.yahoo.com/
  • Cuối cùng là server vnn gửi lại địa chỉ IP của server quản lý http://www.yahoo.com. cho PC A và PC A kết nối trực tiếp đến nó. Và bây giờ thì server vnn đã có thông tin về http://www.yahoo.com cho những lần truy vấn đến sau của các client khác.

Mô tả kỹ thuật của lỗi DNS cache poisoning truyền thống và Subdomain Exploit DNS Cache Poisoning

Như đã mô tả bên trên DNS là giao thức phân giải địa chỉ, dùng để ánh xạ giữa tên miền (domain name) sang địa chỉ Internet (IP). Theo giao thức này, máy chủ DNS khi nhận được yêu cầu phân giải địa chỉ (request) từ máy trạm, nó sẽ tra cứu trong bộ đệm (cache) và trả về địa chỉ IP tương ứng với tên miền mà máy trạm yêu cầu.

Chú ý: ở đây hơi lướt qua vần đề thứ tự phân giải tên miền một chút thay vì phải giải thích dài dòng là Client coi cache trước không có chuyển qua file host không có tiếp rồi mới chạy qua hỏi DNS server. Thì ở đây bớt lằng nhằng là chuyển thag wa server lun.

Tuy nhiên, nếu không tìm thấy trong bộ đệm, máy chủ DNS sẽ chuyển tiếp yêu cầu phân giải tới một máy chủ DNS khác. Đây chính là khâu đã bị phát hiện là có lỗ hổng nghiêm trọng và mã khai thác lỗ hổng này đã được lan truyền trên mạng Internet trong vài ngày qua.

Cách thức tấn công DNS cache poisoning của hacker như sau: hacker (máy H) gửi hàng loạt yêu cầu phân giải địa chỉ tới máy chủ DNS nạn nhân (máy A). Các tên miền cần phân giải đã được hacker tính toán sao cho máy chủ A không thể tìm thấy trong bộ đệm của nó và buộc phải chuyển tiếp tới máy chủ DNS tiếp theo (máy B). Mỗi trao đổi phân giải giữa A và B được xác thực thông qua một số hiệu TID (Transaction ID) ngẫu nhiên. Tuy nhiên, điểm yếu ở đây chính là việc số TID này chỉ là một số 16 bit (nhỏ hơn 65535) và mọi trao đổi giữa A và B đều diễn ra trên một cổng (port) cố định của A.

image

Để tấn công DNS cache poisoning, trước khi máy A kịp nhận các gói tin trả lời từ máy B, hacker gửi liên tiếp các gói tin giả mạo trả lời của máy B tới cổng cố định nói trên của A. Chỉ cần một trong các gói tin giả mạo này có TID trùng với TID mà máy A đang chờ, thì gói tin giả mạo sẽ được máy A chấp nhận là gói tin hợp lệ và cập nhật vào bộ đệm của A. Lúc này, gói tin trả lời thật từ máy B sẽ không được máy A xử lý nữa. Bằng cách này, hacker có thể đầu độc bộ đệm của máy A, để ánh xạ tên miền bị tấn công sang một địa chỉ IP mà hacker chỉ định.

Lỗ hổng DNS cache poisoning đã xuất hiện lần đầu tiên vào những năm 90. Từ đó đến nay hacker đã sử dụng nhiều phương pháp khác nhau để khai thác lỗ hổng này. Đây là lỗi trong thiết kế của giao thức DNS. Với mỗi phương pháp khai thác, các nhà sản xuất phần mềm DNS Server cũng đã cung cấp các bản vá để ngăn chặn và vấn đề đã được khắc phục. Tuy nhiên, gần đây hacker đã tìm ra được phương thức tấn công mới, tiếp tục khai thác lỗ hổng DNS cache poisoning.

Điểm quan trọng nhất trong phương pháp khai thác lỗ hổng DNS cache poisoning lần này là việc hacker sử dụng các tên miền con (subdomain) để tạo ra các yêu cầu phân giải địa chỉ hợp lệ. Các tên miền con được tạo ngẫu nhiên với số lượng lớn, điều này đảm bảo các tên miền này chưa từng tồn tại trong cache của máy chủ A và buộc A phải tạo ra cùng số lượng tương ứng các yêu cầu chuyển tiếp tới máy chủ B. Kết quả là xác suất một gói tin giả mạo trả lời của B do hacker tạo ra có TID trùng với TID mà máy A đang chờ được nâng cao lên nhiều lần. Cơ hội đầu độc thành công bộ đệm của máy chủ A cũng vì thế được nâng cao.

Download bản Fix cho Windows Server 2k3 SP2

Download bản Fix cho Windows Server 2k3 SP1

KIỂM TRA LỖ HỔNG DNS CACHE POISONING

(Tài liệu từ BKAV)

Để sử dụng phần mềm BkavDNSCheck kiểm tra xem máy chủ DNS do bạn quản lý có lỗ hổng DNS Cache Poisoning hay không, bạn hãy thực hiện lần lượt theo 3 bước sau:

Bước 1: Cấu hình trên máy chủ DNS cần kiểm tra lỗ hổng
Bước 2: Sử dụng BkavDNSCheck để kiểm tra lỗ hổng
Bước 3: Cập nhật bản vá cho máy chủ DNS nếu phát hiện có lỗ hổng

Bước 1: Cấu hình trên máy chủ DNS cần kiểm tra lỗ hổng

Bạn cần cấu hình mục Forwarders trên máy chủ DNS để trỏ tên miền (domain name) BkavDnsCheck.vn tới địa chỉ IP 203.162.1.239 (địa chỉ máy chủ của phần mềm BkavDNSCheck).
Dưới đây là hướng dẫn cấu hình mục Forwarders cho 2 phần mềm DNS Server phổ biến hiện nay:

  • Microsoft DNS Server
  • BIND

1.1. Cấu hình server sử dụng Microsoft DNS Server

  • Vào giao diện quản trị DNS Server
  • Mở chuột phải vào tên DNS Server, chọn Properties

alt

  • Chọn Tab Forwarders

alt

  • Bấm New, gõ BkavDnsCheck.vn trong ô DNS domain

alt

  • Nhập địa chỉ IP 203.162.1.239 vào ô Selected domain’s forwarder IP address list

alt

  • Bấm ApplyOK

1.2. Cấu hình DNS Server sử dụng Bind
Chú ý: Bước 1.2 này chỉ thực hiện nếu bạn sử dụng phần mềm Bind

  • Bổ sung cấu hình trong file /var/named

Code:

  zone "bkavdnscheck.vn" IN {
              type forward;
              forwarders {203.162.1.239;};
        };
  • Khởi động lại dịch vụ DNS

Bước 2: Sử dụng BkavDNSCheck để kiểm tra lỗ hổng

alt

Mô hình thực hiện kiểm tra lỗi Subdomain Exploit DNS Cache Poisoning

2.1. Tải phần mềm BkavDNSCheck.exe

2.2. Đặt thông số DNS của máy tính chạy phần mềm BkavDNSCheck.exe trỏ tới DNS Server cần kiểm tra

  • Trên máy tính đang chạy phần mềm BkavDNSCheck.exe, mở cửa sổ Internet Protocol (TCP/IP) Properties
  • Thay đổi địa chỉ IP trong trường Preferred DNS Server thành địa chỉ IP của DNS Server đang cần kiểm tra

alt

2.3. Thực hiện kiểm tra lỗ hổng của DNS Server

  • Chạy BkavDnsCheck.exe

alt

  • Bấm nút Scan và đợi kết quả kiểm tra (khoảng 30 giây)
  • Chương trình sẽ hiển thị kết quả là 1 trong 2 trường hợp sau:
    • Trường hợp 1: DNS Server đã được vá lỗ hổng Subdomain Exploit DNS Cache Poisoning. Trường hợp này bạn không cần làm thêm Bước 3 nữa, DNS Server của bạn đã được an toàn.

alt

    • Trường hợp 2: DNS Server chưa được vá và tồn tại lỗ hổng Subdomain Exploit DNS Cache Poisoning. Trường hợp này bạn cần cập nhật bản vá lỗ hổng cho DNS Server theo Bước 3 dưới đây.

alt

Bước 3: Cập nhật các bản vá cho DNS Server

Nếu sau khi quét bằng BkavDNSCheck, kết quả cho thấy DNS Server của bạn có lỗ hổng, bạn cần cập nhật ngay các bản vá để phòng chống nguy cơ bị tấn công đầu độc DNS Cache poisoning.

Để cập nhật bản vá cho DNS Server, bạn cần thực hiện các bước sau:

3.1. Xác định phần mềm đang được sử dụng cho DNS Server:

Kiểm tra xem phần mềm đang được sử dụng cho DNS Server để phân giải địa chỉ là phần mềm của nhà sản xuất nào (Microsoft, Red Hat,…)

3.2. Vá lỗi theo bản hướng dẫn tương ứng với phần mềm đang sử dụng trên DNS Server của mình

(sưu tầm)

Posted on 16/11/2010, in Security, Tổng quan công nghệ and tagged , , , . Bookmark the permalink. Để lại bình luận.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: