MỤC LỤC TÓM TẮT NỘI DUNG ĐỀ TÀI . 6 LỜI MỞ ĐẦU . 7 CHƢƠNG 1. TỔNG QUAN VỀ NESSUS . .8 1.1 LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN CỦA NESSUS . .8 1.2 CÁC THÀNH PHẦN CỦA NESSUS . .8 1.2.1 Kiến trúc của Nessus với mô hình Client-Server . 8 1.2.2 Mô hình Nessus Knowledge Base . .9 1.2.3 Mô hình Nessus Plugin . .10 CHƢƠNG 2. TÌM HIỂU VỀ NGÔN NGỮ NASL . .11 2.1 TỔNG QUAN VỀ NGÔN NGỮ NASL . .11 2.1.1 Lịch sử ngôn ngữ NASL . 11 2.1.2 Điểm khác biệt giữa NASL1 và NASL2 . .13 2.1.3 NASL2 ngôn ngữ thông dịch, tựa C . 14 2.2 CẤU TRÚC NGÔN NGỮ NASL2 . .15 2.2.1 Sơ bộ về quy tắc viết chương trình . .15 2.2.2 Cú pháp . .15 2.2.3 Kiểu dữ liệu . .20 2.2.4 Các toán tử . 20 2.2.4.1 Các toán tử thông thường . .20 2.2.4.2 Các phép toán số học . .21 2.2.4.3 Các toán tử tựa C . .21 2.2.4.4 Toán tử xử lý chuỗi . .21 2.2.4.5 Toán tử so sánh . .22 2.2.4.6 Toán tử lôgic . .22 2.2.4.7 Phép toán xử lý bit . .22 2.2.4.8 Các phép xử lý đặc biệt . .23 Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 1 2.2.5 Độ ưu tiên các phép toán . .23 2.2.6 Vòng lặp và các câu lệnh điều khiển . .24 2.2.7 Khai báo biến, hàm . .25 2.2.7.1 Khai báo biến . .25 2.2.7.2 Khai báo hàm . .25 2.2.7.3 Lấy đối số của hàm . .25 2.2.7.4 Gọi hàm . .26 2.3 THƢ VIỆN NASL2 . .27 2.3.1 Các hằng số được định nghĩa từ trước . 27 2.3.2 Các hàm tích hợp sẵn . .29 2.3.2.1 Các hàm cơ bản (Knowledge base functions) . .29 2.3.2.2 Các hàm báo cáo . .30 2.3.2.3 Các hàm chỉ dẫn . 31 2.3.2.4 Các hàm gắn kết . 33 2.3.2.5 Các hàm về mạng . .34 2.3.2.6 Các hàm xử lý chuỗi . .37 2.3.2.7 Các hàm HTTP . .40 2.3.2.8 Các hàm Raw IP . 41 2.3.2.9 Các hàm mật mã . 44 2.3.2.10 Các hàm không an toàn . 44 2.3.3 Các file thư viện NASL . .45 2.3.3.1 dump.inc . 47 2.3.3.2 ftp_func.inc . .47 2.3.3.3 http_func.inc . .47 2.3.3.4 http_keepalive.inc . 48 2.3.3.5 nfs_func.inc . .49 2.3.3.6 smb_nt.inc . 49 2.3.3.7 smtp_func.inc . .51 2.3.3.8 Các hàm thư viện khác . .51 2.4 XÂY DỰNG PLUGIN CHO NESSUS . .53 2.4.1 Thông dịch script tự xây dựng . 53 2.4.2 Thử nghiệm script . .54 Trang 2 KẾT LUẬN . .56 TÀI LIỆU THAM KHẢO . .57 PHỤ LỤC . .58 TÓM TẮT NỘI DUNG ĐỀ TÀI Đề tài thực hiện 2 nhiệm vụ chính: Tìm hiểu về hoạt động của Nessus: cách cài đặt, chạy Nessus. Tìm hiểu về các thành phần cơ bản của Nessus: Nessus Engine, Nessus Plugin, Nessus Knowledge Base. Tìm hiểu về ngôn ngữ script NASL của Nessus: cấu trúc ngôn ngữ, các hàm cơ bản của NASL, các file định nghĩa (.inc), các file script (.nasl), cách viết và thực thi script nasl. Tiến tới tự xây dựng một plugin mới để quét lỗ hổng. LỜI MỞ ĐẦU Trong quá trình bảo mật hệ thống mạng cho một công ty hay tổ chức việc sử dụng các công cụ mạnh để kiểm tra hay phát hiện các lỗi bảo mật nhằm nâng cao tính an toàn của hệ thống và toàn mạng là rất quan trọng. Trong đó Nessus và GFI LanGuard là hai trong số các chương trình rà soát lỗ hổng bảo mật mạng hàng đầu hiện nay. Nhưng GFI LanGuard là một phần mềm thương mại, trong khi đó Nessus lại là một phần mềm miễn phí hoàn toàn cho người dùng cá nhân, với cơ sở dữ liệu về các lỗ hổng có thể được rất phong phú cho cả hệ thống chạy Window hay Linux và được cập nhật thường xuyên. Theo thống kê của trang sectools.org, Nessus là phần mềm quét lỗ hổng bảo mật phổ biến nhất trong các năm 2000, 2003 và 2006. Hãng Tenable ước tính rằng nó được sử dụng rộng rãi bởi hơn 75000 tổ chức trên toàn thế giới. Việc dò tìm các lỗ hổng bảo mật đóng một vai trò rất quan trọng với các quản trị viên hệ thống, các chuyên gia bảo mật v.v nhằm tìm ra các biện pháp tăng cường bảo mật cho hệ thống, và cả những kẻ muốn tấn công thực sự. Tuy nhiên việc tìm thêm các lỗ hổng mới tương đối khó khăn, một phần do các lỗ hổng cũ sau khi công bố một thời gian, các nhà sản xuất sẽ tìm cách “vá” lại những lổ hổng đó, một phần do những người tìm ra những lỗ hổng mới đó không muốn công khai rộng rãi. Việc dò quét các lỗ hổng của Nessus được thực hiện dựa trên hai thành phần chính là Nessus Engine và Nessus Plugin. Nessus Engine đóng vai trò như một trình biên dịch để thực hiện các câu lệnh của Nessus Plugin. Công cụ để xây dựng các plugin đó chính là ngôn ngữ kịch bản NASL (Nessus Attrack Scripting Language). Nội dung của báo cáo được chia làm 2 phần: Chương 1: Tìm hiểu về các thành phần, cách cài đặt và sử dụng Nessus. Chương 2: Tìm hiểu ngôn ngữ NASL, tiến tới tự xây dựng plugin cho Nessus. Do thời gian tìm hiểu ngắn và kiến thức còn hạn chế, nên một số nội dung như Nessus Engine, nhóm sẽ không đi sâu vào nghiên cứu.
Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 1 MỤC LỤC TÓM TẮT NỘI DUNG ĐỀ TÀI . 6 LỜI MỞ ĐẦU . 7 CHƢƠNG 1. TỔNG QUAN VỀ NESSUS 8 1.1 LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN CỦA NESSUS . 8 1.2 CÁC THÀNH PHẦN CỦA NESSUS . 8 1.2.1 Kiến trúc của Nessus với mô hình Client-Server 8 1.2.2 Mô hình Nessus Knowledge Base . 9 1.2.3 Mô hình Nessus Plugin 10 CHƢƠNG 2. TÌM HIỂU VỀ NGÔN NGỮ NASL .11 2.1 TỔNG QUAN VỀ NGÔN NGỮ NASL .11 2.1.1 Lịch sử ngôn ngữ NASL 11 2.1.2 Điểm khác biệt giữa NASL1 và NASL2 .13 2.1.3 NASL2 ngôn ngữ thông dịch, tựa C 14 2.2 CẤU TRÚC NGÔN NGỮ NASL2 15 2.2.1 Sơ bộ về quy tắc viết chương trình 15 2.2.2 Cú pháp 15 2.2.3 Kiểu dữ liệu 20 2.2.4 Các toán tử .20 2.2.4.1 Các toán tử thông thường .20 2.2.4.2 Các phép toán số học .21 2.2.4.3 Các toán tử tựa C .21 2.2.4.4 Toán tử xử lý chuỗi 21 2.2.4.5 Toán tử so sánh 22 2.2.4.6 Toán tử lôgic 22 2.2.4.7 Phép toán xử lý bit .22 2.2.4.8 Các phép xử lý đặc biệt 23 Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 2 2.2.5 Độ ưu tiên các phép toán .23 2.2.6 Vòng lặp và các câu lệnh điều khiển .24 2.2.7 Khai báo biến, hàm 25 2.2.7.1 Khai báo biến .25 2.2.7.2 Khai báo hàm .25 2.2.7.3 Lấy đối số của hàm 25 2.2.7.4 Gọi hàm 26 2.3 THƢ VIỆN NASL2 27 2.3.1 Các hằng số được định nghĩa từ trước .27 2.3.2 Các hàm tích hợp sẵn .29 2.3.2.1 Các hàm cơ bản (Knowledge base functions) .29 2.3.2.2 Các hàm báo cáo 30 2.3.2.3 Các hàm chỉ dẫn .31 2.3.2.4 Các hàm gắn kết .33 2.3.2.5 Các hàm về mạng .34 2.3.2.6 Các hàm xử lý chuỗi 37 2.3.2.7 Các hàm HTTP 40 2.3.2.8 Các hàm Raw IP .41 2.3.2.9 Các hàm mật mã .44 2.3.2.10 Các hàm không an toàn 44 2.3.3 Các file thư viện NASL .45 2.3.3.1 dump.inc .47 2.3.3.2 ftp_func.inc 47 2.3.3.3 http_func.inc 47 2.3.3.4 http_keepalive.inc 48 2.3.3.5 nfs_func.inc 49 2.3.3.6 smb_nt.inc 49 2.3.3.7 smtp_func.inc .51 2.3.3.8 Các hàm thư viện khác .51 2.4 XÂY DỰNG PLUGIN CHO NESSUS .53 2.4.1 Thông dịch script tự xây dựng .53 2.4.2 Thử nghiệm script 54 Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 3 KẾT LUẬN .56 TÀI LIỆU THAM KHẢO .57 PHỤ LỤC 58 Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 4 DANH MỤC CÁC BẢNG Bảng 2.1 Độ ưu tiên của các phép toán. 23 Bảng 2.2 Một số hàm thư viện của Nessus. .51 Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 5 DANH MỤC CÁC HÌNH Hình 1.1 Mô hình kiến trúc Nessus dạng Client-Server. . 9 Hình 1.2 Mô hình hoạt động của Nessus Plugin. 10 Hình 2.1 Địa chỉ host FTP của kmasecurity.net 55 Hình 2.2 Kết quả banner trả về của host FTP kmasecurity.net .55 Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 6 TÓM TẮT NỘI DUNG ĐỀ TÀI Đề tài thực hiện 2 nhiệm vụ chính: Tìm hiểu về hoạt động của Nessus: cách cài đặt, chạy Nessus. Tìm hiểu về các thành phần cơ bản của Nessus: Nessus Engine, Nessus Plugin, Nessus Knowledge Base. Tìm hiểu về ngôn ngữ script NASL của Nessus: cấu trúc ngôn ngữ, các hàm cơ bản của NASL, các file định nghĩa (.inc), các file script (.nasl), cách viết và thực thi script nasl. Tiến tới tự xây dựng một plugin mới để quét lỗ hổng. Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 7 LỜI MỞ ĐẦU Trong quá trình bảo mật hệ thống mạng cho một công ty hay tổ chức việc sử dụng các công cụ mạnh để kiểm tra hay phát hiện các lỗi bảo mật nhằm nâng cao tính an toàn của hệ thống và toàn mạng là rất quan trọng. Trong đó Nessus và GFI LanGuard là hai trong số các chương trình rà soát lỗ hổng bảo mật mạng hàng đầu hiện nay. Nhưng GFI LanGuard là một phần mềm thương mại, trong khi đó Nessus lại là một phần mềm miễn phí hoàn toàn cho người dùng cá nhân, với cơ sở dữ liệu về các lỗ hổng có thể được rất phong phú cho cả hệ thống chạy Window hay Linux và được cập nhật thường xuyên. Theo thống kê của trang sectools.org, Nessus là phần mềm quét lỗ hổng bảo mật phổ biến nhất trong các năm 2000, 2003 và 2006. Hãng Tenable ước tính rằng nó được sử dụng rộng rãi bởi hơn 75000 tổ chức trên toàn thế giới. Việc dò tìm các lỗ hổng bảo mật đóng một vai trò rất quan trọng với các quản trị viên hệ thống, các chuyên gia bảo mật v.v… nhằm tìm ra các biện pháp tăng cường bảo mật cho hệ thống, và cả những kẻ muốn tấn công thực sự. Tuy nhiên việc tìm thêm các lỗ hổng mới tương đối khó khăn, một phần do các lỗ hổng cũ sau khi công bố một thời gian, các nhà sản xuất sẽ tìm cách “vá” lại những lổ hổng đó, một phần do những người tìm ra những lỗ hổng mới đó không muốn công khai rộng rãi. Việc dò quét các lỗ hổng của Nessus được thực hiện dựa trên hai thành phần chính là Nessus Engine và Nessus Plugin. Nessus Engine đóng vai trò như một trình biên dịch để thực hiện các câu lệnh của Nessus Plugin. Công cụ để xây dựng các plugin đó chính là ngôn ngữ kịch bản NASL (Nessus Attrack Scripting Language). Nội dung của báo cáo được chia làm 2 phần: Chương 1: Tìm hiểu về các thành phần, cách cài đặt và sử dụng Nessus. Chương 2: Tìm hiểu ngôn ngữ NASL, tiến tới tự xây dựng plugin cho Nessus. Do thời gian tìm hiểu ngắn và kiến thức còn hạn chế, nên một số nội dung như Nessus Engine, nhóm sẽ không đi sâu vào nghiên cứu. Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 8 CHƢƠNG 1. TỔNG QUAN VỀ NESSUS 1.1 LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN CỦA NESSUS Ban đầu, Nessus là một dựa án nguồn mở “Nessus Project”, được đề xuất bởi Renaud Deraison vào năm 1998, mã nguồn của các thành phần đều được công bố công khai (các phiên bản Nessus 2 trở về trước). Từ tháng 10 năm 2005, Tenable Network Security, một công ty do Renaud Deraison đồng sáng lập, đã phát hành Nessus 3 dưới dạng mã nguồn đóng. Tháng 8 năm 2008, hãng Tenable đưa ra phiên bản cho phép người dùng cá nhân được sử dụng đầy đủ các plugin. Tháng 4 năm 2009, hãng phát hành Nessus 4.0.0, đến tháng 2 năm 2012 phát hành Nessus 5.0. Nessus có thể chạy trên nhiều nền tảng hệ điều hành khác nhau, bao gồm cả UNIX, Linux, Mac OS X, Windows. Hiện tại phiên bản Nessus 5.0 chạy trên giao diện web, do đó có thể dễ dàng truy cập, sử dụng trên mọi hệ điều hành. 1.2 CÁC THÀNH PHẦN CỦA NESSUS Nessus có các thành phần chính: - Nessus Engine: nhận, thực thi và trả lời lại các yêu cầu quét của người dùng. Việc quét các lỗ hổng được thực hiện theo các chỉ dẫn của các plugin (một tập các câu lệnh script của ngôn ngữ kịch bản NASL). - Nessus Plugin: hệ thống file của ngôn ngữ kịch bản NASL, gồm các file định nghĩa .inc và file kịch bản .nasl. - Nessus Server (nessusd): thực hiện nhận các yêu cầu quét của người dùng, sau đó phân tích, tổng hợp, trả lại kết quả cho Nessus client. - Nessus Client: hiển thị kết quả quét lại cho người dùng thông qua trình duyệt web. - Nessus Knowledge Base: “Cơ sở dữ liệu đã biết” của Nessus cho phép các plugin sau tận dụng dữ liệu kết quả của Plugin trước đó. Điều này giúp Nessus dễ dàng mở rộng và tăng tốc độ thực thi. 1.2.1 Kiến trúc của Nessus với mô hình Client-Server Ban đầu, Server sẽ tổng hợp tất cả các lỗi bảo mật hiện nay. Khi một máy tính Client yều cầu được kiểm tra các lỗi có tồn tại trên máy tính của mình hay không, Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 9 đầu tiên chúng phải được kiểm tra xem có kết nối tới server hay không, sau khi đã kiểm tra kết nối chúng sẽ được quét tùy thuộc vào các mức độ yêu cầu khi quét. Mô hình này sẽ dựa vào kết quả sau khi máy Client yêu cầu kiểm tra, và dựa vào những lỗi đã được xác định có thể đưa ra những những hướng giải quyết một cách nhanh nhất. Database Nessus Server Firewall Internet Clents User và thiết bị yêu cầu kiểm tra Hình 1.1 Mô hình kiến trúc Nessus dạng Client-Server. 1.2.2 Mô hình Nessus Knowledge Base Mô hình Nessus Knowledge Base là gì? - Mô hình này khá đơn giản nó thu thập danh sách các lỗi bảo mật khác đang được thử nghiệm. Nó cho phép bổ sung, hoặc chia sẻ những thông tin về hệ thống đang được kiểm tra. Phương thức hoạt động của Nessus Knowledge Base: Giả sử chúng ta thực hiện quét kiểm tra lỗi bảo mật trên trang Server at5akma.com, quá trình kiểm tra hoàn tất và không thấy một lỗi bảo mật nào có trên đó. Lúc này Nessus Knowledge Base được tạo ra cho máy chủ này (/usr/local/var/nessus/users/mh/ kbs/at5a.com) cho thấy khoảng 1800 lỗi, Người ta phải nhớ rằng Nessus Knowledge Base cũng chỉ có khoảng 1725 lỗi đã được trusted. Và những thông số đó được sử dụng cho những nghiên cứu sau này để đảm bảo rằng liên tục cập nhật những lỗi bảo mật mới nhất. Tìm hiểu xây dựng Plugin cho Nessus sử dụng NASL Trang 10 1.2.3 Mô hình Nessus Plugin Nessus Plugin là gì? - Là một chương trình dùng để kiểm tra tính bảo mật của một trang web từ xa, máy tính cục bộ hay những thiết bị bảo vệ thông tin . Hoạt động của Nessus Plugin: Mô hình hoạt động của Nessus Plugin khá đơn giản, ta có thể dùng gia diện hoặc dùng command line để quét. Bằng việc sử dụng Plugin đã có sẵn sau khi cài để kiểm tra tính bảo mật. request result request result Kiểm qua 1 trang web qua mạng Nessus Plugin Web Server Hình 1.2 Mô hình hoạt động của Nessus Plugin.