Friday, September 29, 2017

DDoS – Một số kỹ thuật tấn công và phương pháp phòng chống - Phần 1


DDoS – MỘT SỐ KỸ THUẬT TẤN CÔNG VÀ PHƯƠNG PHÁP PHÒNG CHỐNG


Tóm tắt: Các cuộc tấn công từ chối dịch vụ (DoS acttacks) hoặc các cuộc tấn công từ chối dịch vụ phân tán (các cuộc tấn công DDoS) là một nỗ lực nhằm làm cho người dùng không sử dụng các tài nguyên của máy tính. Mặc dù các phương tiện để tiến hành, động cơ, mục tiêu của các cuộc tấn công từ chối dịch vụ có thể khác nhau, nhưng nói chung nó bao gồm sự phối hợp, nỗ lực ác ý của một hoặc nhiều người vào một trang, hoặc mạng làm gián đoạn hoặc làm chậm đáng kể việc truy cập của người dùng, bởi sự quá tải các tài nguyên hệ thống. Trong bài này, chúng tôi sẽ trình bày tình hình DDoS trong giai đoạn hiện tại, phân loại các kỹ thuật tấn công, một số kỹ thuật tấn công được sử dụng ngày nay và hậu quả của chúng. Chúng tôi cũng cung cấp một số phương pháp phòng chống DDoS và kết quả đạt được trong quá trình cài đặt trên Windows Server và CentOS. Nó xem xét và đưa ra các khuyến nghị về bảo mật, an ninh thông tin và ngăn chặn sự xâm nhập bất hợp pháp..

Giới thiệu
Tấn công từ chối dịch vụ (Denial of Service - DoS) là dạng tấn công nhằm ngăn chặn người dùng hợp pháp truy nhập các tài nguyên mạng. Tấn công DoS đã xuất hiện từ khá sớm, vào đầu những năm 80 của thế kỷ trước [1]. Tấn công từ chối dịch vụ phân tán (Distributed Denial of Service - DDoS) là một dạng phát triển ở mức độ cao của tấn công DoS được phát hiện lần đầu tiên vào năm 1999 [2]. Khác biệt cơ bản của tấn công DoS và DDoS là phạm vi tấn công. Trong khi lưu lượng tấn công DoS thường phát sinh từ một hoặc một số ít host nguồn, lưu lượng tấn công DDoS thường phát sinh từ rất nhiều host nằm rải rác trên mạng Internet. Hiện nay, có hai phương pháp tấn công DDoS chủ yếu [1]. Trong phương pháp thứ nhất, kẻ tấn công gửi các gói tin được tạo theo dạng đặc biệt gây lỗi trong giao thức truyền hoặc lỗi trong ứng dụng chạy trên máy nạn nhân. Một dạng tấn công DDoS điển hình theo phương pháp này là tấn công khai thác lỗ hổng an ninh của các giao thức hoặc dịch vụ trên máy nạn nhân. Phương pháp tấn công DDoS thứ hai phổ biến hơn phương pháp thứ nhất, gồm hai dạng [1]: (i) dạng tấn công DDoS gây ngắt quãng kết nối của người dùng đến máy chủ dịch vụ bằng cách làm ngập lụt đường truyền mạng, cạn kiệt băng thông hoặc tài nguyên mạng, và (ii) dạng tấn công DDoS gây ngắt quãng dịch vụ cung cấp cho người dùng bằng cách làm cạn kiệt các tài nguyên của máy chủ dịch vụ, như thời gian xử lý của CPU, bộ nhớ, băng thông đĩa, cơ sở dữ liệu. Dạng tấn công này bảo gồm các loại tấn công gây ngập lụt ở mức ứng dụng.
Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam (VNCERT) cho biết đã ghi nhận khoảng 7.700 cuộc tấn công vào các website trong nước ba tháng qua. VNCERT thống kê được 2.848 website bị tấn công thay đổi giao diện (deface), 3.783 trang web bị cài mã độc (malware) và 1.050 trang bị cài bẫy lừa đảo dạng phishing. Các chuyên gia bảo mật cho biết đã xuất hiện những cuộc tấn công từ chối dịch vụ (DDoS) kiểu mới, chiếm băng thông lên tới 400 Gb tại Việt Nam và 1.000 Gb tại Mỹ và dự báo tình hình bảo mật năm 2017 sẽ còn nhiều diễn biến khó lường. Năm 2016 Trung tâm này đã ghi nhận tổng số 134.375 sự cố tấn công mạng của cả 3 loại hình Phishing (lừa đảo), Malware (mã độc) và Deface (thay đổi giao diện). So với năm 2015, số lượng vụ tấn công mạng năm 2016 nhiều gấp hơn 4,2 lần (năm 2015 là 31.585), trong đó, loại hình tấn công Phishing là 10.057 sự cố (gấp hơn 1,7 lần so với năm 2015), Malware là 46.664 sự cố (gấp gần 2,8 lần năm 2015) và Deface là 77.654 sự cố (gấp hơn 8,7 lần năm 2015).

