Mục tiêu chính của Pharming attacks là chuyển hướng người dùng đến một máy B khi người dùng cố gắng truy để có được tên miền của máy chủ A.

Trường hợp 1 : Attacker nắm được lỗ hổng của máy victim’s

Sửa đổi tập tin hosts

Hostname và địa chỉ IP trong host file (/etc/host) được sử dụng để tra cứu trong local, nó được ưu tiên hơn các tra cứu DNS từ xa. Thường khi truy cập đến một domain máy tính sẽ ưu tiên truy vấn địa chỉ ip trong file host trước khi hỏi dns ở xa. File này thường được sử dụng để chuyển hướng cục bộ hoặc chặn truy cập website (trỏ domain về localhost 127.0.0.1). Lợi dụng điểm này attacker có thể khai thác và chuyển hướng người dùng đến một trang tùy ý và khai thác theo ý muốn.

Ví dụ nếu có một mục sau trong file host của người dùng

Domain example.com sẽ được hiểu là có địa chỉ ip 1.2.3.4 mà không cần hỏi DNS server ở xa.

Cách tấn công : nếu attacker đã xâm nhập vào máy tính người dùng, họ có thể sửa đổi tập tin HOST để nó chuyển hướng truy cập của người dùng đến một trang web độc hại bất cứ khi nào người dùng cố gắng truy cập vào domain.

Ví dụ cho trường hợp này. Máy User đang mở SSH và bằng cách nào đó Attack biết được mật khâu SSH của User. Attacker sẽ thực hiện SSH tới máy user và sửa file /etc/hosts và thêm dòng code như sau :

Sẽ không có gì nếu chúng ta sử dụng nslookup vì nslookup thường bỏ qua file hosts và truy vấn dns ở xa. Nhưng khi ta truy cập bằng trình duyệt User sẽ tự động bị chuyển sang truy cập đến địa chỉ 192.168.0.10.

Nếu sử dụng lệnh ping google.com thì sẽ thấy 192.168.0.10 trả lời gói icmp.

Kiểu tấn công này tương đối dễ thực hiện, attacker có thể sử dụng virus, bot, hoặc các chương trình điều khiển từ xa, … để điều khiển và thay đổi file host. Nhưng cũng dễ bị ngăn chặn vì thường máy user không mở port SSH. Nếu máy user có filewall và có phần mềm diệt virus thì cách sử dụng bot, virus là không khả thi.

Và cũng khó khăn khi khai thác lỗi từ máy user để xâm nhập vào.

Trường hợp 2 : Directly Spoof Response to User

Trong cuộc tấn công này DNS server bị tổn thương và dễ bị khai thác, do đó kẻ tấn công có thể thay đổi quá trình truy vấn DNS trên máy chủ của nạn nhân. Tuy nhiên nếu kẻ tấn công tấn công trên mạng cục bộ, kẻ tấn công vẫn có thể bị một thiệt hại lớn. Khi người dùng nhập trên một trang web máy tính của người dùng họ sẽ tạo một yêu cầu DNS xin địa chỉ IP gửi đến đến máy chủ DNS. Sau khi đánh hơi được cầu này, kẻ tấn công có thể giả mạo một phản ứng DNS giả ( tạo một gói tin giả mạo DNS gửi đến người dùng ).

DNS giả này được máy người dùng chấp nhận nếu thỏa các yêu cầu sau :

  1. Địa chỉ IP nguồn phải phù hợp với địa chỉ IP của máy chủ
  2. Địa chỉ IP đích phải phù hợp với địa chỉ IP của người dùng.
  3. Số cổng nguồn (UDP Port) phải phù hợp với số cổng mà yêu cầu DNS đã được gửi (thường ở cổng 53).
  4. Port đích phải phù hợp với port yêu cầu DNS được gửi.
  5. Checksum UDP phải được tính toán chính xác.
  6. ID phải khớp với ID giao dịch trong các yêu cầu
  7. Tên miền phần câu hỏi của phần trả lời phải trùng với tên miền trong câu hỏi của phần yêu cầu.
  8. Tên miền trong phần trả lời phải phù hợp với tên miền trong phần câu hỏi yêu cầu DNS.
  9. Máy tính của người sử dụng phải nhận được trả lời DNS của kẻ tấn công trước khi nhận được DNS từ máy chủ.

Để đáp ứng các tiêu chuẩn từ 1-8, kẻ tấn công có thể đánh hơi thông báo yêu cầu DNS được gửi bởi nạn nhân, họ có thể tạo một phản ứng DNS giả mạo và gửi cho nạn nhân trước khi máy chủ DNS kịp trả lời. Công cụ Netwox 105 cung cấp một tiện ích thích hợp để tiến hành đánh hơi và đáp ứng các yêu cầu.

Trong Netwox/Netwag 105 chúng ta có thể sử dụng trường “filter” để chỉ ra ip. Ví dụ trong bài lap này, chúng ta có thể sử dụng “src host 192.168.0.100”.

Các thực hiện :

Bước 1 : Thiết lập netwag

Khởi động netwag và chọn “105 Sniff and send DNS answers”

Thiết lập các thông số như sau :

Trong trường filter gõ vào “src host 192.168.0.100” để chỉ tấn công host có ip 192.168.0.100

Chọn Run it để bắt đầu tấn công.

Bước 2 : Tiến hành truy vấn trên máy client

Sử dụng câu lệnh: 

Bước 3 : Kết quả

Trường hợp 3: DNS Server Cache Poisoning

