Nhận dạng bất thường trên một yêu cầu đầu vào

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin Hệ thống tường lửa thông minh cho các ứng dụng web iwaf (Trang 30)

6. Bố cục của luận văn

2.1.1Nhận dạng bất thường trên một yêu cầu đầu vào

a) Detect request method anomaly: Phương pháp này sẽ giúp phát hiện các phương thức request kẻ tấn công sử dụng, mặc dù trong ứng dụng web không sử dụng. Xác định các phương thức request bất thường sẽ giúp phát hiện những nỗ lực của kẻ tấn công cố gắng phá vỡ các giới hạn kiểm soát truy cập. Phương pháp này cũng có thể phát hiện các cuộc tấn công CSRF.

b) Detect request header anomaly: phương pháp này sẽ giúp phát hiện dấu hiệu bất thường trong các request header kẻ tấn công sử dụng.

 Missing Request Headers: khi kẻ tấn công sử dụng các đoạn script hay chương trình tự động thì thông thường các chương trình này sẽ tạo ra các request

không theo chuẩn request header của trình duyệt. Các trình duyệt web thông thường bao gồm đầy đủ 03 loại header là: Host, User-Agent, Accept.

 Abnormal Header Content: một số dấu hiệu cho thấy một yêu cầu là đáng ngờ dựa trên các dữ liệu có trong tiêu đề yêu cầu HTTP. Ví dụ, nhìn vào dữ liệu này được lấy từ một tập tin Apache access_log.

Phần bất thường được bôi đậm ở trên cho thấy trường “User-Agent” có giá trị bất thường thay vì bắt đầu từ phiên bản trình duyệt phía client thì lại là giá trị “User-Agent”. Dấu hiệu này cho thấy kẻ tấn công đang sử dụng công cụ tự động bị lỗi và đang rà quét hệ thống.

 Abnormal Header Ordering: Thực tế, các trình duyệt web có một trật tự cụ thể trong request header và là duy nhất cho mỗi loại trình duyệt. Ví dụ: khi so sánh 02 trình duyệt web phổ biến hiện nay là Firefox và Microsoft Internet Explorer có thể thấy sự khác biệt thứ tự header: Host, trong khi Internet Explorer của Microsoft đặt sau Accept-Encoding header, còn Firefox thì ngược lại đặt trên Accept-Encoding header.

c) Detecting Attribute length (nhận dạng chiều dài thuộc tính): Theo Krügel [11] chiều dài thuộc tính của một truy vấn có thể được sử dụng để phát hiện các yêu cầu bất thường, đặc biệt là khi các thông số là một dạng thẻ (token) kích thước cố định (chẳng hạn như định danh session) hoặc chuỗi ngắn do con người nhập vào. Trong những trường hợp này, độ dài của các giá trị tham số không thay đổi nhiều giữa các yêu cầu liên quan đến một chức năng nào đó. Tuy nhiên, giá trị này có thể khác đi khi đầu vào là mã độc hại được đưa vào chương trình.

Mục tiêu của mô hình này là xấp xỉ thực tế nhưng không rõ sự phân phối của các tham số độ dài và phát hiện các trường hợp mà chênh lệch đáng kể từ các quan sát hành vi bình thường.

d) Character Distribution (sự phân bố các ký tự trong thuộc tính): Theo Robertson [15] mô hình phân phối ký tự của thuộc tính được đưa ra dựa trên

khái niệm về sự ''bình thường'' hoặc ''thường xuyên'' trong các tham số truy vấn bằng cách quan sát việc phân phối các ký tự trong giá trị của tham số. Cách tiếp cận này dựa trên quan sát rằng các thuộc tính có cấu trúc thông thường ít thay đổi, chủ yếu là con người có thể đọc được, và hầu như luôn luôn chỉ chứa các ký tự in được. Trong trường hợp các cuộc tấn công gửi dữ liệu nhị phân (ví dụ, các cuộc tấn công tràn bộ đệm), có thể được quan sát thấy một sự phân phối ký tự hoàn toàn khác nhau, hoặc các cuộc tấn công mà gửi nhiều lần và lặp lại một ký tự (ví dụ, ký tự dấu chấm trong khai thác lỗi directory traversal).