Tổng quan DDoS
 Các giai đoạn tấn công
Giai đoạn chuẩn bị: Chuẩn bị công cụ quan trọng của cuộc tấn công, công cụ này thông thường hoạt động theo mô hình client-server. Hacker có thể viết phần mềm này hay down load một cách dễ dàng, theo thống kê tạm thời có khoảng hơn 10 công cụ DDoS được cung cấp miễn phí trên. Kế tiếp, dùng các kỹ thuật hack khác để nắm trọn quyền một số host trên mạng. tiến hành cài đặt các software cần thiết trên các host này, việc cấu hình và thử nghiệm toàn bộ attack-netword (bao gồm mạng lưới các máy đã bị lợi dụng cùng với các software đã được thiết lập trên đó, máy của hacker hoặc một số máy khác đã được thiết lập như điểm phát động tấn công) cũng sẽ được thực hiện trong giai đoạn này.
Giai đoạn xác định mục tiêu và thời điểm: Sau khi xác định mục tiêu lấn cuối, hacker sẽ có hoạt động điều chỉnh attack-netword chuyển hướng tấn công về phía mục tiêu. Yếu tố thời điểm sẽ quyết định mức độ thiệt hại và tốc độ đáp ứng của mục tiêu đối với cuộc tấn công.
Phát động tấn công và xóa dấu vết: Đúng thời điểm đã định, hacker phát động tấn công từ máy của mình, lệnh tấn công này có thể đi qua nhiều cấp mới đến máy (hosts) thực sự tấn công. Toàn bộ attack-network (có thể lên đến hàng ngàn máy), sẽ vắt cạn năng lực của máy chủ mục tiêu liên tục, ngăn chặn không cho nó hoạt động như thiết kế. Sau một khoảng thời gian tấn công thích hợp, hacker tiến hành xóa mọi dấu vết có thể truy ngược đến mình, việc này đòi hỏi trình độ khá cao và không tuyệt đối cần thiết.

Kiến trúc
Nhìn chung DDoS attack-network có hai mô hình chính là mô hình Agent – Handler và mô hình IRC – Based.
Hình 2.1: Phân loại theo mô hình tấn công DDoS

Mô hình Agent – Handler
Theo mô hình này, attack-network gồm 3 thành phần: Agent, Client và Handler trong đó: (i) Client : là software cơ sở để hacker điều khiển mọi hoạt động của attack-network. (ii) Handler : là một thành phần software trung gian giữa Agent và Client. (iii)  Agent : là thành phần software thực hiện sự tấn công mục tiêu, nhận điều khiển từ Client thông qua các Handler.
Attacker sẽ từ Client giao tiếp với Handler để xác định số lượng Agent đang online, điều chỉnh thời điểm tấn công và cập nhật các Agent. Tùy theo cách attacker cấu hình attack-network, các Agent sẽ chịu sự quản lý của một hay nhiều Handler.
Thông thường Attacker sẽ đặt Handler software trên một Router hay một server có lượng traffic lưu thông nhiều. Việc này nhằm làm cho các giao tiếp giữa Client, handler và Agent khó bị phát hiện. Các giao tiếp này thông thường xảy ra trên các protocol TCP, UDP hay ICMP. Chủ nhân thực sự của các Agent thông thường không hề hay biết họ bị lợi dụng vào cuộc tấn công kiểu DDoS, do họ không đủ kiến thức hoặc các chương trình Backdoor Agent chỉ sử dụng rất ít tài nguyên hệ thống làm cho hầu như không thể thấy ảnh hưởng gì đến hiệu năng của hệ thống.
Hình 2.2: Kiến trúc kiểu Agent – Handler

