Một số thuật toán phát hiện tấn công DDoS

Một phần của tài liệu Nghiên cứu thuật toán phát hiện và giảm thiểu một số hình thức tấn công dos (Trang 38)

Để phòng chống tấn công DDoS có hiệu quả ngoài những yêu cầu về hạ tầng kỹ thuật và trang thiết bị và tính sẵn sàng của hệ thống an toàn an ninh thông tin thì nhiệm vụ phát hiện và cảnh báo sớm dấu hiệu bất thường hay bị tấn công là rất quan trọng. Có phát hiện sớm được mới ngăn ngừa tốt và giảm thiểu thiệt hại do bị tấn công gây ra. Hiện nay, các sản phẩm thương mại IDS/IPS có nhiều tính năng mạnh, tuy vậy ứng dụng của nó cũng cần xây dựng tập luật để “học” theo thời gian và thuật toán phát hiện là nên tảng cơ sở để xây dựng nên các sản phẩm đó.

Ghi nhận đã xảy ra trong thực tế, khi các cuộc tấn công DDos xảy ra, lập tức phân tích sẽ thấy được lưu lượng mạng rất khác thường. Do đó hầu hết các thuật toán phân tích phát hiện tấn công DDos hiện nay đều dựa trên tính khác thường của lưu lượng mạng. Một số các công nghệ thống kê được áp dụng để tiến hành phân tích, thống kê những lưu lượng tải làm việc để phát hiện. Từ những kỹ thuật phân tích này, sẽ có những thuật toán phát hiện để đưa ra các tham số hoặc công nghệ thống kê, các mức độ nguy hiểm của cuộc tấn công.

- Thông số kiểm tra: Thông số kiểm tra được dùng để phân loại các thuật

toán như số lượng lớn lưu lượng, số địa chỉ IP mới hoặc tỷ lệ các gói tin đến và đi trong mạng.

- Công nghệ thống kê: Sử dụng các thuật toán thống kê để phân tích mạng.

Ví dụ như ngưỡng giới han phù hợp, phát hiện điểm thay đổi

- Mức độ phân tích: Khi phân tích các chi tiết các thông số, các mức độ nguy

hiểm sẽ được gán.

Sau đây, tác giả sẽ giới thiệu cụ thể về một số thuật toán phát hiện DDoS thường dùng hiện nay.

32

2.1.1 Thuật toán ngƣỡng giới hạn khả năng đáp ứng([3]) (Adaptive Threshold

Algorithm)

Đây là thuật toán khá đơn giản đo lường lưu lượng mạng của các gói tin SYN và so sánh với ngưỡng đã quy định trước đố. Ngưỡng này được thiết lập thích nghi trong một số khoảng thời gian nhất định và được dựa trên số lượng trung bình ước tính của các gói tin SYN. Nếu lưu lượng đo được vượt quá một cụ thể ngưỡng nó sẽ được định nghĩa là bất thường và báo động sẽ được kích hoạt

Chúng ta giả sử rằng số lượng các gói tin SYN trong khoảng thời gian n-th là xt, và đo tỷ lệ trung bình trước khi t là μt-1. Trong trường hợp này, tình trạng báo động là như sau:

Nếu xn>=( α+1)μn-1, thì tín hiệu cảnh bảo (ALARM) tại thời điểm n, có tham số α> 0 chỉ ra tỷ lệ phần trăm trên giá trị trung bình được xem là một ngưỡng. Các μn trung bình có thể được tính toán trên một số cửa sổ thời gian qua hoặc sử dụng một cấp số nhân trọng số di chuyển trung bình (exponentially weighted moving average - EWMA) của các phép đo trước.

μn = βμn-1 + (1-β) xn

Trong đó: β là yếu tố EWMA Khi một gói tin đến, thuật toán sẽ kiểm tra nếu gói tin đó là gói tin của giao thức TCP, nếu đó là gói tin TCP nó sẽ kiểm tra gói tin TCP SYN hoặc loại gói tin TCP khác. Tính toán μ và tỷ lệ α, nó kiếm tra điều kiện đối với xn có lớn hơn (α + 1) μt-1 hay không, nếu lớn hơn nó sẽ đưa ra cảnh báo.

Thực tế nếu áp dụng trực tiếp và cứng nhắc thuật toán trên sẽ phát sinh vấn đề là có thể đưa ra các cảnh báo sai khi có lưu lượng truy cập cao điểm, chẳng hạn có nội dung “hot” đột xuất. Một cách thay đổi đơn giản có thể cải thiện hiệu quả của nó là để báo hiệu một báo động sau khi một số lượng tối thiểu của các hành vi vi phạm liên tiếp của ngưỡng. Trong trường hợp này, tình trạng báo động được cho như sau:

