Trong phần đầu của loạt bài này, chúng tôi đã giới
thiệu cho các bạn về truyền thông ARP và ARP cache của một thiết bị có
thể bị giả mạo như thế nào để redirect lưu lượng mạng của các
máy tính qua một máy khác với ý mục đích xấu. Trong bài này, chúng tôi
giới thiệu cho các bạn về một kiểu tấn công MITM khác, giả mạo DNS (DNS
Spoofing). Nếu chưa đọc phần giả mạo ARP Cache, các bạn nên quay lại và đọc qua nó trước vì bài viết này sẽ sử dụng một số kỹ thuật mà chúng tôi đã giới thiệu trong bài đó.
Giả mạo DNS
Giả mạo DNS là một kỹ thuật MITM được sử dụng nhằm
cung cấp thông tin DNS sai cho một host để khi người dùng duyệt đến một
địa chỉ nào đó, ví dụ, www.bankofamerica.com có IP XXX.XX.XX.XX, thì cố gắng này sẽ được gửi đến một địa chỉ www.bankofamerica.com
giả mạo cư trú ở địa chỉ IP YYY.YY.YY.YY, đây là địa chỉ mà kẻ tấn công
đã tạo trước để đánh cắp các thông tin tài khoản ngân hàng trực tuyến
từ người dùng. Tấn công này có thể thực hiện khá dễ dàng và trong bài
này chúng ta sẽ đi nghiên cứu cách làm việc của nó, cách nó thực hiện
tấn công thế nào và cuối cùng là cách chống trả ra sao.
Truyền thông DNS
Giao thức Domain Naming System (DNS) như được định
nghĩa trong RFC 1034/1035 có thể được xem như là một trong những giao
thức quan trọng nhất được sử dụng trong Internet. Nói ngắn ngọn để dễ
hiểu, bất cứ khi nào bạn đánh một địa chỉ web chẳng hạn như http://www.google.com
vào trình duyệt, yêu cầu DNS sẽ được đưa đến máy chủ DNS để tìm ra địa
chỉ IP tương xứng với tên miền mà bạn vừa nhập. Các router và các thiết
bị kết nối Internet sẽ không hiểu google.com là gì, chúng chỉ hiểu các
địa chỉ chẳng hạn như 74.125.95.103.
Máy chủ DSN làm việc bằng cách lưu một cơ sở dữ liệu
các entry (được gọi là bản ghi tài nguyên) địa chỉ IP để bản đồ hóa tên
DNS, truyền thông các bản ghi tài nguyên đó đến máy khách và đến máy chủ
DNS khác. Kiến trúc máy chủ DNS trong toàn doanh nghiệp và Internet là
một thứ khá phức tạp. Như một vấn đề của thực tế, bạn có thể hình dung
chúng như các quyển sổ chuyên dụng cho kiến trúc DNS. Chúng tôi sẽ không
đi vào giới thiệu các khía cạnh về kiến trúc hay thậm chí các kiểu lưu
lượng DNS khác nhau, mà chỉ giới thiệu một phiên giao dịch DNS cơ bản,
bạn có thể thấy điều đó trong hình 1.
Hình 1: Truy vấn và đáp trả DNS
DNS hoạt động theo hình thức truy vấn và đáp trả
(query/response). Một máy khách cần phân giải DNS cho một địa chỉ IP nào
đó sẽ gửi đi một truy vấn đến máy chủ DNS, máy chủ DNS này sẽ gửi thông
tin được yêu cầu trong gói đáp trả của nó. Đứng trên phối cảnh máy
khách, chỉ có hai gói xuất hiện lúc này là truy vấn và đáp trả.
Hình 2: Các gói truy vấn và đáp trả DNS
Kịch bản này sẽ có đôi chút phức tạp khi xem xét đến
sự hồi quy DNS. Nhờ có cấu trúc thứ bậc DNS của Internet, các máy chủ
DNS cần có khả năng truyền thông với nhau để đưa ra câu trả lời cho các
truy vấn được đệ trình bởi máy khách. Nếu tất cả đều diễn ra thuận lợi
như mong đợi, máy chủ DNS bên trong của chúng ta sẽ biết tên để bản đồ
hóa địa chỉ IP cho máy chủ bên trong mạng nội bộ, tuy nhiên không thể
mong đợi nó biết địa chỉ tương quan giữa Google hoặc Dell. Đây là nơi sự
đệ quy đóng vai trò quan trọng. Sự đệ quy diễn ra khi một máy chủ DNS
truy vấn máy chủ DNS khác với tư cách máy khách tạo yêu cầu. Về bản
chất, cách thức này sẽ biến một máy chủ DNS thành một máy khách, xem
trong hình 3.
Hình 3: Truy vấn và đáp trả DNS bằng đệ quy
Giả mạo DNS
Hình 4: Tấn công giả mạo DNS bằng phương pháp giả mạo DNS ID
Hình 5: Bổ sung bản ghi DNS giả mạo vào etter.dns
Hình 6: Ettercap đang lắng nghe tích cực các truy vấn DNS
Hình 7: Kết quả cố gắng giả mạo DNS từ phối cảnh người dùng
Có nhiều cách để có thể thực hiện vấn đề giả mạo DNS. Chúng tôi sẽ sử dụng một kỹ thuật mang tên giả mạo DNS ID.
Mỗi truy vấn DNS được gửi qua mạng đều có chứa một số
nhận dạng duy nhất, mục đích của số nhận dạng này là để phân biệt các
truy vấn và đáp trả chúng. Điều này có nghĩa rằng nếu một máy tính đang
tấn công của chúng ta có thể chặn một truy vấn DNS nào đó được gửi đi từ
một thiết bị cụ thể, thì tất cả những gì chúng ta cần thực hiện là tạo
một gói giả mạo có chứa số nhận dạng đó để gói dữ liệu đó được chấp nhận
bởi mục tiêu.
Chúng ta sẽ hoàn tất quá trình này bằng cách thực
hiện hai bước với một công cụ đơn giản. Đầu tiên, chúng ta cần giả mạo
ARP cache thiết bị mục tiêu để định tuyến lại lưu lượng của nó qua host
đang tấn công của mình, từ đó có thể chặn yêu cầu DNS và gửi đi gói dữ
liệu giả mạo. Mục đích của kịch bản này là lừa người dùng trong mạng mục
tiêu truy cập vào website độc thay vì website mà họ đang cố gắng truy
cập. Để rõ hơn bạn có thể tham khảo thêm hình tấn công bên dưới.
Hình 4: Tấn công giả mạo DNS bằng phương pháp giả mạo DNS ID
Có một số công cụ khác có thể được sử dụng để thực
hiện hành động giả mạo DNS. Chúng tôi sẽ sử dụng một trong số đó là
Ettercap, đây là công cụ có thể sử dụng cho cả Windows và Linux. Bạn có
thể download Ettercap về máy của mình tại đây.
Nếu tìm hiểu thêm một chút về website này, chắc chắn bạn sẽ thấy rằng
Ettercap còn có nhiều chức năng tuyệt vời khác ngoài việc giả mạo DNS và
có thể được sử dụng để thực hiện nhiều kiểu tấn công MITM.
Nếu cài đặt Ettercap trên máy tính Windows, bạn sẽ
thấy nó có một giao diện đồ họa người dùng (GUI) khá tuyệt vời, tuy
nhiên trong ví dụ này, chúng tôi sẽ sử dụng giao diện dòng lệnh.
Trước khi thực thi Ettercap, yêu cần bạn cần phải
thực hiện một chút cấu hình. Ettercap ở mức lõi của nó là một bộ đánh
hơi (sniffer) dữ liệu, nó sử dụng plug-in để thực hiện các tấn công khác
nhau. Plug-in dns_spoof là những gì mà chúng ta sẽ thực hiện
trong ví dụ này, vì vậy chúng ta phải điều chỉnh file cấu hình có liên
quan với plug-in đó. Trên hệ thống Windows, file này có thể download tại
C:\Program Files (x86)\EttercapNG\share\etter.dns, và tại /usr/share/ettercap/etter.dns.
Đây là mộ file khá đơn giản và có chứa các bản ghi DNS mà bạn muốn giả
mạo. Với mục đích thử nghiệm, chúng ta muốn bất cứ người dùng nào đang
cố gắng truy cập vào yahoo.com đều bị hướng (direct) đến một host trên
mạng nội bộ, hãy thêm một entry được đánh dấu trong hình 5.
Hình 5: Bổ sung bản ghi DNS giả mạo vào etter.dns
Các entry này sẽ chỉ dẫn cho plug-in dns_spoof rằng khi thấy truy vấn DNS cho yahoo.com hoặc www.yahoo.com
(với một bản ghi tài nguyên kiểu A), nó sẽ sử dụng địa chỉ IP
172.16.16.100 để đáp trả. Trong kịch bản thực, thiết bị tại địa chỉ IP
172.16.16.100 sẽ chạy một phần mềm máy chủ web và hiển thị cho người
dùng website giả mạo.
Khi file này được cấu hình và lưu lại, chúng ta hoàn
toàn có thể thực thi chuỗi lệnh dùng để khởi chạy tấn công. Chuỗi lệnh
sử dụng các tùy chọn dưới đây:
- -T – Chỉ định sử dụng giao diện văn bản
- -q – Chạy các lệnh trong chế độ “yên lặng” để các gói dữ liệu đã được capture không hiển thị trên màn hình.
- -P dns_spoof – Chỉ định sử dụng plug-in dns_spoof
- -M arp – Khởi tạo tấn công MITM giả mạo ARP để chặn các gói dữ liệu giữa các host.
- // // - Chỉ định toàn bộ mạng là mục tiêu tấn công.
Chuỗi lệnh cuối cùng cho mục đích của chúng ta là:
Ettercap.exe –T –q –P dns_spoof –M arp // //
Khi chạy lệnh trên, bạn sẽ bắt đầu một tấn công hai
giai đoạn, đầu tiên là giả mạo ARP cache của thiết bị trên mạng, sau đó
là phát các đáp trả truy vấn DNS giả mạo.
Hình 6: Ettercap đang lắng nghe tích cực các truy vấn DNS
Khi khởi chạy, bất cứ ai đang cố gắng truy cập www.yahoo.com sẽ đều bị redirect đến website mã độc của chúng ta.
Hình 7: Kết quả cố gắng giả mạo DNS từ phối cảnh người dùng
Phòng chống giả mạo DNS
Khá khó phòng chống việc giả mạo DNS vì có khá ít các
dấu hiệu tấn công. Thông thường, bạn không hề biết DNS của mình bị giả
mạo cho tới khi điều đó xảy ra. Những gì bạn nhận được là một trang web
khác hoàn toàn so với những gì mong đợi. Trong các tấn công với chủ đích
lớn, rất có thể bạn sẽ không hề biết rằng mình đã bị lừa nhập các thông
tin quan trọng của mình vào một website giả mạo cho tới khi nhận được
cuộc gọi từ ngân hàng hỏi tại sao bạn lại rút nhiều tiền đến vậy. Mặc dù
khó nhưng không phải không có biện pháp nào có thể phòng chống các kiểu
tấn công này, đây là một sô thứ bạn cần thực hiện:
- Bảo vệ các máy tính bên trong của bạn: Các tấn công giống như trên thường được thực thi từ bên trong mạng của bạn. Nếu các thiết bị mạng của an toàn thì sẽ bạn sẽ giảm được khả năng các host bị thỏa hiệp và được sử dụng để khởi chạy tấn công giả mạo.
- Không dựa vào DNS cho các hệ thống bảo mật: Trên các hệ thống an toàn và có độ nhạy cảm cao, không duyệt Internet trên nó là cách thực hiện tốt nhất để không sử dụng đến DNS. Nếu bạn có phần mềm sử dụng hostname để thực hiện một số công việc của nó thì chúng cần phải được điều chỉnh những gì cần thiết trong file cấu hình thiết bị.
- Sử dụng IDS: Một hệ thống phát hiện xâm nhập, khi được đặt và triển khai đúng, có thể vạch mặt các hình thức giả mạo ARP cache và giả mạo DNS.
- Sử dụng DNSSEC: DNSSEC là một giải pháp thay thế mới cho DNS, sử dụng các bản ghi DNS có chữ ký để bảo đảm sự hợp lệ hóa của đáp trả truy vấn. Tuy DNSSEC vẫn chưa được triển khải rộng rãi nhưng nó đã được chấp thuận là “tương lai của DNS”.
Giả mạo DNS là một hình thức tấn công MITM khá nguy
hiểm khi được đi cặp với những dự định ác độc. Sử dụng công nghệ này
những kẻ tấn công có thể tận dụng các kỹ thuật giả mạo để đánh cắp các
thông tin quan trọng của người dùng, hay cài đặt malware trên một ổ đĩa
bị khai thác, hoặc gây ra một tấn công từ chối dịch vụ. Trong phần tiếp
theo của loạt bài này, chúng tôi sẽ giới thiệu tiếp cho các bạn về các
tấn công “pass the hash” và tấn công này có thể được
sử dụng như thế nào để đăng nhập vào các máy tính Windows mà không cần
đến các mật khẩu người dùng.
Theo Window Security
0 comments:
Post a Comment