Giới thiệu về DNS và chuyển vùng DNS
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.
Giới thiệu về DNS và chuyển vùng DNS
Nguồn : quantrimang.com
Giới thiệu chung
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.
Các tên DNS tạo ra theo định dạng sau ., ví dụ infosec.vasc.com.vn. Trong khi
danh sách các kiểu tên DNS được thiết kết lại bởi ICANN (Công ty quản lý dịch
vụ tên miền), một số các kiểu thông thường bao gồm: .edu (dạng các website
giáo dục) , .mil (các website cho quân đội), .org (thuộc dạng các tổ chức phi
thương mại) .com (các tổ chức kinh tế),... Và cũng có các kiểu tên miền chỉ định
theo tên nước, ví dụ .ie (Ireland), .jp (Japan), .de (Germany)
Khi một máy tính (một DNS client) muốn tìm kiểm một URL, nó đưa yêu cầu
(GetHostByName) tới DNS server của nó. DNS client sử dụng một DNS resolver
để định vị DNS server. Nếu DNS server không xác định được tên miền cần tìm,
hay DNS server không có chút thông tin gì về URL đó trong vùng nhớ đệm của
nó, nó sẽ không thể trả lời yêu cầu của client ngay lập tức. Thay vào đó, DNS
server sẽ hoặc sử dụng một DNS forwarder hoặc tạo lại một yêu cầu theo quy
tắc đệ quy.
Việc giả mạo DNS liên quan tới việc bắt buộc một DNS client tạo yêu cầu tới một
server mạo danh, và khi đó client sẽ nhận được trả lời sai từ server giả mạo đó.
Có 3 cách thực hiện kiểu tấn công giả mạo DNS này, bao gồm:
1. Giả mạo các phản hồi DNS
Kẻ tấn công có thể sử dụng cơ chế đệ quy, giả mạo yêu cầu mà DNS server gửi
ra ngoài trong quá trình tìm kiểm một địa chỉ, và phản hồi các thông tin sai trước
khi các thông tin thật đến. Mỗi gói tin DNS có một số ID dạng 16 bit mà DNS
server dùng để kiểm tra yêu cầu ban đầu gửi đi là gì. Khi sử dụng BIND, một
phần mềm thông dụng dạng DNS server, số này tăng lên 1 sau mỗi yêu cầu gửi
đến, và việc tạo yêu cầu rất dễ dàng giả mạo. BIND đã được sửa lỗi theo phiên
bản gần đây, mà các gói tin DNS được khởi tạo theo các con số ngẫu nhiên
(phiên bản BIND v9).
Để kiểm tra liệu một DNS server có thể có lỗ hổng hay không đối với sự tấn công
giả mạo địa chỉ DNS, bạn có thể gửi các yêu cầu tới server, thẩm định liệu có thể
đoán số ID kế tiếp trong một gói tin yêu cầu giử tới DNS. Nếu các yêu cầu ID có
thể đoán trước được, điều này có nghĩa là vùng nhớ đệm trong DNS có thể ánh
xạ không đúng tới địa chỉ IP thật, và đó chính là lỗ hổng bảo mật trong DNS.
2. Giả mạo địa chỉ trong vùng nhớ đệm của DNS
Sau các yêu cầu đệ quy, các ánh xạ địa chỉ nhận được sẽ tồn tại trong DNS
cache. DNS server sẽ dựa vào cùng nhớ đệm này để xác định thông tin cho các
yêu cầu đến và phản hồi từ client gửi tới, giúp cho việc truy cập thông tin nhanh
hơn. Độ dài thời gian mà các kết quả yêu cầu đệ quy được giữ luôn trong DNS
cache (kí hiệu là TTL -- time to live) có thể được thiết lập.
Việc các địa chỉ bị giả mạo nằm trong DNS cache kéo theo việc gửi thông tin ánh
xạ không đúng với thời gian tồn tại (TTL) dài. Vậy nên, tại thời điểm kế tiếp khi
có một yêu cầu gửi tới, nó sẽ nhận được thông tin sai. Việc sai thông tin này
cũng có thể bị ảnh hưởng do việc nhận dữ liệu từ một DNS server từ xa nào đó
bị giả mạo . Có thể giới hạn sự giả mạo thông tin này bằng cách giảm thời gian
thông tin tồn tại trong cache (TTL), nhưng điều này cũng làm giảm hiệu năng của
server.
Một ứng dụng thông dụng của DNS dạng phần mềm mã nguồn mở là BIND
(Berkeley Internet Name Daemon), mà cung cấp hầu hết các chức năng quan
trọng về DNS server. Tuy nhiên, cũng có rất nhiều lỗ hổng bảo mật trong BIND,
và vì vậy, việc đảm bảo đang sử dụng phần mềm BIND với phiên bản mới nhất
là rất quan trọng. Hiện tại, các chuẩn mới về DNS đã khắc phục được lỗi này
trong vùng nhớ đệm của DNS.
3. Phá vỡ mức bảo mật môi trường
Việc tấn công bằng cách giả mạo địa DNS phá vỡ mức bảo mật của môi trường
làm việc mạng trong DNS server. Ví dụ: tấn công dựa theo các lỗ hổng dạng tràn
vùng đệm đối với các phiên bản BIND cũ, mà cho phép kẻ tấn công đoạt được
quyền root truy cập. Khi kẻ tấn công đoạt được quyền truy cập trong môi trường
DNS, anh ta có thể điều khiển được môi trường mạng.
Để giúp đỡ trong việc quản lý và gỡ rối, rất hữu ích khi biết rằng việc truyền
thông DNS sử dụng cả giao thức TCP (Transmission Control Protocol) và UDP
(User Datagram Protocol), và thông thường người ta sử dụng một firewall được
cấu hình đứng lọc gói tin trước khi đi qua DNS.
Một cách để ngăn các nguy hiểm không được chứng thực là sử dụng một hệ
thống DNS được chia theo vùng quản lý. Điều này liên quan tới cài đặt một DNS
server bên trong. Khi đó, mỗi DNS bên ngoài được thiết lập chỉ chứa các thông
tin liên quan bởi các host bên ngoài,như SMTP gateway, hay một NS bên ngoài.
Hầu hết các mail server hiện tại có thể điều khiển SMTP mail rất tốt (như MS
Outlook và Lotus Lote của IBM đều có các SMTP gateway), nó cũng an toàn hơn
vì có cơ chế riêng rẽ cho việc nhận SMTP mail. Sau đó, nếu mail bên ngoài
chuyển đổi thành công, kẻ tấn công sẽ không thể tự động truy cập tới hệ thống
mail bên trong.
Tương lai phát triển của DNS
DNS có thể có lỗ hổng do bị giả mạo gói tin bởi vì thiếu vắng quyền chứng thực
khi truy cập. Điều này có thể được khắc phục với DNSSEC. Đây là một cơ chế
bảo mật mới bằng cách cho phép các Website kiểm tra các tên miền của họ và
chịu trách nhiệm đối với các địa chỉ IP theo các chữ ký điện tử và thuật toán mã
hoá công khai. Điều này cũng có nghĩa rằng, khi DNS client nhận một phản hồi
từ yêu cầu của nó, nó có thể kiểm tra yêu cầu đó từ một tài nguyên được chứng
thực. DNSSEC đã bắt đầu được nhúng trong BIND 9, và trong một số hệ điều
hành.
DNSSEC sẽ đòi hỏi nhiều hơn về hiệu năng của phần cứng, băng thông lớn hơn
và đòi hỏi phải thay đổi đối với tất cả các DNS server hiện tại. Vì vậy, việc áp
dụng công nghệ mới này vẫn còn đang được triển khai và hứa hẹn trong tương
lai.
Hôm nay,thông qua bài viết này Bình triệu đề cập tới vấn đề chuyển vùng.Chắc hẳn bạn
sẽ quan tâm.Mong bài viết sẽ cho bạn hiểu rõ hơn về nó,cũng như có nhưng kiến thức
nhất định về vấn đề này.
Chuyển vùng (Phần này được sưu tập của tác giả Binh Trieu - vietnam security)
Một trong những cấu hình sai nghiêm trọng mà người quản trị hệ thống có thể mắc phải
là cho phép người dùng Internet không đáng tin cậy được tiến hành chuyển vùng DNS.
Chuyển vùng (Zone Transfer)cho phép máy phục vụ phụ cập nhật cơ sỡ dữ liệu từ máy
chính.Như vậy là làm dư thừa khi chạy DNS,nhỡ như máy phục vụ tên chính không khả
dụng.Nói chung,máy phục vụ DNS phụ chỉ cần chuyển vùng DNS.Thế nhưng,nhiều máy
phục vụ DNS bị lập cấu hình sai và cung cấp bản sao vùng cho người nào yêu cầu.không
nhất thiết là xấu nếu thông tin cung cấp liên quan đến hệ thống nối mạng Internet và có
tên máy chủ hợp lệ,dẫu tạo điều kiện dễ dàng cho kẻ tấn công tìm thấy đích.Vấn đề thực
sự nảy sinh khi tổ chức không áp cụng cơ chế DNS cổng riêng để cách ly thông tin DNS
ngoài (công khai) với thông tin DNS trong.Cung cấp thông tin địa chỉ IP trong cho người
dùng không đáng tin cậy qua mạng Internet cũng giống như cung cấp bản đồ trong của tổ
chức.
Chúng ta hãu xem xét một vài phương pháp chuyển vùng,và các loại thông tin.Tuy có
nhiều công cụ chuyển vùng,nhưng tôi giới hạn thào luận ở vài loại phổ biến mà thôi.
Cách đơn giản để chuyển vùng là dùng máy khách “nslookup”thường do thi hành UNIX
và NT mang lại.Chúng ta áp dụng “nslookup” trong chế độ tương tác với nhau:
[bash] $ nslookup
Default Server: ns1.example.net
Address:10.10.20.2
>216.182.1.1
Default Server : [10.10.20.2]
Address: 10.10.20.2
Name: gate.tellurian.net
Address:10.10.20.2
>set type=any
>ls –d tellurian.net. >>/tmp/zone_out
Đầu tiên chúng ta chạy “nslookup” trong chế độ tương tác.Một khi khởi động xong,nó sẽ
cho biết máy phục vụ tên mặc định,thường là máy phục vụ DNS của tổ chức hoặc máy
phục vụ DNS của người cung cấp dịch vụ Internet.Tuy nhiên,máy phục vụ DNS
(10.10.20.2)không có thẩm quyềncho vùng đích,nên sẽ không có hết thảy mẫu tin
DNS.Bởi vậy,chúng ta cần tự tay cho “nslookup” biết là sẽ truy vấn máy phục vụ DNS
nào.Trong ví dụ này,chúng ta dùng máy phục vụ DNS chính cho Tellurian network
(10.10.20.2).
Tiếp theo chúng ta định loại mẫu tin là “any”.Tác vụ này cho phép bạn kéo mẫu tin DNS
bất kì (man nslookup) cho danh sách hoàn chỉnh.
Sau cùng,liệt kê toàn bộ mẫu tin liên quan đến vùng bằng tuỳ chọn “ls”.”-d” liệt kê tất cả
mẩu tin vùng.Chúng ta thêm “.”ở cuối câu để cho biết tên vùng hội đủ điều kiện-song đa
phần là để vậy.Hãy đổi hướng kết quả và tập tin “/tmp/zone_out” để có thể thao tác sau
này.
Chuyển vùng xong,chúng ta xem trong tập tin coi có thông tin lý thú nào cho phép nhắm
đến hệ thống cụ thể không.Hãy xem kết quả sau:
[bash] more zone_out
acct18 1D IN A 192.168.230.3
1D IN HINFO
1D IN MX 0 tellurianadmin-smtp
1D IN RP- bsmith.rci bsmith.who
1D IN TXT “Location:Telephone Room”
ce 1D IN CNAME aesop
au 1D IN A 192.168.230.4
1D IN HINFO “aspect” “MS-DOS”
1D IN MX 0 andromeda
1D IN RP jcoy.erebus jcoy.who
1D IN TXT “Location: Library”
acct21 1D IN A 192.168.230.5
1D IN HINFO “Gateway2000” “WinWKGRPS”
1D IN MX 0 tellurianadmin-smtp
1D IN RP bsmith.rci bsmith.who
1D IN TXT “Location: Acounting”
Chúng ta sẽ không đi chi tiết từng mẫu tin,chỉ lưu ý vài loại quan trọng.Đối với mỗi mục
nhập,chúng ta có mẫu tin A cho biết địa chỉ IP của tên hệ thống nằm bên phải.Ngoài
ra,mỗi máy chủ đều có mẩu tin HINFO nhận diện nền hoặc hoặc loại hệ điều hành đang
chạy (RFC-952).Mẩu tin HINFO tuy không cần thiết song cung cấp nhiều thông tin cho
kẻ tấn công.Vì chúng ta đã lưu kết quả chuyển vùng vào tập tin đầu ra nên dễ dàng thao
tác kết quả bằng chương trình UNIX như : grep,sed,awk,hoặc Perl.
Giả thiết chúng ta là những chuyên gia trong SunOS hoặc Solaris,có thể tìm ra địa chỉ IP
có mẩu tin HINFO liên quan đến SPARC,Sun,hoặc Solaris.
[bash] $ grep -i solaris zone_out |wc -1
388
Chúng ta có 388 mẩu tin tham chiếu "Solaris".Khỏi phải nói,chúng ta có quá nhiều mục
tiêu.
Giả sử chúng ta muốn tìm hệ thống thử nghiệm,vô tình là chọn lựa cho kẻ tấn công.Tại
sao? Thật đơn giản-chúng thường không kích hoạt nhiều đặc tính bảo mật,mật mã để
đoán,nhà quản trị không hay để ý hoặc bận tâm ai đăng nhập chúng.Một chốn lý tưởng
cho những kẻ xâm nhập.Do đó,chúng ta tìm hệ thống thử nghiệm như sau:
[bash] $ grep -i test /tmp/zone_out |wc -1
96
Nên có khỏang 96 mục nhập trong tập tin vùng có chứa từ "test".Phải bằng với số hệ
thống thử nghiệm thật.Trên đây chỉ là một vài ví dụ đơn giản.Hầu hết kẻ xâm nhập sẽ mổ
xẻ dữ liệu này để tập trung vào loại hệ thống cụ thể có chổ yếu đã biết.
Có vài điểm cần ghi nhớ.Phương pháp neu trên chỉ truy cập lần lượt máy phục vụ tên.Tức
là bạn phải thực hiện cùng một tác vụ cho tất cả máy phục vụ tên có thẩm quyền đối với
vùng đích.Chúng ta chỉ truy vấn vùng Tellurian.net mà thôi.Nếu có vùng con,sẽ phải thực
hiện cùng loại truy vấn cho từng vùng con(chẳng hạn như greenhouse.tellurian.net).Sau
cùng bạn nhận thông báo không thể liệt kê vùng hoặc từ chối truy vấn.Thường điều này
cho thấy máy phục vụ đã được lập cấu hình để vô hiệu hóa chuyển vùng của người dùng
bất hợp pháp.Vì vậy,bạn khó lòng chuyển vùng từ máy phục vụ này.Nhưng nếu có nhiều
máy phục vụ DNS,bạn sẽ có cơ may tìm được máy cho phép chuyển vùng.
Có rất nhiều công cụ đẩy nhanh tiến trình này,bao gồm: host,Sam Spade,axfr và
dig(không đề cập ở đây).
Lệnh "host" mang nhiều hương vị của UNIX.Cách dùng lệnh "host"như sau:
host -1 tellurian.net
hoặc
host -1 -v -t any tellurian.net
Nếu cần mỗi địa chỉ IP để đưa vào kịch bản shell,bạn cut(cắt) địa chỉ IP khỏi lệnh "host"
host -1 tellurian.net |cut -f 4 -d" " >>/tmp/ip_out
Không phải chức năng in dấn chân nào cũng buộc phải thực hiện qua lệnh UNIX.Một số
sản phẩm Windows cũng cung cấp thông tin như vậy.
Sau cùng bạn chuyển vùng bằng một trong những công cụ siêu việt,axfr của Gaius.Trình
tiện ích này sẽ chuyển thông tin vùng,cơ sở dữ liệu vùng và tập tin máy chủ cho từng
vùng được truy vấn dưới dạng nén.Thâm chí bạn có thể chuyểnvu2ng cấp cao như com
và edu để lấy tất cả vùng liên quan đến "com" và "edu".Tuy nhiên,không nên làm
vậy.Muốn chạy axfr,bạn gõ như sau"
[bash] $ axfr tellurian.net
axfr: Using default directory: /root/axfrdb
Found 2 name servers for domain "Tellurian.net";
Text deleted.
Received xxx answer (xxx records).
Để truy vấn thông tin vừa lấy trong cơ sở dữ liệu "axfr",bạn gõ như sau:
[bash] $ axfr tellurian.net