3. Cấu trúc luận văn
3.2. Xây dựng tập luật để phát hiện Botnet
Như đã trình bày ở trên, để Snort hoạt động một cách hiệu quả thì một trong những yếu tố quan trọng cần chú ý là các luật viết cho Snort. Khi Snort hoạt động, nó sẽ đọc các tập luật, giám sát luồng gói tin chạy qua hệ thống và sẽ phản ứng với bất kỳ gói tin hay luồng dữ liệu nào phù hợp với tập luật của nó. Cấu trúc của một luật trong Snort bao gồm hai phần là tiêu đề luật (rule header) và tùy chọn luật (rule option) như Hình 6.
Hình 6: Cấu trúc một luật trong Snort IDS
Các tiêu đề luật chứa các trường mô tả cách hành động (rule‟s action), giao thức gói tin và địa IP chỉ nguồn đích cũng như các thông tin về cổng thể hiện trong Hình 7. Trong đó:
- Action: xác định kiểu hành động thực hiện khi một tiêu chuẩn được so sánh trong tập luật giống với gói tin dữ liệu. Hành động tiếp theo là tạo ra các cảnh báo hoặc ghi lại các thông điệp log.
- Protocol: được sử dụng để áp dụng luật trên gói tin cho một giao thức cụ thể. Đây là tiêu chuẩn đầu tiên để được áp dụng trong luật. Một vài giao thức được sử dụng là TCP, UDP, ICMP…
- Address: xác định địa chỉ nguồn và đích. Địa chỉ có thể là của một máy chủ, nhiều máy chủ hoặc địa chỉ mạng.
- Port: Được áp dụng trong trường hợp giao thức là UDP hoặc TCP, xác định cổng nguồn và đích của một gói tin.
44
- Direction: được dùng để xác định chiều truyền tin.
Hình 7: Cấu trúc phần tiêu đề của luật
Rule option theo sau rule header và được đóng gói trong dấu ngoặc đơn. Có thể có một hoặc nhiều tùy chọn khác nhau cho một luật và được cách nhau bởi dấu phẩy. Nếu sử dụng nhiều option thì các option này sẽ hình thành một phép logic AND và một action trong header chỉ thực hiện khi tất cả các option đều đúng. Một option bao gồm hai thành phần là từ khóa và đối số (được định nghĩa bên trong dấu ngoặc đơn và cách nhau bằng dấu chấm phẩy). Các đối số được phân biệt bằng dấu hai chấm. Một nguyên tắc Snort có thể có một (hoặc nhiều) lựa chọn trong một lựa chọn quy tắc. Có rất nhiều từ khóa khác nhau được sử dụng trong tùy chọn của một luật như là:
- Content: Một đặc tính quan trọng của Snort là khả năng tìm thấy một mẫu dữ liệu trong một gói tin. Mẫu có thể tồn tại dưới dạng một chuỗi ASCII hoặc dưới dang mã hexa. Giống như virus, nhưng gói tin xâm nhập cũng có các dấu hiệu và nội dung từ khóa để có thể tìm ra các dấu hiệu trong các gói tin.
- Msg: Từ khóa msg được sử dụng để thêm một chuỗi ký tự vào việc ghi log và cảnh báo. Ta có thể thêm một thông điệp trong hai dấu ngoặc kép sau từ khóa này.
- Rev: Từ khóa rev được thêm vào option của một luật để chỉ ra số reversion của luật. Nếu bạn cập nhật luật, bạn có thể sử dụng từ khóa này để phân biệt giữa các phiên bản.
45
chuyển theo một hướng cụ thể. Bạn có thể sử dụng các tùy chọn với từ khóa để xác định hướng. Các tùy chọn sau đây có thể sử dụng với từ khóa này: to_client, to_server, from_client, from_server.
- …
Một ví dụ về luật trong Snort IDS nói trên được thể hiện trong hình 8. Nếu có một gói tin trong hệ thống sử dụng giao thức ICMP từ địa chỉ nguồn là 192.168.1.10 ở bất kỳ cổng nào được gửi đến bất kỳ địa chỉ đích và công đích nào thì hệ thống sẽ sinh ra một cảnh báo với thông điệp là cố gắng tấn công ICMP “ICMP Attempt Attack”
Hình 8: Ví dụ về một luật trong snort IDS
Có thể nói rằng việc xây dựng một tập luật cho Snort là một công việc vừa đơn giản nhưng cũng đầy phức tạp. Chìa khóa cho việc xây dựng một tập luật tốt là xác định được đúng dấu hiệu của các gói tin mà bạn muốn phát hiện. Nếu một luật bắt quá nhiều các gói tin khác nhau có thể dẫn đến tỷ lệ cảnh báo giả cao. Mặt khác, nếu luật được xác định quá chặt chẽ sẽ có khả năng bỏ lỡ một số gói tin tấn công cùng dạng khác. Ngoài ra các hình thức tấn công liên tục được thay đổi và cải tiến ngày này sang ngày khác. Vì vậy tập luật của Snort cũng cần phải được theo dõi, cập nhật và đào thải thường xuyên. Thông thường có ba phương pháp tiếp cận chính để xác định tập luật cho IDS [7].
46
nhất chúng ta cần phải xác định được các kiểu gói tin nào được phép lưu thông trên mạng dựa trên sự hiểu biết và vận dụng các kỹ năng về hệ thống mạng, kỹ năng về phân tích giám sát mạng, phân tích file log. Không chỉ đơn thuần là việc xác định dựa trên địa chỉ IP, hay số hiệu cổng mà các thông tin khác như nội dung, kích thước và các tham số khác của các gói tin trên cả ba tầng: mạng (Network), giao vận (Transport) và ứng dụng (Application) cũng cần được quan tâm. Tập luật được định nghĩa sẽ bao gồm các luật cho phép tất cả các kiểu gói tin được phép đi qua mà không tạo ra các cảnh báo và các luật đưa ra cảnh báo đối với các gói tin không nằm trong danh sách được phép. Ưu điểm chính của phương pháp này cho phép có thể thu bắt được tất cả các gói tin không được phép, từ đó có thể phân tích phát hiện được các dạng tấn công mới. Tuy nhiên phương pháp này có thể gây ra rất nhiều cảnh báo nhầm và khó xác định một cảnh báo là đúng hay sai, mức độ nghiêm trọng như thế nào, vì vậy đòi hỏi người phân tích IDS phải có kỹ năng cao trong lĩnh vực này.
Xác định các luật dựa trên các kiểu gói tin nghi ngờ: Ý tưởng cơ bản của
phương pháp này là định nghĩa các luật để tạo ra cảnh báo nếu gói tin có chứa các giá trị tham số mà các dịch vụ của hệ thống mạng không sử dụng đến. Để thực hiện phương pháp này, cần phải phân tích nội dung của dòng dữ liệu được gửi trực tiếp đến từng dịch vụ mạng cụ thể, bằng việc xác định các giá trị tham số mà dịch vụ sẽ sử dụng trong quá trình hoạt động. Tiếp theo cần định nghĩa các luật để đưa ra cảnh báo đối với những gói tin chứa giá trị tham số mà dịch vụ không sử dụng. Ưu điểm của phương pháp này có thể phát hiện các tấn công chính xác hơn phương pháp thứ nhất. Cho phép đưa ra mức độ nghiêm trọng cho mỗi cảnh báo. Tuy nhiên phương pháp này đòi hỏi đầu tư nhiều công sức hơn trong việc xác định dòng dữ liệu không
47
mong muốn của hệ thống. Yêu cầu cập nhật thay đổi khi các dịch vụ của hệ thống có sự thay đổi. Phương pháp này nên áp dụng cho các IDS dạng HOST-BASED hoặc đặt ở các vùng cần giám sát cho các dịch vụ quan trọng.
Xác định dựa trên dấu hiệu tấn công đã biết: Phương pháp này đòi hỏi người
định nghĩa phải biết chính xác các dấu hiệu của các kiểu tấn công, các luật được định nghĩa để tạo ra cảnh báo khi các giá trị tham số hoặc nội dung của gói tin có chứa các dấu hiệu giống với dấu hiệu của các tấn công đã biết. Ưu điểm của phương pháp này tạo ra các cảnh báo với tỉ lệ chính xác rất cao. Nhưng phương pháp này sẽ bỏ sót nhiều dạng tấn công mới hoặc những dạng tấn công mà người định nghĩa không biết.
Trong luận văn này, tôi tập trung vào việc phát hiện và xử lý các dạng tấn công Botnet và phát hiện bot nên tôi sẽ xây dựng các luật dựa trên các dấu hiệu tấn công Botnet đã biết. Để có thể xây dựng được một tập luật giúp phát hiện các Botnet thì chúng ta cần phải hiểu rõ cách thức một hệ thống bị xâm nhập và cách thức tấn công của Botnet. Những kiến thức này có thể thu được thông qua việc thu bắt các gói tin tấn công Botnet trong thực tế và tiến hành phân tích để tìm ra các dấu hiệu của các gói tin đó giúp nhận biết được các gói tin độc hại.
Để nghiên cứu các dạng tấn công của Botnet tôi tiến hành phân tích các gói tin tấn công sinh ra bởi các Botnet thu bắt đươc trong thực tế thông qua bộ dữ liệu MTFC (Malware Capture Facility Project) [8] và các gói tin thu bắt trong quá trình mô phỏng tấn công bằng phần mềm Bonesi để xây dựng các luật cho Snort IDS. Trong đó MTFC là một dự án của trường đại học kỹ thuật Cộng hoà Séc được tiến hành thực hiện lại một số loại botnet đã biết trong môi trường thực tế và tiến hành thu bắt các lưu lượng gói tin trong một quá trình hoạt động lâu dài. Sau đó các gói
48
tin này được phân tích một cách thủ công và tự động rồi gán nhãn cho từng loại lưu lượng như các pha của botnet, gói tin tấn công, gói tin thông thường… Các bộ dữ liệu đều được công khai và có thể tải về dễ dàng ở định dạng pcap hoặc file text. Dựa trên các bộ dữ liệu đã được phân loại là các lưu lượng botnet, tôi tiến hành phân tích và tìm ra các đặc trưng của các gói tin tấn công đó. Từ đó có thể xây dựng thành các luật đẻ phát hiện các dạng tấn công đó. Ví dụ một số luật được trình bày như bảng dưới đây:
STT Luật
1 alert tcp any any -> any any (msg:"Possible NBSS Neris.exe SENT TO BROWSER"; flow:to_server, established; content:"ACACACAC"; ttl:128; sid:2000341; rev:1)
2 alert tcp any any -> any any (msg:"Neris IRC sent to HTTP"; flow:to_server, established; content:"7& salt="; ttl:128; sid:2000366; rev:1)
3 alert tcp any any -> any any (msg:"TROJAN Possible IRC Bot DDOS Common Commands"; flow:to_server, established; content:"AAC6F603"; ttl:128; sid:1000255; rev:7)
4 alert udp any any -> any any (msg:"IRC-bot sent spam BROWSER"; flow:to server, established; content:"FENEBEOC"; ttl:128; sid:1000199; rev:1)
5 alert tcp any any -> any any (msg:"Win32. Domsingx.A contact to C&C server attempt"; flow:to_server, established; content:"ent-Type"; ttl:128; sid:4000309; rev:2)
49
Bằng phương pháp tương tự như trên, tôi tiến hành mô phỏng tấn công dựa trên phần mềm Bonesi và sử dụng wireshark để tiến hàng thu bắt tất cả các gói tin và từ đó tiến hành phân tích đưa ra được tập luật để phát hiện được dạng tấn công trên.
alert udp any any -> $HOME_NET any (msg:"DDoS Attack UDP"; content:"|00 00 00 00 00 00 00 00|"; rawbytes; sid:1000299; rev:1; classtype: denial-of-service;)