3.2.1 Bẫy thời gian
Cơ sở của phƣơng pháp là xác định ranh giới giữa các kết nối HTTP trong một Web-request. Trong một nghiên cứu về lƣu lƣợng HTTP, B.Mah [16] phát hiện ra rằng để xác định số lƣợng dữ liệu trong một phiên yêu cầu truy vấn và nhận dữ liệu thì yêu cầu cần thiết là phải đảm bảo các điều kiện
Các kết nối phải xuất phát từ cùng một ngƣời dùng.
Các kết nối phải đảm bảo cách nhau một khoảng thời gian gọi là TThresh
Hình 19 Xác định quan hệ giữa hai kết nối HTTP
Nếu kết nối C2 bắt đầu trong khoảng thời gian Tthresh thì nó là truy vấn trên cùng một Web-request, còn không thì nó nằm trong truy vấn khác – tất nhiên là từ cùng một địa chỉ IP. Thời gian TThresh theo ƣớc tính của tác giả là trong khoảng 1 giây < Tthresh < 30 giây. Trung bình lấy giá trị là 1 giây. Đây cũng là giá trị mà Lee &
44 Gupta sử dụng để phân biệt hai yêu cầu truy vấn khác nhau với máy chủ. Trong khi E.Doron lại sử dụng cách tính sau 0,8 giây không nhận đƣợc dữ liệu mới thì phiên truy cập đi vào thời kỳ OFF. Dựa theo cách tính này thì tổng lƣu lƣợng gửi đi cho mỗi Web-request đƣợc tính là tổng dữ liệu gửi đi trong thời gian ON. Trong mô hình dữ liệu mới, thì có sự đan xen giữa thời gian gửi dữ liệu và thời gian đọc của ngƣời dùng – nhƣ hình minh họa 20.b bên dƣới. Theo thống kê của mô hình mới thì tổng thời gian đọc – reading time – khoảng 39.70, không khác nhiều so với mô hình Choi & Lim, nhƣng trong thời gian reading time, vẫn có các truy vấn tới máy chủ xen vào – hình 20.b. Do đó ý tƣởng ở đây là sẽ đặt một khoảng thời gian gọi là thời gian thử thách không nhỏ hơn thời gian trung bình của một phiên Web-request thông thƣờng. Trong khoảng thời gian này sẽ đo lƣợng dữ liệu gửi đến máy chủ. Tất cả các kết nối mà có dữ liệu truyền tải trong khoảng thời gian này sẽ đƣợc tính toán sao cho lƣợng dữ liệu không vƣợt quá giá trị trung bình đã đƣợc tính toán thống kê theo mô hình mới.
45 Gọi khoảng thời gian này là Tthreshold giá trị dữ liệu nhận đƣợc từ phía ngƣời dùng là DReceived, giá trị ngƣỡng trung bình đƣợc phép của phiên làm việc đó là Davg(i), thời điểm bắt đầu Tstart từ lúc trình duyệt ngƣời dùng gửi tin đến lúc thời điểm ngƣời dùng kết thúc phiên làm việc đó và sang trang mới là Tend, những giá trị này hoàn toàn có thể ghi lại đƣợc do có thời điểm bắt đầu gửi gói tin của phiên đó là thời gian bắt đầu phiên mới. Vậy ta có thời gian của mỗi phiên TE là:
TE = Tend – Tstart;
Trong khoảng thời gian TE để một hành vi là hợp lệ thì nó phải đảm bảo hai điều kiện:
Hành vi là hợp lệ theo mô hình mới nếu {
(1)
Giá trị trung bình Davg(i) đƣợc tính dựa theo công thức Davg(i) = DMax * F;
Trong đó F là giá trị ƣu tiên. Nếu vi phạm quy tắc thì giá trị giảm, nếu truy vấn không đáng ngờ thì điểm tăng nhƣng không vƣợt quá 1, tức là 0<= F <= 1. DMax là giá trị khởi đầu có trọng số bằng với kích cỡ truy vấn trong thống kê Lee & Gupta. Nhƣ vậy giá trị trung bình Davg(i) không bao giờ lớn hơn DMax và luôn có xu hƣớng giảm nếu chẳng may kết nối cố tình vƣợt qua bẫy. Cách giải quyết này có thể giải quyết đƣợc các trƣờng hợp cố tình gửi lƣợng lớn dữ liệu đến máy chủ trong thời gian ngắn – Simple Flood do thời gian thử thách kết nối là đủ lâu. Tuy nhiên cách xử lý này vẫn có hạn chế nếu tổng lƣợng dữ liệu trong phiên này liên tục giữ mức đỉnh trong giới hạn cho phép, nếu số lƣợng kết nối quá đông, máy chủ sẽ quá tải. Cần phải có cơ chế hiệu quả hơn để phát hiện quy luật của những kết nối từ chiến thuật thiết kế tự động của kẻ tấn công.
Chiến thuật sử dụng bẫy thời gian khá hiệu quả khi áp dụng lọc với dạng tấn công sau đây :
Tấn công “Simple flooding”
Đặc điểm nhận dạng chính của dạng tấn công này là hiện tƣợng gửi lƣợng lớn dữ liệu liên tục đến máy chủ Web từ máy khách mà không có thời gian nghỉ giữa các lần truy vấn. Dạng tấn công này đƣợc mô tả bởi hình sau:
46 Hình 21 Truy vấn liên tiếp gửi dữ liệu lớn mà không có thời gian nghỉ
Dạng tấn công này có thể phát hiện dễ dàng khi áp dụng cơ chế bẫy thời gian, bẫy băng thông gửi. Nếu thời gian nghỉ trong phiên mà nhỏ hơn thời gian nghỉ giới hạn và lƣu lƣợng gửi dữ liệu lên vƣợt quá lƣu lƣợng đƣợc cho phép theo thống kê trong mô hình Lee & Gupta thì phát hiện đó là các lƣu lƣợng tấn công.
Hình 22 Mô hình hoạt động của bộ lọc khi tấn công Simple Flooding Thông số kẻ tấn công:
- Lƣu lƣợng dữ liệu tải lên trong một phiên: BW = Max_TH bytes - Thời gian nghỉ: 0 giây
47 - WDAQ cộng dồn lƣợng dữ liệu gửi lên server với mỗi gói tin đến
- Khi BW ≤ Max_TH, điều kiện vẫn đƣợc thỏa mãn, gói tin chuyển đến hàng đợi ƣu tiên cao và ra khỏi bộ lọc (Gói P1)
- Do không có thời gian nghỉ, bộ lọc mới coi đây là một phiên, khi BW > Max_TH, điều kiện bị vi phạm, gói tin chuyển đến Low queue
- Khi Low queue chƣa bị đầy, gói tin vào đây vẫn đƣợc phục vụ, mặc dù kém hơn so với gói tin vào hàng đợi High queue (Gói P2)
- Khi Low queue đầy, gói tin sẽ bị hủy bỏ (Gói P3)
3.2.2 Bẫy tần suất
Để giải quyết trƣờng hợp kẻ tấn công sử dụng chiến thuật thực hiện tự động gửi dữ liệu luôn ở mức đỉnh đến máy chủ theo một quy luật nhất định trong thời gian TE, chúng tôi thiết kế một bẫy tần suất chu kỳ xuất hiện truy vấn. Theo những thống kê của các mô hình dữ liệu hiện đại, số lƣợng truy vấn đƣợc trình duyệt thực hiện là không giống nhau trong mỗi lần tải trang cũng nhƣ các điểm khởi tạo yêu cầu truy vấn là không giống nhau. Để minh họa rõ hơn, chúng ta hãy quan sát hình 21.a. Ở hình này, có tất cả hai thời điểm có xảy ra truy vấn tải dữ liệu, hai thời gian nghỉ xen kẽ với mức độ khác nhau. Thời gian truy vấn càng ít thì dữ liệu gửi lên càng ít, thời gian truy vấn cần càng nhiều thì lƣu lƣợng gửi đến máy chủ càng lớn hơn. Trong một trang website, các “main-object” – khung HTML tải xuống và “inline-object” – đối tƣợng nhúng nhƣ ảnh, file, iframe … có độ lớn là khác nhau và giữa các “inline-object” với nhau cũng có sự khác nhau. Điểm mấu chốt này rất quan trọng do thể hiện các hành vi xảy ra trong thực tế của trình duyệt tƣơng tác với phía máy chủ.
48 Hình 23 Tần suất gửi tin của truy cập hợp lệ và không hợp lệ theo mô hình mới
Với những truy vấn gửi lên hợp lệ, trong khoảng thời gian một phiên Web- request, mốc thời điểm yêu cầu truy vấn không có sự lặp đi lặp lại theo chu kỳ cũng nhƣ lƣu lƣợng trung bình mỗi request không đồng đều. Ngƣợc lại với những truy vấn của hành vi kết nối không hợp lệ nhƣ hình 24.b, 24.c, các thời điểm bắt đầu thực hiện truy vấn và lƣu lƣợng mỗi truy vấn gửi đến máy chủ Web có sự lặp đi lặp lại cả về số lƣợng lẫn độ lớn.
Nhƣ vậy ngoài bƣớc thực hiện giới hạn băng thông tải trong thời gian thử thách, bƣớc tiếp theo cần xác định xem trong mỗi thời gian thử thách đó, có sự lặp đi lặp lại về số lần truy vấn đến server trong các phiên khác nhau hay không. Nếu có sự lặp đi lặp lại theo chu kỳ hoặc giống nhau hoàn toàn thì rõ ràng đó là dạng thức của các truy vấn tấn công. Thông thƣờng trong mỗi thời gian thực hiện một Web- request có khoảng 6 đến 8 truy vấn xảy ra tự động [15].
Phiên 1 Phiên 2
49 Để tính đƣợc tần suất của số truy vấn PRequest, đơn giản ta xác định các thời điểm xuất hiện gói tin truy vấn từ trình duyệt hƣớng đến server.
Kích cỡ trung bình mỗi lần truy vấn bằng dữ liệu tổng phiên chia cho tần xuất thực hiện truy vấn trong phiên đó. DRequest_avg = F(i)*( DReceived/ PRequest ).
Những giá trị PRequest và DRequest_avg phải nằm trong phạm vi cho phép với những giá trị bắt đầu là các giá trị tƣơng ứng trong thống kê, sau đó cứ mỗi lần vi phạm thì giá trị băng thông hoặc tần xuất phải giảm đi. Giới hạn băng thông này tùy thuộc vào từng website sẽ có những giá trị khác biệt. Thông thƣờng giá trị này nằm trong dải từ 25KB tới 150KB.
Rõ ràng cách thức thực hiện ý tƣởng này tƣơng tự cách làm bẫy lỗi băng thông của E.Doron nhƣng ở đây chúng ta cần phải kiểm tra thêm tần suất xuất hiện của truy vấn do giới hạn băng thông đƣợc nới rộng ra và đặc tính tự truy vấn máy chủ khi ngƣời dùng vẫn đang đọc thông tin trên website.
Kỹ thuật bẫy tần suất đƣợc sử dụng để loại bỏ dạng tấn công sau:
Tấn công “High-burst slow”
Hình thức tấn công này tƣơng tự nhƣ “Simple flooding”, tuy nhiên thay vì tấn công một cách liên tục, kẻ tấn công vẫn duy trì giai đoạn nghỉ xen kẽ các lần truy vấn.
Hình 24 Lƣu lƣợng và thời gian nghỉ lặp đi lặp lại trong các phiên truy cập liên tiếp Đặc điểm nhận dạng của dạng tấn công này là sự lặp lại về mức lƣu lƣợng và thời gian nghỉ giữa các phiên luôn giữ mức ổn định qua nhiều phiên kết nối.
Để đối phó với tình huống nhƣ vậy, WDA [4] có một cơ chế gọi là bẫy phiên ngẫu nhiên. Tƣơng tự, ý tƣởng ở đây là bộ lọc sử dụng bẫy tần xuất ngẫu nhiên để
50 xác định lƣu lƣợng gửi tới server trong một phiên Web-request với khoảng số lƣợng định trƣớc các phiên thử thách – ví dụ trong thời gian 10 phiên truy cập liên tiếp. Ý tƣởng này tƣơng tự nhƣ việc đặt các trạm theo dõi dọc đƣờng cao tốc, cứ ngẫu nhiên trong 20km lại có một trạm giám sát bắn tốc độ, nếu lái xe có cố tình chạy xe quá tốc độ - còn trƣờng hợp của chúng ta là lƣu lƣợng gửi đến máy chủ trong một phạm vi một Web-request - vƣợt qua một ngƣỡng cho phép thì anh ta sẽ bị phạt. Tƣơng tự nhƣ vậy nếu muốn tấn công thì kẻ tấn công phải nghỉ nhiều trên các chặng để tránh bị phát hiện và chính kỹ thuật này sẽ làm suy giảm lƣu lƣợng tấn công dạng High- burst-slow rất tốt.
Ngoài ra để nhận dạng tốt hơn đặc tính của dạng tấn công đó là sự lặp lại của tần xuất sử dụng băng thông gửi lên giống nhau với các thời gian nghỉ đều đặn giống nhau, trong khi tính toán lƣu lƣợng gửi tới máy chủ tại phiên bẫy này chúng ta so sánh với lƣợng lƣu lƣợng đo đƣợc tại thời điểm bẫy trƣớc cũng nhƣ so sánh số lƣợng yêu cầu truy vấn – tính bằng số lần khởi tạo yêu cầu truy vấn trong một Web- request. Nếu chúng có sự trùng nhau liên liếp – nhƣ hình 28, lƣu lƣợng phiên (phần ô vuông tô đậm) là lặp đi lặp lại, số lƣợng truy vấn trong mỗi request luôn là 3- thì chứng tỏ hành vi này nghi ngờ là tấn công, chúng ta sẽ giảm giá trị hàm ƣu tiên f xuống. Rõ ràng, nếu truy vấn càng vi phạm nhiều thì giá trị hàm f càng nhỏ, dẫn đến ƣu tiên phục vụ càng nhỏ. Cách làm này khá giống ý tƣởng kiểm tra lƣợng lƣu lƣợng gửi đến máy chủ Web của kết nối đó trong hai phiên truy cập liên tiếp i và i-1 của Doron [4].
51 Hình 25 Mô hình hoạt động của bộ lọc khi tấn công High-burst-slow
Thông số kẻ tấn công:
- Lƣợng dữ liệu tải lên trong một phiên: BW = Max_TH bytes - Thời gian nghỉ: Min_TH giây
Quá trình hoạt động:
- WDAQ cộng dồn lƣợng dữ liệu gửi lên server với mỗi gói tin đến
- Mỗi phiên gửi một lƣợng Max_TH bytes, thỏa mãn điều kiện của Policer. - Bẫy phiên hoạt động, chọn một phiên bất kỳ
Nếu không bị bẫy, gói tin của phiên đó vào High queue (Gói P1) Nếu bị bẫy, gói tin của phiên đó vào Low queue (Gói P2 và P3) - Khi Low queue chƣa bị đầy, gói tin vào đây vẫn đƣợc phục vụ, mặc dù
kém hơn so với gói tin vào hàng đợi High queue (Gói P2) - Khi Low queue đầy, gói tin sẽ bị hủy bỏ (Gói P3)
Điểm cốt lõi là chọn mốc khởi tạo lƣu lƣợng tối đa đƣợc phép gửi trong một phiên sử dụng Web-request là bao nhiêu cũng nhƣ khoảng thời gian chúng ta sẽ đặt bẫy. Ngƣỡng cho phép chúng ta có thể tham khảo thống kê của phƣơng pháp Lee&Gupta, rơi vào khoảng trung bình 25KB, tối đa là 6MB [15] và khoảng thời gian thử thách chúng tôi chọn là 20s – tƣơng đƣơng độ dài trung bình của 4 phiên truy cập.Tùy theo đặc điểm từng loại Website mà chúng ta sẽ chọn các mốc khởi tạo tốt nhất. Chẳng hạn các Website hỗ trợ lƣu lƣợng upload lớn thì ngƣỡng băng thông tối đa và thời gian thử thách sẽ lớn hơn các Website tin tức thông thƣờng.
3.2.3 Trạng thái tối thiểu
“Trạng thái tối thiểu” là ý tƣởng lần đầu đƣợc đƣa ra bởi [4] để phòng chống dạng tấn công lƣu lƣợng thấp có sự lặp lại về tần suất tấn công mặc dù lƣu lƣợng gửi lên trong mỗi phiên Web Session luôn rơi vào giới hạn đƣợc phép. Ý tƣởng này khá hiệu quả nên chúng tôi sử dụng trong phần đánh giá các truy vấn có lƣu lƣợng thấp hƣớng đến máy chủ website.
Điều kiện để client có thể đi vào trạng thái này là:
52 Thời gian nghỉ trung bình không nhỏ hơn giá trị thời gian trung bình
đƣợc phép nghỉ
Điểm số đánh giá của kết nối vẫn còn lớn hơn 0
Một khi client đi vào “Trạng thái tối thiểu”, các giá trị của nó sẽ đƣợc thay thế nhƣ sau:
Lƣu lƣợng phiên hiện tại đƣợc gán bằng lƣu lƣợng cực tiểu cho phép Thời gian nghỉ trung bình bằng giá trị thời gian trung bình đƣợc phép
nghỉ
Giảm điểm đánh giá của kết nối đi 1.
Sau mỗi 50 phiên làm việc, client sẽ nhận đƣợc thêm một lƣợng điểm thƣởng gọi là Minimum_State_Credits, tăng lên tới Minimum_State_Max_Credits nhằm tránh kẻ tấn công tích lũy một lƣợng lớn điểm để tấn công.
Giá trị thời gian trung bình đƣợc phép nghỉ không nhỏ hơn giá trị nghỉ tối thiểu (thƣờng là 5s) nhằm đảm bảo ngƣời dùng hợp lệ không quá thƣờng xuyên rơi vào trạng thái này, tuy nhiên không đƣợc để quá thấp nhằm tránh kẻ tấn công có thể lợi dụng.
Mô hình trạng thái tối thiểu đƣợc chúng tôi kế thừa để giải quyết trƣờng hợp:
Tấn công “Low-burst fast”
Thực tế đã xảy ra, trong một vài phiên làm việc liên tiếp, ngƣời dùng hợp lệ có thể vô tình hành xử giống nhƣ một kẻ tấn công – nhƣ tốc độ tải Website chậm làm ngƣời dùng không kiên nhẫn thƣờng liên tiếp bấm yêu cầu tải lại, refresh trang liên tục. Hệ quả là giá trị hàm ƣu tiên f, tức giới hạn độ lớn của dữ liệu gửi lên của ngƣời dùng đó sẽ liên tục bị giảm xuống. Nếu nhƣ giá trị ƣu tiên f này giảm xuống đến mức thấp hơn mức độ ƣu tiên cho phép xác định kết nối đó vẫn là hợp lệ, nhiều khả năng các thông số của lƣu lƣợng truy cập từ ngƣời dùng hợp lệ sẽ xấu đi và các gói