CHƯƠNG I. TỔNG QUAN VỀ DDOS 1.1 Giới thiệu chung về DDoS. Tấn công từ chối dịch vụ phân tán (DDoS - Distributed Denial Of Service) là hoạt động làm chấm dứt hoặc gián đoạn các dịch vụ tại máy nạn nhân. Tấn công DDoS huy động số lượng lớn các máy bị lợi dụng để tấn công nạn nhân vào cùng một thời điểm.
Do DDoS có tính chất phân tán nên việc ngăn chặn là rất khó khăn. Việc ngăn chặn DDoS không thể từ một máy tính bị tấn công mà phải kết hợp giữa các router để tiến hành phân tích và chặn. Do có số lượng Agent lớn và bao phủ trên diện rộng nên việc phát hiện được các gói tin tấn công nhưng khó có khả năng giải quyết triệt để được DDoS. Ở đây Agent là những máy trực tiếp gửi thông điệp tấn công.
Trên Internet tấn công từ chối dịch vụ phân tán là một dạng tấn công từ nhiều máy tính tới một đích, nó gây ra từ chối các yêu cầu hợp lệ của các user bình thường. Bằng các tạo ra rất nhiều các gói tin đến đích cụ thể, nó có thể gây tình trạng tương tự như hệ thống bị shutdown. Khác với tấn công DoS (Denial of Service) là chỉ cần một máy để tấn công, DDoS sử dụng nhiều máy tính bị chiếm quyền điều khiển kết nối với nhau (mạng Botnet) để tấn công nên sức hủy hoại là rất lớn.2 Phân loại các kiểu tấn công DDoS. Để hiểu nghiên cứu về các cuộc tấn công DDoS, điều quan trọng là phải hiểu các cơ chế phân loại tấn công DDoS.
Nhìn chung, có rất nhiều biến thể của kỹ thuật tấn công DDoS nhưng nếu nhìn dưới góc độ chuyên môn thì có thể chia các biến thể này thành hai loại dựa trên mục đích tấn công: “Làm cạn kiệt băng thông và làm cạn kiệt tài nguyên hệ thống”. Tuy nhiên, trong thực tế, một cuộc tấn công có thể có cả hai tác động và có thể áp đặt những ảnh hưởng cao nhất có thể lên toàn bộ Internet. Loại này được đặt tên là tấn công cơ sở hạ tầng. Chúng ta sẽ đề cập đến loại tấn công này trong nghiên cứu của mình.
Trong bài luận cũng sẽ giới thiệu một loại tấn công khác được gọi là tấn công zero-day, nơi mà các tác động của cuộc tấn công không xác định. Dưới đây là sơ đồ mô tả sự phân loại các kiểu tấn công DDoS. Luan van 4 Hình 1.1: Phân loại các kiểu tấn công DDoS 1.1 Tấn công làm cạn kiệt băng thông Tấn công làm cạn kiệt băng thông (BandWith Depletion) được thiết kế nhằm làm tràn ngập mạng mục tiêu với những traffic không cần thiết, với mục địch làm giảm tối thiểu khả năng của các traffic hợp lệ đến được hệ thống cung cấp dịch vụ của mục tiêu. Có hai loại tấn công làm cạn kiệt băng thông: - Tấn công tràn băng thông (Flood attack) - Tấn công khuếch đại (Amplification attack) 1.1 Tấn công tràn băng thông (Flood attack): Trong phương pháp này, các Agent sẽ gửi một lượng lớn IP traffic làm hệ thống dịch vụ của mục tiêu bị chậm lại, hệ thống bị treo hay đạt đến trạng thái hoạt động bão hòa.
Làm cho những người dùng thực sự của hệ thống không sử dụng được dịch vụ. Ta có thể chia Flood Attack thành hai loại: - UDP Flood Attack: do tính chất connectionless của UDP, hệ thống nhận UDP message chỉ đơn giản nhận vào tất cả các packet mình cần phải xử lý. Một Luan van 5 lượng lớn các UDP packet được gửi đến hệ thống dịch vụ của mục tiêu sẽ đẩy toàn bộ hệ thống đến ngưỡng tới hạn. - Các UDP packet này có thể được gửi đến nhiều port tùy ý hay chỉ duy nhất một port.
Thông thường là sẽ gửi đến nhiều port làm cho hệ thống mục tiêu phải căng ra để xử lý phân hướng cho các packet này. Nếu port bị tấn công không sẵn sàng thì hệ thống mục tiêu sẽ gửi ra một ICMP packet loại “destination port unreachable”. Thông thường các Agent software sẽ dùng địa chỉ IP giả để che giấu hành tung, cho nên các packet trả về do không có port xử lý sẽ dẫn đến một địa chỉ IP khác. UDP Flood attack cũng có thể làm ảnh hưởng đến các kết nối xung quanh mục tiêu do sự hội tụ của packet diễn ra rất mạnh.
- ICMP Flood Attack: được thiết kế nhằm mục đích quản lý mạng cũng như định vị thiết bị mạng. Khi các Agent gửi một lượng lớn ICMP ECHO REQUEST đến hệ thống mục tiêu thì hệ thống này phải reply một lượng tương ứng Packet để trả lời, sẽ dẫn đến nghẽn đường truyền. Tương tự trường hợp trên, địa chỉ IP của các Agent có thể bị giả mạo.2 Tấn công khuếch đại (Amplification Attack): Amplification Attack nhắm đến việc sử dụng các chức năng hỗ trợ địa chỉ IP broadcast của các router nhằm khuyếch đại và hồi chuyển cuộc tấn công. Chức năng này cho phép bên gửi chỉ định một địa chỉ IP broadcast cho toàn subnet bên nhận thay vì nhiều địa chỉ.
Router sẽ có nhiệm vụ gửi đến tất cả địa chỉ IP trong subnet đó packet broadcast mà nó nhận được. Attacker có thể gửi broadcast packet trực tiếp hay thông qua một số Agent nhằm làm gia tăng cường độ của cuộc tấn công. Nếu attacker trực tiếp gửi packet, thì có thể lợi dụng các hệ thống bên trong broadcast network như một Agent. Luan van 6 Hình 1.2: Amplification Attack Có thể chia amplification attack thành hai loại, Smuft và Fraggle attack: - Smuft attack: trong kiểu tấn công này attacker Điều khiển các agent hay client tự gửi message đến một địa chỉ IP broadcast làm cho tất cả các máy trong subnet này gửi message đến hệ thống dịch vụ của mục tiêu làm gia tăng traffic không cần thiết và làm suy giảm băng thông mục tiêu.
Trong Smurf Attack, cần có ba thành phần: hacker (người ra lệnh tấn công), mạng khuếch đại (sẽ nghe lệnh của hacker) và nạn nhân. Hacker sẽ gửi các ICMP echo request packets đến địa chỉ broadcast của mạng khuếch đại. Điều đặc biệt là các ICMP echo request packet này có địa chỉ IP nguồn chính là địa chỉ IP của nạn nhân. Khi các packet đó đến được địa chỉ broadcast của mạng khuếch đại, lập tức tất cả các máy tính trong mạng khuếch đại sẽ nhận được các packet này.
Các máy này tưởng rằng máy tính nạn nhân đã gửi ICMP echo request packets đến (do hacker đã làm giả địa chỉ IP nguồn), lập tức chúng sẽ đồng loạt gửi trả lại hệ thống nạn nhân các ICMP reply echo request packet. Hệ thống máy nạn nhân sẽ không chịu nổi một khối lượng khổng lồ packet và nhanh chóng bị ngừng hoạt động, crash hoặc reboot. Như vậy có thể thấy rằng hacker chỉ cần gửi một lượng nhỏ các ICMP echo request packets đi, và hệ thống mạng khuếch đại sẽ khuếch đại lượng ICMP echo request packet này lên gấp bội. Luan van 7 - Fraggle Attack: tương tự như Smuft attack nhưng thay vì dùng ICMP ECHO REQUEST packet thì sẽ dùng UDP ECHO packet gửi đến mục tiêu.
Thật ra còn một biến thể khác của Fraggle attack sẽ gửi đến UDP ECHO packet đến chargen port (port 19/UNIX) của mục tiêu, với địa chỉ bên gửi là echo port (port 7/UNIX) của mục tiêu, tạo nên một vòng lặp vô hạn. Attacker phát động cuộc tấn công bằng một ECHO REQUEST với địa chỉ bên nhận là một địa chỉ broadcast, toàn bộ hệ thống thuộc địa chỉ này lập tức gửi REPLY đến port echo của nạn nhân, sau đó từ nạn nhân một ECHO REPLY lại gửi trở về địa chỉ broadcast, quá trình cứ thế tiếp diễn. Đây chính là nguyên nhân Flaggle Attack nguy hiểm hơn Smuft Attack rất nhiều.2 Tấn công làm cạn kiệt tài nguyên. Tấn công làm cạn kiệt tài nguyên (Resource Deleption Attack) là kiểu tấn công trong đó Attacker gửi những packet dùng các protocol sai chức năng thiết kế, hay gửi những packet với dụng ý làm tắt nghẽn tài nguyên mạng làm cho các tài nguyên này không phục vụ những người dùng thông thường khác được.1 Protocol Exploit Attack.
- TCP SYN Attack: Transfer Control Protocol hỗ trợ truyền nhận với độ tin cậy cao nên sử dụng phương thức bắt tay giữa bên gửi và bên nhận trước khi truyền dữ liệu. Bước đầu tiên, bên gửi gửi một SYN REQUEST packet (Synchronize). Bên nhận nếu nhận được SYN REQUEST sẽ trả lời bằng SYN/ACK packet. Bước cuối cùng, bên gửi sẽ truyền packet cuối cùng ACK và bắt đầu truyền dữ liệu.3: Ba bước kết nối TCP/IP Nếu bên server đã trả lời một yêu cầu SYN bằng một SYN/ACK nhưng không nhận được ACK packet cuối cùng sau một khoảng thời gian quy định thì nó Luan van 8 sẽ gửi lại SYN/ACK cho đến hết thời gian timeout.
Toàn bộ tài nguyên hệ thống “dự trữ” để xử lý phiên giao tiếp nếu nhận được ACK packet cuối cùng sẽ bị “phong tỏa” cho đến hết thời gian timeout.4: Trường hợp IP nguồn giả Nắm được điểm yếu này, attacker gửi một SYN packet đến nạn nhân với địa chỉ bên gửi là giả mạo, kết quả là nạn nhân gửi SYN/ACK đến một địa chỉ khác và sẽ không bao giờ nhận được ACK packet cuối cùng, cho đến hết thời gian timeout nạn nhân mới nhận ra được điều này và giải phóng các tài nguyên hệ thống. Tuy nhiên, nếu lượng SYN packet giả mạo đến với số lượng nhiều và dồn dập, hệ thống của nạn nhân có thể bị hết tài nguyên. - PUSH và ACK Attack: Trong TCP protocol, các packet được chứa trong buffer, khi buffer đầy thì các packet này sẽ được chuyển đến nơi cần thiết. Tuy nhiên, bên gửi có thể yêu cầu hệ thống unload buffer trước khi buffer đầy bằng cách gửi một packet với cờ PUSH và ACK mang giá trị là 1.
Những packet này làm cho hệ thống của nạn nhân unload tất cả dữ liệu trong TCP buffer ngay lập tức và gửi một ACK packet trở về khi thực hiện xong điều này, nếu quá trình được diễn ra liên tục với nhiều Agent, hệ thống sẽ không thể xử lý được lượng lớn packet gửi đến và sẽ bị treo.2 Malformed Packet Attack. Malformed Packet Attack là cách tấn công dùng các Agent để gửi các packet có cấu trúc không đúng chuẩn nhằm làm cho hệ thống của nạn nhân bị treo. Có hai loại Malformed Packet Attack: - IP address attack: dùng packet có địa chỉ gửi và nhận giống nhau làm cho hệ điều hành của nạn nhân không xử lý nổi và bị treo. Luan van 9 - IP packet options attack ngẫu nhiên hóa vùng OPTION trong IP packet và thiết lập tất cả các bit QoS lên 1, điều này làm cho hệ thống của nạn nhân phải tốn thời gian phân tích, nếu sử dụng số lượng lớn Agent có thể làm hệ thống nạn nhân hết khả năng xử lý.