Hệ thống phát hiện xâm nhập ids

CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG PHÁT HIỆN XÂM NHẬP I. Những mối đe dọa về bảo mật 1. Mối đe dọa không có Cấu Trúc (Untructured threat) 2. Mối đe dọa có Cấu Trúc (Structured threat) 3. Mối đe dọa từ Bên Ngoài (External threat) 4. Mối đe dọa từ Bên Trong (Internal threat) II. Khái niệm về bảo mật 1. Khái Niệm 2. Kiến Trúc Về Bảo Mật III. Các Phương Pháp Xâm Nhập Hệ Thống Và Phòng Chống A. Các Phương Pháp Xâm Nhập Hệ Thống 1. Phương thức ăn cắp thống tin bằng Packet Sniffers 2. Phương thức tấn công mật khẩu Password attack 3. Phương thức tấn công bằng Mail Relay 4. Phương thức tấn công hệ thống DNS 5. Phương thức tấn công Man-in-the-middle attack 6. Phương thức tấn công để thăm dò mạng 7. Phương thức tấn công Trust exploitation 8. Phương thức tấn công Port redirection 9. Phương thức tấn công Port redirection 10. Phương thức tấn Virus và Trojan Horse B. Các Biện Pháp Phát Hiện Và Ngăn Ngừa Xâm Nhập 1. Phương thức ăn cắp thống tin bằng Packet Sniffers 2. Phương thức tấn công mật khẩu Password attack 3. Phương thức tấn công bằng Mail Relay 4. Phương thức tấn công hệ thống DNS 5. Phương thức tấn công Man-in-the-middle attack 6. Phương thức tấn công để thăm dò mạng 7. Phương thức tấn công Trust exploitation 8. Phương thức tấn công Port redirection 9. Phương thức tấn công Port redirection 10. Phương thức tấn Virus và Trojan Horse IV. Sự Cần Thiết Của IDS 1. Sự giới hạn của các biện pháp đối phó 2. Những cố gắng trong việc hạn chế xâm nhập trái phép CHƯƠNG 2: PHÁT HIỆN XÂM NHẬP IDS I. Tổng Quan Về IDS A. Giới Thiệu Về IDS 1. Khái niệm “Phát hiện xâm nhập” 2. IDS (Intrusion Detection System- hệ thống phát hiện xâm nhập) 3. Phân biệt những hệ thống không phải là IDS B. Lợi Ích Của IDS: 1. IDS (Intrusion Detection System) 2. IPS (Phát hiện và ngăn chặn xâm nhập) 2.1. Nguyên lý hoạt động của hệ thống 2.2. Các kiểu hệ thống IPS C. Chức Năng của IDS D. Phân Loại 1. Network-Based IDSs. 2. Lợi thế của Network-Based IDSs. 3. Hạn chế của Network-Based IDSs. 4. Host Based IDS (HIDS). 5. Lợi Thế của HIDS. 6. Hạn chế của HIDS. 7. DIDS. E. Kiến Trúc Của IDS. 1. Các nhiệm vụ thực hiện. 2. Kiến trúc của hệ thống phát hiện xâm nhập IDS. II. Phương Thức Thực Hiện. 1. Misuse – based system 2. Anomaly – based system III. Phân loại các dấu hiệu 1. Phát hiện dấu hiệu không bình thường 2. Các mẫu hành vi thông thường- phát hiện bất thường 3. Các dấu hiệu có hành vi xấu – phát hiện dấu hiệu 4. Tương quan các mẫu tham số IV. CÁCH PHÁT HIỆN CÁC KIỂU TẤN CÔNG THÔNG DỤNG CỦA IDS 1. Denial of Service attack (Tấn công từ chối dịch vụ) 2. Scanning và Probe (Quét và thăm dò) 3. Password attack (Tấn công vào mật mã) 4. Privilege-grabbing (Chiếm đặc quyền) 5. Hostile code insertion (Cài đặt mã nguy hiểm) 6. Cyber vandalism (Hành động phá hoại trên máy móc) 7. Proprietary data theft (Ăn trộm dữ liệu quan trọng) 8. Fraud, waste, abuse (Gian lận, lãng phí và lạm dụng) 9. Audit trail tampering (Can thiệp vào biên bản) 10. Security infrastructure attack (Tấn công hạ tầng bảo mật) CHƯƠNG III THỰC NGHIỆM I. Giới thiệu về Snort IDS 1. Giới Thiệu 2. Các thành phần của Snort 3. Tập luật (rulesets) trong Snort II. Triển Khai IDS 1. Mô hình 2. Thực hiện CHƯƠNG IV KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN I.Kết luận II.Hướng phát triển

