Trao đổi với tôi

http://www.buidao.com

12/4/09

[Hacking] DNS attacking

Tg: VodKa

1. DNS wht does it mean?

Domain Name System (DNS) là một giao thức rất quan trọng trên Internet, được sử dụng để phân giải một tên miền (domain) thành địa chỉ IP. Cái mà con người có thể nhớ là domain, ví dụ: "clip.vn" còn cái để đánh địa chỉ một network device trên internet là ip address ví dụ: 222.255.31.35
Thời kỳ đầu của internet khi chưa có DNS người ta phải lưu địa chỉ trong các file LMhost. Để hiểu rõ hơn về địa chỉ IP, domain cấu trúc dạng cây trong DNS các bạn có thể đọc thêm tài liệu TCP/IP illustrate hoặc MCSA, ...

2. Attacking the DNS protocol

Vai trò quan trọng của DNS là không thể phủ nhận, tuy nhiên giao thức này lại ít được chú ý và còn ẩn chứa nhiều lỗi tiềm tàng. Các máy chủ DNS cũng không được quan tâm, nâng cấp thường xuyên như máy chủ web. Nói cách khác hệ thống DNS cũng chính là một điểm yếu lớn của internet.
Bình thường:
mail.yahoo.com --> 209.73.168.74
Bạn hãy thử tưởng tượng bằng một cách nào đó ta làm cho:
mail.yahoo.com --> 203.162.xxx.xxx (là một địa chỉ do hacker quản lý)
Như vậy DNS attacking cho phép hacker có thể đễ dàng thực hiện các phương pháp tấn công main in the middle, fishing hay cài đặt virus, spyware ...
Có nhiều cách để tấn công một DNS server, ở đây chúng ta chỉ đề cập tới những phương pháp tấn công đánh thẳng vào bản thân điểm yếu của giao thức là DNS spoofing.

Như chúng ta bít thì client truy vấn DNS lên server ở port 53 UDP,còn server-server là port 53 TCP.
Cấu trúc một câu truy vấn sẽ bao gồm tên cần phân giải,port đích,IP đích,Port nguồn ,IP nguồn và Transaction ID.Một câu trả lời được coi là hợp lệ khi có IP đích ,Port đích và ID đúng của người đã hỏi.

a. DNS Cache Poisoning
Các máy chủ DNS chỉ chứa thông tin về một số nhỏ chứ không phải toàn bộ các domain có thể có. Khi một nhận được request về một domain mà nó chưa có thì DNS server sẽ đi hỏi thông tin từ một DNS server khác cấp cao hơn, DNS server cập cao hơn này lại forward tới 1 DNS server cấp cao hơn nữa ... Quá trình cứ tiếp tục cho tới khi đến được máy chủ DNS đang quản lý domain đó. Thông tin mới sẽ được DNS server lưu trữ lại tạm thời trong cache.
Vậy làm thể nào để đánh lừa DNS server để nó hiểu:
mail.yahoo.com --> 203.162.xxx.xxx

Attacker muốn tấn công vào một DNS server, anh ta sẽ dựng lên 1 DNS server nào đó của riêng mình và đăng ký một tên miền mới ví dụ:attacker.net
Đầu tiên hacker gửi một request lên DNS server về thông tin của www.attacker.net

http://img81.imageshack.us/img81/6963/24314604ks0.jpg

DNS server sẽ phải đi hỏi các server khác, cho tới khi tới được DNS server của hacker


Trả lại thông tin về domain attacker.net, kèm theo thông tin sai lệch về domain: mail.yahoo.com

http://img155.imageshack.us/img155/8273/96936849gf5.jpg

DNS server trả lời cho hacker đồng thời bị nhiễm độc DNS cache posioning.


Khi đó bất kỳ máy nào hỏi DNS server về mail.yahoo.com đề nhận được địa chỉ sai lệch là 203.162.xxx.xxx

b. DNS ID Spoofing
Thực hiện trên mạng Lan, theo tư duy tấn công main in the middle, sniffer dựa trên kỹ thuật ARP poisioning.
Máy X gửi một request truy vấn tên miền Y tới DNS server.
Hacker ở giữa tiến hành nghe trộm.


Và gửi trả lại thông tin sai lệch.

Một công cụ hỗ trợ sẵn cho phương pháp tấn công này là Cain.
Phương pháp này khá đơn giản, khả năng thành công cao tuy nhiên chỉ giới hạn trong phạm vi LAN.

c. Birthday Paradox Attacking
Đây là bài toán xác suất. Giả sử trong một party bạn đi hỏi xem sinh nhật của ai vào ngày nào, khi đó xác suất để có 2 người có sinh nhật trùng nhau sẽ là:
Khi hỏi 1 người xác suất là: (giống mình) 1-(364/365)
Hỏi 2 người: 1-(364/365)*(363/365)
...
Xác suất này sẽ tăng khá nhanh như sau:
Số người 2 9 16 23 30 37 44 65 79
Xác suất 0.0027 0.0946 0.2836 0.5073 0.7063 0.8487 0.9329 0.9977 0.9999

Trở lại phương pháp tấn công của chúng ta. Như ta đã nói để 1 respone là hợp lệ thì Port và ID phải hợp lệ.
Ta hãy tưởng tượng ID sẽ là một số ngẫu nhiên từ 1 đến 65535 tương tự như ngày sinh từ 1->365.
Để giải quyết vấn đề random ID thì trên một số trang web đã public thuật toán random con số này và theo thông kê thì hack chỉ còn gửi 700 gói tin /sec trở lên với ID được random theo thuật toán thì tỉ lệ thành công xác xuất gần 100%.

Bài viết thuộc bản quyền của VBF và VodKa