Trong các thuộc tính, thông thường một tỷ lệ lớn các ký tự được rút ra từ một nhóm nhỏ các ký tự (giá trị 8-bit) trong tập bao gồm 256 ký tự ASCII (chữ cái, số, và một số ký tự đặc biệt). Như trong văn bản, các ký tự không phân bố đồng đều và xuất hiện với tần suất khác nhau. Rõ ràng, không thể được dự đoán tần suất phân bố đúng cho một văn bản chuẩn. Thậm chí tần suất của một ký tự nào đó (ví dụ, tần suất của một chữ cái "e'') khác nhau đáng kể giữa các thuộc tính khác nhau. Tuy nhiên, có những điểm tương đồng giữa các tần suất ký tự của các tham số truy vấn. Điều này trở nên rõ ràng khi trong một chuỗi thì các tần suất xuất hiện tương đối của ký tự trong tất cả 256 trường hợp có thể được sắp xếp theo thứ tự giảm dần. Các sắp xếp tần suất tương đối xuất hiện ký tự của một thuộc tính được có thể gọi tắt là tần suất của ký tự. Sự phân bố ký tự của một thuộc tính hoàn toàn hợp lệ (tức là, không phải bất thường) được gọi là phân phối ký tự của thuộc tính lý tưởng hóa.

Bằng cách sắp xếp các giá trị tần suất tương đối, kết nối giữa các ký tự riêng biệt và tần suất tương đối bị mất. Có nghĩa là, nó không quan trọng cho dù ký tự xuất hiện nhiều nhất là ''a'' hoặc ''/'' Ví dụ, hãy xem xét chuỗi tham số ''passwd" với các giá trị ASCII tương ứng của'' 112 97 115 115 119 100''. Sự phân bố tần suất xuất hiện chính xác là 2 cho "s" (giá trị 115) và 1 cho các ký tự còn lại "p, a, w, d". Khi tính xác được chuyển thành dạng thống kê tần suất xuất hiện tương đối, các giá trị kết quả được sắp xếp là giảm dần là 0.33, 0.17, 0.17, 0.17, 0.17, 0, 0,....,0 cho 251 ký tự khác trong bảng mã 256 ASCII. Với một thuộc tính của một truy vấn hợp pháp, người ta kỳ vọng rằng các tần suất tương đối giảm dần về giá trị.

Khi định danh ngẫu nhiên được sử dụng, không có ký tự nào xuất hiện thường xuyên hơn đáng kể sau đó những ký tự khác, kết quả là một bản phân phối ký tự gần như thống nhất. Tuy nhiên, trong trường hợp đầu vào là mã độc hại, các tần suất thường đưa ra cực kỳ nhanh chóng. Điều này có thể là kết quả của một ký tự đệm nhất định được lặp đi lặp lại nhiều lần trong một cuộc tấn công tràn bộ đệm hoặc nhiều lần xuất hiện của các ký tự dấu chấm trong khai thác lỗi directory traversal .

e) Attribute character classification (phân loại ký tự của thuộc tính) Thông thường, các thuộc tính có giá trị thuộc dạng dữ liệu cụ thể nào đó ví dụ: tên đăng nhập thường là sự kết hợp các ký tự đọc được trong bản chữ cái, trong khi mật khẩu là tập các chữ cái và số, …. do đó việc phân loại các nhóm ký tự cho giá trị của một thuộc tính là cần thiết giúp phát hiện các giá trị bất thường trong request từ phía client.

f) Structural inference: Theo Krügel [11] thông thường, biểu hiện của một cuộc tấn công khai thác hệ thống có thể nhìn thấy ngay trong các thuộc tính truy vấn như các thông số dài bất thường hoặc các thông số có chứa lặp đi lặp lại của các ký tự không in được. Các bất thường này dễ nhận biết bởi hai mô hình dựa trên "chiều dài thuộc tính" và "phân phối ký tự" trong thuộc tính. Tuy nhiên, có những tình huống, khi một kẻ tấn công có thể che dấu tinh vi các tấn công của mình. Ví dụ, ký tự không in có thể được thay thế bằng nhóm ký tự in được. Trong tình huống như vậy, cần một mô hình chi tiết hơn về các thuộc tính truy vấn có chứa các bằng chứng về các cuộc tấn công. Mô hình này có thể được thực hiện bằng cách phân tích cấu trúc các thông số. Cấu trúc của một tham số là cấu trúc ngữ pháp thông thường mà mô tả tất cả các giá trị hợp lệ của nó.

Mô hình suy luận cấu trúc có dựa trên sự quan sát các giá trị thuộc tính hợp pháp cho rằng thường được tạo ra từ một cấu trúc ngữ pháp thông thường. Ví dụ, một tập hợp con của tên đường dẫn hợp lệ có thể được tạo ra từ biểu thức chính quy (/ | [a-zA-Z0-9]) +, tức là, một loạt các ký tự chữ và số xen kẽ với các ký tự phân

cách "/". Tuy nhiên, ngữ pháp tạo ra cho một thuộc tính, là không rõ, và do đó nó là cần thiết xây dựng một xấp xỉ hợp lý cho đúng ngữ pháp.

Mô hình suy luận cấu trúc là hữu ích để phát hiện tất cả các loại của các cuộc tấn công có các chuỗi tham số có cấu trúc khác với cấu trúc tham số truy vấn thông thường như các lỗi tràn bộ đệm, duyệt cây thư mục, và các cuộc tấn công cross-site scripting. Tùy thuộc vào cấu trúc của các đối số thông thường, cũng có thể phát hiện các khai thác lỗi logic trong ứng dụng web.

