Tấn công DDoS khuếch đại dựa trên UDP

09:00 | 22/12/2018

Trong ba năm qua, các cuộc tấn công từ chối dịch vụ phân tán (DDoS) đã gia tăng đáng kể cả về số lượng và quy mô, phá kỷ lục băng thông nhiều lần. Khởi đầu từ năm 2016, khi botnet Internet of Things (IoT) với tên gọi Mirai đã phát động một cuộc tấn công DDoS 620 Gbps với trang web Krebsonsecurity.com và tấn công 1 Tbps đối với một công ty lưu trữ dữ liệu châu Âu (OVH). Gần đây, các cuộc tấn công khuếch đại dựa trên UDP hay còn gọi là tấn công phản hồi đã xuất hiện và dẫn đầu về cường độ tấn công DDoS với cuộc tấn công “Memcrashed”, trong đó kẻ tấn công đã tạo ra 1,7 Tbps lưu lượng DDoS bằng memcached

Trước khi botnet Mirai xuất hiện, những kẻ tấn công thường phát động các cuộc tấn công DDoS bằng cách sử dụng một kỹ thuật được gọi là sự khuếch đại của DNS (Domain Name Service). Kỹ thuật này sử dụng ba thuộc tính của dịch vụ DNS để buộc các máy chủ công cộng gửi một lượng lớn lưu lượng truy cập đến các nạn nhân. Tuy nhiên, ba thuộc tính này không phải là duy nhất cho DNS, chúng tồn tại trong nhiều dịch vụ mạng dựa trên UDP (User Datagram Protocol), bao gồm các dịch vụ mạng ít được biết đến hơn như Memcached.

Trong bài viết này, sẽ thảo luận về các thuộc tính làm cho các cuộc tấn công khuếch đại dựa trên UDP trở nên hiệu quả và có thể trở thành nguy cơ lớn trong tương lai.

Một số khái niệm về NETWORKING và tấn công DDoS

Có một sự khác nhau chính giữa các cuộc tấn công khuếch đại dựa trên UDP so với tấn công dựa trên lưu lượng TCP (Transmission Control Protocol). Ở mức cao, lưu lượng truy cập TCP yêu cầu một cuộc đàm phán hai chiều đầy đủ giữa hai thiết bị trước khi thực hiện bất kỳ liên lạc thực nào. Cuộc đàm phán này được gọi là quá trình bắt tay ba bước (three-way handshake) . Điều này có nghĩa là, đối với các cuộc tấn công DDoS kẻ tấn công sẽ không thể giả mạo các tấn công DDoS dựa trên TCP (ngoại trừ các cuộc tấn công đàm phán TCP như SYN floods). Nói cách khác, một cuộc tấn công TCP thường phải đến từ một máy tính mà kẻ tấn công điều khiển.

Đối với UDP, giao thức không kết nối này không yêu cầu một cuộc đàm phán trước, cũng không nhất thiết phải có một phản hồi từ thiết bị nhận. Trong thực tế, cũng có các giao thức không kết nối khác, chẳng hạn như ICMP, cũng mang đến một số lợi thế cho các cuộc tấn công DDoS nhưng bài viết này sẽ tập trung vào UDP. Thông thường, các cuộc tấn công DDoS trong ngành công nghiệp bảo mật thành ba loại chính như sau.

Tấn công khối lượng lớn (Volume attack)- Các cuộc tấn công DDoS dạng này được thiết kế để áp đảo mục tiêu hoàn toàn dựa trên một khối lượng lớn của lưu lượng mạng, mục đích của nó là làm cho băng thông của trang web luôn ở mức tối đa. Chúng không cần phải quan tâm  mục tiêu xử lý lưu lượng truy cập bằng cách nào, mà chỉ cần gửi đủ lưu lượng để phá vỡ tất cả các dịch vụ mạng.

