Tài liệu Khóa luận phòng chống virus với snort

  • Số trang: 125 |
  • Loại file: PDF |
  • Lượt xem: 475 |
  • Lượt tải: 0
minhminh

Đã đăng 411 tài liệu

Mô tả:

Đi cùng với sự phát triển không ngừng của các nhóm ngành nghề kinh tế, xã hội; lĩnh vực khoa học số cũng đã và đang d ần chiếm giữ vị thế quan trọng trong xu thế phát triển chung của xã hội loài người. Nhận thấy được tầm quan trọng đó, cùng với sự yêu thích cá nhân, tôi đã tham gia khóa học chu yên ngành mạng máy tính tại trường Đại Họ c Hoa Sen. Bên cạnh sự nỗ lực của bản thân, cùng v ới sự giúp đỡ, hỗ trợ của các thầy cô, tôi đã có kết quả tốt và có được cơ hội thực hiện đề tài tốt nghiệp này
KHOA KHOA HỌC CÔNG NGHỆ NGÀNH MẠNG MÁY TÍNH LỚP VT081A BÁO CÁO ĐỀ TÀI TỐT NGHIỆP Tên sinh viên thực hiện: Giáo viên hướng dẫn: QUAN MINH TÂM LƯU THANH TRÀ Ngày nộp báo cáo: ............................................................. Người nhận báo cáo (ký tên và ghi rõ họ tên): …………………………………………………………………………………….. Tháng 07 /năm 2011 TRÍCH YẾU Đi cùng với sự phát triển không ngừng của các nhóm ngành nghề kinh tế, xã hội; lĩnh vực khoa học số cũng đã và đang dần chiếm giữ vị thế quan trọng trong xu thế phát triển chung của xã hội loài người. Nhận thấy được tầm quan trọng đó, cùng với sự yêu thích cá nhân, tôi đã tham gia khóa học chuyên ngành mạng máy tính tại trường Đại Học Hoa Sen. Bên cạnh sự nỗ lực của bản thân, cùng với sự giúp đỡ, hỗ trợ của các thầy cô, tôi đã có kết quả tốt và có được cơ hội thực hiện đề tài tốt nghiệp này. Để đạt kết quả tốt với những mục tiêu đề ra, tôi đã tham khảo thêm tư liệu bên ngoài, cùng với sự hướng dẫn trực tiếp của giáo viên Lưu Thanh Trà. Khi bắt tay vào thực hiện đề tài tốt nghiệp này, tôi mới nhận thấy được nhưng khó khăn trong kỹ thuật thực tiễn, cũng như những lỗ hổng kiến thức chưa vững chắc của bản thân để củng cố và rèn luyện thêm. Tôi luôn cố gắng để hoàn thiện các kỹ năng chuyên ngành, kiến thức cần có trong nghề không để chỉ phục vụ cho luận án tốt nghiệp này, mà đó sẽ là nền tảng tốt cho tôi trong công việc ở tương lai. 1 MỤC LỤC TRÍCH YẾU................................................................................................................. II MỤC LỤC .................................................................................................................. III ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN ........................................................ V LỜI CẢM ƠN ............................................................................................................ VI NHẬP ĐỀ ...................................................................................................................... 7 NỘI DUNG ĐỀ TÀI ..................................................................................................... 8 CHƯƠNG I: TỔNG QUAN IDS-IPS, SNORT..................................8 1. TỔNG QUAN IDS – IPS ........................................................................................ 8 1.1. Khái niệm ..................................................................................................................................................... 8 1.2. Phương thức phát hiện ................................................................................................................................. 9 1.3. Phân loại ....................................................................................................................................................... 9 2. TỔNG QUAN SNORT TRÊN MÃ NGUỒN MỞ ................................................ 15 2.1. Giới thiệu .................................................................................................................................................... 15 2.2. Kiến trúc Snort............................................................................................................................................ 15 2.2.1. Packet decoder ....................................................................................................................................... 16 2.2.2. Preprocessors ......................................................................................................................................... 17 2.2.3. Detection Engine.................................................................................................................................... 19 2.2.4. Outputs................................................................................................................................................... 19 3. RULES .................................................................................................................. 20 3.1. Giới thiệu .................................................................................................................................................... 20 3.2. Rule header ................................................................................................................................................. 20 3.3. Rule option ................................................................................................................................................. 22 3.3.1. Nhóm General ........................................................................................................................................ 23 3.3.2. Nhóm Payload........................................................................................................................................ 27 3.3.3 Nhóm Non-payload................................................................................................................................ 37 3.3.4 Nhóm Post-Detection ............................................................................................................................. 44 CHƯƠNG II: TRIỂN KHAI SNORT...............................................48 1. YÊU CẦU .............................................................................................................. 48 2. CÀI ĐẶT ............................................................................................................... 49 3. CẤU HÌNH CƠ BẢN............................................................................................ 51 4. SỬ DỤNG BASE THEO DÕI CẢNH BÁO ........................................................ 53 5. TÍCH HỢP XÁC ĐỊNH VÙNG CỦA ĐỊA CHỈ IP............................................. 59 6. THEO DÕI NHỮNG CẢNH BÁO SNORT TRÊN GOOGLEEARTH. ........... 60 7. TÙY CHỈNH CẤU HÌNH SNORT.CONF .......................................................... 65 CHƯƠNG III: XÂY DỰNG SNORT IPS ........................................70 1. SNORT INLINE ................................................................................................... 70 1.1. Giới thiệu .................................................................................................................................................... 70 1.2. Triển khai.................................................................................................................................................... 70 2. SNORT SAM......................................................................................................... 73 2.1. Giới thiệu .................................................................................................................................................... 73 2.2. Triển khai.................................................................................................................................................... 73 2.2.1. Triển khai SnortSam và iptables ................................................................................................................. 74 2.2.2. Triển khai SnortSam và ACL trên router Cisco .......................................................................................... 78 CHƯƠNG IV: TÌM HIỂU CÁC LUẬT DÙNG TRONG SNORT ..84 1. NGUYÊN TẮC VIẾT LUẬT ................................................................................ 84 2. KHẢO SÁT LUẬT 1 ............................................................................................. 84 3. KHẢO SÁT LUẬT 2 ............................................................................................. 85 4. KHẢO SÁT LUẬT 3 ............................................................................................. 87 5. KHẢO SÁT LUẬT 4 ............................................................................................. 89 6. KHẢO SÁT LUẬT 5 ............................................................................................. 89 7. KHẢO SÁT LUẬT 6 ............................................................................................. 90 8. KHẢO SÁT LUẬT 7 ............................................................................................. 90 9. KHẢO SÁT LUẬT 8 ............................................................................................. 94 10. KHẢO SÁT RULE CHỐNG DOS/DDOS TẠI APPLICATION LAYER ........ 100 11. PHP – SHELL UPLOAD ................................................................................... 105 KHÓ KHĂN – THUẬN LỢI ................................................................................... 108 HƯỚNG PHÁT TRIỂN TƯƠNG LAI ................................................................... 109 PHỤ LỤC .................................................................................................................. 110 1. TÀI LIỆU THAM KHẢO ................................................................................... 110 2. WEBSITE THAM KHẢO .................................................................................. 110 3. PHỤ LỤC HÌNH ẢNH ...................................................................................... 111 1 ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN ..................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... ...................................................................................................................................... Ngày… tháng… năm… KÝ TÊN ……………………………………….. LỜI CẢM ƠN Với đề tài “Tìm hiểu và phát triển các luật để phòng chống các virus mới sử dụng hệ thống mã nguồn mở Snort”, tôi đã có dịp tiếp xúc thực tế với hệ thống IDSIPS trên môi trường mã nguồn mở và phương án triển khai trong môi trường thực tế, tiếp thu được một số dạng tấn công qua môi trường internet… Để được kết quả trên, tôi chân thành cảm ơn thầy Lưu Thanh Trà – trưởng ngành Mạng máy tính, trường Đại học Hoa Sen, đã hướng dẫn chi tiết, đề xuất những phương án mang tính chất định hướng, tạo thuận lợi cho việc nghiên cứu đề tài để tôi có thể hoàn thành quyển báo cáo này. Ngoài ra, với những kiến thức chuyên ngành thầy đã chia sẻ trong thời gian làm báo cáo sẽ thật sự giúp ích cho tôi trong công việc tương lai theo hướng xây dựng và kiện toàn bảo mật bảo mật hệ thống. Trong thời gian thực hiện nghiên cứu đề tài từ 03/2011 đến 07/2011, thầy đã hỗ trợ tôi tiếp xúc với những môi trường an ninh mạng thực tế, tạo tiền đề cho việc định hướng công việc trong tương lai. Trân trọng. 3 NHẬP ĐỀ Trong thời gian gần đây, an ninh mạng được xem như là vấn đề nan giải cho các nhà quản trị mạng và những công ty cung cấp giải pháp bảo mật… Với hàng loạt các cuộc tấn công vào các cơ quan chính phủ, công ty, ngân hàng… đã tạo nên một bài toán là:  Khắc phục cho hệ thống đã bị tấn công.  Phương án chống lại áp dụng cho những hệ mạng khác.  Cập nhật mới nhất những dạng tấn công để phòng tránh trước khi cuộc tấn công xảy ra. Với những hãng cung cấp giải pháp an ninh nổi tiếng như Kaspersky, Norton, Cisco, Checkpoint…thì giá thành triển khai cao, không thể tham khảo mã nguồn vì đây là những sản phẩm thương mại phần lớn là mã nguồn đóng (close source). Tồn tại cho việc nghiên cứu và áp dụng thực tế, Snort đã phát huy tính năng mạnh mẽ thông qua khả năng đáp ứng nhu cầu an ninh trên những hệ mạng khác nhau. Khả năng tùy biến linh động trên mã nguồn mở giúp Snort có một số lượng người dùng lớn trên thế giới, tạo nên một cộng đồng phát triển Snort có chiều rộng về số thành viên lẫn chiều sâu về kiến thức bảo mật. 4 NỘI DUNG ĐỀ TÀI CHƯƠNG I: TỔNG QUAN IDS-IPS, SNORT 1. TỔNG QUAN IDS – IPS 1.1. Khái niệm Hệ thống phát hiện xâm nhập (IDS) là một hệ thống được xây dựng cho việc phát hiện các hành vi xâm phạm (truy xuất) không hợp pháp và là một cổng theo dõi hoạt động trên hệ thống mạng hoặc một số máy trạm được chỉ định. Một IDS hoạt động dựa vào phân tích các luồng thông tin, tập tin ghi log của một (nhiều) máy trạm, router, firewall, server… sau đó những thông tin này được so sánh với những signature được lưu bên trong chính IDS. Những signature là những dấu hiệu xâm nhập đã được biết đến. Việc so sánh thông tin nguồn với những signature giúp cho IDS có thể nhận biết được thông tin di chuyển trong mạng có thể gây ra nguy cơ hoặc đang bị tấn công hay không, từ đó IDS sẽ có những cảnh báo đến người quản trị. Trong khi đó một IPS có thể đưa ra hành động để phản ứng lại những hành vi bất hợp lệ như việc ngắt kết nối hoặc hủy những packets có thể gây tổn thương cho mạng. Việc phản ứng có thể thực hiện một cách tự động hoặc có thể được chỉ định bởi quản trị viên. Ngày nay, sự khác biệt giữa IDS và IPS là không rõ ràng. Một IDS có thể thực hiện chức năng của một IPS. Một số IDS hiện nay có thể đóng vai trò như một IPS với những hành động phản ứng như là một tùy chọn. Thông thường, đối với một hệ thống mạng nhỏ thì IPS là giả pháp lựa chọn hàng đầu cho việc bảo đảm an ninh hệ thống do khả năng phát hiện, cảnh báo và ngăn chặn của IPS một cách tự động. Trong khi đó, tại những mô hình mạng quy mô lớn thì IDS chỉ có nhiệm vụ theo dõi và cảnh báo, việc ngăn chặn được giao cho những thiết bị khác an ninh chuyên dụng khác như tường lửa… Việc phân bổ nhiệm vụ này giúp cho hệ thống vận hành một cách linh động và bảo mật hơn. 5 IDS/IPS có thể là xây dựng bằng phần mềm hoặc được kết hợp vào thiết bị phần cứng. 1.2. Phương thức phát hiện Tương tự những phần mềm diệt virus hiện tại, các IDS hoạt động dựa vào 2 cách thức chính: Signature detection và Anomaly dectection. Sinatures là những dấu hiệu tích lũy các hành vi (cách thức) hoạt động trong những dạng tấn công đã được biết đến, IDS sẽ so sánh tình trạng hiện tại với cơ sở dữ liệu được lưu bên trong nó để xác định gói tin. Những signature cần được phát triển và cập nhật thường xuyên từ những nhà phát triển phần mềm hoặc thiết bị IDS/IPS. Việc cập nhật có thể là miễn phí hoặc tính phí tùy vào nhà sản xuất. Anomaly dectection: Phương thức phát hiện bất thường dựa vào cách hoạt động bình thường của IDS để phát hiện ra những bất thường có thể xuất hiện trong tương lai. Thông thường, việc phát hiện bất thường dựa vào những hồ sơ mẫu có sẵn để lấy mẫu, tìm ra những hành động nào là bình thường, từ đó những hành động tấn công không khớp với mẫu này được xem là không hợp lệ. 1.3. Phân loại Dựa vào nhiệm vụ và vị trí của IDS khi triển khai trên thực tế, IDS được chia thành 3 loại: NIDS: Network-based Intrusion Detection System. HIDS: Host-based Intrusion Detection System. DIDS: Distributed Intrusion Detection System. Network-based Intrusion Detection System 6 Hình 1: Mô hình NIDS NIDS được triển khai để theo dõi trên một phân khúc mạng hoặc một subnet, thường được bố trí tại các gateway kết nối với router, switch, firewall… Thông thường, để thiết lập một NIDS thì NIC (Network Interface Card) cần chuyển sang chế độ Promiscuous, ở chế độ này thì NIC có thể theo dõi toàn bộ lưu lương di chuyển qua mạng. NIDS khi phân tích gói tin ở chế độ stream, nghĩa là phân tích header hoặc payload của gói tin thì còn gọi là NIDS stateless. Đối với những gói tin bị phân mảnh thì NIDS sẽ cần ráp lại thành một tập tin hoàn chỉnh sau đó mới xem xét thông tin bên trong, hay còn gọi là NIDS statefull. Ưu điểm: Chi phí thấp, vì ta chỉ cần đặt NIDS tại những đoạn mạng trọng yếu, thiết bị được lắp đặt tại vị trí nhất định mà không cần cài thêm phần mềm trên toàn mạng. 7 NIDS được cài đặt và theo dõi hoàn toàn độc lập với hệ thống, không tác động đến sự vận hành trên những thiết bị khác, không bị ảnh hưởng khi trong mạng có vấn đề xảy ra. Kẻ tấn công khó có thể xóa bỏ dấu vết khi tấn công do NIDS sử dụng thông tin theo thời gian thật để ghi log. Tập tin log không thể xóa bỏ do không nằm ở máy trạm, NIDS giúp nhanh chóng phát hiện được kẻ tấn công là ai phục vụ công tác điều tra. Kẻ tấn công không thể biết sự tồn tại của IDS vì thiết bị chỉ nhận thông tin về mà không trả lời bất kỳ yêu cầu nào, nên việc phát hiện IDS là khó khăn. Tính chất theo dõi bao phủ cho toàn hệ thống mạng. Nhược điểm: Khi NIDS xử lý các gói tin trên mạng rộng hoặc có mật độ lưu thông cao sẽ dẫn đến tình trạng phân đoạn NIDS sẽ dùng tối đa hiệu xuất, có thể gây ra tình trạng nghẽn mạng gây mất gói tin dẫn đến việc bỏ qua những nguy cơ tiềm ẩn có thể. Những nhà phát triển khắc phục bằng cách cứng hóa thiết bị để tăng tốc độ làm việc của IDS Đối với những luồng thông tin bị mã hóa thì NIDS dường như không thể phát hiện được, nếu có việc tấn công từ trong kết nối VPN thì NIDS không còn phát hiện hiệu quả. Không thể biết cuộc tấn công có thành công hay không. Yêu cầu cập nhật những dấu hiệu mới là cần thiết để cho NIDS hoạt động hiệu quả. Một số hệ thống NIDS cũng gặp khó khăn khi phát hiện các cuộc tấn công mạng từ các gói tin phân mảnh. Các gói tin định dạng sai này có thể làm cho NIDS hoạt động sai và đổ vỡ. Host-based Intrusion Detection System 8 Hình 2: Mô hình HIDS HIDS có hai điểm khác nhau so với NIDS là: HIDS được cài đặt để bảo vệ những host cục bộ. Vận hành ở chế độ nonpromiscuous. Host-based IDS tìm kiếm dấu hiệu của xâm nhập vào một host cục bộ; thường sử dụng các cơ chế kiểm tra và phân tích các thông tin được logging. Nó tìm kiếm các hoạt động bất thường như login, truy nhập file không thích hợp, bước leo thang các đặc quyền không được chấp nhận. Kiến trúc IDS này thường dựa trên các luật (rule-based) để phân tích các hoạt động trong cách host, HIDS cài đặt cho việc theo dõi cácchủ, máy máy trạm, laptop… 9 Vị trí triển khai HIDS được phân tán trong toàn mạng nên đây là bất lợi khi môi trường mạng của bạn phát triển lớn hơn sau này, nghĩa là số lượng HIDS cũng cần đượng tăng lên. Ưu điểm: Do hoạt động dựa vào sự ghi nhận tập tin log nên HIDS có thể cho biết cuộc tấn công có thành công hay chưa. Giám sát cụ thể hoạt động của hệ thống, việc mà NIDS không thể đảm nhiệm như: truy cập tập tin, đổi quyền, đăng nhập trái phép… Thích nghi tốt trong môi trường chuyển mạnch, mã hóa: việc chuyển mạch và mã hoá thực hiện trên mạng và do HIDS cài đặt trên máy nên nó không bị ảnh hưởng bởi hai kỹ thuật trên (dữ liệu mã hóa đã được giải mã tại host). Chỉ áp những rule cần thiết phụ thuộc vào server đang giám sát (Web server, FTP server…) Triển khai cài đặt lên hạ tầng mạng đã có, không yêu cầu thêm thiết bị phần cứng. Nhược điểm: Giá thành cao: một số lượng HIDS phân tán trong toàn mạng đòi hỏi giá thành triển khai cao. Một số host không được bảo vệ cũng có thể là một lỗ hổng an ninh gây hại đến hệ thống, kẻ tấn công có thể lấy những thông tin xác thực, tài liệu dễ bị xâm phạm… Mật độ bao phủ thấp. Khó quản trị do các HIDS bị phân tán trong toàn mạng, HIDS cần cài đặt trên những host quan trọng dẫn đến việc cấu hình, quản lý, cập nhật là một khối lượng công việc lớn cho người điều hành hệ thống. Thông tin không đáng tin cậy, do hacker có thể xóa dấu vết sau khi xâm nhập kéo theo là việc HIDS hoạt động sai, không phát hiện được xâm nhập. 10 Không phát huy được khả năng khi một cuộc tấn côn DOS, DDOS xảy ra. Hệ thống bên trong sụp đổ kéo theo HIDS cũng mất tác dụng. Distributed Intrusion Detection System Hình 3: Mô hình DIDS DIDS là một giải pháp tổng thể trong việc xây dựng, quản lý hệ thống cảnh báo an ninh mạng. Mô hình quản lý trập trung trong DIDS giúp tăng hiệu suất giám sát hoạt động trên đường truyền mạng, giảm thiểu nguy cơ gây gián đoạn từ bất cứ vị trí nào. Để hoạt động được như vậy, thì mô hình DIDS kết hợp NIDS và HIDS, những thông tin này được quản lý tập trung tại trạm quản lý cho việc kết xuất báo cáo, cập nhật rule mới cho những IDS khác được phân bổ trong hệ thống. 11 2. TỔNG QUAN SNORT TRÊN MÃ NGUỒN MỞ 2.1. Giới thiệu Snort là một NIDS được phát triển bởi Martin Roesch, đây là một phần mềm nguồn mở, hoàn toàn miễn phí và dễ sử dụng với nhiều tính năng mạnh mẽ. Hiện tại Snort được điều hành bởi SOURCEfire và cũng nằm trong những nền tảng phát triển của hãng tường lửa nổi tiếng Checkpoint. Ưu điểm của Snort là nhẹ, mạnh mẽ, có tính tùy biến cao khi triển khai trên hệ thống và đây cũng là mục tiêu mong muốn của nhà phát triển cũng như của người sử dụng. Snort đã thể hiện được tính uyển chuyển của mình khi có thể triển khai trên nhiều nền tảng hệ điều hành x86, x64 khác nhau như: Windows, Linux, FreeBSD… và kiến trúc Sparc như: MacOSX, Solaris, HP-UX…Việc kết hợp với các thiết bị an ninh khác để chặn việc truy cập như: ACL của Cisco, Checkpoint, iptables trên Linux… cũng là một lợi điểm khi có ý định xây dựng Snort. Hiệu suất cao: Snort có thể theo dõi 24/7 với thời gian thật, nên việc phát hiện xâm nhập vào hệ thống là liên tục. Hỗ trợ mạnh mẽ giao thức TCP/IP, các giao thức khác có thể vẫn được hỗ trợ như là một tùy chọn ICMP, IPX, MPLS… Do xây dựng với kiến trúc mở, nên Snort có một lực lượng phát triển đông đảo khá lớn từ người dùng cho đến những hãng bảo mật nổi tiếng. Việc phát hiện những phương pháp tấn công thường xuyên được cập nhật nếu bạn đăng ký làm thành viên. 2.2. Kiến trúc Snort Snort có các chế độ làm việc: Packet sniffer Packet logger NIDS 12 Hình 2.2.1. 4: Quy trình thu thập, xử lý gói tin Packet decoder Luồng dữ liệu sẽ qua packet decoder trước tiên, tại đi đây những gói tin sẽ được giải mã và theo dõi những thông tin: etherner header, IP header, TCP header, payload… Snort hỗ trợ những công nghệ: Ethernet, 802.11,Token Ring, FDDI, Cisco HDLC, SLIP,PPP và OpenBSD’s PF. Những tham số cấu hình cho việc giải mã được lưu trong tập tin snort.conf Tùy vào chế độ sử dụng, decoder sẽ có những hành vi tương ứng sau khi giả mã gói tin: Packet sniffer: (Snort –v ) gói tin sau khi giải mã sẽ được hiển thị lên màn hình console. Packet logger: (Snort –l /var/log/snort) gói tin sau khi giải mã sẽ ghi vào một tập tin với cấu trúc binary hoặc mã ASCII. 13 NIDS: (Snort –c /etc/snort/etc/snort.conf) gói tin sau giải mã sẽ được khi chuyển sang quá trình Preprocessor tương ứng. Hình 5: TCP packet 2.2.2. Preprocessors Đây là một plug-in dùng cho Snort, nhiệm vụ của preprocessor là dịch những gói tin rời rạc thành định dạng chuẩn thông thường để có thể sử dụng được. Quá trình preprocessor cực kỳ hữu dụng khi có các cuộc tấn công dạng phân mảnh gói tin để đánh lừa IDS (Firewall evasion) như tấn công dạng teardrop . Tiến trình preprocessor giúp cho việc nhận định dạng tấn công một cách thuận lợi. Hình 6: Lưu đồ quy trình Prerocessor Frag3: hoạt động trên sự phân mảnh của gói tin, nối những gói bị phân mảnh 14 thành tập tin nguyên vẹn sau đó trả ngược lại decoder để phân tích nội dung bên trong. 15 Stream5: hoạt động dựa vào địa chỉ gói tin, theo dõi trên luồng thông tin, các gói tin lại đưa ngược về decoder. Trong phiên bản Snort 2.9.0 Stream5 được thay thế cho Stream4 và flow được dùng trong những phiên bản trước đó. Hình 7: Tổng thể cơ chế Snort http_inspect: cung cấp cơ chế phân giải chuỗi ký tự trở về dạng chuẩn của một cấu trúc URI, nó bỏ qua những gói tin Respond từ server đến client, chỉ xem xét những gói tin Request client đến server. Nhờ vậy, IDS có giảm được lượng từ thể thông tin không cần thiết phải theo dõi, do thông thường những gói tin tấn công xuất phát từ phía client (Client thường gởi Request và server chỉ trả lời Respond). 16 Hình 8: HTTP inspect 2.2.3. Detection Engine Các gói tin được xử lý tại preprocessor sẽ chuyển qua quá trình Detection, thật chất đây là quá trình gói tin được so sánh với các rule để xác định gói tin có hợp lệ không. Detection engine thế hệ mới tập trung vào 4 giao thức chính: TCP,UDP, IP, ICMP. Hình 2.2.4. 9: Cơ chế phát hiện (Detection Engine) Outputs 17 Khi detection phát hiện những gói tin trùng với bộ luật thì sẽ ghi nhận sự kiện và ghi log. Việc ghi log có thể xuất ra nhiều kiểu khác nhau như: database / syslog/ XML/ TCPDUMP/ Unifiled. Dữ liệu sau khi xuất có thể sử dụng bởi các chương trình phân tích log cho việc thống kê. 3. RULES 3.1. Giới thiệu Các phương thức tấn công cũng tương tự virus, hầu hết các hoạt động xâm phạm đều để lại những dấu hiệu riêng để nhận biết. Các thông tin và dấu hiệu này được sử dụng để tạo rule cho Snort. Rule là một thành phần cốt lõi cho một hệ thống IDS nhận biết được các cuộc tấn công. Những hệ thống honey pots được xây dựng nhằm thu thập các dấu hiệu tấn công, từ đó những nhà phát triển có thể cập nhật những dấu hiệu mới cho sản phẩm. Với Snort là một IDS mã nguồn mở, thì ngoài việc cập nhật rule từ nhà sản xuất (www.Snort.org) thì người dùng còn có thể phát triển riêng những rule tùy biến vào mục đích mà mình sử dụng. Những cuộc tấn công trên một gói tin được nhận biết dựa vào phần header hoặc trong payload (nội dung gói tin), các luật có thể áp dụng cho tất cả các phần khác nhau của một gói dữ liệu để có thể nhận dạng dấu hiệu tấn công. Hình 10: Cấu trúc rule Một rule có 2 phần: rule header và rule option. 3.2. Rule header 18  Action: Là phần chỉ định hành động nào sẽ được thực hiện khi các dấu hiệu của gói tin được nhận dạng chính xác. Có các hành động sau:  Alert: tạo ra một cảnh báo và ghi log.  Log: ghi log sự kiện  Pass: cho gói tin đi qua IDS mà không cần kiểm tra. Hành động này dùng khi cần tăng tốc IDS với những gói tin ta chỉ định không cần kiểm tra.  Activate: tạo cảnh báo và kích hoạt một luật khác.  Dynamic: được kích hoạt khi dùng với hành động activate  Drop: hủy gói tin và ghi lại log.  Reject: hủy gói tin, ghi log và gởi TCP reset nếu gói tin đến là gói TCP hoặc ICMP port unreachable nếu là giao thức UDP.  Sdrop: hủy gói tin, không ghi log. Các phương thức alert, log, pass, activate, dynamic là 5 hanh động chính trong Snort. Ba chức năng drop, reject, sdrop là tùy chọn dùng ở chế độ inline.  Protocol Chỉ rõ giao thức của gói tin mà ta cần kiểm tra. Snort hỗ trợ những giao thức: IP (version 4 và version 6), TCP, UDP, ICMP. Các giao thức ARP, IGRP, GRE, OSPF, RIP, IPX… sẽ phát triển trong tương lai hoặc trong phiên bản hiện tại có một số giao thức hỗ trợ như là một tùy chọn.  Address Cung cấp địa chỉ nguồn và địa chỉ đích mà luật cần theo dõi. Việc xác định địa chỉ là nguồn hay là đích phụ thuộc vào hướng (direction). Ta có thể khai báo một địa chỉ IP, lớp mạng (subnet), trên tất cả IP hoặc loại trừ một IP, subnet. Ví dụ: 19 alert tcp any any -> 192.168.1.10/32 80 (msg: “TTL=100”; ttl: 100;) #cảnh báo những gói tin có ttl=100 từ tất cả các nguồn đến webserver tại địa chi 192.168.1.10:80 alert icmp ![192.168.2.0/24] any -> any any (msg: “Ping with TTL=100”; #dùng dấu ! để phủ định những IP mà ta không muốn kiểm tra. ttl: 100;) alert icmp ![192.168.2.0/24, 192.168.8.0/24] any -> any any (msg: “Ping with TTL=100”; ttl: 100;)  Port Luật áp dụng trên những dịch vụ cụ thể dựa vào số cổng, ta có thể khai báo port chỉ định, dãy port (dùng dấu “:” ngăn cách cổng bắt đầu và cổng kết thúc) hoặc phủ định port ( dùng dấu “!” trước port muốn phủ định). alert udp any 1024:2048 -> any any (msg: “UDP ports”;) #chỉ ra dãy port mà muốn theo dõi từ 1024 đến 2048.  Direction Dùng để xác định đâu là nguồn hay đích, ta dùng những ký hiệu sau cho việc định hướng: ->, <-, <>. Ký hiệu <> dùng khi kiểm tra cả client và server. 3.3. Rule option Phần Rule Option nằm ngay sau phần Rule Header và được bao bọc trong dấu ngoặc đơn. Nếu có nhiều option thì các option sẽ được phân cách với nhau bằng dấu chấm phẩy “;”. Một option gồm 2 phần: một từ khoá và một tham số, hai phần này phân cách nhau bằng dấu hai chấm. Ví dụ: msg: “Detected confidented” #msg là từ khoá còn “Detected confidented” là tham số. Có 4 nhóm option chính : 20 general : cung cấp những thông tin về rule, không gây tác động ảnh hưởng đển hoạt dộng phát hiện của IDS payload : những option thuộc nhóm này sẽ tìm kiếm nội dụng trong payload của gói tin. non-payload: những option nhóm non-payload sẽ tìm nội dung trong phần header gói tin. post-detection: các option trong nhóm này sẽ đưa ra những hành động khi những mẫu so sánh trong nhóm pay-load và non-payload trùng khớp với gói tin. 3.3.1.  Nhóm General Msg Cú pháp: msg:""; Tạo một thông điệp cảnh ab1o khi rule được so trùng, msg tạo thuật lợi khi ta kết hợp Snort với những chương trình quản lý khác như BASE  Reference Cú pháp: reference:, ; Chức năng reference cho phép ta tham chiếu những thông tin về dạng tấn công từ những trang web bảo mật. Bảng dưới liệt kê những hệ thống hỗ trợ cho việc tham chiếu. SYSTEM bugtraq cve nessus arachnids mcafee osvdb url URL http://www.securityfocus.com/bid/ http://cve.mitre.org/cgi-bin/cvename.cgi?name= http://cgi.nessus.org/plugins/dump.php3?id= (currently down) http://www.whitehats.com/info/IDS http://vil.nai.com/vil/content/v http://osvdb.org/show/osvdb/ http:// Ví dụ: 21 alert tcp any any -> any 7070 (msg:"IDS411/dos-realaudio";flags:AP; content:"|fff4 fffd 06|"; reference:arachnids,IDS411;) log tcp any any -> any 12345 (reference:CVE, CAN-2002-1010; reference:URL,www.poc2.com; msg:" NetBus";)  Gid Cú pháp: gid:; Từ khóa gid (generator id) được sử dụng để định danh phần nào trong luật tạo ra thông báo (message), những gid do người dùng định nghĩa cần lớn hơn 1.000.000, những gid do Snort sử dụng được lưu trong file gen-msg.map trong thư mục source cài đặt Snort-2.9.0.5/etc. Từ khóa gid nên được sử dụng chung với sid  Sid Cú pháp: sid:; Sid là một số duy nhất dùng định danh cho một rule trong Snort, sid giúp dễ dàng cho việc quản lý rule. Những rule do người dùng định nghĩa cần có sid >=1.000.000, những rule do Snort phân phối có sid 100-999.999 và những sid <100 được dùng cho việc phát triển trong tương lai.  Rev Cú pháp: rev:; Chỉ số revision dùng cho việc xác định bản chỉnh sửa của luật, nhận diện phiên bản của luật, thuận tiện cho việc quản lý luật cần cập nhập. rev cũng nên dùng chung với sid. alert tcp any any -> any 80 (content:"BOB"; sid:1000983; rev:1;)  Classtype Cú pháp: classtype:; 22 Classtype attempted-admin attempted-user inappropriate-content policy-violation shellcode-detect successful-admin successful-user trojan-activity unsuccessful-user web-application-attack attempted-dos attempted-recon bad-unknown default-login-attempt denial-of-service misc-attack non-standard-protocol rpc-portmap-decode successful-dos successful-reconlargescale successful-reconlimited suspicious-filenamedetect suspicious-login system-call-detect unusual-client-portconnection web-applicationactivity icmp-event misc-activity network-scan not-suspicious protocol-commanddecode string-detect unknown tcp-connection Description Attempted Administrator Privilege Gain Attempted User Privilege Gain Inappropriate Content was Detected Potential Corporate Privacy Violation Executable code was detected Successful Administrator Privilege Gain Successful User Privilege Gain A Network Trojan was detected Unsuccessful User Privilege Gain Web Application Attack Attempted Denial of Service Attempted Information Leak Potentially Bad Traffic Attempt to login by a default username and password Detection of a Denial of Service Attack Misc Attack Detection of a non-standard protocol or event Decode of an RPC Query Denial of Service Large Scale Information Leak Priority high high high high high high high high high high medium medium medium medium medium medium medium medium medium medium Information Leak medium A suspicious filename was detected medium An attempted login using a suspicious username A systemwas calldetected was detected A client was using an unusual port medium Access to a potentially vulnerable web application Generic ICMP event Misc activity Detection of a Network Scan Not Suspicious Traffic Generic Protocol Command Decode medium A suspicious string was detected Unknown Traffic A TCP connection was detected medium medium low low low low low low low very low 23  Priority Cú pháp: priority: ; Các luật có thể được phân loại và gán cho một chỉ số độ ưu tiên để nhóm và phân biệt chúng với nhau. Để hiểu rõ hơn về từ khoá này ta đầu tiên phải hiểu được file classification.config (được load trong Snort.conf với classification.config). Mỗi dòng trong file classification.config sau: config classification: dòng include có cú pháp như name, description, priority Name: là tên dùng để phân loại, tên này sẽ được dùng với từ khoá classtype trong các luật Snort. Description: mô tả về loại lớp này priority: là một số chỉ độ ưu tiên mặc định của lớp này. Độ ưu tiên này có thể được điều chỉnh trong từ khoá priority của phần option trong luật của Snort. Ví dụ : config classification: DoS , Denial of Service Attack, 2 và trong luật: alert udp any any -> 192.168.1.0/24 6838 (msg: “DoS”; content: “server”; 6838 (msg:”DoS”; content: “server”; classtype: DoS;) alert udp any any -> 192.168.1.0/24 classtype: DoS; priority: 1;) Trong câu lệnh thứ 2 thì ta đã ghi đè lên giá trị priority mặc định của lớp đã định nghĩa.  Metadata Cú pháp: metadata:key1 value1; 24 metadata:key1 value1, key2 value2; Metadata cho phép người viết luật đính kèm theo những thông tin mô tả về luật mà họ viết, những metadata này khi khai báo cần theo một cấu trúc. Bảng bên dưới liệt kê những giá trị mà Snort hỗ trợ: o metadata chỉ có giá trị sử dụng khi một Host Atttribute Table được cung cấp. Ví dụ: alert tcp any any -> any 80 (msg:"Shared Library Rule Example"; \metadata:engine shared; metadata:soid 3|12345;) alert tcp any any -> any 80 (msg:"Shared Library Rule Example"; \metadata:engine shared, soid 3|12345;) alert tcp any any -> any 80 (msg:"HTTP Service Rule Example"; \metadata:service http;) 3.3.2.  Nhóm Payload content Cú pháp: content: [!]“” Dùng tìm kiếm nội dung được chỉ định trong luật với nội dụng gói tin. Một đặc tính quan trọng của Snort là nó có khả năng tìm một mẫu dữ liệu bên trong một gói tin. Mẫu này có thể dưới dạng chuỗi ASCII hoặc hex code (hệ 16). Ví dụ 1: alert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any (content: “GET”; msg: “GET match”;) 25 Luật trên tìm mẫu “GET” trong phần dữ liệu của tất cả các gói tin TCP có nguồn đi từ mạng 192.168.1.0/24 và đi đến các địa chỉ không thuộc mạng đó. Từ “GET” này rất hay được dùng trong các tấn công HTTP. Ví dụ 2: alert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any (content: “|47 45 54|”; msg: “GET match”;) Nội dung của luật trong ví dụ 2 tương tự ví dụ 1 nhưng phần nội dung kiểm tra được thay thế bằng một dãy số hex. Trong đó: 47 45 54 trong dãy hex tương ứng với ASCII là GET. Ta có thể dùng cả hai dạng trên trong cùng một luật với điều kiện nội dung mã ASCII đặt trong dấu ngoặc kép “” và nội dung là số hex thì đặt trong cặp dấu | |.  Nocase Cú pháp: nocase; Dùng kết hợp với từ khóa content, mục đích cho việc sử dụng nocase là tạo ra một kiểm tra với nội dung không phân biệt chữ hoa hay thường (noncasesensive) Ví dụ: alert tcp any any -> any 23 (content: "administrator"; nocase;) #so sánh chuỗi administrator không phân biệt chữ hoa hay thường.  Rawbytes Dùng kiểm tra những gói tin dạng RAW, những gói tin được giải mã trong tiến trình preprocessor sẽ được bỏ qua. alert tcp any any -> any 21 (msg:"Telnet NOP"; content:"|FF F1|"; rawbytes;)  Depth Cú pháp: depth:; 26 Dùng xác định trí kết thúc so sánh xét từ điểm offset thiết lập. alert tcp 192.168.1.0/24 any -> any any (content: “HTTP”; offset: 4; depth: 40; msg: “HTTP matched”;) #tìm nội dung từ byte thứ 4 đến byte thứ 40. Từ khoá này sẽ giúp giảm thời gian tìm kiếm khi mà đoạn dữ liệu trong gói tin là khá lớn.  Offset Cú pháp : offset:<“number”>; Dùng để xác định vị trí bắt đầu tìm kiếm (chuỗi chứa trong từ khoá content ) là offset tính từ đầu phần dữ liệu của gói tin. Ví dụ sau sẽ tìm chuỗi “HTTP” bắt đầu từ vị trí cách đầu đoạn dữ liệu của gói tin là 4 byte: alert tcp 192.168.1.0/24 any -> any any (content: “HTTP”; offset: 4; msg: “HTTP matched”;)  Distance Cú pháp: distance: <“number”>; So sánh chính xác nội dung trong content từ vị trí đầu đến khoảng cách được chỉ định trong distance.  Within Cú pháp: within:[|]; Dùng so sánh nội dung trong khoảng chỉ định từ vị trí (nội dung) xác định được đầu tiên đến vị trí (nội dung) kế tiếp. Ví dụ: content:"081660"; content:"vt081a"; within:20; #tìm trong 20 bytes tiếp theo từ vị trí 081660 được xác định, xem trong khoảng 20 bytes này có chuỗi vt081a hay không. Những trường hợp sau là hợp với rule trên: 27 081660 is member of vt081a 081660 is vt081a 081660 is studied at vt081a  http_client_body Cú pháp: http_client_body; Dùng phân tích nội dung chuỗi ký tự URI trong request message thay vì kiểm tra toàn bộ nội dung gói tin. Ví dụ: log tcp any any -> any 80 (content:"Logging PHF”; http_client_body;)  http_cookie Cú pháp: http_cookie; Dùng phát hiện nội dung trong một cookie của một http header, chúng được đặt tên Cookie trong http requests và Set-Cookie trong http responess.  http_raw_cookie Cú pháp: http_raw_cookie; Dùng tách những cookie có cấu trúc bất thường (UNNORMALIZED), chức năng này phải được dùng chung với enable_cookie.  http_header Cú pháp: http_header; Tìm nội dung chỉ rõ trong toàn bộ http header, dùng trong những header thông thường (NORMALIZED).  http_raw_header Cú pháp http_raw_header; 28 Dùng tách những header có cấu trúc bất thường (UNNORMALIZED), không dùng chung với chức năng rawbytes, http header, fast pattern.  http_method Cú pháp: http_method; Dùng so sánh phương thức trong giao thức http với content chỉ định. Ví dụ: alert tcp any any -> any 80 (content:"ABC"; content:"GET"; http_method;)  http_uri Cú pháp: http_uri; So sánh trường URI Request với content chỉ định trước đó. Ví dụ: alert tcp any any -> any 80 (content:"asd"; content:"EFG"; http_uri;) #tìm mẫu EFG tron một URI bình thường.  http_raw_uri Tương tự http_uri nhưng phân tích những gói tin không bình thường.  http_stat_code Cú pháp: http_stat_code; Phân tích trường Status code trong gói http server respone. Ví dụ: alert tcp any http_stat_code;) any -> any 80 (content:"ABC"; content:"200"; #phân tích mẫu 200(OK) trong header.  http_stat_msg 29 Cú pháp: http_stat_msg; Phân tích thông tin trong http server respone, so sánh với content trước đó. Ví dụ: alert tcp any any -> any 80 (content:"ABC"; content:"Not Found"; http_stat_msg;)  http_encode Cú pháp: http_encode:[uri|header|cookie],[!][ any any (msg:"UTF8/UEncode Encoding present"; http_encode:uri,utf8|uencode;) alert tcp any any -> any any (msg:"No UTF8"; http_encode:uri,!utf8;)  fast_pattern Cú pháp: fast_pattern:only; fast_pattern:,; fast_pattern thiết lập lại nội dung bên trong một rule, nó tăng tốc độ so nội dung mẫu với gói tin bằng cách chọn ra content có nội dung dài nhất (content có nội dung dài thì tỉ lệ chính xác cao hơn), từ đó Snort có thể quyết định nhanh chóng trong việc so mẫu trong rule.  uricontent Cú pháp: uricontent:[!]""; Ví dụ về URI: 30 URI Đường dẫn thông thường /scripts/..%c0%af../winnt/system32/cmd.exe?/ /winnt/system32/cmd.exe?/c c+ver +ver /cgi/cgi-bin/phf? bin/aaaaaaaaaaaaaaaaaaaaaaaaaa/..%252fp%68f ? Phương pháp kiểm trai uri rất quan trọng cho việc kiểm tra những hacker sử dụng kiểu tấn công upload shell lên web server để thực thi lệnh. Uri_content có thể dùng với các tùy chọn nocase, depth, offset, distance, within, fast pattern.  urilen Cú pháp: urilen:min<>max; urilen:[<|>]; Kiểm tra độ dài URI. Ví dụ: uri_len:5 uri_len:<5 uri_len:5<>10  So sánh độ dài chính xác bằng 5 bytes. So sánh độ dài nhỏ 5 bytes. So sánh độ dài lớn hơn 5 và nhỏ hơn 10 bytes. isdataat Cú pháp: isdataat:[!][, relative|rawbytes]; Kiểm tra có payload có dữ liệu hay không từ vị trí chỉ định, tùy chọn relative sẽ kiểm tra từ vị trí cuối content trước isdataat đến kết thúc.  pcre Cú pháp: pcre:[!]"(//|m)[ismxAEGRUBPHMCOIDKYS]"; 31 PCRE (Perl Compatible Regular Expression) được tích hợp từ phiên bản 2.1, dùng so sánh những trường hợp đặc biệt mà từ khóa content không kiểm tra được. Đây là một điểm mạnh trong những phiên bản mới về sau giúp cho IDS linh động hơn trong việc kiểm tra gói tin và phát hiện những cuộc tấn công dạng sử dụng gói tin bất thường. i s m Phân biệt chữ hoa, chữ thường. Kiểm tra bao gồm những dòng mới sau dấu “.” Mặc định, một chuỗi là một dòng bao gồm những ký tự. ^ đại diện cho đầu dòng và $ đại diện cho cuối dòng. Khi tùy chọn m được chỉ định thì việc kiểm tra sẽ tác động đến dòng mới trong bộ đệm. Bỏ qua ký tự khoảng trắng trong chuỗi. Mẫu cần phải được so trùng từ vị trí bắt đầu bộ đệm. Mẫu cần phải được so trùng từ vị trí cuối bộ đệm. Nghịch đảo chuỗi ký tự. So tìm mẫu toàn bộ (tương tự distance:0) So mẫu trong trường URI (tương tự uri_content và http_uri). Không cho phép những yêu cầu URI bất thường. So trùng những gói yêu cầu URL bất thường (tượng tự http_raw_uri). So trùng nội dung thân (body) của những http request bất thường (tương tự http_client_body). So những header HTTP request hoặc HTTP response (tương tự http_header) Tương tự http_raw_header. Tương tự http_method. Tương tự http_cookie. Tương tự http_raw_cookie. Tương tự http_stat_code. Tương tự http_stat_msg. Tương tự rawbytes. Chép đè những so sánh pcre đã được cấu hình hạn chế cho biểu thứ này. x A E G R U I P H D M C K S Y B O  file_data Cú pháp: file_data; file_data:mime; 32 Tùy chọn này dùng để thay thế con trỏ ( được sử dụng trong payload tại tiến trình xử lý rule) tại vị trí bắt đầu trong nội dung gói HTTP response hoặc dữ liệu trong thân gói SMTP.  base64_decode Cú pháp: base64_decode[:[bytes ][, ][offset [, relative]]]; Dùng giải mã header của gói http được mã bằng base64, dùng cho những HTTP authorization header.  base64_data Cú pháp: base64_data; Base64_data dùng giả mã payload gói tin dùng phương pháp base64, nếu trong rule tính năng này được chỉ định thì tiến trình xử lý sẽ nhảy (jump) đến phần payload để kiểm tra. base64_data phải nằm phía sau từ khóa base64_decode. Ví dụ: alert tcp any any -> any any (msg:"Authorization NTLM"; \ content:"Authorization:"; http_header; \ base64_decode:bytes 12, offset 6, relative; base64_data; \ content:"NTLMSSP"; within:8;)  byte_test Cú pháp: byte_test:, [!], , \ [, relative][, ][, string, ][, dce]; Dùng kiểm tra byte chỉ định bằng các toán tử, kiểm tra dựa trên giá trị binary hoặc chuyển từ hexa sang binary. 33  byte_jump Cú pháp: byte_jump:, \ [, relative][, multiplier ][, ][, string, ]\ [, align][, from_beginning][, post_offset ][, dce]; Đọc một phần nội dung gói tin, sau đó nhảy đến phần khác để đọc tiếp tục.  byte_extract Cú pháp: byte_extract:, , \ [, relative][, multiplier ][, ]\ [, string, ][, align ][, dce]; Dùng trích xuất một số byte chỉ định vào một biến, những biến này sẽ được sử dụng về sau tại những luật khác nhau.  fptbounce Cú pháp: ftpbounce; Dùng phát hiện tấn công ftp bounce.  asn1 Cú pháp : asn1:[bitstring_overflow][, double_overflow][, oversize_length ][, absolute_offset |relative_offset ]; Phát hiện dựa trên những phương thức mã hóa, từ đó xác định những phương thức mã hóa có thể gây hại cho server. 34  cvs Cú pháp: cvs:
- Xem thêm -