3. Nội dung thuyết minh và tính toán
3.1.4. HTTP Inspect
HTTP đã trở thành một trong những giao thức phổ biến và thông dụng trên Internet. Nên đây mà một giao thức rất được các attacker ưa chuộng. Attacker có thể sử dụng sự linh hoạt của các Web server để cố gắng ẩn thân và che dấu hành vi tấn công trước các NIDS. Ví dụ trong mẫu sau, các mẫu phát hiện như trong Snort sẽ chỉ có thể phát hiện được dạng foo/bar mà không thể phát hiện được foo\bar.
40 http://www.abc/foo\bar\xyz.php
Ngoài ra Attacker còn có thể sử dụng vô số các kỹ thuật mã hóa dựa trên mã hex với uft-8. http_inspect sẽ chỉ xử lý trên từng gói tin, điều này có nghĩa là những chuỗi mà nó xử lý phải được tái hợp trước đó bằng tiền xử lý stream5.
Ví dụ dưới đây về các phương thức GET, chúng đều có chung một chức năng giống hệ nhau, được các webserver xử lý giống hệ nhau.
GET /../../../../etc/passwd HTTP /1.1
GET %2f..%2f..%2f..%2f..%2fetc%2 fpasswd HTTP /1.1 GET
%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%65%74%63%2f%70%61%73% 73%77%64
HTTP /1.1
Trên đây là một ví dụ về tấn công “directory traversal”, hay còn gọi với các tên khác như “dot-dot-slash”, “directory clumbing”. Là hình thức tấn công truy cập đến những file và thư mục mà được lưu bên ngoài webroot. Một hệ thống phát hiện xâm nhập hiểu được phương thức GET của giao thức HTTP nên nó sẽ cho phép request này. Tuy nhiên vấn đề là có vô hạn cách mã hóa các chuỗi độc hại dẫn đến việc nếu ta cấu hình một IDS nhằm phát hiện chuỗi độc hại này dựa trên “signature” thì không thể đảm bảo sẽ phát hiện được hết. Một cách khác đó là bình thường hóa chuỗi này, sau đó so sánh nó với một danh sách “known bad” để phát hiện.