Tấn công giao thức (Protocol attack)- Các cuộc tấn công này sẽ chiếm các tài nguyên của các máy chủ hoặc thiết bị mạng quan trọng (bộ định tuyến, tường lửa ...) bằng cách lợi dụng các thuộc tính các giao thức theo các mức độ khác nhau. Ví dụ, tấn công SYN floods: Để định tuyến lưu lượng TCP, các bộ định tuyến và tường lửa phải duy trì một bảng trạng thái, tấn công SYN floods sẽ lấp đầy bảng trạng thái với các kết nối được hoàn thành một phần hoặc "mở một nửa" (half open), vì vậy thiết bị không thể thực hiện các kết nối mới. Ngoài ra còn có các các cuộc tấn công khác dạng này như Ping of Death hay Smurf.

Tấn công tầng ứng dụng (Application Layer Attacks) - Các cuộc tấn công này tập trung vào tầng 7 (tầng ứng dụng) của mô hình OSI (OSI stack). Điều này có nghĩa là chúng tập trung vào các vấn đề với các ứng dụng cụ thể như dịch vụ web (HTML), email (SMTP) hoặc các dịch vụ cơ sở dữ liệu (SQL). Các cuộc tấn công tầng ứng dụng DDoS thường khó nhận biết nhất vì chúng trông giống như lưu lượng truy cập bình thường và hợp pháp cho ứng dụng đó. Trong một số trường hợp, các tấn công tầng ứng dụng tận dụng các lỗ hổng kỹ thuật hoặc các lỗ hổng trong một ứng dụng cụ thể để làm chậm mọi thứ hoặc làm hỏng máy chủ. Trong các trường hợp khác, kẻ tấn công chỉ cần gửi toàn bộ các yêu cầu hoàn toàn hợp pháp, nhưng đòi hỏi quá trình thực hiện và xử lý lâu, chẳng hạn như GET floods và POST floods để làm chậm hệ thống.

Ngày nay những kẻ thực hiện tấn công DDoS ngày càng tinh vi khi đã biết kết hợp nhiều phương pháp tấn công DDoS với nhau trong cùng một chiến dịch tấn công. Một trong số đó là phương pháp sử dụng tấn công DDoS khuếch đại dựa trên UDP.

Tấn công DDoS khuếch đại dựa trên UDP

Ưu điểm lớn nhất của tấn công khuếch đại dựa trên UDP (sau đây chúng ta gọi tắt là tấn công khuếch đại UDP) là những kẻ tấn công có thể tận dụng nhiều dịch vụ mạng khác nhau, từ DNS, NTP, SNMP, Memcached .... để tiến hành cuộc tấn công. Mặc dù các cuộc tấn công này tuy khác nhau ở cấp độ kỹ thuật, nhưng tất cả đều có chung ba đặc tính chung. Chúng đều dựa trên UDP, khai thác các dịch vụ mạng thường được tiếp xúc với người dùng, và cung cấp một hệ số tỷ lệ không đối xứng (theo cấp số nhân). Phần tiếp theo sẽ thảo luận về lý do tại sao ba thuộc tính này quan trọng và cách chúng tương tác với nhau.

Tận dụng các dịch vụ mạng dựa trên UDP - Do UDP là giao thức không kết nối nên rất dễ giả mạo lưu lượng. Tin tặc có thể dễ dàng gửi gói UDP bằng địa chỉ IP của máy tính của người dùng, do giao thức không yêu cầu thương lượng trước, người nhận chỉ biết và chấp nhận gói đó là gói của người dùng trên gửi chứ không phải của kẻ tấn công. Việc giả mạo này cung cấp hai lợi thế cho kẻ tấn công. Đầu tiên là ẩn danh. Ví dụ, kẻ tấn công có thể gửi các gói UDP trực tiếp đến nạn nhân, nhưng che giấu về nơi các gói đó đến từ việc sử dụng các địa chỉ IP nguồn ngẫu nhiên.

Lợi thế thứ hai là khuếch đại dựa trên UDP tức là “phản hồi” một gói tin bằng cách giả mạo UDP. Trong trường hợp này, thay vì gửi gói trực tiếp đến nạn nhân, kẻ tấn công sẽ gửi gói tới một số máy chủ của bên thứ ba, nhưng sử dụng địa chỉ IP của nạn nhân làm nguồn của gói. Vì UDP là giao thức không kết nối, máy chủ của bên thứ ba sẽ gửi trả lời của họ cho nạn nhân là không biết. Đây là lý do tại sao một số chuyên gia gọi các cuộc tấn công này “phản hồi” hoặc “phản chiếu” UDP / DNS.