doc79 trang | Chia sẻ: lvcdongnoi | Lượt xem: 4228 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Hệ thống phát hiện xâm nhập ids, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ấn công nguy hiểm kịp thời. Mặc dù vậy, việc dịch các hành vi người dùng (hoặc session hệ thống người dùng hoàn chỉnh) trong một quyết định liên quan đến bảo mật phù hợp thường không đơn giản – nhiều hành vi không được dự định trước và không rõ ràng (Hình 2). Để phân loại các hành động, IDS phải lợi dụng phương pháp phát hiện dị thường, đôi khi là hành vi cơ bản hoặc các dấu hiệu tấn công,… một thiết bị mô tả hành vi bất thường đã biết (phát hiện dấu hiệu) cũng được gọi là kiến thức cơ bản. 2.Các mẫu hành vi thông thường- phát hiện bất thường Các mẫu hành vi thông thường rất hữu ích trong việc dự đoán người dùng và hành vi hệ thống. Do đó các bộ phát hiện bất thường xây dựng profile thể hiện việc sử dụng thông thường và sau đó sử dụng dữ liệu hành vi thông thường để phát hiện sự không hợp lệ giữa các profile và nhận ra tấn công có thể. Để hợp lý với các profile sự kiện, hệ thống bị yêu cầu phải tạo ra profile người dùng ban đầu để “đào tạo” hệ thống quan tâm đến sự hợp pháp hóa hành vi người dùng. Có một vấn đề liên quan đến việc làm profile ở đây đó là: khi hệ thống được phép “học” trên chính nó, thì những kẻ xâm nhập cũng có thể đào tạo hệ thống ở điểm này, nơi mà các hành vi xâm phạm trước trở thành hành vi thông thường. Một profile không tương thích sẽ có thể được phát hiện tất cả các hoạt động xâm nhập có thể. Ngoài ra, còn có một sự cần thiết nữa đó là nâng cấp profile và “đào tạo” hệ thống, một nhiệm vụ khó khăn và tốn thời gian. Cho một tập các profile hành vi thông thường, mọi thứ không hợp với profile được lưu sẽ được coi như là một hoạt động nghi ngờ. Do đó, các hệ thống này được đặc trưng bởi hiệu quả phát hiện rất cao (chúng có thể nhận ra nhiều tấn công mặc dù tấn công đó là mới có trong hệ thống), tuy nhiên chúng lại có hiện tượng là tạo các cảnh báo sai về một số vấn đề. Ưu điểm của phương pháp phát hiện bất thường này là: có khả năng phát hiện các tấn công mới khi có sự xâm nhập; các vấn đề không bình thường được nhận ra không cần nguyên nhân bên trong của chúng và các tính cách; ít phụ thuộc vào IDS đối với môi trường hoạt động (khi so sánh với các hệ thống dựa vào dấu hiệu); khả năng phát hiện sự lạm dụng quyền của người dùng. Nhược điểm lớn nhất của phương pháp này là: Xác suất cảnh báo sai nhiều. Hiệu suất hệ thống không được kiểm tra trong suốt quá trình xây dựng profile và giai đoạn đào tạo. Do đó, tất cả các hoạt động người dùng bị bỏ qua trong suốt giai đoạn này sẽ không hợp lý. Các hành vi người dùng có thể thay đổi theo thời gian, do đó cần phải có một sự nâng cấp liên tục đối với cơ sở dữ liệu profile hành vi thông thường.Sự cần thiết về đào tạo hệ thống khi thay đổi hành vi sẽ làm hệ thống không có được phát hiện bất thường trong giai đoạn đào tạo (lỗi tiêu cực). 3.Các dấu hiệu có hành vi xấu – phát hiện dấu hiệu Thông tin xử lý hệ thống trong các hành vi bất thường và không an toàn (dấu hiệu tấn công – dựa vào các hệ thống) thường được sử dụng trong các hệ thống phát hiện xâm nhập thời gian thực (vì sự phức tạp trong tính toán của chúng không cao). Các dấu hiệu hành vi xấu được chia thành hai loại: Các dấu hiệu tấn công – chúng miêu tả các mẫu hoạt động có thể gây ra mối đe dọa về bảo mật. Điển hình, chúng được thể hiện khi mối quan hệ phụ thuộc thời gian giữa một loạt các hoạt động có thể kết hợp lại với các hoạt động trung tính. Các chuỗi văn bản được chọn – các dấu hiệu hợp với các chuỗi văn bản đang tìm kiếm các hoạt động nghi ngờ. Bất kỳ hoạt động nào không rõ ràng đều có thể bị xem xét và ngăn cản. Do đó, độ chính xác của chúng rất cao (số báo cảnh sai thấp). Tuy nhiên chúng không thực hiện một cách hoàn toàn và không ngăn cản hoàn toàn các tấn công mới. Có hai phương pháp chính đã kết hợp sự phát hiện dấu hiệu này: Việc kiểm tra vấn đề ở các gói lớp thấp hơn – nhiều loại tấn công khai thác lỗ hổng trong các gói IP, TCP, UDP hoặc ICMP. Với kiểm tra đơn giản về tập các cờ trên gói đặc trưng hoàn toàn có thể phát hiện ra gói nào hợp lệ, gói nào không. Khó khăn ở đây có thể là phải mở gói và lắp ráp chúng lại. Tương tự, một số vấn đề khác có thể liên quan với lớp TCP/IP của hệ thống đang được bảo vệ. Thường thì kẻ tấn công hay sử dụng cách mở các gói để băng qua được nhiều công cụ IDS. Kiểm tra giao thức lớp ứng dụng – nhiều loại tấn công (WinNuke) khai thác các lỗ hổng chương trình, ví dụ dữ liệu đặc biệt đã gửi đến một kết nối mạng đã được thành lập. Để phát hiện có hiệu quả các tấn công như vậy, IDS phải được bổ sung nhiều giao thức lớp ứng dụng. Các phương pháp phát hiện dấu hiệu có một số ưu điểm dưới đây: tỉ lệ cảnh báo sai thấp, thuật toán đơn giản, dễ dàng tạo cơ sở dữ liệu dấu hiệu tấn công, dễ dàng bổ sung và tiêu phí hiệu suất tài nguyên hệ thống tối thiểu. Một số nhược điểm: Khó khăn trong việc nâng cấp các kiểu tấn công mới. Chúng không thể kế thừa để phát hiện các tấn công mới và chưa biết. Phải nâng cấp một cơ sở dữ liệu dấu hiệu tấn công tương quan với nó. Sự quản lý và duy trì một IDS cần thiết phải kết hợp với việc phân tích và vá các lỗ hổng bảo mật, đó là một quá trình tốn kém thời gian. Kiến thức về tấn công lại phụ thuộc vào môi trường hoạt đông – vì vậy, IDS dựa trên dấu hiệu những hành vi xấu phải được cấu hình tuân thủ những nguyên tắc nghiêm ngặt của nó với hệ điều hành (phiên bản, nền tảng, các ứng dụng được sử dụng…) Chúng dường như khó quản lý các tấn công bên trong. Điển hình, sự lạm dụng quyền người dùng xác thực không thể phát hiện khi có hoạt động mã nguy hiểm (vì chúng thiếu thông tin về quyền người dùng và cấu trúc dấu hiệu tấn công). Các sản phẩm IDS thương mại thường sử dụng phương pháp phát hiện dấu hiệu cho hai lý do. Trước tiên, nó dễ dàng hơn trong việc cung cấp dấu hiệu liên quan đến tấn công đã biết và để gán tên đối với một tấn công. Thứ hai, cơ sở dữ liệu dấu hiệu tấn công được nâng cấp thường xuyên (bằng cách thêm các dấu hiệu tấn công mới phát hiện). 4.Tương quan các mẫu tham số Phương pháp phát hiện xâm nhập khá khôn ngoan hơn các phương pháp trước. Nó được sinh ra do nhu cầu thực tế rằng, các quản trị viên kiểm tra các hệ thống khác nhau và các thuộc tính mạng (không cần nhắm đến các vấn đề bảo mật). Thông tin đạt được trong cách này có một môi trường cụ thể không thay đổi. Phương pháp này liên quan đến sử dụng kinh nghiệm hoạt động hàng ngày của các quản trị viên như các vấn đề cơ bản cho việc phát hiện dấu hiệu bất thường. Nó có thể được xem như trường hợp đặc biệt của phương pháp Profile thông thường. Sự khác nhau ở đây nằm ở chỗ trong thực tế, một profile là một phần hiểu biết của con người. Đây là một kỹ thuật mạnh, bời vì nó cho phép xâm nhập dựa trên các kiểu tấn công không biết. Hoạt động hệ thống có thể phát hiện các thay đổi tinh vi không rõ ràng đối với chính hoạt động đó. Nó kế thừa những nhược điểm trong thực tế là con người chỉ hiểu một phần giới hạn thông tin tại một thời điểm, điều đó có nghĩa là các tấn công nào đó có thể vượt qua mà không bị phát hiện. III.CÁCH PHÁT HIỆN CÁC KIỂU TẤN CÔNG THÔNG DỤNG CỦA IDS 1. Denial of Service attack (Tấn công từ chối dịch vụ) Cho dù đa dạng về kích cỡ và hình dạng, từ subtle malformed packet đến full-blown packet storm, Denial of service (DoS) attack có mục đích chung là đóng băng hay chặn đứng tài nguyên của hệ thống đích. Cuối cùng, mục tiêu trở nên không thể tiếp cận và không thể trả lời. DoS tấn công vào các mục tiêu bao gồm 3 dạng là mạng, hệ thống và ứng dụng. Network flooding bao gồm SYN flood, Ping flood hay multi echo request,… Phá hoại hệ thống, thiết bị bao gồm Ping of Death, Teardrop, Bonk, LAND, các kiểu tấn công nhằm lợi dụng lỗ hổng trên hệ điều hành nhằm phá hoại, gây quá tải hệ thống. Sự kiện này có thể xảy ra bằng cách gửi gói tin có định dạng khác thường tới hệ thống và thiết bị, chúng có thể được tạo ra bằng các công cụ tấn công được lập trình trước. Phá hoại, gây quá tải ứng dụng bao gồm các kỹ thuật phá hoại và gây quá tải hệ thống bằng cách lợi cụng điểm yếu trên ứng dụng, cơ sở dữ liệu, email, trang web,… Ví dụ như một email rất dài hay một số lượng lớn email, hay một số lượng lớn yêu cầu tới trang web có thể gây quá tải cho server của các ứng dụng đó. Giải pháp của IDS: Một firewall dạng proxy rất hiệu quả để ngăn chặn các gói tin không mong muốn từ bên ngoài, tuy nhiên Network IDS có thể phát hiện được các tấn công dạng gói tin. 2. Scanning và Probe (Quét và thăm dò) Bộ quét và thăm dò tự động tìm kiếm hệ thống trên mạng để xác định điểm yếu. Tuy các công cụ này được thiết kế cho mục đích phân tích để phòng ngừa, nhưng chúng có thể được sử dụng để gây hại cho hệ thống. Các công cụ quét và thăm dò bao gồm SATAN, ISS Internet Scanner, NETA CyberCop, Asmodeus, và AXENT NetRecon. Việc thăm dò có thể được thực hiện bằng cách ping đến hệ thống cũng như kiểm tra các cổng TCP và UDP để phát hiện ra ứng dụng có những lỗi đã được biết đến. Vì vậy các công cụ này có thể là công cụ đắc lực cho mục đích xâm nhập. Giải pháp của IDS: Network-based IDS có thể phát hiện các hành động nguy hiểm trước khi chúng xảy ra. Yếu tố “time-to-response” rất quan trọng trong trường hợp này để có thể chống các kiểu tấn công như vậy trước khi có thiệt hại. Host-based IDS cũng có thể có tác dụng đối với kiểu tấn công này, nhưng không hiệu quả bằng giải pháp dựa trên mạng. Chính sách bảo mật theo chiều sâu 3. Password attack (Tấn công vào mật mã) Có 3 phương thức tiếp cận đối với kiểu tấn công Passwork attack. Kiểu dễ nhận thấy nhất là ăn trộm mật mã, mang lại quyền hành và tính linh động cao nhất cho kẻ tấn công có thể truy nhập tới mọi thông tin tại mọi thành phần trong mạng. Đoán hay bẻ khóa mật mã là phương thức tiếp cận được gọi là brute force bằng cách thử nhiều mật mã để mong tìm được mật mã đúng. Với bẻ khóa, kẻ tấn công cần truy nhập tới mật mã đã được mã hóa, hay file chứa mật mã đã mã hóa, kẻ tấn công sử dụng chương trình đoán nhiều mã với thuật toán mã hóa có thể sử dụng được để xác định mã đúng. Với tốc độ máy tính hiện nay, việc bẻ khóa là rất hiệu quả trong trường hợp mật mã là từ có nghĩa (trong từ điển), bất cứ mã nào nhỏ hơn 6 ký tự, tên thông dụng và các phép hoán vị. Hiện nay, Internet cung cấp rất nhiều chương trình “password hackerware” có thể tải về và sử dụng dễ dàng. Các công cụ trên cũng được các kỹ sư sử dụng với những mục đích tốt như tìm lại mật mã, hay tìm kiếm các thông tin cần thiết cho quá trình điều tra tội phạm… Ta có ví dụ về trộm mật mã như nghe trộm mật mã gửi trên mạng (LOPHT2.0), gửi thư, chương trình có kèm keylogger, trojan cho người quản trị; ngoài ra không thể không kể tới các phương thức tấn công vào yếu tố con người như nhìn trộm, dùng vũ lực ép buộc,… Dự đoán và bẻ khóa ví dụ như: đoán từ tên, các thông tin cá nhân, từ các từ thông dụng (có thể dùng khi biết username mà không biết mật mã), sử dụng tài khoản khách rồi chiếm quyền quản trị; các phương thức tấn công như brute force, đoán mật mã đã mã hóa từ các từ trong từ điển, ta có một số công cụ như LOPHT Crack, pwldump,… Giải pháp của IDS: Một Network-based IDS có thể phát hiện và ngăn chặn cố gắng đoán mã (có thể ghi nhận sau một số lần thử không thành công), nhưng nó không có hiệu quả trong việc phát hiện truy nhập trái phép tới file mã hóa chứa mật mã hay chạy các chương trình bẻ khóa. Trong khi đó Host-based IDS lại rất có hiệu quả trong việc phát hiện việc đoán mật mã cũng như phát hiện truy nhập trái phép tới file chứa mật mã. 4. Privilege-grabbing (Chiếm đặc quyền) Khi kẻ tấn công đã xâm nhập được vào hệ thống, chúng sẽ cố chiếm quyền truy nhập. Khi thành công, chúng đã chiếm được hệ thống. Trong hệ điều hành UNIX, điều này nghĩa là trở thành “root”, ở Windows NT là “Administrator”, trên NetWare là “Supervisor”. Các câu lệnh và mã thực hiện cho kỹ thuật trên có thể kiếm được trên Internet, ví dụ như khai thác lỗi tràn bộ đệm của hệ điều hành hay phần mềm ứng dụng để ghi đè các segment vào bộ nhớ. Khi chiến thuật này được sử dụng với chương trình hệ điều hành đặc quyền, nó thường gây lỗi hỏng core, dẫn đến kẻ tấn công có thể có quyền truy cập “superuser”. Dưới đây là một số kỹ thuật thường dùng cho việc chiếm đặc quyền: Đoán hay bẻ khóa của root hay administrator Gây tràn bộ đệm Khai thác Windows NT registry Truy nhập và khai thác console đặc quyền Thăm dò file, scrip hay các lỗi của hệ điều hành và ứng dụng. Giải pháp của IDS: Cả Network và Host-based IDS đều có thể xác định việc thay đổi đặc quyền trái phép ngay lập tức, ở cấp phần mềm, do việc đó xảy ra trên thiết bị chủ. Do Host-based IDS có thể tìm kiếm được những người dùng không có đặc quyền đột nhiên trở thành có đặc quyền mà không qua hệ thống thông thường, Host-based IDS có thể ngừng hành động này. Ngoài ra hành động chiếm đặc quyền của hệ điều hành và ứng dụng có thể được định nghĩa trong tập các dấu hiệu tấn công của Network-based IDS nhằm ngăn chặn việc tấn công xảy ra. Sensor IDS nhận dữ liệu về cuộc tấn công 5. Hostile code insertion (Cài đặt mã nguy hiểm) Một số loại tấn công có thể cài đặt mã nguy hiểm vào hệ thống. Mã này có thể lấy trộm dữ liệu, gây từ chối dịch vụ, xóa file, hay tạo backdoor cho lần truy nhập trái phép tiếp theo. Ta có một số ví dụ về việc cài đặt mã nguy hiểm sau: Virus : chương trình hay đoạn mã mà khi thực thi sẽ dẫn đến một số hành động tự động, có hoặc không có hại, nhưng luôn dẫn đến việc tạo ra bản sao của file hệ thống, file của ứng dụng hay dữ liệu. Virus thường được xác định nhờ vào những hành động có hại của chúng, có thể được kích hoạt dựa trên sự kiện, ngày,… Trojan Horse : một chương trình hay đoạn mã mà khi thực thi sẽ dẫn đến một số hành động tự động, thường có hại, nhưng không có mục đích nhân bản. Thường thì Trojan Horse được đặt tên hay mô tả như một chương trình mà người ta muốn sử dụng, nhưng thưc tế chúng kích hoạt các hành động có thể dẫn đến hỏng file hay hệ thống. Backdoor : đây là một loại Trojan đặc biệt thực hiện việc thay thế một chương trình có sẵn bằng một chương trình cho phép kẻ xâm nhập truy nhập được vào hệ thống trong tương lai (như “msgina.dll” trên Windows NT). Malicious Apple : đây cũng là một loại Trojan, chúng thường là Java hay ActiveX applet mà người dùng có thể gặp khi duyệt các trang web. Applet đó có vẻ như thực hiện các chức năng bình thường nhưng ẩn trong đó là các hành động nguy hiểm như tải file lên web site của kẻ tấn công. Giải pháp của IDS: Cài đặt các phần mềm bảo mật có tác dụng chống virus và các đoạn mã nguy hiểm lên gateway, server và workstation là phương pháp hiệu quả nhất để giảm mức độ nguy hiểm. Các file quan trọng được quản lý bằng Host IDS có thể đảm bảo rằng chương trình và file quan trọng của hệ điều hành không bị điều khiển. Kết hợp với các sự kiện khác, IDS có thể xác định được cố gắng cài đoạn mã nguy hiểm, ví dụ như nó có thể phát hiện được ai đó định thay chương trình ghi log bằng một backdoor. Network-based IDS cũng có thể được chỉ thị để quản lý hệ thống và file ảnh cho mục đích kiểm tra tính toàn vẹn. 6. Cyber vandalism (Hành động phá hoại trên máy móc) Cyber Vandalism bao gồm: thay đổi trang web, applet, xóa file, phá block khởi động và chương trình hệ điều hành, format ổ đĩa. Giải pháp của IDS: Đối với giải pháp của Host-based IDS, cài đặt và cấu hình cẩn thận có thể xác định được tất cả các vấn đề liên quan đến cyber vandalism. Ví dụ như mọi thay đổi đối với trang web có thể được ghi lại tại biên bản kiểm kê của thiết bị mà trang web nằm trên đó. Không chỉ được cấu hình để quản lý mọi thay đổi trên trang web, Host-based IDS còn có thể thực hiện các hành động đối phó, là những hành động được Security Administrator cấu hình. Network-based IDS thì có thể sử dụng dấu hiệu tấn công được định nghĩa trước để phát hiện chính xác việc truy nhập trái phép vào hệ điều hành, ứng dụng cũng như xóa file và thay đổi trang web. 7. Proprietary data theft (Ăn trộm dữ liệu quan trọng) Mặc dù hơn 80% các cuộc tấn công liên quan đến thông tin quan trọng đều xảy ra ngay trong tổ chức đó, số các cuộc tấn công từ bên ngoài đã liên tục tăng trong một vài năm qua. Ngoài việc tăng cường chính sách bảo mật trong hệ thống, các tổ chức cần phải xác định rằng việc tăng các liên kết cũng làm tăng sự nguy hiểm với các dữ liệu quan trọng như việc sao chép dữ liệu, nghe trộm việc truyền nhằm lấy dữ liệu quan trọng. Giải pháp của IDS: Mô hình Host-based IDS thực hiện việc quản lý các dữ liệu quan trọng có thể phát hiện các file bị sao chép bất hợp pháp. Trong một số trường hợp IDS có thể dựa vào biên bản của hệ điều hành, nhưng trong nhiều trường hợp việc ghi biên bản có chứa quá nhiều overhead (như với Winddows NT). Trong các trường hợp đó, Host-based IDS cần phải thực hiện việc quản lý riêng biệt với các file quan trọng. Còn Network-based IDS có thể được chỉnh sửa để quản lý việc truy nhập vào các file quan trọng và xác định việc truyền thông có chứa key word. Trong một số trường hợp rất khó có thể phát hiện được một host nghe trộm trên mạng, thì phần mềm IDS trên host đó có thể phát hiện được host đã bị đặt ở trạng thái ngẫu nhiên và đang nghe trộm việc tuyền thông. 8. Fraud, waste, abuse (Gian lận, lãng phí và lạm dụng) Gian lận, lãng phí và lạm dụng tài nguyên máy tính và vấn đề liên quan đến kinh tế trong thời kỳ hiện nay. Gian lận liên quan đến việc chuyển tiền bất hợp pháp, trộm số credit card, can thiệp vào tài khoản nhà băng, và thao túng chương trình kiểm tra viết (check writing). Lãng phí và lạm dụng xảy ra khi tài nguyên được sử dụng (tình cờ hay chủ đích) cho các công việc đi ngược lại với mục đích của tổ chức. Giải pháp của IDS: Network-based IDS có thể được thay đổi nhằm ngăn các URL, tuy nhiên các chương trình chuyên dụng để ngăn URL có liên hệ với firewall có thể hoạt động hiệu quả hơn, có thể duy trì một danh sách URL động và chính sách lạm dụng dựa trên USERID. Host-based IDS có thể thực thi một chính sách do công ty đặt ra, các truy nhập trái phép và sửa đổi file hệ thống có thể được phát hiện thông qua host-based IDS cũng như network-based IDS. Bất cứ thay đổi có thể ngay lâp tức được ghi trong biên bản hệ thống, agent có thể dễ dàng theo dõi các hành động đó. HIDS rất có hiệu quả đối với Internal threat 9. Audit trail tampering (Can thiệp vào biên bản) Như đã nói đến ở trên, hầu hết các thông tin tạo nên từ các hành động của người dùng được ghi trong các audit trail riêng của hệ thống của doanh nghiệp. Can thiệp vào biên bản là cách được ưa thích để loại bỏ hay che dấu vết. Dưới đây là các phương thức hacker thường dùng để tấn công vào audit trail và che dấu vết: Audit Deletion : xóa biên bản, khi đã vào được hệ thống. Deactivation : ngừng tiến trình ghi sự kiện lên audit trail. Modification : sửa sự kiện mà nó ghi nhận được trước khi thoát khỏi hệ thống. Flooding : tạo ra các sự kiện làm nhiễu để ngụy trang cho dấu vết tấn công. Giải pháp của IDS: Host-based IDS agent có thể quản lý việc can thiệp vào biên bản (xóa, ngừng hay sửa đổi) và thực hiện các hành động phù hợp. Network-based IDS có thể cung cấp ngữ cảnh cần thiết để phát hiện audit trail đã bị truy nhập hay sửa đổi. 10. Security infrastructure attack (Tấn công hạ tầng bảo mật) Có nhiều loại tấn công can thiệp vào việc điều khiển cơ bản của cơ sở hạ tầng bảo mật, như tạo tường lửa trái phép, chỉnh sửa tài khoản của người dùng hay router, hay thay đổi quyền của file. Tấn công vào cơ sở hạ tầng cho phép kẻ xâm nhập có thêm quyền truy nhập hay tạo thêm nhiều đường xâm nhập vào hệ thống hay mạng. Cuộc tấn công tạo ra thay đổi bằng cách truy nhập trái phép tới chức năng quản trị, tìm console quản trị không được chú ý, hay tác động lên người quản trị để thực hiện hành động nào đó. Trong các trường hợp đó rất khó có thể phân biệt giữa một hành động tấn công và một hành động của người quản trị mạng. Giải pháp của IDS: Các hành động quản trị mạng thường là đăng nhập vào audit trail trên host hay router trên một node lựa chọn trên mạng như SYSLOG trên UNIX. Host-based IDS có thể bắt giữ các cuộc đăng nhập mà thực hiện những hành động như đưa thêm tài khoản có đặc quyền, hay router và firewall bị thay đổi một cách đáng nghi. Còn network-based IDS có thể cung cấp ngữ cảnh cần thiết để quản lý việc lạm dụng. Chương III : Thực Nghiệm I.Giới thiệu về Snort IDS 1.Giới thiệu Snort là một hệ thống phát hiện xâm nhập mạng (NIDS) mã nguồn mở miễn phí. NIDS là một kiểu của hệ thống phát hiện xâm nhập (IDS), được sử dụng để quét dữ liệu di chuyển trên mạng. Cũng có các hệ thống phát hiện xâm nhập host-based, được cài đặt trên một ost cụ thể và chỉ để phát hiện các sự tấn công nhắm đến host đó. Mặc dù tất cả các phương pháp phát hiện xâm nhập vẫn còn mới nhưng Snort được đánh giá là hệ thống tốt nhất hiện nay. Dữ liệu được thu thập và phân tích bởi Snort. Sau đó, Snort lưu trữ dữ liệu trong cơ sở dữ liệu MySQL bằng cách dùng output plug-in. Web server Apache với ACID, PHP, thư viện GD và PHPLOT sẽ biểu diễn dữ liệu này trên trình duyệt khi một người dùng kết nối đếnserver. Người dùng có tạo nhiều kiểu truy vấn khác nhau để phân tích dữ liệu. Snort chủ yếu là một IDS dựa trên luật, tuy nhiên các input plug-in cũng tồn tại để phát hiện sự bất thường trong các header của giao thức. Snort sử dụng các luật được lưu trữ trong các file text, có thể được chỉnh sửa bởi người quản trị. Các luật được nhóm thành các kiểu. Các luật thuộc về mỗi loại được lưu trong các file khác nhau. File cấu hình chính của Snort là snort.conf. Snort đọc những luật này vào lúc khởi tạo và xây dựng cấu trúc dữ liệu để cung cấp các luật để bắt giữ dữ liệu. Tìm ra các dấu hiệu và sử dụng chúng trong các luật là một vấn đề đòi hỏi sự tinh tế, vì bạn càng sử dụng nhiều luật thì năng lực xử lý càng được đòi hỏi để thu thập dữ liệu trong thực tế. Snort có một tập hợp các luật được định nghĩa trước để phát hiện các hành động xâm nhập và bạn cũng có thể thêm vào các luật của chính bạn. Bạn cũng có thể xóa một vài luật đã được tạo trước để tránh việc báo động sai. 2.Các thành phần của Snort: Snort được chia thành nhiều thành phần. Những thành phần này làm việc với nhau để phát hiện các cách tấn công cụ thể và tạo ra output theo một định dạng được đòi hỏi. Một IDS dựa trên Snort bao gồm các thành phần chính sau đây: Packet Decoder: Bộ giải mã gói Preprocessor: Bộ tiền xử lý. Dectection Engine: Bộ máy phát hiện. Logging và Alerting System: Hệ thông ghi nhận và cảnh báo. Output Modules: Các Modules xuất Packet Decoder (Bộ phận giải mã gói) Packet decoder lấy những gói từ những loại khác nhau của giao diện mạng và chuẩn bị đưa chúng vào preprocessor hoặc gửi nó qua detection engine. Preprocessor (Bộ phận xử lí trước) Preprocessors là những thành phần hay những plug-in được sử dụng cùng với Snort để sắp xếp và thay đổi những gói dữ liệu trước khi detection engine thực hiện công việc tìm kiếm nếu gói dữ liệu đó là nguy hiểm. Một vài preprocessor còn có thể thực hiện tìm ra những dấu hiệu bất thường trong tiêu đề gói và sinh ra cảnh báo. Preprocessor rất quan trọng đối với IDS nhằm chuẩn bị những gói dữ liệu để phân tích cho việc thiết lập rule trong detection engine. Hacker sử dụng những công nghệ khác nhau nhằm đánh lừa một IDS bằng nhiều cách khác nhau. Cho ví dụ, bạn có thể tạo một rule để tìm một dấu hiệu “script/iiadmin” trong gói HTTP. Nếu bạn so khớp chính xác chuỗi này, bạn có thể dễ dàng bắt lấy. Cho ví du: “script/./iisadmin” “script/examples/../iisadmin” “script/iisadmin” Để làm phức tạp trạng thái, hacker cũng có thể chèn vào Uniform Resource Identifier (URI) ký tự nhị phân hay Unicode mà vẫn hợp quy tắc của một web server. Chú ý rằng web server thường hiểu tất cả những chuỗi và có thể xử lý chúng chính xác như mong muốn trong chuỗi “script/iisadmin”. Tuy nhiên IDS vẫn theo dõi so khớp chính xác, nó không thể phát hiện ra sự tấn công này. Một preprocessor có thể sắp xếp lại chuỗi đó để nó có thể phát hiện được. Preprocessor cũng có thể sử dụng cho những gói phân mảnh. Khi một gói dữ liệu có kích thước lớn truyền vào một host, gói đó thường bị phân mảnh. Cho ví dụ, kích thước mặc định lớn nhất cho gói dữ liệu trong mạng Ethernet thường là 1500 byte. Giá trị này được điều khiển bởi giá trị MTU (Maximum Transmission Unit) cho giao diện mạng. Điều này có nghĩa là nếu bạn gửi dữ liệu lớn hơn 1500 byte, nó sẽ cắt thành nhiều gói, mỗi gói phân mảnh đó có kích thước nhỏ hơn hoặc bằng 1500 byte. Hệ thống nhận sẽ tái hợp để thành gói dữ liệu nguyên thủy. Trên IDS, trước khi bạn áp dụng những rule hay tìm một signature, bạn phải tái hợp gói. Cho ví dụ, phân nửa dấu hiệu có thể cho thấy trong một đoạn này và nửa kia trong đoạn khác. Để phát hiện chính xác dấu hiệu, bạn phải kết hợp tất cả phân đoạn của mảnh. Hacker sử dụng sự phân mảnh để đánh bại những hệ thống IDS. Preprocessor thường được dùng để bảo vệ những loại tấn công này. Preprocessor trong Snort có thể phân mảnh gói, giải mã HTTP URI, tái hợp luồng TCP, v.v.. Những chức năng này rất quan trọng trong thành phần IDS. Dectection Engine (Bộ phận phát hiện): Detection engine là thành phần quan trọng nhất trong Snort. Nó chịu trách nhiệm phát hiện nếu có hành vi xâm nhập trong một gói. Detection engine tận dụng những rule Snort để làm việc này. Những rule được đọc trong cấu trúc dữ liệu bên trong hay buộc chặt chúng vào nơi mà chúng sẽ so khớp với tất cả các gói. Nếu một gói nào đó khớp với rule, hành động thích hợp sẽ sinh ra, chẳng hạn gói đó sẽ bị hủy. Những hành động đó có thể là ghi gói hay sinh cảnh báo. Detection engine là một phần tiêu chuẩn thời gian (time-critical) của Snort. Phụ thuộc vào sức khỏe của hệ thống bạn và có bao nhiêu rule được định nghĩa, nó có thể tiêu tốn bao nhiêu thời gian cho công việc đáp ứng các gói này. Nếu lưu lượng trên hệ thống mạng của bạn là khá cao khi Snort làm việc trong chế độ NIDS, bạn có thể hủy những gói. Sự vận hành của Detection engine phụ thuộc vào các yếu tố sau: Số rule trên đó. Sức mạnh của hệ thống trên đó có Snort đang chạy. Thông lượng bên trong đó. Lưu lượng trên mạng Khi thiết kế một NIDS, bạn phải giữ tất cả hồ sơ kỹ thuật trong đó. Nên nhớ rằng hệ thống phát hiện có thể khảo sát tỉ mỉ và áp dụng rule trên nhiều phần của gói dữ liệu. Những phần này có thể là: IP header của gói. Header lớp transport. Header gồm: TCP, UDP, và những header lớp transport khác. Nó cũng có thể làm việc trên ICMP header. Header lớp application. Nó gồm có: DNS header, FTP header, SNMP header, SMTP header. Bạn có thể phải sử dụng nhiều phương pháp trực tiếp tại header lớp application, chẳng hạn như tìm kiếm offset của dữ liệu. Payload của dữ liệu. Điều này giúp bạn tạo ra một rule dùng cho detection engine để tìm một chuỗi bên trong dữ liệu. Detection engine làm việc khác nhau trong mỗi phiên bản Snort khác nhau. Trong tất cả phiên bản Snort 1.x, detection engine ngừng xử lý trên gói đó khi một rule được so khớp trên gói đó. Phụ thuộc vào rule, detection engine thực hiện những hành động thích hợp như ghi log file hay sinh một cảnh báo. Điều này có nghĩa là nếu một gói khớp với tiêu chuẩn được định nghĩa trong nhiều rule, chỉ rule đầu tiên được áp dụng vào gói đó mà không tìm kiếm sự so khớp khác. Đây là một vấn đề. Một rule thiếu trọn vẹn sẽ sinh ra một cảnh báo không trọn vẹn, thâm chí nếu một rule khá đầy đủ (tương ứng với một cảnh báo tốt) có thể nằm sau rule trước nó. Vấn đề này đã được sửa trong Snort phiên bản 2, tất cả các rule đều được so khớp vào một gói trước khi sinh một cảnh báo. Sau khi so khớp tất cả các rule, rule nào trọn vẹn nhất sẽ được chọn để sinh cảnh báo. Detection engine trong Snort 2.0 đã được làm lại một cách hoàn chỉnh để nó so sánh tốt hơn, phát hiện sớm hơn so với các phiên bản trước. Logging và Alerting System (Hệ thống ghi và cảnh báo) : Phụ thuộc vào detection engine tìm trong gói, gói có thể được dùng để ghi hành động hay sinh cảnh báo. Việc ghi lưu trong những text file đơn giản, loại file tcpdump hay những hình thức ghi khác. Mặc định tất cả những log file được lưu trong /snort/log/. Bạn có thể sử dụng dòng lệnh “–l” để thay đổi vị trí sinh log file hay cảnh báo. Có nhiều lựa chọn dòng lệnh sẽ được thảo luận trong phần sau và chi tiết thông tin về cách ghi log file hay cảnh báo. Output Modules (Bộ phận đầu ra) : Output modules hay plug-in thực hiện những hoạt động khác nhau phụ thuộc bạn muốn lưu kết quả sinh ra bởi logging và cảnh báo thế nào. Về cơ bản, những modules này điều khiển loại kết quả sinh ra bởi hệ thống logging và cảnh báo. Phụ thuộc vào sự cấu hình, Output modules có thể làm những việc sau: Đơn giản chỉ ghi vào snort/log/ hay những thư mục khác Gửi SNMP traps Gửi thông điệp đến syslog. Ghi vào cơ sở dữ liệu như MySQL hay Oracle. Sinh ra dẫn xuất eXtensible Markup Language (XML) Bổ sung cấu hình trên router và firewall. Gửi thông điệp Server Message Block (SMB) đến hệ thống Microsoft Window. Những công cụ khác cũng có thể gửi cảnh báo trong những định dạng khác như e-mail hay qua giao diện web. Bảng sau đây cho ta thấy những thành phần khác nhau của một IDS: Tên Mô tả Packet Decoder Chuẩn bị gói cho việc xử lý Preprocessor hay Input plugin Dùng để bình thường hoá tiêu đề giao thức, phát hiện sự bất thường, tái hợp gói và tái hợp luồng TCP Detection Engine Áp dụng rule lên gói Logging and Alerting System Sinh thông điệp cảnh báo và ghi lại log Output Modules Xử lý cảnh báo, ghi và sinh kết quả cuối cùng. 3.Tập luật (rulesets) trong Snort : Giống như virus, hầu hết hành động xâm nhập có vài loại signature. Thông tin về những signature này dùng để tạo Snort rules. bạn đã phân tích một số kỹ thuật tấn công DoS/DDoS để tìm ra những cơ chế hoạt động và thông tin về những công cụ và công nghệ của họ. Hơn nữa, có những lổi cơ sở dữ liệu khiến cho những intruder muốn khai thác. Có nhiều cuộc tấn công được biết đến cũng sử dụng signature để tìm một ai đó cố gắng khai thác chúng. Những signature này có thể hiển thị trong phần header (tiêu đề) của gói dữ liệu hoặc trong payload. Hệ thống phát hiện Snort dựa trên rules. Những rule này lấy cơ sở từ dấu hiệu kẻ xâm nhập (signature). Snort rules có thể được sử dụng để kiểm tra những phần khác nhau của gói dữ liệu. Snort 1.x có thể phân tích ở những header ở lớp 3 và 4 nhưng không thể phân tích ở giao thức lớp ứng dụng. Snort phiên bản 2.x có hỗ trợ phần header lớp ứng dụng. Những rule được áp dụng trong một kiểu nào đó đến tất cả các gói phụ thuộc vào loại đó. Một rule có thể sử dụng để phát ra một thông điệp cảnh báo, ghi một thông điệp, hay, trong những thuật ngữ của Snort, pass gói dữ liệu (không làm gì cả). Snort rules được viết theo cú pháp dễ hiểu nhất. Hầu hết những rules được viết trên một dòng đơn. Tuy nhiên bạn cũng có thể mở rộng trên nhiều dòng bằng cách dùng một ký tự “\” vào cuối dòng. Rules thường đặt trong một file cấu hình, chẳng hạn như là snort.conf. Bạn cũng có thể sử dụng nhiều file bằng cách gôm chúng trong một file cấu hình chính. Trong chương này cung cấp thông tin về những loại rule khác nhau cũng như cấu trúc cơ bản của rule. Bạn sẽ tìm thấy nhiều ví dụ của những rule chung cho hành vi phát hiện xâm nhập trong chương sau. 1.Cấu trúc của một rule: Tất cả các rule đều có 2 phần logic: rule header và rule options. Rule Header Rule Options Cấu trúc Rule Rule header chứa thông tin về hoạt động mà rule để lấy. Nó cũng chứa tiêu chuẩn cho việc so sánh một luật dựa vào gói dữ liệu. Rule option thường chứa một thông điệp cảnh báo và thông tin về thông điệp sẽ được sử dụng để phát sinh cảnh báo. Rule option cũng chứa tiêu chuẩn cho việc so sánh một luật dựa vào gói dữ liệu. Một rule có thể phát hiện một loại hay nhiều loại hành vi xâm nhập. Rule “thông minh” là rule có thể áp dụng lên nhiều dấu hiệu xâm nhập. Cấu trúc chung của rule header như sau: Action Protocol Address Port Derection Address Port Rule Header Action dùng để xác định loại hành động mà nó lấy về khi tiêu chuẩn gặp được và một rule được so sánh chính xác một gói dữ liệu. Những hoạt động điển hình là sinh ra một cảnh báo hoặc ghi thông điệp hoặc diện chứng cho rule khác. Protocol dùng để áp dụng rule lên gói chỉ với một giao thức riêng. Đây là tiêu chuẩn đầu tiên giám sát trong rule. Bạn cũng có thể sử dụng những thành phần khác để ngăn chặn những địa chỉ từ một mạng đầy đủ. Chú ý rằng có 2 trường địa chỉ trong rule. Địa chỉ nguồn và đích được xác định dựa trên trên trường direction. Cho một ví dụ, nếu trường direction là “à”, địa chỉ phía bên trái là nguồn, địa chỉ bên phải là đích. Trong giao thức TCP/UDP, port xác định cổng nguồn và đích của gói khi rule áp dụng lên đó. Trong trường hợp những giao thức lớp network như IP và ICMP, port numbers không có ý nghĩa. Cho ví dụ, rule sau đây sẽ sinh ra cảnh báo khi nó phát hiện gói ping ICMP (ICMP ECHO REQUEST) với TTL bằng 100: alert icmp any any -> any any (msg: "Ping with TTL=100"; \ ttl: 100;) Phần nằm trước dấu ngoặc đơn gọi là rule header. Phần trong dấu ngoặc đơn là rule option. Header chứa những phần sau: Một rule action (hành động của luật). Trong rule trên, action là “alert”, có nghĩa là một cảnh báo sẽ sinh ra khi điều kiện bắt gặp. Nhớ rằng những gói được ghi bằng mặc định khi cảnh báo phát ra. Phụ thuộc vào trường action, rule option có thể chứa tiêu chuẩn cho rule. Protocol (giao thức). Ở đây là ICMP, nghĩa là rule chỉ áp dụng lên tất cả gói ICMP. Trong Snort detection engine, nếu giao thức của gói không phải ICMP, rule sẽ không làm gì trên gói đó để tiết kiệm thời gian xử lý của CPU. Thành phần protocol là rất quan trọng khi bạn muốn áp dụng Snort rule chỉ trên những gói của một loại riêng biệt. Địa chỉ nguồn và cổng nguồn. Trong ví dụ này cả hai đều là “any”, có nghĩa là rule sẽ áp dụng lên tất cả các gói đến từ nhiều nguồn. Dĩ nhiên port number sẽ không áp dụng lên gói ICMP. Port number chỉ thích hợp trong trường hợp protocol là TCP hay UDP. Direction. Trong trường hợp này, nó là ký hiệu à từ trái sang phải. Nói lên địa chỉ và port number bên trái dấu à là nguồn còn bên phải là đích. Điều đó cũng có nghĩa rằng rule sẽ áp dụng lên gói đi từ nguồn đến đích. Bạn cũng có thể dùng dấu ß để định nghĩa địa chỉ nguồn/đích cho gói. Ký tự cũng có thể sử dụng để áp dụng rule lên gói đi từ 2 bên. Địa chỉ đích là cổng đích. Trong ví dụ này cả hai đều là “any”, có nghĩa là rule sẽ áp dụng lên tất cả các gói không quan tâm đến địa chỉ đích. Direction trong rule không đóng vai trò gí cả bởi vì rule được áp dụng lên tất cả các gói ICMP di chuyển cả hai bên, do đã sử dụng từ khóa “any” trong cả hai thành phần địa chỉ nguồn và đích. Rule Option: Rule option theo sau rule header và được đặt trong cặp dấu ngoặc đơn. Có thể một lựa chọn hay nhiều lựa chọn truyền vào cùng dấu. Nếu bạn sử dụng nhiều lựa chọn, dạng lựa chọn này là AND. Hành động trong rule header chỉ được gọi khi tất cả những tiêu chuẩn trong lựa chọn là đúng. Bạn đã sử dụng option như msg và ttl trong ví dụ trước rồi đó. Tất cả những lựa chọn được định nghĩa bởi từ khóa. Những Rule option chứa các đối số. Thường thì những lựa chọn có 2 phần: một từ khóa và một đối số. Những đối số truyền vào từ lựa chọn từ khóa bằng một dấu “:”. Chẳng hạn như: msg: "Detected confidential"; Lựa chọn msg là từ khóa và “Detected confidential” là đối số cho từ khóa này. Sau đây là những từ khóa thông dụng . Nó hoạt động trên những giao thức riêng, cho nên có ý nghĩa khác nhau đi theo giao thức. Về nội dung (lớp application): Từ khóa content: Một chức năng quan trọng của Snort, nó có khả năng tìm mẫu dữ liệu bên trong gói. Mẫu này có thể hiển thị ở dạng chuỗi ASCII hay nhị phân trong hình thức mã hexa. Rule sau đây phát hiện một mẫu “GET” trong phần dữ liệu của gói TCP xuất phát từ địa chỉ 192.168.1.0. từ khóa GET thường được sử dụng cho nhiều loại tấn công HTTP; tuy nhiên ở đây rule chỉ giúp cho bạn hiểu như thế nào từ khóa này làm việc mà thôi: alert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any \ (content: "GET"; msg: "GET matched";) Rule dưới đây cũng tương tự nhưng nó liệt kê ở dang hexa: alert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any \ (content: "|47 45 54|"; msg: "GET matched";) Số 47 tương đương mã ASCII là G, 45 = E, 54 = T. Bạn cũng có thể kết hợp dạng ASCII và nhị phân trong hexa vào một rule. Ký tự hexa nằm trong cặp dấu “||”. Có 3 từ khóa khác nhau dùng chung với content. Những từ khóa này là tiêu chuẩn trong khi tìm một mẫu bên trong gói. Đó là: Offst Depth Nocase Từ khóa offset: Từ khóa offset sử dụng để bắt đầu tìm trong khoảng nào đó từ điểm bắt đầu của phần dữ liệu của gói. Dùng một con số làm đối số cho từ khóa này. Ví dụ sau sẽ bắt đầu tìm từ “HTTP” sau 4 byte kể từ byte đầu tiên trong gói. alert tcp 192.168.1.0/24 any -> any any \ (content: "HTTP"; offset: 4; msg: "HTTP matched";) Từ khóa depth định nghĩa điểm để Snort ngừng tìm kiếm mẫu. Từ khóa depth: Chỉ định một giới hạn dưới cho việc lấy mẫu. Dùng depth cho phép bạn chỉ định một khoảng bắt đầu từ byte đầu tiên của gói. Dữ liệu sau khoảng này không lấy mẫu nữa. Nếu bạn kết hợp offset và depth cùng với content, bạn có thể chỉ ra vùng dữ liệu mà bạn muốn lấy mẫu. Ví dụ bạn muốn tìm từ “HTTP”, lấy mẫu 4 byte và chỉ xét trong 40 byte đầu tiên: alert tcp 192.168.1.0/24 any -> any any (content: \ "HTTP"; offset: 4; depth: 40; msg: "HTTP matched";) Nó rất quan trọng khi bạn muốn giới hạn công việc tìm kiếm trong gói. Cho ví dụ, thông tin về yêu cầu HTTP GET được tìm thấy từ đầu gói. Không cần phải tìm toàn bộ gói. Nhiều gói được capture với kích thước rất lớn, nó sẽ tốn nhiều thời gian để tìm kiếm. Từ khóa nocase: Nocase thường kết hợp với content. Nó không có đối số. Nó chỉ giúp tìm mẫu trong dữ liệu không phân biệt chữ hoa hay thường. Từ khóa flow: Flow được sử dụng để áp dụng một rule trên những phiên TCP đến những gói trong phương hướng riêng. Từ khóa này dùng xác định phương hướng. Những lựa chọn có thể sử dụng cho từ khóa này xác định phương hướng: to_client to_server from_client from_server Những lựa chọn này lần đầu có thể gây cho bạn khó hiểu. Từ “to” mang ý nghĩa là đáp ứng (response) và “from” mang nghĩa là yêu cầu (request). Những lựa chọn khác dưới đây cũng có thể sử dụng để áp dụng rule vào các trạng thái khác nhau của kết nối TCP. Lựa chọn stateless, áp dụng rule mà không cần xem trạng thái của phiên TCP Lựa chọn established, áp dụng rule mà để xác lập chỉ những phiên TCP Lựa chọn no_stream, bật những rule để áp dụng vào gói mà không cần xây dựng từ một luồng. Lựa chọn stream_only, áp dụng rule chỉ trên những gói đã xây dựng từ một luồng. Luồng TCP (TCP Stream)được xử lý bởi bộ tiền xử lý stream4 (thảo luận trong phần sau). Lựa chọn stateless và established liên kết đến trạng thái TCP. Lựa chọn về IP: Từ khóa fragbits: Tiêu đề IP (IP header) chứa 3 cờ bit, dùng để phân mảnh và tái hợp gói IP. Chức năng các cờ như sau: Bit dành riêng (RB – Reserved Bit), dùng cho tương lai. Bit không phân mảnh (DF – Don’t Fragment Bit). Nếu bit này bật, nó cho biết gói IP sẽ không phân mảnh. Bit có nhiều phân mảnh (MF – More Fragments Bit). D tương đương DF. Tương tự, R là RB, M là MF. Bạn cũng có thể dùng dấu “!” trong rule. Ngoài ra, đi chung với “D,R,M”, ta cũng thường thấy các từ “+,-”. Nó có ý nghĩa, nếu là “+” tức là gắn thêm bit cờ với những bit khác, nếu là “-” thì bỏ bớt một số bit. Từ khóa ipopts: Trong IPv4, tiêu đề là 20 byte. Bạn có thể thêm những lựa chọn cho tiêu đề IP này. Chiều dài của phần lựa chọn có thể lên đến 20 byte. Lựa chọn IP dùng cho những mục đích khác nhau, đó là: Record Route (rr) Time Stamps (ts) Lose Source Routing (lsrr): định tuyến nguồn nới lỏng Strict Source Routing (ssrr); định tuyến nguồn siết chặc Trong Snort rule, hầu hết những lựa chọn thường dùng liệt kê trong RFC 791 tại Hacker có thể dùng những lựa chọn này để tìm thông tin về tổ chức mạng. Ví dụ, loose và strict source routing có thể giúp hacker khám phá ra đườn dẫn của một mạng nào đó tồn tại hay không. Dùng những Snort rule, bạn có thể phát hiện những nổ lực tìm kiếm của hacker bằng từ khóa ipopts. Rule sau áp dụng cho Losse Source Routing: alert ip any any -> any any (ipopts: lsrr; \ msg: "Loose source routing attempt";) Bạn cũng có thể dùng từ khóa logto để ghi thông điệp vào một file. Tuy nhiên, bạn không thể chỉ định nhiều từ khóa lựa chọn IP trong một rule. Từ khóa ip_proto: Ip_proto sử dụng IP Proto plug-in để xác định con số giao thức trong IP header. Từ khóa yêu cầu con số giao thức như một đối số. bạn có thể sử dụng một tên cho giao thức nếu nó đã định nghĩa trong file /etc/protocols. Xem mẫu file tương tự như sau: ax.25 93 AX.25 # AX.25 Frames ipip 94 IPIP # Yet Another IP encapsulation micp 95 MICP #Mobile Internetworking Control Pro. scc-sp 96 SCC-SP # Semaphore Communications Sec. Pro. etherip 97 ETHERIP # Ethernet-within-IP Encapsulation encap 98 ENCAP # Yet Another IP encapsulation # 99 # any private encryption scheme gmtp 100 GMTP # GMTP ifmp 101 IFMP # Ipsilon Flow Management Protocol pnni 102 PNNI # PNNI over IP Rule sau kiểm tra nếu giao thức IPIP là đang sử dụng bởi gói dữ liệu: alert ip any any -> any any (ip_proto: ipip; \msg: "IP-IP tunneling detected";) Tiếp theo, ta dùng một số thay vì tên (hiệu quả hơn) alert ip any any -> any any (ip_proto: 94; \msg: "IP-IP tunneling detected";) Những giao thức mới nhất có thể tìm thấy từ ICANN tại tại IANA Từ khóa id: Id dùng để so sánh trường ID phân mảnh của tiêu đề IP. Mục đích của nó là phát hiện ra những tấn công mà có dùng ID cố định trong IP header. Định dạng của nó là: id: "id_number" Nếu giá trị của trường id trong IP header bằng 0, nó cho biết đây là phân mảnh cuối cùng của một gói IP (nếu gói IP đó bị phân mảnh). Giá trị 0 cũng cho biết rằng nó chỉ phân mảnh nếu gói đó là không phân mảnh. Id trong Snort rule dùng để xác định phân mảnh cuối cùng trong gói IP. Từ khóa tos: Tos dùng để phát hiện ra một giá trị nào đó trong trường TOS (Type of Service) của IP header. Ví dụ như sau: tos: 1; Từ khóa ttl: Ttl được dùng để phát hiện giá trị Time o Live trong IP header của gói. Từ khóa có một giá trị cho biết chính xác giá trị TTL.Từ khóa này có thể sử dụng với tất cả loại giao thức xây dựng trên giao thức IP, bao gồm ICMP, UDP và TCP. Định dạng chung của nó như sau: ttl: 100; Tiện ích traceroute sử dụng TTL để tìm bộ định tuyến kế tiếp trong đường đi của gói. Traceroute gởi những gói UDP với giá trị TTL tăng dần. Giá trị TTL được giảm dần tại mỗi hop. Khi nó có giá trị là 0, router sinh ra một gói ICMP đến nguồn. Sử dụng gói ICMP này, tiện ích traceroute tìm ra địa chỉ IP của router. Ví dụ, để tìm router thứ 5, traceroute sẽ gửi những gói UDP với TTL đặt là 5. Khi gói này đến router thứ 5, nó có giá trị là 0 và một gói ICMP được sinh ra. Sử dụng ttl, bạn có thể tìm ra nếu một ai đó cố gắng traceroute qua mạng của bạn. Từ khóa cần chính xác giá trị TTL để mà so khớp. Lựa chọn về TCP: Từ khóa seq: Seq trong Snort rule kiểm tra sequence number của gói TCP. Đối số này là một sequence number. Nó có định dạng: seq: "sequence_number"; Sequence number là một phần trong tiêu đề TCP. Từ khóa flags: Flags dùng để tìm ra cờ bit được bật trong tiêu đề TCP gói. Mỗi cờ có thể dùng như một đối số cho flags trong Snort rule. Bạn có thể tham khảo thêm cờ flag trong TCP tại RFC 793 tại Cờ bit này được sử dụng cho nhiều công cụ bảo mật nhằm mục đích khác nhau bao gồm công cụ quét cổng như nmap. Snort hỗ trợ những loại cờ bit .Bạn cũng có thể dùng dấu “!,+,*” giống như cờ bit trong tiêu đề IP, tương ứng với phép AND, OR và NOT. alert tcp any any -> 192.168.1.0/24 any (flags: SF; \ msg: “SYNC-FIN packet detected”;) Từ khóa ack: TCP header có một trường Acknowledgemant Number, có chiều dài 32 bit. Trường cho biết là sequence number tiếp theo của gói TCP bên gởi đang chờ đợi từ bên nhận. Trường này chỉ có ý nghĩa khi cờ ACK trong TCP header được bật. Công cụ nmap ( sử dụng tính năng của gói TCP này đế ping một máy. Cho ví dụ, nó có thể gửi một gói TCP tới port 80 với cờ ACK bật và sequence number là 0. Khi gói này không truy cập được do bên nhận có áp dụng rule đối với TCP, nó sẽ gửi về một gói RST. Khi nmap nhận được gói RST này, nó chỉ ra rằng host đó vẫn còn hoạt động. Phương pháp này làm việc trên những host mà không đáp ứng những gói ICMP ECHO REQUEST. Để phát hiện loại ping TCP này, bạn có thể tạo một rule như sau: alert tcp any any -> 192.168.1.0/24 any (flags: A; \ack: 0; msg: "TCP ping detected";) Rule này cho biết là thông điệp cảnh báo sẽ phát ra khi bạn nhận một gói TCP với cờ A bật và ACK chứa có giá trị 0. Những cờ TCP được liệt kê trong bảng dưới. Host đích là 192.168.1.0/24. bạn có thể sử dụng giá trị của ACK trong rule, tuy nhiên nó thêm vào Snort chỉ phát hiện cho loại tấn công này. Thường thì khi cờ A được bật, giá trị ACK không còn là 0. Lựa chọn về ICMP: Từ khóa icmp_id: Lựa chọn icmp_id phát hiện ra ID của gói ICMP. Cú pháp của nó là: icmp_id: Trường nhận dạng một ICMP tìm thấy trong thông điệp ICMP ECHO REQUEST và ICMP ECHO REPLY (xem RFC 792). Trường này được sử dụng để so sánh ECHO REQUEST và ECHO REPLY. Thường thì khi bạn sử dụng lệnh ping, cả hai loại ICMP đó được trao đổi giữa bên gửi và bên nhận. Bên gửi gửi gói ECHO REQUEST và bên nhận đáp ứng lại gói ECHO REPLY. Trường này có ích cho việc nhận ra cái gói đáp ứng cho gói yêu cầu. Luật sau kiểm tra nếu ICMP IP trong tiêu đề ICMP bằng 100 thì sinh một cảnh báo. alert icmp any any -> any any (icmp_id: 100; \ msg: "ICMP ID=100";) Từ khóa icmp_seq: Lựa chọn icmp_seq tương tự như icmp_id. Cú pháp của nó là: icmp_seq: sequence number cũng là một trường trong tiêu đề ICMP và cũng có ích trong việc so sánh ECHO REQUEST và ICMP ECHO REPLY (xem RFC 792). Từ khóa này cho phép tìm một sequence number đặc trưng. Tuy nhiên, ít ai mà dùng từ khóa này. Xem rule sau, nếu sequence number là 100 thì sinh cảnh báo: alert icmp any any -> any any (icmp_seq: 100; \ msg: "ICMP Sequence=100";) Từ khóa itype: Tiêu đề ICMP đến sau tiêu đề IP và chứa một trường type.Từ khóa itype nhằm phát hiện những tấn công sử dụng trường type trong tiêu đề ICMP. Đối số cho nó là một số và có định dạng sau: itype: "ICMP_type_number" Trường type trong ICMP header của gói dữ liệu được sử dụng để xác định loại gói ICMP. Danh sách các loại ICMP khác nhau và giá trị của trường type tương ứng: Ví dụ, nếu bạn muồn sinh một cảnh báo cho loại thông điệp source quench, sử dụng rule sau: alert icmp any any -> any any (itype: 4; \msg: "ICMP Source Quench Message received";) Từ khóa icode: Trong những gói ICMP, ICMP header đến sau IP header. Nó chứa một trường code. Từ khóa icode dùng để phát hiện trường code trong tiêu đề gói ICMP. Đối số cho trường này là một số và có định dạng sau: icode: "ICMP_codee_number" Trường type trong tiêu đề ICMP cho biết loại thông điệp ICMP. Trường code cho biết chi tiết loại đó. Ví dụ, nếu trường type có giá trị là 5 thì loại ICMP là “ICMP redirect”. Có thể có nhiều lý do sinh ra một ICMP redirect. Trường code cho biết rõ những loại lý do đó: Nếu trường code bằng 0, gửi gói ICMP đến một mạng. Nếu trường code bằng 1, gửi gói ICMP đến một host Nếu trường code bằng 2, gói ICMP là loại của dịch vụ và mạng. Nếu trường code bằng 3, gói ICMP là loại của dịch vụ và host. Icode trong Snort rule sử dụng để tìm giá trị trường code trong ICMP header. Rule sau sinh ra một cảnh báo cho những gói ICMP đến host: alert icmp any any -> any any (itype: 5; \ icode: 1; msg: "ICMP ID=100";) Hai từ khóa itype và icode thường dùng chung với nhau. Nếu icode dùng một mình thường không đạt được công việc tốt bởi vì những loại ICMP khác cũng có thể có cùng giá trị code giống nhau. II.Thực hiện: 1.Mô hình: 2.Thực hiện: 2.1.Các phần mềm cần thiết: Snort Apache HTTP Server PHP5 MySQL 2.2.Thực hiện: Cài Snort: Cài Apache HTTP Server: Khởi động Apache HTTP Server: Test Apache HTTP Server Cài PHP5: Cài MySQL cho Apache HTTP Server: Cấu hình lại file my.cnf: Khởi động lại MySQL: Cài thư viện cho Apache HTTP Server: CàiPHPMyadmin: Cấu hình lại file php.ini: Tạo cơ sở dữ liệu để lưu file log: Cài Snort cho MySQL: Cấu hình file snort.conf: Import table cơ sở dữ liệu cho Snort: Xem bảng database: Table của Snort: Tạo một rule đơn gian : test.rules Nội dung của rules: Test rules vừa tạo: Install rules thành công: Truy cập trang www.google.com: Kết quả: Test tấn công Dos: Tool tấn công: DosHTTP: Máy tấn công: Máy cài Snort: Kết quả: Chương IV: Kết luận và Hướng phát triển I.Kết luận: Cho thấy được sự cần thiết của bảo mật, những hạn chế của các phương pháp bảo mật hiện tại, đồng thời nói lên sự cần thiết của hệ thống phát hiện xâm nhập trái phép. Hệ thống phát hiện xâm nhập mạng (IDS) tuy chỉ mới xuất hiện sau này nhưng hiện đóng vai trò không kém phần quan trọng. IDS giúp chúng ta khám phá, phân tích một nguy cơ tấn công mới. Từ đó vạch ra phương án phòng chống. Ở một góc độ nào đó, có thể lần tìm được thủ phạm gây ra một cuộc tấn công. Qua bài báo cáo này: Nắm bắt được những khái niệm cơ bản nhất về một hệ thống phát hiện xâm nhập. Triển khai được một hệ thống phát hiện xâm nhập phổ biến là Snort Nắm bắt được cơ chế viết luật cho Snort và đã viết được một số luật cơ bản. Trình bày được một số hình thức xâm nhập tấn công cơ bản và sử dụng Snort để phát hiện các tấn công đó. II.Hướng phát triển: Sau khi đã nắm cơ bản về Hệ thống phát hiện xâm nhập (IDS), ta có thể thực hiện nghiên cứu Hệ thống phát hiện và chặn xâm nhập (IPS) và triển khai cho các hệ thống mạng của các tổ chức. Nghiên cứu cách sử dụng Snort để phát hiện các hình thức tấn cống hiện tại và có thể phát triển lên các phương pháp phòng chống tiên tiến hơn ở một tương lai không xa. Tài liệu tham khảo Earl Carter, “Introduction to Network Security”, Cisco Secure Intrusion Detection System, Cisco Press, 2002. “The need for Intrusion Detection System”, “How IDS Addresses common Threats, Attacks & Vulnerabilities”, Everything you need to know about IDS, 1999 AXENT Technologies, Inc. Christopher Kruegel, Fredrik Valeur, Giovanni Vigna, “Computer security and Intrusion Detection”, “Alert Correlation”, Intrusion Detection and Correlation: Challenges and Solutions, Springer, 2005. Q.o.D, ”Part I”, A look into IDS/Snort, 2004 KnowledgeNet Security+ Student Guide, Module 1–3, knowledgenet.com, 2003 www.snort.org.

Các file đính kèm theo tài liệu này:

  • docHệ thống phát hiện xâm nhập ids.doc