Mô hình IRC – Based
Internet Relay Chat (IRC) là một hệ thống online chat multiuser, IRC cho phép User tạo một kết nối đến multipoint đến nhiều user khác và chat thời gian thực. Kiến trúc củ IRC network bao gồm nhiều IRC server trên khắp internet, giao tiếp với nhau trên nhiều kênh (channel). IRC network cho phép user tạo ba loại channel: (i) Public channel: Cho phép user của channel đó thấy IRC name và nhận được message của mọi user khác trên cùng channel. (ii)       Private channel: được thiết kế để giao tiếp với các đối tượng cho phép. Không cho phép các user không cùng channel thấy IRC name và message trên channel. Tuy nhiên, nếu user ngoài channel dùng một số lệnh channel locator thì có thể biết được sự tồn tại của private channel đó. (iii) Secrect channel : tương tự private channel nhưng không thể xác định bằng channel locator.
Hình 1.3: Kiến trúc kiểu IRC-Based

IRC – Based net work cũng tương tự như Agent – Handler network nhưng mô hình này sử dụng các kênh giao tiếp IRC làm phương tiện giao tiếp giữa Client và Agent (không sử dụng Handler). Sử dụng mô hình này, attacker còn có thêm một số lợi thế khác như: (i) Các giao tiếp dưới dạng chat message làm cho việc phát hiện chúng là vô cùng khó khăn. (ii) IRC traffic có thể di chuyển trên mạng với số lượng lớn mà không bị nghi ngờ. (iii) Không cần phải duy trì danh sách các Agent, hacker chỉ cần logon vào IRC server là đã có thể nhận được report về trạng thái các Agent do các channel gửi về. (iv) sau cùng IRC cũng là một môi trường file sharing tạo điều kiện phát tán các Agent code lên nhiều máy khác.

Tấn công DDoS
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ụch đí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. Dưới đây là sơ đồ mô tả sự phân loại các kiểu tấn công DDoS.
Hình 3.1 Phân loại tấn công DDoS

Tấn công làm cạn kiệt băng thông
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 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 message 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_REPLY đế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ị thay thế bởi một địa chỉ giả mạo.
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 message 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 message, thì có thể lợi dụng các hệ thống bên trong broadcast network như một Agent.

Tấn công làm cạn kiệt tài nguyên
TCP SYS 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 SYNREQUEST packet (Synchronize). Bên nhận nếu nhận được SYN REQUEST sẽ trả lời bằng SYN/ACK REPLY 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.
Hình 3.2: Giao thức bắt tay 3 bước
Nếu bên server đã trả lời một yêu cầu SYN bằng một SYN/ACK REPLY 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ó sẽ resend lại SYN/ACK REPLY 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.


Hình 3.3: Gửi SYN giả mạo
Nắm được điểm yếu này, attacker gởi một SYN packet đến nạn nhân (hình 3.3) với địa chỉ bên gửi là giả mạo, kết quả là nạn nhân gởi SYN/ACK REPLY đế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.


Hình 3.4: Phân biệt sự khác nhau.
PUSH = ACK Attack: Trong TCP giao thức, các packet được chứa trong bộ nhớ đệm, khi bộ nhớ đệm đầ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 bộ nhớ đệm trước khi bộ nhớ đệm đầy bằng cách gởi một packet với 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 bộ nhớ đệm TCP 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. 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.

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ý.

No comments:

Post a Comment