33 Nếu i 1 1 {x ( 1) } k n i i n k         

thì sẽ có tín hiệu cảnh báo ALARM tại thời điểm n

Với k> 1 là một tham số cho biết số lượng của các khoảng liên tiếp ngưỡng bị vi phạm đối với một báo động. Các thông số điều chỉnh của các thuật toán ở trên là những hệ số biên độ α để tính ngưỡng báo động, số lượng vi phạm ngưỡng tiếp k trước khi tín hiệu báo động, theo cấp số nhân trọng số trung bình động hệ số β và độ dài của khoảng thời gian mà đo lưu lượng (số lượng gói tin SYN) được lấy.

Hình 2.1 Biểu đồ trực quan của thuật toán ngưỡng giới hạn đáp ứng([9])

2.1.2 Thuật toán tổng tích lũy([7]) (Cumulative sum – CUSUM)

Thuật toán tổng tích lũy thường được sử dụng trong kiểm soát chất lượng. Chúng rất thích hợp cho việc kiểm tra một hệ thống đo lường trong hoạt động cho bất kỳ vi phạm nào của một số mục đích hoặc giá trị đặc biệt và đã được sử dụng rộng rãi để phát hiện những thay đổi có nghĩa là nhỏ và trung bình.

Đối với thuật toán này, tiến hành phân tích thống kê các lưu lượng đến giữa hai khoảng thời gian là n (n=1, 2, 3…), đây là khoảng để kiểm tra việc phát hiện. Với kỹ thuật phát hiện tấn công này, một bảng băm sẽ được sử dụng để ghi lại các địa chỉ IP xuất hiện giữa hai khoảng thời gian (time slot). Trong bảng băm nay sẽ gồm 2 trường: IP address và timestamp. So sánh các trường này với các trường trong IP Address Database (IAD) để có thể tính toán có bao nhiêu địa chỉ IP mới đã xuất hiện trong các khoảng thời gian. Phân tích các địa chỉ IP mới này sẽ cho biết khi nào cuộc tấn công DDos xảy ra.

34

Giả sử lựa chọn các địa chỉ IP trong mỗi khoảng thời gian n (n=1,2,3,4…). Sau đó gán 1=2=….=n, có nghĩa là các khoảng thời gian có chiều dài bằng nhau.

Gọi Tn là tập các địa chỉ IP vừa thiết lập và Dn là các địa chỉ IP trong IAD tại thời điểm n. |Tn-TnDn| sẽ là tập các địa chỉ IP mới trong khoảng thời gian n.

Ta có Xn=|Tn-TDn|/Tn: tỷ lệ phần trăm địa chỉ IP mới trên tổng số các địa chỉ IP trong khoảng thời gian n.

Đặt Z={Zn,n=1,2,3…} sao cho Zn=Xn- . Với a= - 

a là giá trị trung bình của {Zn} trong quá trình lưu lượng mạng bình thường  là giá trị trung bình của {Xn} trong quá trình lưu lượng bình thường Do đó, khi lưu lượng mạng bình thường tất cả các giá trị của Zn đều âm Khi có một cuộc tấn công xảy ra, giá trị của Zn sẽ đột nhiên tăng và có giá trị dương. Lúc này h+a>0, h chính là giá trị trung bình tăng nhỏ nhất trong suốt cuộc tấn công. (adsbygoogle = window.adsbygoogle || []).push({});

Thuật toán CUSUM sẽ tiến hành tổng hợp Zn và được thiết lập bởi công thức sau: yn=(yn-1 + Zn)+ và y0=0

Với x+ = x nếu x > 0 và x+ = 0 nếu x <= 0

Trong đó n >= k. Trường hợp không bị tấn công giá trị của yn-1+Zn âm. Hàm quyết định có cuộc tấn công hay không được định nghĩa như sau:

dN(yn) = 0 nếu yn<= N và dN(yn) = 1 nếu yn > N

Ở đây N là ngưỡng giới hạn cho sự phát hiện tấn công. dN(yn) là hàm quyết định phát hiện trong thời gian n.

Ta có công thức: N =( N - m)+/N (1) N ->  = | | 1 a h (2)

Ở đây  N là thời gian phát hiện, N là điểm thay đổi. Trong đó m là thời điểm bắt đầu cuộc tấn công. Để thuật toán CUSUM tối ưu nhất, chọn h=2|a|. Theo nghiên cứu thuật toán CUSUM có thể chọn |a|=0.05

Trong công thức (1) chọn vị trí nhỏ nhất khi cuộc tấn công bắt đầu. Do vậy  N=m+1.

35

2.1.3 Thuật toán theo dõi IP nguồn([7]) (Source IP Address Monitoring-SIM)

