Các cuộc tấn công Denial-of-Service (DoS) và Distributed Denial-of-Service (DDoS) là mối đe dọa lớn đối với mạng máy tính, chúng cố gắng làm cho máy tính hoặc tài nguyên mạng trở nên không khả dụng. Thông thường, các cuộc tấn công DoS/DDoS tận dụng các lỗ hổng trong việc triển khai của mô hình Transmission Control Protocol (TCP)/Internet Protocol (IP) hoặc lỗi trong hệ điều hành cụ thể (OS). Module này mình sẽ giới thiệu một số vấn đề:
- Mô tả khái niệm DoS/DDoS
- Mô tả botnet
- Các kỹ thuật tấn công DoS/DDoS khác nhau
- Giải thích các công cụ tấn công DoS/DDoS
- Minh họa các nghiên cứu về DoS/DDoS
- Áp dụng các phương pháp tốt nhất để giảm thiểu tấn công DoS/DDoS
Tấn công từ chối dịch vụ Denial-of-Service (DoS) là gì?
Tấn công DoS là một cuộc tấn công vào máy tính hoặc mạng để giảm, hạn chế hoặc ngăn chặn quyền truy cập vào tài nguyên hệ thống. Trong tấn công DoS, hacker gửi lưu lượng yêu cầu hoặc thông tin sai lệch đến hệ thống của nạn nhân để làm quá tải các tài nguyên và làm hỏng hệ thống, gây ra downtime hoặc ít nhất là làm giảm đáng kể hiệu suất hệ thống. Mục tiêu của tấn công DoS là ngăn chặn người dùng sử dụng hệ thống, không phải để truy cập trái phép vào hệ thống hoặc gây hỏng dữ liệu.
Dưới đây là một số ví dụ về các loại tấn công DoS:
- Làm tràn hệ thống bằng việc gửi lưu lượng truy cập nhiều hơn mức hệ thống có thể xử lý.
- Gửi lưu lượng sự kiện nhiều hơn hệ thống (ví dụ: Internet Relay Chat (IRC)) có thể xử lý để làm quá tải dịch vụ đó.
- Gửi gói tin bị hỏng để làm sập TCP/IP stack của hệ thống.
- Tương tác với dịch vụ một cách không đúng đắn để làm sập dịch vụ đó.
- Gây treo hệ thống bằng cách đẩy hệ thống vào vòng lặp vô hạn.
Tấn công DoS là một loại vi phạm bảo mật mà thông thường không mất cắp thông tin nhưng có thể gây thiệt hại đối với mục tiêu về thời gian và tài nguyên. Trong tình huống tệ nhất, DoS có thể gây ra việc phá hoại không cố ý cho các file và chương trình của hàng triệu người đang kết nối với hệ thống của nạn nhân trong thời điểm xảy ra cuộc tấn công.
Tấn công DDoS là gì?
Một cuộc tấn công DDoS là một cuộc tấn công quy mô lớn, được tổ chức đồng bộ nhằm vào tính khả dụng của các dịch vụ trên hệ thống của nạn nhân hoặc tài nguyên mạng và được thực hiện gián tiếp thông qua nhiều máy tính bị xâm phạm (botnet) trên Internet.
Theo định nghĩa của World Wide Web Security FAQ, “Một cuộc tấn công phân tán từ chối dịch vụ (DDoS) sử dụng nhiều máy tính để tiến hành một cuộc tấn công DoS được tổ chức đồng bộ nhằm vào một hoặc nhiều mục tiêu. Sử dụng công nghệ client/server, hacker có thể tăng đáng kể hiệu quả của việc từ chối dịch vụ bằng cách tận dụng tài nguyên của nhiều máy tính cộng tác với nhau.” Sự tràn đầy các gói tin làm cho hệ thống bị nghẽn, từ đó từ chối dịch vụ đối với những người dùng khác.
Mục tiêu chính tấn công DDoS là lấy quyền truy cập quản trị trên nhiều hệ thống càng nhiều càng tốt. Thông thường, hacker cố gắng tìm ra những hệ thống có khả năng bị lỗ hổng. Sau khi lấy được quyền truy cập, hacker chạy công cụ DDoS trên những máy này vào thời điểm được chọn để tiến hành cuộc tấn công.
Tấn công DDoS đã trở nên phổ biến và có thể gây nguy hiểm lớn vì chúng có thể nhanh chóng làm tắc nghẽn các server trên Internet khiến chúng trở nên vô dụng.
DDoS hoạt động như thế nào?
Trong tấn công DDoS, nhiều máy tính tấn công liên tục vào trình duyệt hoặc hệ thống mạng của mục tiêu bằng các request giả mạo từ bên ngoài, gây làm chậm, làm tê liệt hoặc vô hiệu hóa hệ thống, mạng, trình duyệt hoặc trang web của mục tiêu.
Hacker khởi đầu bằng cách gửi lệnh tới các máy con zombie, đó là các máy tính kết nối Internet bị hacker chiếm quyền thông qua các chương trình malware để thực hiện các hoạt động độc hại thông qua một máy chủ điều khiển và kiểm soát (C&C). Các máy con zombie này gửi yêu cầu kết nối tới một số lượng lớn hệ thống phản xạ với địa chỉ IP của nạn nhân, khiến cho các hệ thống phản xạ nghĩ rằng những yêu cầu này xuất phát từ máy của nạn nhân thay vì từ các máy con zombie. Do đó, các hệ thống phản xạ gửi thông tin được yêu cầu (phản hồi – response) về cho nạn nhân. Kết quả là máy của nạn nhân bị tràn đầy bởi các phản hồi không mong muốn từ nhiều máy tính cùng một lúc, làm giảm hiệu suất hoặc làm máy của nạn nhân tắt hoàn toàn.
Botnets
Thuật ngữ “bot” là viết tắt của từ “robot” và ám chỉ các ứng dụng phần mềm chạy các nhiệm vụ tự động trên Internet. Hacker sử dụng bot để lây nhiễm một số lượng lớn máy tính tạo thành một mạng máy tính gọi là “botnet,” cho phép hacker tiến hành cuộc tấn công DDoS, tạo ra thư rác, lây lan virus và thực hiện những kiểu tấn công khác.
Bot được sử dụng cho các hoạt động thu thập dữ liệu hoặc khai thác dữ liệu vô hại, như “web spidering,” cũng như để điều phối các cuộc tấn công DoS. Mục đích chính của một bot là thu thập dữ liệu. Có các loại bot khác nhau, như bot Internet, bot IRC và bot chatter. Ví dụ về bot IRC là Cardinal, Sopel, Eggdrop và EnergyMech.
Một botnet (một từ viết tắt của “roBOT NETwork”) là một nhóm máy tính “nhiễm” bot; tuy nhiên, botnet có thể được sử dụng cho cả mục đích tích cực và tiêu cực. Một botnet bao gồm một mạng lưới lớn các hệ thống bị xâm phạm. Một botnet tương đối nhỏ gồm 1.000 bot có băng thông tổng hợp lớn hơn băng thông của hầu hết các hệ thống doanh nghiệp. Sự ra đời của botnet đã dẫn đến một sự gia tăng đáng kể về tội phạm mạng.
Hình sau minh họa cách hacker tấn công DoS bằng botnet vào một mục tiêu. Hacker thiết lập một trung tâm điều khiển và kiểm soát (C&C) cho botnet, sau đó chúng lây nhiễm một máy tính (bot) và xâm nhập vào nó. Sau đó chúng dùng bot này để lây nhiễm và xâm nhập vào các hệ thống yếu đang có sẵn trong mạng, tạo thành một botnet. Các bot (còn được gọi là zombie) kết nối với C&C và chờ lệnh. Hacker gửi các lệnh các bot thông qua trung tâm C&C. Cuối cùng, theo hướng dẫn của hacker, các bot sẽ tấn công DoS vào mục tiêu.
Dò quét tìm các máy dính lỗ hổng
Dưới đây là các phương pháp scan mà hacker sử dụng để tìm các máy tính yếu trong một mạng:
- Quét ngẫu nhiên (Random Scanning): Quét các địa chỉ IP ngẫu nhiên trong phạm vi địa chỉ IP của mạng mục tiêu và kiểm tra tính bảo mật của chúng. Khi tìm thấy một máy tính bảo mật yếu, hacker xâm nhập và cố gắng lây nhiễm bằng cách cài mã độc. Kỹ thuật này tạo ra lưu lượng đáng kể vì nhiều máy bị nhiễm scan và kiểm tra các địa chỉ IP giống nhau. Mã độc lây lan nhanh chóng ở giai đoạn ban đầu và tốc độ lây lan giảm khi số địa chỉ IP mới có sẵn giảm dần theo thời gian.
- Quét theo danh sách (Hit-list Scanning): Thông qua việc quét, hacker trước tiên thu thập một danh sách các máy tính bảo mật yếu và sau đó tạo ra một đội quân zombie. Khi tìm thấy một máy yếu, hacker cài đặt mã độc lên máy tính đó và chia đôi danh sách. Hacker tiếp tục quét một nửa, trong khi nửa còn lại được quét bởi máy tính vừa mới bị xâm phạm. Quá trình này tiếp tục lặp đi lặp lại, làm tăng số lượng máy tính bị xâm phạm theo cấp số nhân. Kỹ thuật này đảm bảo cài đặt mã độc lên tất cả các máy tính có khả năng dễ tổn thương trong danh sách hit-list trong một thời gian ngắn.
- Quét theo mô hình (Topological Scanning): Kỹ thuật này sử dụng thông tin thu được từ một máy bị nhiễm để tìm các máy tính yếu mới. Kỹ thuật này cho kết quả chính xác và hiệu suất của nó tương tự như kỹ thuật quét theo danh sách (hit-list scanning).
- Quét mạng con (Local Subnet Scanning): Một máy bị nhiễm tìm kiếm các máy tính yếu mới trong mạng cục bộ của nó bằng cách sử dụng thông tin ẩn trong các địa chỉ cục bộ. Hacker sử dụng kỹ thuật này kết hợp với các cơ chế quét khác.
- Quét hoán vị (Permutation Scanning): Trong kỹ thuật này, hacker chia sẻ một danh sách hoán vị giả ngẫu nhiên chung của các địa chỉ IP của tất cả các máy tính. Danh sách được tạo ra bằng cách sử dụng một khối mã hóa 32 bit và một khóa được chọn trước. Nếu một máy bị nhiễm trong quá trình quét theo danh sách hoặc quét mạng con, danh sách sẽ được quét từ ngay sau điểm của máy chủ bị nhiễm để xác định các mục tiêu mới. Nếu một máy chủ bị nhiễm trong quá trình quét hoán vị, quá trình quét sẽ khởi động lại từ một điểm ngẫu nhiên. Nếu gặp một máy tính đã bị nhiễm, quá trình quét khởi động lại từ một điểm khởi đầu ngẫu nhiên mới trong danh sách hoán vị. Quá trình quét dừng lại khi máy chủ bị nhiễm liên tiếp gặp một số máy tính đã bị nhiễm đã định trước và không thể tìm thấy các mục tiêu mới.
Quét hoán vị có các lợi ích sau đây:
- Tránh việc tái nhiễm mục tiêu.
- Các mục tiêu mới được quét theo ngẫu nhiên, đảm bảo tốc độ quét cao.
Các kỹ thuật tấn công DoS/DDoS
Tấn công theo quy mô
Kiểu tấn công này làm kiệt quệ băng thông, không chỉ trong mạng/dịch vụ đích mà còn giữa mạng/dịch vụ đích và phần còn lại của Internet, gây tắc nghẽn lưu lượng mạng. Mức độ tấn công được đo bằng đơn vị bit/giây (bps).
Các cuộc tấn công DDoS theo quy mô thường nhắm vào các giao thức như Network Time Protocol (NTP), Domain Name System (DNS) và Simple Service Discovery Protocol (SSDP), các giao thức này không lưu trạng thái và không có tính năng tránh tắc nghẽn tích hợp. Việc tạo ra một lượng lớn gói tin có thể làm tiêu thụ toàn bộ băng thông trên mạng. Một máy đơn lẻ không thể tạo đủ yêu cầu để làm quá tải thiết bị mạng. Do đó hacker sử dụng nhiều máy tính để làm quá tải máy nạn nhân, tạo ra một sự thay đổi thống kê đáng kể trong lưu lượng mạng làm quá tải các thiết bị mạng như switch và router. Hacker sử dụng sức mạnh xử lý của một số lượng lớn máy tính phân tán về mặt địa lý để tạo ra lưu lượng khổng lồ được chuyển hướng vào nạn nhân, đó chính là lý do tại sao cuộc tấn công như vậy được gọi là cuộc tấn công DDoS.
Có hai loại tấn công làm kiệt quệ băng thông:
- Tấn công flood: Zombie gửi lượng lớn gói tin tới hệ thống của nạn nhân để làm kiệt quệ băng thông của hệ thống này.
- Tấn công amplification: Zombie gửi các thông điệp tới địa chỉ IP broadcast.
Dưới đây là một số ví dụ về các kỹ thuật tấn công theo quy mô:
- User Datagram Protocol (UDP) flood attack
- Internet Control Message Protocol (ICMP) flood attack
- Ping of Death (PoD) attack
- Smurf attack
- Pulse wave attack
- Zero-day attack
- Malformed IP packet flood attack
- Spoofed IP packet flood attack
Tấn công ở tầng ứng dụng
Tầng ứng dụng hoặc tài nguyên ứng dụng bị tiêu thụ bằng cách mở kết nối và giữ chúng mở cho đến khi không thể tạo kết nối mới được. Những cuộc tấn công này phá hủy một khía cạnh cụ thể của một ứng dụng hoặc dịch vụ và có thể hiệu quả chỉ với một hoặc một vài máy tấn công tạo ra mức lưu lượng thấp. Hơn nữa, những cuộc tấn công này rất khó phát hiện và khó giảm thiểu. Mức độ tấn công được đo bằng số yêu cầu mỗi giây (rps).