g) Token Finder: Theo Krügel [11] mục đích của mô hình token finder là để xác định xem giá trị của một thuộc tính truy vấn nhất định được rút ra từ một tập giới hạn các lựa chọn (tức là bảng liệt kê các token). Các ứng dụng web thường đòi hỏi một trong số một vài giá trị có thể cho các thuộc tính truy vấn nhất định, chẳng hạn như cờ hoặc chỉ số. Khi một tấn công cố gắng sử dụng những thuộc tính này để đưa các giá trị bất hợp pháp vào các ứng dụng thì các cuộc tấn công có thể được phát hiện. Các đối số mà chỉ có một số giới hạn các giá trị hợp pháp, mô hình token finder có thể được sử dụng để phát hiện bất kỳ tấn công mà cung cấp giá trị khác với giá trị trong tập các giá trị hợp lệ. Khi bảng liệt kê chưa có giá trị thì được giả định rằng các giá trị thuộc tính là ngẫu nhiên và không có các cuộc tấn công có thể được phát hiện bởi mô hình này.

h) Attribute presence or absence: Hầu hết thời gian, ứng dụng phía máy chủ không trực tiếp được gọi bởi người dùng gõ các thông số đầu vào cho các URI của mình. Thay vào đó, chương trình phía máy client, scripts, hoặc HTML form xử lý trước dữ liệu và biến nó thành một yêu cầu phù hợp sau đó chuyển về máy chủ. Bước xử lý này chuẩn hóa số lượng, tên và thứ tự của các tham số.

Trên thực tế, cho thấy rằng các cuộc tấn công dạng thủ công thường tập trung khai thác một lỗ hổng trong mã xử lý của một giá trị tham số nhất định, và ít chú trọng đến trật tự và đầy đủ của các tham số khác. Mô hình này, phát hiện các yêu cầu đi chệch khỏi cách mà các tham số được trình bày bởi các đoạn script phía máy khách hoặc các chương trình hợp pháp. Đây là loại bất thường được phát hiện, sử dụng hai thuật toán khác nhau. Thứ nhất, liên quan đến vấn đề sự hiện diện và sự

vắng mặt của các thuộc tính ai trong một truy vấn. Thứ hai là dựa trên thứ tự tương đối của các tham số. Những mô hình này tập trung vào hai tính năng xem xét tất cả các thuộc tính truy vấn cùng một lúc. Điều này khác với các mô hình ở trên, trong đó tập trung vào các tính năng của riêng rẻ các tham số. Như vậy có thể rằng sự vắng mặt hay hiện diện bất thường của một hoặc nhiều tham số trong một truy vấn có thể cho thấy hành vi nguy hiểm. Đặc biệt, nếu một đối số cần thiết cho một chức năng phía máy chủ bị mất, hoặc nếu đối số loại trừ lẫn nhau xuất hiện cùng nhau, thì yêu cầu được xem là bất thường. Điều này, cho phép phát hiện các cuộc tấn công mà các ứng dụng phía máy chủ đang bị thăm dò hoặc khai thác bằng cách gửi yêu cầu không đầy đủ hoặc bị thay đổi.

+ Detect Additional Parameters: phát hiện dấu hiện bất thường từ việc các request gởi từ phía client có bổ sung thêm tham số không tồn tại trong trang web. Ví dụ: trang login chỉ có 03 tham số là: Username, Password, Login nhưng trong request nhận được có thêm tham số “Roll” giá trị là “admin”.

+ Detect Missing Parameters: phát hiện dấu hiện bất thường từ việc các request gởi từ phía client giảm mất tham số bắt buộc tồn tại trong trang web. Ví dụ: trang login chỉ có 03 tham số là: Username, Password, Login nhưng trong request nhận được thiếu tham số “Login”.

+ Detect Duplicate Parameter Names: phát hiện dấu hiện bất thường từ việc các request gởi từ phía client xuất hiện các tham số có cùng tên trong trang web. Kỹ thuật tấn công HTTP Parameter Pollution (HPP) là một loại kỹ thuật sử dụng cơ chế “các tham số có cùng tên trong một trang web” nhằm chia nhỏ đoạn mã độc tấn công ra và ghép mỗi đoạn này thành giá trị của các tham số cùng tên. Ví dụ: khi chèn mã SQL vào giá trị của tham số “ProdID” thì rất dễ bị phát hiện bởi các tường lửa và hệ thống kiểm tra, tuy nhiên nếu áp dụng kỹ thuật HPP thì có thể che dấu và vượt qua việc kiểm tra SQL Injection.

i) Attribute order: Như đã đề cập trong phần "Attribute presence or absence", theo Krügel [11] các tham số trong các giao dịch hợp pháp đối với ứng dụng phía máy chủ thường giống nhau và có cùng thứ tự trên request. Chương trình logic thường có cấu trúc tuần tự, do đó thứ tự tương đối của các thuộc tính không thay đổi ngay cả khi các tham số được bỏ qua trong một số truy vấn nhất định. Thông thường, các kết nối hợp lệ từ phía client dựa trên các form HTTP, các link liên kết, các nút nhấn chức năng trên trang web.

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin Hệ thống tường lửa thông minh cho các ứng dụng web iwaf (Trang 30)