Tìm hiểu về tấn công Man-in-the-Middle – Giả mạo ARP Cache
Trong bài này chúng tôi sẽ tiếp tục giới thiệu cho các bạn về các tấn công Man-in-the-Middle, cụ thể là sẽ tập trung vào giới thiệu một loại tấn công MITM khác mang tên giả mạo DNS.
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
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.