Cuộc tấn công nhằm vào máy tính của người dùng. Để đạt được hiệu quả lâu dài, mỗi khi người dùng truy vấn DNS cho www.example.com, máy của kẻ tấn công phải gửi một DNS giả mạo. Điều này có thể không hiệu quả, cách tốt hơn là tiến hành một cuộc tấn công vào máy chủ DNS thay vì máy người dùng.

Khi máy chủ DNS Apolo nhận được một truy vấn, nếu tên máy chủ không phải trong miền của Apolo nó sẽ hỏi máy chủ DNS khác ở xa để có thể giải quyết tên máy chủ.

Lưu ý rằng trong thiết lập này, các tên miền máy chủ DNS là example.com. Vì vậy đổi với DNS của các domain khác (như google.com) các máy chủ sẽ hỏi máy chủ DNS khác. Tuy hiên trước khi Apollo hỏi các máy chủ khác nó sẽ tìm câu trả lời trong bộ nhớ cache của mình. Nếu có câu trả lời, máy chủ DNS Apollo sẽ chỉ cần trả lời với các thông tin từ bộ nhớ cache của nó. Nếu câu trả lời không có trong bộ nhớ cache, máy chủ DNS sẽ cố gắng tìm câu trả lời trong các máy chủ DNS khác. Khi có kết quả nó sẽ trả lời cho người dùng đồng thời cũng lưu lại kết quả trong bộ nhớ cache trong một khoảng thời gian, tiện cho lần truy vấn tiếp theo. Vì vậy thời gian tiếp theo sẽ không cần phải hỏi các máy chủ DNS.

Kẻ tấn công có thể giải mạo các phản hồi từ máy chủ DNS khác, Apollo sẽ giữ các phản ứng giả mạo trong bộ nhớ cache của nó trong một thời gian nhất đinh. Khi máy người dùng muốn giải quyết cùng một tên máy chủ, Apollo sẽ sử dụng phản ứng giả mạo trong bộ nhớ cache để trả lời. Bằng cách này, kẻ tấn công chỉ cần để spoof một lần và tác động sẽ kéo dài cho đến khi các thông tin được lưu trữ trong cache hết hạn. Cuộc tấn công này được gọi là DNS cache poisoning. Sơ đồ sau minh họa cuộc tấn công :

Chúng ta có thể sử dụng cùng mộ công cụ (Netwox 105) cho cuộc tấn công này. Trước khi tấn công chắc chắn rằng bộ nhớ DNS của máy chủ là trống rỗng. Bạn có thể làm sạch nó bằng câu lệnh sau :

Sự khác biệt giữ cuộc tấn công này và tấn công trước là chúng ta giả mạo trả lời cho máy chủ DNS vì vậy chúng ta thết lập các bộ lọc “src host 192.168.0.10” đó là địa chỉ IP của máy DNS. Chúng ta cũng sử dụng ttl(time-to-live) để chỉ rõ bao lâu chúng ta muốn trả lời lại yêu cầu.

Bộ nhớ cache của máy chủ DNS. Sau khi bị nhiễm độc, chúng ta có thể ngăn chặn các Netwox 105. Nếu chúng ta đặt ttl 600s sau đó máy chủ DNS sẽ đưa ra câu trả lời giả cho 10 phút tiếp theo.

Lưu ý : chọn trường “raw” trong “spoofip” nếu không Netwox 105 sẽ cố gắng để spoof địa chỉ MAC cho các địa chỉ IP giả mạo. Để có được địa chỉ MAC, công cụ gửi ra một yêu cầu ARP hỏi địa chỉ MAC của IP giải mạo. Địa chỉ IP giải mạo này thường là một máy chủ DNS gốc (thường là nơi đầu tiên mà máy chủ DNS sẽ hỏi nếu nó không giải quyết được tên miền) và rõ ràng là các máy chủ DNS gốc không phải trên cùng một mạng LAN. Vì vậy không ai trả lời các yêu cầu ARP.

Công cụ này sẽ chờ đợi trả lời ARP trong một thời gian. Sự chờ đợi này sẽ làm chậm trể công việc gửi ra các phản ứng giải mạo. Nếu DNS phản hồi đến sớm hơn so với các gói giả mạo, cuộc tấn công sẽ thất bại. Đó là lý do tại sao cần phải để các công cụ không spoof địa chỉ MAC.

Bạn có thể kiểm tra máy chủ DNS có bị nhiễm độc hay không bằng cách sử dụng Wireshark hoặc bằng bộ nhớ cache của máy chủ. Để kết xuất và xem bộ nhớ cache của máy chủ DNS, sử dụng lệnh sau :

Các bước thực hiện :

Bước 1 : Cấu hình forward trên máy DNS server

Mở tập tin /ect/bind/named.config.name bỏ dấu // trước dòng forward và thiết lập thống số như sau :

Restart lại dịch vụ bằng câu lệnh :

Bước 2 : Cấu hình tấn công trên máy Attacker

Tương tự như trường hợp 2 nhưng bây giờ đổi lại phần filter thành “src host 192.168.0.10” để chỉ tấn công trên máy DNS server.

Bước 3 : Kết quả

Ưu điểm so với trường hợp 2 :

  • Tấn công một lần nhưng ảnh hưởng đến nhiều
  • Gói tin DNS giả mạo sẽ được lưu trên bộ nhớ cache của DNS Server một thời gian nhất định nên attacker tấn công một lần sẽ có tác dụng trong một khảng thời
  • Không ảnh hưởng đến chính mình vì máy attacker cũng nằm trong mạng

Link demo:       https://youtu.be/5hrDQ8wUasI

(Kết thúc)