Thuật toán Source IP Address Monitoring (SIM) dựa trên việc theo dõi và đánh giá các địa chỉ IP mới. Thuật toán được chia làm 2 phần. Đó là off-line training và detection and learning. Trong phần off-line training, thuật toán sẽ tiến hành theo dõi, đánh giá phân tích các địa chỉ IP trong khoảng thời gian và đưa các địa chỉ IP vào trong IP address database (IAD). Những địa chỉ trong IAD được gọi là các địa chỉ thường xuyên truy cập. IAD xóa những IP hết hạn để giảm thiểu bộ nhớ cho hệ thống và cập nhật những đia chỉ IP mới. IAD được xây dựng và cập nhật off-line để chắc chắn rằng trong IAD không bao gồm bất cứ địa chỉ tấn công nào. Còn trong phần detection and learning, SIM tiến hành thống kê những lưu lượng đến trong các khoảng thời gian. So khớp các địa chỉ IP đến trong IAD để tìm ra những IP mới. Phân tích những IP mới này, có một hàm để đánh giá các IP mới (sử dụng thuật toán CUSUM). Khi sự thay đổi vượt qua ngưỡng giới hạn chứng tỏ đã có một cuộc tấn công xảy ra.

Hình 2.2 Sơ đồ khối của thuật toán SIM

Hình trên cung cấp một cái nhìn tổng quan của thuật toán SIM. Sơ đồ SIM bao gồm ba phần: bộ phát hiện, bộ quyết định, và bộ lọc. Các công cụ phát hiện

36

phân tích các mô hình lưu lượng đến để phát hiện những bất thường. Các động cơ quyết định tóm tắt các kết quả từ các công cụ phát hiện và quyết định có hay không các vụ tấn công xảy ra. Bộ lọc dùng để lọc lưu lượng tấn công theo mô hình lưu lương tấn công được xác định. Lưu ý rằng có hai bộ phát hiện. Các công cụ phát hiện lần đầu tiên được sử dụng để phát hiện các cuộc tấn công phân tán không phải từ một nguồn duy nhất, trong khi các công cụ phát hiện thứ hai được sử dụng để phát hiện tấn công từ chối dịch vụ cao của các cuộc tấn công.

Có hai bước trong bộ phát hiện. Đầu tiên, các bộ phát hiện sắp xếp các IP đến các luồng theo địa chỉ IP nguồn, và xác định xem liệu có một luồng IP với một số lượng lớn bất thường của gói tin.. Nếu có, chúng ta kích hoạt các bộ lọc để chặn luồng IP bất thường này. Bước này rất hiệu quả cho việc bảo vệ chống lại một số cuộc tấn công DoS ngây thơ đưa ra từ một số duy nhất hay nhỏ của nguồn. Bước thứ hai là công nghệ cốt lõi của chương trình SIM của chúng tôi, được thể hiện ở phần bóng của hình trên. Bước này được thiết kế để bảo vệ chống lại các cuộc tấn công DDoS tinh vi và được mô tả chi tiết trong các phần sau. Như chúng ta có thể thấy trong hình trên, các bộ phát hiện theo dõi lưu lượng truy cập thông qua một thụ động (chỉ đọc) giao diện được cấu hình sẵn với một địa chỉ IP không thể định tuyến. Đặc điểm kỹ thuật này có thể làm cho các công cụ phát hiện miễn dịch để tấn công vì nó là vô hình đối với những kẻ tấn công. Khi có cuộc tấn công được phát hiện trong các bộ phát hiện, một tín hiệu điều khiển được gửi đến router để ngăn chặn các công cụ lọc. Để phát hiện một cuộc tấn công DDoS, chúng ta cần để có thể phát hiện những thay đổi trong tính năng phát hiện của hệ thống theo thời gian. Tuy nhiên, tính năng phát hiện của thuật toán này là một biến ngẫu nhiên do tính chất ngẫu nhiên của lưu lượng truy cập Internet.

2.2 Phân tích phát hiện tấn công DDoS 2.2.1 Hệ thống phát hiện DDos hiện nay

Như chúng ta đã thấy, khả năng phát hiện một cuộc tấn công ngay lập tức sẽ ảnh hưởng rất lớn đến quá trình ngăn chặn và làm giảm đến mức thấp nhất tác hại mà một cuộc tấn công DDos gây ra.

37