Khai thác các dịch vụ Internet công cộng - Để thành công ở mức quy mô lớn, các cuộc tấn công khuếch đại UDP cần các dịch vụ mạng công cộng để tận dụng. Ở trên đã đưa ra cách giả mạo lưu lượng UDP, từ đó cho phép các cuộc tấn công phản hồi. Tuy nhiên, những kẻ tấn công cần truy cập công khai, máy chủ của bên thứ ba để phản hồi các cuộc tấn công của mình. Lý tưởng nhất, chúng cần rất nhiều máy chủ truy cập công cộng, bởi vì nhiều máy chủ hơn có thể cho phép kẻ tấn công tạo ra nhiều lưu lượng truy cập hơn. Nói chung, các cuộc tấn công khuếch đại UDP hoạt động tốt nhất với các dịch vụ mạng thường được tìm thấy trên Internet công cộng, đó là lý do DNS (dịch vụ UDP công khai phổ biến nhất) là dịch vụ đầu tiên được tấn công khuếch đại UDP sử dụng.

Tuy nhiên, DNS không phải là dịch vụ mạng công cộng chung duy nhất sử dụng UDP. Sau khi các cuộc tấn công khuếch đại DNS được thực hiện thành công, những kẻ tấn công DDoS nhanh chóng biết được chúng cũng có thể tận dụng NTP, SSDP, SNMP, TFTP và nhiều dịch vụ dựa trên UDP khác theo cùng một cách. Điều đó chỉ ra rằng, một khía cạnh khác của việc các cuộc tấn công khuếch đại UDP có thành công hay không phụ thuộc mức độ phổ biến của một dịch vụ UDP công khai cụ thể. Nói một cách đơn giản, càng nhiều máy chủ DNS công cộng bị tấn công có khả năng phản hồi lưu lượng truy cập, thì sẽ càng cung cấp nhiều cơ hội để thực hiện một cuộc tấn công khuếch đại UDP hơn.

Cung cấp một hệ số tỷ lệ không đối xứng - Thuộc tính cuối cùng trong phương trình khuếch đại UDP là hệ số tỷ lệ không đối xứng. Nói một cách đơn giản, điều này có nghĩa là có một hệ số tỷ lệ nào đó trong từng giao thức cụ thể cho phép khi giao thức tiếp nhận một yêu cầu ngắn nhưng sẽ trả lời kết quả dài hơn và đôi khi còn tăng lên hơn theo cấp số nhân. Ví dụ: yêu cầu khuếch đại DNS phổ biến nhất liên quan đến loại bản ghi tài nguyên “ANY.”. Tức là khi chỉ gửi một yêu cầu DNS nhỏ loại ANY đến tên miền của máy chủ DNS có thẩm quyền sẽ được trả về thông báo lớn chứa tất cả các bản ghi tại đó. Nếu máy chủ sử dụng DNSSEC, câu trả lời thậm chí còn lớn hơn với cả các phím, chữ ký và các nội dung khác. Vì vậy, kẻ tấn công có thể giả mạo một gói duy nhất chỉ với hàng chục byte, nhưng tạo ra một phản hồi cho nạn nhân là hàng nghìn byte. Việc giả mạo cho phép phản hồi và khía cạnh bất đối xứng của các câu trả lời của giao thức tạo nên quy mô thực sự cho các cuộc tấn công này.

Một khía cạnh khác của cuộc tấn công này là có rất nhiều dịch vụ mạng UDP có một số loại hệ số tỷ lệ trả lời. Một yếu tố quan trọng khác cho tấn công khuếch đại UDP có thể là chính là kích thước của hệ số tỷ lệ này. Mới đây, US-CERT đã phát hành một cảnh báo cho thấy hệ số tỷ lệ của các dịch vụ dựa trên UDP khác nhau dễ bị tấn công bởi các loại tấn công DDoS. Hãy xem xét một vài ví dụ trong cảnh báo đó như sau:

