Viết mới và thay đổi Snortrule

Một phần của tài liệu Đề tài hệ thống phát hiện và phòng chống xâm nhập snort (Trang 31 - 33)

IV. Cấu hình Snort nâng cao 1 Các tiện ích

b.Viết mới và thay đổi Snortrule

(1) Các phương pháp chính

- Chỉnh sửa rule có sẵn

- Tạo 1 rule từ các kiến thức hệ thống mạng - Tạo 1 rule bằng việc phân tích lưu thông mạng

(2) Một ví dụ cơ bản trong việc viết và chỉnh sửa Snort rule

Để có thể viết hoặc sửa 1 Snort rule có hiệu quả và chỉ kích hoạt đúng với lưu thông mạng mà ta muốn, việc nghiên cứu và phát hiện ra các thuộc tính riêng của lưu thông

đó là cực kỳ quan trọng. Một thuộc tính có thể chưa đặc tảđược lưu thông đó nhưng tập các thuộc tính phải là một đặc tảđầy đủđể có thể phân biệt.

Ta lấy 1 ví dụ với lưu thông mạng của tấn công Cross-site scripting ( XSS )

Cross-site Scripting là một kiểu tấn công đến các Website cho phép các mã độc được nhúng vào các trang Web được tạo động. Nếu Website không kiểm tra các tác vụ

nhập từ người dùng, kẻ tấn công có thể chèn những đoạn mã làm cho ứng dụng Web hoạt động 1 các bất thường. XSS thường dùng đểđánh cắp cookies ( dùng để xác thực ), truy cập các phần không được phép truy cập, hay tấn công ứng dụng Web.

Điểm chính của tấn công XSS là 1 scripting tag được chèn vào 1 trang cụ thể. Đây chính là điểm mấu chốt mà ta có thể dùng để viết 1 rule.

Các tag thường được chèn vào là <SCRIPT> , <OBJECT>, <APPLET>, <EMBED> Giả sử ta chọn lọc tag <SCRIPT>

Trước tiên ta tạo 1 rule kích hoạt khi lưu thông mạng có chứa <SCRIPT> trong nội dung :

alert tcp any any -> any any (content:”<SCRIPT>”; msg:”WEB-MISC XSS attempt”;)

Khi xảy ra tấn công XSS, rule sẽđược kích hoạt. Tuy nhiên nó cũng sẽ kích hoạt với các lưu thông mạng bình thường như khi 1 người dùng gửi 1 email với JavaScript tạo ra 1 sai tích cực ( false positive ). Để tránh việc này, ta phải sửa rule chỉ kích hoạt với các lưu thông Web

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (content:”<SCRIPT>”; msg:”WEB-MISC XSS attempt”;)

Thay đổi như trên có thể phát hiện ra các lưu thông có chứa <SCRIPT> trong nội dung liên quan đến các phiên HTTP. Nó được kích hoạt khi lưu thông từ mạng ngoài ( $EXTERNAL_NET ) gửi tới máy chủ Web ( $HTTP_SERVERS ) trên port mà dịch vụ HTTP chạy ( $HTTP_PORTS ).

Tuy nhiên, khi nạp rule này, ta vẫn sẽ thấy các cảnh báo sai tích cực được tạo ra mỗi khi 1 trang được yêu cầu có chứa JavaScript. Như vậy ta phải tinh chỉnh lại rule và tìm kiếm những thuộc tính riêng biệt của lưu thông XSS

Tấn công XSS xảy ra khi người dùng chèn tag <SCRIPT> trong 1 yêu cầu gửi đến Server, nếu Server gửi tag <SCRIPT> trong 1 phản hồi thì nó thường là 1 lưu thông bình thường. Như vậy ta có thể tinh chỉnh rule như sau :

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:”WEB- MISC XSS attempt”; flow:to_server,established; content:”<SCRIPT>”;)

Ởđây ta đã sử dụng từ khóa lựa chọn flow trong mục TCP-related, dùng khả năng tái tạo luồng TCP của Snort để nhận diện hướng của luồng lưu thông. 2 option to_server

established chỉđịnh rule áp dụng cho các phiên kết nối từ người dùng tới Server.

Đây chính là đặc trưng của tấn công XSS.

Như vậy ta đã có 1 rule nhận diện được đặc trưng của luồng lưu thông trong tấn công XSS, để tránh việc kẻ tấn công có thể tránh được bằng kỹ thuật lẩn tránh ( Evasion techniques ) như thay <SCRIPT> bằng các kiểu case-sensitive như <ScRiPT>, <script>, .v.v ta có thể dùng thêm từ khóa lựa chọn nocase ( not case-sensitive ) của mục Content-related, và quy định mức độưu tiên :

alert $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:”WEB- MISC XSS attempt”; flow:to_server,established; content:”<SCRIPT>”; nocase; )

Đến đây thì việc tạo 1 rule phát hiện tấn công XSS hoàn tất.

---o00---

Một phần của tài liệu Đề tài hệ thống phát hiện và phòng chống xâm nhập snort (Trang 31 - 33)