Hiện nay các hệ thống phát hiện đang được phát triển và khá công phu. Hầu hết đã phát hiện được các loại tấn công Dos và DDos nhưng khó có thể đạt được độ chính xác cao. Những hệ thống phát hiện DDos này thường sử dụng rất nhiều phương thức để dò tìm và phát hiện. Thông thường các công cụ này so sánh lưu lượng hiện tại với lưu lượng có thể chấp nhận được. Công nghệ này vẫn còn có một vài thiếu sót. Trước tiên, ngưỡng này thường đặt tĩnh và yêu cầu người sử dụng phải cấu hình để phù hợp với mọi môi trường, tuy nhiên sẽ khó có thể thay đổi thích ứng với môi trường mới. Thứ hai, chỉ có một số ít các ngưỡng được thiết lập vì sự thống kê chi tiết các giao thức không có giá trị cho người sử dụng. Thứ ba, ngưỡng chỉ áp dụng ở mức độ tổng hợp cao. Sự thiếu sót này có thể dẫn tới sự đánh giá sai về tính rõ ràng và tính phủ định của hệ thống phát hiện. Thậm chí một phát hiện sự xâm hại có thể chặn nhầm một địa chỉ hợp lệ.

Do vậy, để hiệu quả một hệ thống phát hiện xâm nhập phải thêm nhiều tính năng để phát hiện và phân biệt một sự tấn công với các hoạt động bình thường.

2.2.2 Các yêu cầu đối với môt hệ thống phát hiện DDoS

Phát hiện nhiều cơ chế

Hiện nay các hình thức tấn công DDos rất đa dạng và luôn được phát triển không ngừng. Càng ngày càng có nhiều kiểu tấn công mới, phức tạp, các loại botnet có các biến thể phức tạp. Do vậy, một hệ thống phát hiện DDos thật sự hiệu quả khi phát hiện được hầu hết các kiểu tấn công để triển khai rộng rãi là chưa nhiều. Bản thân các hệ thống này luôn đánh giá khi có những dấu hiệu bất thường, phải cập nhật thường xuyên những kiểu tấn công mới thông qua hình thức “học” các tập luật để có biện pháp phát hiện nhanh nhất và có độ chính xác.

Phản ứng

Khi một cuộc tấn công DDos xảy ra. Bước đầu tiên và cũng là quan trọng nhất là phát hiện chính xác các gói tin tấn công. Hệ thống phát hiện có cơ chế cảnh báo và phòng thủ phải đáp ứng trong thời gian thực, đặc biệt là tốc độ phản ứng phải cao. Tránh trường hợp chặn nhầm gói tin hợp lệ.

38

2.2.3 Phát hiện các cuộc tấn công DDoS - Phát hiện ở gần nguồn tấn công - Phát hiện ở gần nguồn tấn công

Giả sử tổng số lưu lượng để tắt một mạng là V, và lưu lượng một cuộc tấn công DDos là U. Chúng ta có thể dễ dàng phát hiện tấn công tại nạn nhân khi V lớn hơn đáng kể lưu lượng bình thường. Tuy nhiên, số lượng tấn công gần nguồn sẽ không phân biệt được từ một lưu lượng bình thường, tỷ số V/U sẽ rất nhỏ nếu U đủ lớn. Thông thường như các phương án đã đặt ra đó là đánh dấu gói tin và truy tìm ngược lại. Các phương án này thường không có hiệu quả cao khi mà cuộc tấn công diễn ra với quy mô rất lớn. Do vậy việc phát hiện tấn công gần nguồn sẽ tránh được tắc nghẽn và đạt hiệu quả cao nhất.

- Phát hiện tấn công tại mạng của nạn nhân (adsbygoogle = window.adsbygoogle || []).push({});

Như đã nói ở phần trước, việc phát hiện tấn công tại máy nạn nhân không khó vì lúc đó lưu lượng mạng nạn nhân sẽ trở nên rất cao và tất nhiên sẽ dẫn đến tình trạng không thể cung cấp được các dịch vụ. Tuy nhiên, thông thường việc phát hiện và phản ứng lại tại nạn nhân thường muộn và vào lúc cuộc tấn công đang ở mức cao. Nạn nhân lựa chọn tắt server và sau đó liên hệ với các ISP. Các ISP sau khi đã nhận được lời đề nghị của nạn nhân sẽ tiến hành đẩy ngược lại lưu lượng tấn công tại các router. Công việc này thường tốn rất nhiều thời gian. Ví dụ khi nạn nhân phát hiện ra cuộc tấn công, một thông điệp sẽ được gửi đến các upstream router của nạn nhân. Thông điệp bao gồm đích của lưu lượng tấn công, và 1 yêu cầu để lọc lưu lượng tấn công này. Tuy nhiên, việc gửi thông điệp này trong thời gian ngắn nhất có thể là vô cùng quan trọng để ngăn chặn tấn công DDos. Bởi vậy, cần

Một phần của tài liệu Nghiên cứu thuật toán phát hiện và giảm thiểu một số hình thức tấn công dos (Trang 38)