Giao thức dựa trên UDP

Hệ số tỷ lệ

DNS

28-54x

NTP

556x

SNMP

6.3x

CharGEN

358x

Memcached

10,000 – 51,000x

 

 

Nhìn vào các hệ số tỷ lệ, có thể thấy tại sao cuộc tấn công khuếch đại UDP Memcached lại có tốc độ băng thông lên đến 1,7 Tbps. Do chỉ cần gửi một yêu cầu giả mạo nhỏ đến một máy chủ công cộng và có thể nhận được câu trả lời với kích thước lớn gấp 50 nghìn, từ đó sẽ dễ dàng chiếm băng thông và tài nguyên của nạn nhân.

Tóm lại, các cuộc tấn công khuếch đại UDP thành công bởi vì UDP có khả năng giả mạo, khả năng giả mạo cho phép kẻ tấn công phản hồi yêu cầu của các máy chủ công cộng phổ biến để nạn nhân không biết, và một số dịch vụ dựa trên UDP còn cho phép các yêu cầu nhỏ tạo ra các phản hồi lớn theo cấp số nhân. Tuy mỗi dịch vụ UDP này có các đặc điểm yêu cầu hơi khác nhau, nhưng tất cả các cuộc tấn công khuếch đại UDP về cơ bản là kết hợp các vấn đề trên với nhau.

Biện pháp phòng thủ tấn công khuếch đại UDP

Việc phòng thủ tấn công UDP tương đối khó mô tả vì một số biện pháp bảo vệ đòi hỏi sự tham gia của các ngành rộng hơn. Theo các nạn nhân của tấn công DDoS dạng này, có rất ít người có thể làm gì đó để tránh các cuộc tấn công khuếch đại UDP phản hồi. Tuy nhiên vẫn có một số giải pháp khả thi được khuyến cáo để người dùng phòng thủ trước tấn công này. Trước tiên, nên áp dụng một số loại dịch vụ bảo vệ DDoS có thể xóa sạch lưu lượng truy cập ngược dòng.

Đối với các tổ chức sử dụng các dịch vụ UDP công khai, nên tìm hiểu về dịch vụ nào dễ bị tổn thương trước tấn công này và nên tham khảo cảnh báo của US-CERT. Bên cạnh đó, cần tăng cường bảo mật các máy chủ công cộng chống lại các cuộc tấn công này tùy thuộc vào các giao thức khác nhau. Một mẹo chung người dùng nên biết là tránh để lộ bất kỳ tính năng giao thức nào không cần thiết hoặc ít nhất là giới hạn chúng thành một danh sách truy cập cụ thể.

Cuối cùng, điều quan trọng nhất là tất cả người dùng cần lưu ý để ngăn chặn tấn công này là chặn giả mạo ở một lớp mạng. Các cuộc tấn công khuếch đại UDP dựa trên khả năng giả mạo lưu lượng truy cập từ những người khác. Nếu kẻ tấn công không thể giả mạo lưu lượng truy cập, họ không thể phản hồi các cuộc tấn công đến nạn nhân. Việc này hoàn toàn có thể thực hiện được bằng các thiết bị vành đai mạng để phát hiện giả mạo. Ngoài ra, người dùng cần biết không gian địa chỉ IP mà mình sở hữu. Nếu thiết bị cổng của người dùng thấy lưu lượng truy cập đến từ mạng của họ, nhưng là IP nào mà họ không sở hữu, thì nên chặn nó. Trong thực tế, IETF (Internet Engineering Task Force ) đã công bố tiêu chuẩn BCP 38 bao gồm các thực hành tốt nhất, đưa ra cách để giúp người dung có thể chặn tất cả các giả mạo trong không gian mạng của mình. Người dùng có thể tham khảo để nâng cao khả năng phòng thủ của mình.

                                                                                                                                                     Nguyễn Xuân Tường (Nanyang University)