CHƯƠNG 2. NGHIÊN CỨU BỘ CÔNG CỤ GIÁM SÁT, CHỐNG TẤN CÔNG MẠNG
2.3. Bộ công cụ chống tấn công mạng - Snort
2.3.1. Kiến trúc của Snort
Snort bao gồm nhiều thành phần, với mỗi phần có một chức năng riêng. Các phần chính đó là:
- Module giải mã gói tin (Packet Decoder) - Module tiền xử lý (Preprocessors)
- Module phát hiện (Detection Engine)
- Module log và cảnh báo (Logging and Alerting System) - Module kết xuất thông tin (Output Module)
- Kiến trúc của Snort đƣợc mô tả trong hình sau:
Hinh 2.9. Mô hình kiến trúc hệ thống Snort [5]
Khi Snort hoạt động nó sẽ thực hiện việc lắng nghe và thu bắt tất cả các gói tin nào di chuyển qua nó. Các gói tin sau khi bị bắt đƣợc đƣa vào Module giải mã gói tin. Tiếp theo gói tin sẽ đƣợc đƣa vào module tiền xử lý, rồi module phát hiện.
Tại đây tùy theo việc có phát hiện đƣợc xâm nhập hay không mà gói tin có thể đƣợc bỏ qua để lưu thông tiếp hoặc được đưa vào module Log và cảnh báo để xử lý. Khi
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
các cảnh báo đƣợc xác định module kết xuất thông tin sẽ thực hiện việc đƣa cảnh báo ra theo đúng định dạng mong muốn. Sau đây ta sẽ đi sâu vào chi tiết hơn về cơ chế hoạt động và chức năng của từng thành phần. [5]
2.3.1.1. Module giải mã gói tin
Snort sử dụng thư viện pcap để bắt mọi gói tin trên mạng lưu thông qua hệ thống. Hình sau mô tả việc một gói tin Ethernet sẽ đƣợc giải mã thế nào:
Hinh 2.10. Quy trình xử lý một gói tin Ethernet [5]
Trong sơ đồ trên mô phỏng gói tin đƣợc đƣa vào decoder dành cho ethernet, hàm DecodeEthPkt đƣợc dùng. Sau khi decode gói tin, thông tin về MAC nguồn và MAC đích đƣợc làm rõ và dựa vào thông tin về lớp tiếp theo sẽ đƣợc gọi. Giả sử trong trường hợp giá trị của ether_type lúc này là 2048 (ETHER_TYPE_IP) Snort biết đƣợc lớp tiếp theo sẽ là IP và gọi hàm DecodeIP. Quy trình sẽ tiếp tục cho đến khi không còn decoder nào được gọi. Trong trường hợp gói tin có link type là Ethernet thì gói tin sẽ đƣợc chuyển vào hàm DecodeEthPkt, sau đó hàm này sẽ gọi DecodeIP, tiếp sau là DecodeTCP.
Sau khi decode cấu trúc của một gói tin sẽ đƣợc làm rõ, lúc nào gói tin cũng chứa nhiều con trỏ khác nhau trỏ đến những phần khác nhau của gói tin, điều này cho phép Snort có thể truy xuất nhanh đến những thành phần trong gói tin. Những
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
con trỏ này cho phép các thành phần của Snort nhƣ module tiền xử lý, module phát hiện và module kết xuất thông tin có thực hiện công việc một cách dễ dàng sau này.
Một gói tin sau khi đƣợc giải mã sẽ đƣợc đƣa tiếp vào module tiền xử lý. [5]
2.3.1.2. Module tiền xử lý
Module tiền xử lý của Snort đóng một vai trò rất quan trọng với nhiều chức năng khác nhau phát hiện các protocol không hợp lệ, phát hiện thông qua các số liệu thu thập đƣợc hoặc phát hiện trực tiếp mà không cần dựa vào rule.
Module tiền xử lý là một đoạn code đƣợc biên dịch vào Snort nhằm xây dựng lại packet, traffic flow và kiểm tra traffic trong mạng để phát hiện tấn công và cảnh báo.
Protocol Decoder Traffic đầu tiên phải đi vào decoder, để decode thông tin ban đầu
IP
Defragmentation (frag3)
frag3 là module tiền xử lý để xây dựng lại gói tin từ những gói tin đã bị phân mảnh trong quá trình truyền
Stateful Inspection (stream5)
stream5 sau đó sẽ kiểm tra xem gói tin đó có phải là một phần của session hay không.
Stream Reasesembly (stream5)
stream5 tiến hành xây dựng lại gói tin thành 1 TCP stream từ những thông tin nó thu đƣợc.
Application
Layer Module tiền xử lý
Những module tiền xử lý này đƣợc dùng để xây dựng lại những gói tin, protocol thông thường và thậm chí có thể đưa ra cảnh báo nếu cần.
Module phát hiện Sau cùng gói tin sẽ đƣợc chuyển cho detection engine để tiến hành đánh giá dựa vào các rule.
Bảng 2.1. Các module tiền xử lý
Module tiền xử lý frag3 đƣợc phát triển nhằm thay thế cho frag2, frag3 có tốc độ xử lý nhanh hơn frag2, quản lý data phức tạp hơn frag2 và chống những thủ thuật nhằm vƣợt qua frag2.
Module tiền xử lý frag3 đƣa ra khái niệm “target-base” IDS, tức là frag3 sẽ xây dựng lại gói tin bị phân mảnh dựa vào địa chỉ đích mà gói tin sẽ đến. Bởi vì mỗi hệ điều hành xây dựng lại gói tin theo một các khác nhau và Snort không hề biết địa
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
chỉ đích của gói tin mà nó đang ráp mảnh là hệ điều hành gì. Một gói tin có thể xem là bình thường với hệ điều hành này, nhưng nó có thể được xem là bất thường với một hệ điều hành khác.
Module tiền xử lý frag3 xây dựng lại gói tin từ những phân mảnh sau đó đẩy gói tin đi. Gói tin đƣợc log lại hoặc có thể đi qua module tiền xử lý tiếp theo và quy trình kiểm tra một lần nữa. Điều này có nghĩa là traffic sẽ đƣợc phân tích hai lần, trước phân mảnh và sau khi phân mảnh.
Module tiền xử lý stream5 là một module tiền xử lý dành cho việc thiết lập lại các TCP session, giống nhƣ frag3 stream5 cung cấp chức năng target-based. Ngoài ra stream5 có thể theo dõi cả TCP và UDP session. Module tiền xử lý stream5 thay thế cho cả stream4 và flow. Vì stream5 là sự thay thế của stream4, do đó cả hai không thể đƣợc sử dụng đồng thời, nếu sử dụng stream5 thì phải gỡ bỏ stream4 và flow module tiền xử lý. Với stream5, flow và flowbits trong rule option đều có thể sử dụng. [5]
Chức năng Transport protocol
Một TCP session đƣợc bắt đầu bằng three way handshake protocol và kết thúc bằng cờ FIN và đƣợc hai bên xác nhận bằng cờ ACK. Với UDP một session đƣợc xác định thông qua một chuỗi các gói tin UDP đƣợc trao đổi giữa 2 bên thông qua các port. ICMP sẽ đƣợc theo dõi cho mục đích kiểm tra unreachable và unavailable service của TCP và UDP.
Target-based
Module tiền xử lý stream5 cũng giống nhƣ frag3, stream5 đƣa ra khái niệm target-based để xử lý hiện tƣợng dữ liệu trùng lắp giữa những gói tin và những giao dịch TCP bất thường. Phương pháp dùng để xử lý trùng lắp dữ liệu, TCP Timestamps, Data on SYN, FIN và khởi tạo lại sequence numbers…và policy hỗ trợ bởi stream5 là kết quả của việc mở rộng nghiên cứu trên nhiều hệ điều hành khác nhau để có từng policy cụ thể cho từng hệ đều hành.
Stream API
Module tiền xử lý stream5 hỗ trợ stream API, cho phép các bộ phận kiểm tra tính hợp lệ của protocol và module tiền xử lý cấu hình việc tập hợp gói tin theo yêu
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
cầu của ứng dụng ở lớp của application, xác định session nào nên bỏ qua và cập nhật thông tin nhận dạng về session như protocol, hướng gói tin…
Nhận dạng sự bất thường
Protocol TCP bất thường, thường là những gói tin SYN nhưng có kèm theo data hay dữ liệu nằm ngoài TCP windows size…những chức năng này thường được cấu hình thông qua tùy chọn detect_anomalies của Stream5 TCP module tiền xử lý.
Một số module tiền xử lý khác đƣợc Snort dùng để xây dựng lại các application protocol nhƣ arpspoof, sfPortscan,rpe_decode, http-inspect, ftp_telnet, ssh module tiền xử lý…[5]
2.3.1.3. Module phát hiện
Đây là module quan trọng nhất của Snort. Nó chịu trách nhiệm phát hiện các dấu hiệu xâm nhập. Module phát hiện sử dụng các luật được định nghĩa trước để so sánh với dữ liệu thu thập đƣợc từ đó xác định xem có xâm nhập xảy ra hay không.
Rồi tiếp theo mới có thể thực hiện một số công việc nhƣ ghi log, tạo thông báo và kết xuất thông tin.
Một module phát hiện có khả năng tách các phần của gói tin ra và áp dụng các luật lên từng phần nào của gói tin đó. Các phần đó có thể là:
+ IP header
+ Header ở tầng giao vận: TCP, UDP
+ Header ở tầng ứng dụng: DNS header, HTTP header, FTP header, … + Phần tải của gói tin (bạn cũng có thể áp dụng các luật lên các phần dữ liệu đƣợc truyền đi của gói tin)
Một vấn đề trong Module phát hiện đó là việc xử lý thế nào khi một gói tin bị phát hiện bởi nhiều luật. Do các luật trong Snort cũng đƣợc đánh thứ tự ƣu tiên, nên một gói tin khi bị phát hiện bởi nhiều luật khác nhau, cảnh báo đƣợc đƣa ra sẽ là cảnh báo ứng với luật có mức ƣu tiên lớn nhất.
Sau khi đƣợc xử lý bởi module tiền xử lý, gói tin đƣợc chuyển vào module phát hiện. Module phát hiện giống nhƣ một module tiền xử lý và nó là module tiền xử lý đƣợc sử dụng cuối cùng. Nhiệm vụ của module phát hiện là đánh giá gói tin dựa vào các rule có sẵn trong Snort.
Để làm điều này Snort sử dụng một rule tree có nghĩa là gói tin đƣợc so sánh dựa vào RTN (Rule Tree Node), nếu một RTN đƣợc thỏa mãn nó sẽ tìm tiếp trong
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
các danh sách của các OTN (Opt Tree Node). Quy trình tiếp tục cho đến khi Snort tìm đến hết rule tree.
RTN xử lý dữ liệu dựa trên rule header, OTN xử lý dữ liệu dựa trên rule option. Mặc dù vẫn sử dụng chức năng tìm theo danh sách cho chức năng đánh giá và phát hiện các gói tin. Nhƣng Snort không còn dùng cây của các OTN nữa. Thay vào đó Snort dùng fast pattern matcher, fast pattern matcher xác định một tập hợp các OTN và OTN nào sẽ đƣợc đánh giá. Sau đó Snort kiểm tra từng OTN và xắp xếp thành một hằng đợi gồm các OTN đã khớp với nội dung trong gói tin.
2.3.1.4. Module log và cảnh báo
Tùy thuộc vào việc module phát hiện có nhận dạng đuợc xâm nhập hay không mà gói tin có thể bị ghi log hoặc đƣa ra cảnh báo. Các file log là các file text dữ liệu trong đó có thể được ghi dưới nhiều định dạng khác nhau chẳng hạn tcpdump.
Sau khi tất cả các module tiền xử lý toàn tất công việc của chúng và gói tin lúc này đã đƣợc đánh giá bởi tập các rule thông qua module phát hiện. Snort bắt đầu công việc ghi lại log và đƣa ra cảnh báo. Snort không đƣa ra cảnh báo ngay lập tức khi gói tin khớp với rule đầu tiên trong tập rule mà sẽ ghi lại sự kiện và cảnh báo đó vào một hàng đợi, sau khi gói tin đƣợc so sánh hết trong tập rule, Snort sẽ đánh giá xem cảnh báo nào sẽ đƣợc đƣa ra.
2.3.1.5. Module kết xuất thông tin
Module này có thể thực hiện các thao tác khác nhau tùy theo việc bạn muốn lưu kết quả xuất ra như thế nào. Tùy theo việc cấu hình hệ thống mà nó có thể thực hiện các công việc nhƣ là:
- Ghi log file.
- Ghi syslog: syslog và một chuẩn lưu trữ các file log được sử dụng rất nhiều trên các hệ thống Unix, Linux.
- Ghi cảnh báo vào cơ sở dữ liệu.
- Tạo file log dạng xml: Việc ghi log file dạng xml rất thuận tiện cho việc trao đổi và chia sẻ dữ liệu.
- Cấu hình lại Router, firewall.
- Gửi các cảnh báo đƣợc gói trong gói tin sử dụng giao thức SNMP. Các gói tin dạng SNMP này sẽ đƣợc gửi tới một SNMP server từ đó giúp cho việc quản lý các cảnh báo và hệ thống IDS một cách tập trung và thuận tiện hơn.
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
- Gửi các thông điệp SMB (Server Message Block) tới các máy tính Windows.
- Nếu không hài lòng với các cách xuất thông tin nhƣ trên, ta có thể viết các module kết xuất thông tin riêng tuỳ theo mục đích sử dụng.