Nó không có các thànhphần phức tạp con trỏ trong C, khi thực hiện viết một script chúng ta cũng khôngcần quan tâm đến loại đối tượng, không cần phải khai báo các biến trước khi sửdụng c
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃKHOA AN TOÀN THÔNG TINBÀI TẬP LỚN
MÔN AN TOÀN INTERNET VÀ THƯƠNG MẠI ĐIỆN TỬ
Lớp: AT7A
HÀ NỘI, 2014
Trang 2MỤC LỤC
MỤC LỤC 2
DANH MỤC HÌNH ẢNH 4
LỜI NÓI ĐẦU 5
Chương 1: TỔNG QUAN VỀ NESSUS 6
1 Lỗ hổng là gì? Điểm yếu là gì? 6
2 Công cụ quét lỗ hổng Nessus 6
2.1 Lịch sử hình thành 6
2.2 Các kiến trúc cơ bản của Nessus 7
2.3 Tưởng lửa trên server 9
2.4 Nền (Background) 10
Chương 2: VIẾT PLUGIN CHO NESSUS TRÊN NASL 12
1 NASL là gì? 12
2 Cấu trúc ngôn ngữ NASL 13
2.1 Kiểu dữ liệu 13
2.2 Các toán tử 14
2.3 Vòng lặp và luồng điều khiển 17
2.4 Khai báo biến, hàm 18
3 Thư viện NASL 20
3.1 Hằng số 20
3.2 Một số hàm tích hợp sẵn 22
3.3 Thư viện NASL 31
4 Viết plugin cho Nessus sử dụng NASL 37
4.1 Giới thiệu về plugin 37
4.2 Nội dung trong plugin 37
4.3 Chạy plugin 41
KẾT LUẬN 45
TÀI LIỆU THAM KHẢO 46
PHỤ LỤC 47
Trang 3DANH MỤC HÌNH ẢNH
Hình 1.1: Mô hình kiến trúc client-server 7
Hình 1.2: Tường lửa dựa vào máy chủ Nessus 9
Hình 1.3: Phần cứng cần thiết 10
Hình 2.1: Các tùy chọn của NASL 41
Hình 2.2:Thông tin của HTTP header và FTP header 43
Hình 2.3: Thông tin về các cổng đang được mở 43
Trang 4LỜI NÓI ĐẦU
Ngày nay, công nghệ thông tin phát triển như vũ bão song hành với sựphát triển của nó là sự phát triển của những phần mềm độc hại,sâu, virus…nhằm phá hoại hệ thống của chúng ta Chúng tận dụng những điểm yếu của hệthống để phá hoại Vì vậy, chúng ta phải đánh giá những điểm yếu của hệ thống
từ đó đưa ra hướng giải quyết Trong đó Nessus là chương trình rất nổi tiếng để
dò, quét ra các lỗ hổng Nessus thực hiện nhiệm vụ dựa theo các kịch bản đãđược định nghĩa sẵn gọi là các plugin Các plugin này được viết bằng ngôn ngữNASL (Nessus Attack Scripting Language)
Vì vậy, nhóm xin trình bày đề tài tìm hiểu xây dựng plugin cho Nessus sửdụng NASL Trong giới hạn của đề tài, nhóm chia đề tài thành hai chương nhưsau:
Chương 1: Tổng quan về Nessus: Chương này nhóm sẽ tìm hiểu tổngquan về Nessus như chức năng, kiến trúc
Chương 2: Viết plugin cho Nessus trên NASL: Chương này nhóm sẽ tìmhiểu về ngôn ngữ NASL, cách sử dụng các hàm, tìm hiểu các thư viện vàviết một plugin đơn giản cho Nessus
Nhóm sinh viên thực hiện
Trang 5Chương 1: TỔNG QUAN VỀ NESSUS
1 Lỗ hổng là gì? Điểm yếu là gì?
Lỗ hổng là bất kì lỗi lập trình hoặc cấu hình sai mà có thể cho phép một
kẻ xâm nhập truy cập trái phép Điều này bao gồm bất cứ điều gì từ một mậtkhẩu yếu đến một chương trình chưa được vá lỗi trong dịch vụ mạng Lỗ hổng
đã trở thành yếu tố đằng sau hầu hết sâu mạng, các phần mềm gián điệp vànhững mã độc khác
Điểm yếu là nơi trong hệ thống dễ bị tấn công nhất nhưng nó chưa bị khaithác để thực hiện hành vi trái phép
Việc đánh giá các lỗ hổng được một công cụ thực hiện rất đầy đủ làNessus
2 Công cụ quét lỗ hổng Nessus
2.1 Lịch sử hình thành
Vào năm 1998, danh sách các lỗ hổng vẫn chưa phát triển thành một cơ sởdữ liệu đầy đủ và việc nghiên cứu được thực hiện kín trên ngân sách eo hẹp Cácmáy quét lỗ hổng thương mại thì có chi phí đắt đỏ Còn máy quét lỗ hổng mãnguồn mở mới nhất, the Security Administrator Tool for AnalyzingNetworks(SATAN), thì không thể vượt qua được máy quét thương mại Internetthì phát triển tăng vọt dẫn đến sự gia tăng các thử nghiệm để kiểm tra tính antoàn của nó Từ đó, Renaud Deraison[2] đã tạo ra dự án mã nguồn mở được gọi
là Nessus Đó là câu trả lời cho việc giá của máy quét thương mại ngày càngtăng và sự trì trệ của dự án SATAN Ngay lập tức, cộng đồng sử dụng Nessus đãphát triển nhanh chóng
Ngày 5 tháng 10 năm 2005, Tenable Network Security, một công ty doRenaud Deraison đồng sáng lập, thông báo rằng phiên bản tiếp theo của Nessus,Nessus 3, sẽ không còn mã nguồn mở nữa Cơ cấu( engine) của Nessus 3 thì vẫnmiễn phí cho phép cộng đồng phát hành các bản cập nhật plugin nhưng chi phícho dịch vụ và rà soát lỗ hổng mới nhất thì được tính Một vài nhà phát triển đã
Trang 6chia thành 2 hướng phát triển độc lập dựa trên Nessus như OpenVAS và Wahn[2].
Porz-Nessus 2 vẫn được cập nhật khi Porz-Nessus 3 đã phát hành được một thờigian
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
Nessus cho phép bạn quét từ xa để xác định mạng của mình có bị xâmnhập hay không và nó cũng cung cấp các tính năng để quét cục bộ trên một máytính cụ thể
Dowload phiên bản mới nhất về cài đặt tại:
http://www.tenable.com/products/nessus/select-your-operating-system
2.2 Các kiến trúc cơ bản của Nessus
Các thuật ngữ:
Policy – thiết lập cấu hình cho tiến trình quét
Scan – kết hợp danh sách IPs và/hoặc tên miền với chính sách
Report – kết quả của việc quét
Plugin – một kiểm tra an ninh hay một cửa sổ cài đặt quét
Plugin family – một nhóm plugin với một điểm chung ( ví dụ: FTP,Web servers, Cisco)
Kiến trúc của Nessus bao gồm[1]:
Nessus Client và Server
Trang 7quét Nessus đã đưa ra mô hình client/server để giải quyết vẫn đề trên Sau khikết nối đến Server, server sẽ phân tách client để quét lỗ hổng và client vẫn có thểdùng tài nguyên của mình cho việc khác đến khi công việc hoàn thành Mô hìnhkiến trúc này cung cấp sự linh hoạt để triển khai máy quét (server) và kết nối vớigiao diện đồ họa của khách hàng (client) từ bất kì máy tính nào với một trìnhduyệt web Điều này giúp giảm chi phí quản lý, một máy chủ có thể được truycập bởi nhiều máy khách.
Hình 1.1: Mô hình kiến trúc client-server 2.2.2 Plugins
Các máy quét an ninh truyền thống yêu cầu cập nhật từ nhà cung cấp đểkiểm tra những lỗ hổng mới nhất và thường phát hành các bản cập nhật khôngkịp thời Nessus cung cấp NASL (Nessus Attack Scripting Language) – sẽ đượctìm hiểu cụ thể vào chương 2 – cho phép phân tích để nhanh chóng tạo ra plugincho việc kiểm tra lỗ hổng
2.2.3 Knowledge Base
Kiến trúc Knowledge base cho phép những plugin của ngày hôm nay tậndụng dữ liệu thu thập được bởi các plugin trước đó Nó đơn giản là danh sáchcác thông tin thu thập được về một máy chủ Ta xét một kiểm tra an ninh đểkiểm tra sự tồn tại của một máy chủ web và nếu tìm được thì kiểm tra xemHTTP có thực sự đang chạy không? Plugin có khả năng thiết lập giá trị biến
Trang 8trong Nessus knowledge base cho host Các kịch bản NASL sẽ thực thi và tìmthấy Apache đang chạy trên host từ xa Các plugin sau đó sẽ thiết lập biến cơ sởcho máy chủ cụ thể “www/banner/80” đến “Apache/1.3.29(Unix)PHP/4.3.4mod_ssl/2.8.16 Openssl/0.9.7a”[2] Điều này cho phép tất cả các plugin sau đó
có thể đọc giá trị của “www/banner/80” Giả sử, một plugin khác đọc giá trị này.Nếu nó tìm thấy chuỗi “Openssl/0.9.7a” trong giá trị trả về, nó thông báo rằngmáy chủ có thể bị tổn thương do một phiên bản lỗi thời của Openssl Như vậy,mỗi plugin sử dụng thông tin đã thu được bằng cách bổ sung các plugin trước.Điều này sẽ giúp mở rộng khả năng của Nessus và tăng hiệu suất của các tínhnăng plugin
Knowledge base được lưu trên Nessus server và được tạo mặc định trên
đường dẫn /opt/nessus/var/nessus/users/<username>/kbs , <username> là
người muốn kiểm tra
2.3 Tường lửa trên server
Nếu Nessus server được cấu hình trên máy chủ với một phần mềmfirewall chuyên nghiệp thì các kết nối phải được sự cho phép của địa chỉ IPclient Theo mặc định thì cổng 8834 được dùng cho Nessus web server[5]
Tuy nhiên, Firewall thường có bảng dịch địa chỉ và những kết nối nhanhcủa Nessus dẫn đến firewall để mất những kết nối cũ hơn[2] Việc này làm ảnhhưởng đến cả người dùng và việc quét lỗ hổng Bằng cách phân phối các máychủ Nessus xuyên suốt mạng mà vấn đề trên được bỏ qua và có thể tự động quétđịnh kì, đảm bảo một mạng tổng thể mạnh mẽ hơn Mô hình như sau:
Trang 9Hình 1.2: Tường lửa dựa vào máy chủ Nessus
2.4 Nền (Background)
Quét thông minh: Nessus không cho rằng một dịch vụ nhất địnhđược chạy trên một cổng cố định Vì vậy, nếu bạn chạy máy chủweb trên cổng 1234 thì nó sẽ phát hiện và kiểm tra một cách thíchhợp
Modulo kiến trúc: kiến trúc khách chủ cũng cấp sự linh hoạt đểtriển khai các máy quét (server) và client
Tương thích CVE: hầu hết các plugin liên kết đến CVE để quản trịviên lấy thêm thông tin về các lỗ hổng công cộng chúng cũng baogồm tài liệu để Bugtraq( BID), OSVDB, và cảnh báo của nhà cungcấp
Kiến trúc plugin: mỗi kiểm tra ninh được viết như một plugin vànhóm lại vào một trong 42 họ( families) Danh sách plugin Nessus
có sẵn tại
Trang 10mật mới nhất có sẵn tại:
http://www.tenable.com/plugins/index.php?view=newest.
Báo cáo: Nessus không chỉ cho biết máy bạn tồn tại những lỗ hổng
gì mà có thông báo cả mức độ nguy cơ (info, low, medium, high,critical), và nó còn cung cấp các giải pháp
Hỗ trợ đầy đủ ssl: có khả năng kiểm tra các dịch vụ được cung cấptrên ssl như https, smtps, imaps,…
Diễn đàn mở: các câu hỏi về Nessus? Thảo luận tại:
Trang 11Chương 2: VIẾT PLUGIN CHO NESSUS TRÊN NASL
1 NASL là gì?[3][4]
NASL (Nessus Attack Scripting Language) là một ngôn ngữ kịch bảnđược thiết kế cho các máy quét Nessus Nó cho phép bất cứ ai cũng có thể viếtmột thử nghiệm cho một lỗ hổng bất kỳ NASL là một ngôn ngữ thông dịch, chophép người sử dụng có thể thực thi ngay câu lệnh vừa được đưa vào NASL cómột thuận lợi lớn cho người muốn tìm hiểu, đó là cú pháp của nó gần giống vớingôn ngữ C (về cách khai báo, các toán tử, vòng lặp…) Nó không có các thànhphần phức tạp con trỏ trong C, khi thực hiện viết một script chúng ta cũng khôngcần quan tâm đến loại đối tượng, không cần phải khai báo các biến trước khi sửdụng chúng mà chỉ cần tập trung vào các thử nghiệm bảo mật mà chúng ta muốn
sử dụng Chính những điều này đã khiến cho ngữ pháp của NASL trở lên đơngiản và dễ hiểu hơn với người dùng
Đầu tiên là NASL1 ra đời với hơn 1000 lỗi kiểm tra bảo mật Ban đầu tốc
độ không được xem là vấn đề đáng quan tâm nhất Khi số lượng plugin tăng lên,
người dùng sử dụng Nessus để quét nhiều host hơn thì NASL1 thực sự trở lênchậm hơn cho những tác vụ này Năm 2001, khi Michel Arboi viết lại thư viện
libnasl để thực hiện mở rộng ngôn ngữ và sửa chữa những khuyết điểm của
NASL1, thư viện được viết lại có tên NASL2 Kể từ phiên bản 3.0, NASL2được tích hợp sẵn vào trong engine
Quy tắc cơ bản với NASL:
Chú thích được bắt đầu với một dấu “#” và chỉ có tác dụng chúthích trên dòng hiện tại Chú thích sẽ được trình thông dịch bỏ quakhi đọc đến nó
Có thể thêm các khoảng trắng tùy ý giữa 2 toán tử
o Chuỗi sẽ được phân tích bởi bộ phân tích từ vựng Bộ phântích sẽ trả lại thông báo quá dài nếu nó gặp một diễn tả như:
Trang 12a+++++b (nó sẽ hiểu thành a++ ++ + b) Khi đó ta nên viết :a++ + ++b.
o Không thể thêm khoảng trắng vào giữa chuỗi đa ký tự Ví dụ:
x = a + + (nên viết x = a++)
2 Cấu trúc ngôn ngữ NASL
2.1 Kiểu dữ liệu
sử dụng các hàm xử lý chuỗi
Chuỗi có thể chuyển đổi: là chuỗi được nhập vào giữa haidấu nháy đơn ‘’ (ví dụ: ‘hello\n’), khi đó một vài ký tự củachuỗi sẽ được tự động chuyển đổi (dấu \n sẽ thực hiện tựđộng xuống dòng)
Trang 13Không phải là một kiểu dữ liệu độc lập Các toán tử so sánh sẽ trả về về 0nếu là FALSE hay 1 nếu là TRUE Hay những giá trị chuyển đổi khác như:
Giá trị chưa xác định hay giá trị null sẽ là FALSE
Số nguyên là TRUE nếu không phải là NULL, là FALSE nếu
+ :phép cộng 2 số nguyên
- : phép trừ 2 số nguyên
Trang 14NASL2cung cấp một số toán tử giống C:
++: thực hiện cộng trước (++x: tăng biến x lên 1 đơn vị và trả
về kết quả x sau khi tăng) hoặc thực hiện cộng sau (x++: tăngbiến x lên 1 đơn vị nhưng trả về giá trị x trước khi tăng)
-: thực hiện trừ trước (-x) hoặc thực hiện trừ sau (x-) Giá trịtrả về tương tự như với ++
+=, -=, *=, /=, %=: có chứcnăngtươngtự như C.
<<= và >>= tương tự như trong C
Toán tử chuỗi
+: phép nối chuỗi
-: loại bỏ các phần của chuỗi
[]: trích xuất một ký tự của chuỗi
><: so sánh chuỗi có chứa trong nhau hay không, nếu 1 trong
2 chuỗi chứa chuỗi còn lại sẽ cho kết quả là TRUE, ngược lại
là FALSE Ví dụ: s1 = “hi”; s2 = “hello” “h” >< “hello” sẽtrả về TRUE
>!<: so sánh chuỗi không chứa trong nhau Nếu 2 chuỗikhông chứa trong nhau thì sẽ trả về TRUE, ngược lại làFALSE
=~: là một toán tử (regex match), có chức năng như một lờigọi tới hàm ereg
Trang 15 !~: là một toán tử (regex don’t match), có chức năng ngượcvới ereg.
!: phép phủ định của logic Ví dụ, !TRUE _ FALSE
&&: phép “and” logic
||: phép “or” logic
Toán tử với bit
~: thuật toán phủ định Ví dụ: ~0 = 1
&: thuật toán and
|: thuật toán or
^: thuật toán phép xor
<<: phép dịch trái bit
>>: phép dịch phải bit
>>>: phép dịch logic sang phải
Các phép xử lý khác
Break: dùng break để thoát khỏi một hàm hoặc một script
Nếu các đối số khác kiểu nhau, phép + có thể được dùng đểđổi kiểu tự động:
Trang 16o Một chuỗi không chuyển đổi cộng với một chuỗichuyển đổi sẽ cho ta một chuỗi chuyển đổi ví dụ:
“hello\n” + ‘hi’ -> ‘hello\\nhi’
o Nếu một trong 2 đối số là chuỗi không chuyển đổi thìđối số còn lại sẽ được chuyển thành kiểu chuỗi khôngchuyển đổi Ví dụ: “hello” + 2 -> “hello2”
o Nếu một trong các đối số là kiểu nguyên, đối số cònlại sẽ được chuyển sang kiểu nguyên
o Trong các trường hợp khác sẽ được trả về giá trịNULL
Phép trừ sẽ có chuyển đổi tương tự như phép cộng
Không nên sử dụng các biến chưa được khởi tạo Để cácscript có thể hoạt động, giá trị NULL sẽ được định nghĩa thaybằng giá trị 0 hoặc “” (có thể là integer hoặc string) Vì vậycần kiểm tra xem biến đã được định nghĩa và khởi tạo hay
chưa bằng isnull () trước khi dùng.
2.3 Vòng lặp và luồng điều khiển
for (expr1; cond; expr2) block; tương tự như cấu trúc for trong C
ví dụ: sử dụng vòngfor in ra các số từ 1 ->10
for(i=1;i<=10;i++){ display(i,’\n’)};
foreachvar (array) block;lặp tất cả cácphầntử trongmảng
Lặpcácgiá trị lưutrongmỗiphầntử củamảng
while(cond) block;thựchiệnkhốilệnhvớiđiềukiện là TRUE, sẽ bỏ
qua khốilệnhkhôngthựchiệnnếuđiềukiện là FALSE
repeat block; until (cond);thựchiệnkhốilệnhvớiđiềukiện là TRUE
Khốilệnhđượcthựchiệnítnhất 1 lần
Break;thựchiệnthoátkhỏivònglặp.
Continue;bỏ qua vònglặphiệntạivàthựchiệnvònglặptiếptheo.
Trang 17 Return;trả về giá trị củahàmhiệntại.
2.4 Khai báo biến, hàm
Khai báo biến:[3][4]
NASL1 chỉ có biến toàn cục, với NASL2 có sử dụng cả biến toàn cục vàbiến cục bộ Biến cục bộ được tạo và tồn tại trong các hàm, được giải phóng khikết thúc hàm Trình thông dịch sẽ thực hiện kiểm tra biến trong hàm hiện tạiđược thực hiện rồi kiểm tra bao quát ra ngoài hàm cho đến khi thấy xuất hiệnbiến toàn cục
Thường thì chúng ta sẽ không cần khai báo biến: bởi hoặc là nó đã tồn tại,hay nó được sử dụng trong hàm hiện tại, hay nó được gọi bởi hàm khác Tuynhiên, điều này có thể trở lên không an toàn trong một số trường hợp sau:
Khi chúng ta muốn dùng một biến toàn cục bên trong một hàm vàkhông thể chắc chắn được rằng biến đã được tạo ra ở hàm chính,hay được tạo ra như một biến cục bộ trong hàm được gọi tới
Khi chúng ta muốn chắc chắn là đang tạo ra một biến cục bộ vàkhông ghi đè lên biến toàn cục cùng tên
Vì vậy, chúng ta có thể khai báo biến như sau:
Cấu trúc: function name (argname1, argname2) block;
Danh sách các đối số có thể là rỗng, nhưng không được trùng tên hàm.Đối số có thể được dùng mà không cần khai báo
Truy xuất tham số hàm:
Trong một hàm NASL, đối số được truy cập như một biến cục bộ Nếuhàm nhận đối số không định danh, việc truy xuất được thực hiện thông quamảng _FCT_ANON_ARGS15 Biến này sẽ là NULL nếu trình thông dịch thấp
Trang 18hơn NASL_LEVEL 2190 Ta nên khai báo ở đầu của script nếu cần đến biếnnày.
if (NASL_LEVEL < 2190) exit(0); # _FCT_ANON_ARGS
is not implemented
Chúng ta đang thiết lập tới biến _FCT_ANON_ARGS chưa đượcđịnh nghĩa Lúc này bộ nhớ sẽ lãng phí và ta không thể đọc lại giátrị
Việc sử dụng _FCT_ANON_ARGS để đọc các đối số được địnhdanh là không nên Lúc này sẽ xuất hiện một sự bảo vệ, giá trịNULL sẽ được trả về
}
Trang 19 ACT_GATHER_INFO: plugin lấy thông tin dịch vụ.
Trang 20 ACT_ATTACK: plugin khởi động phần mềm tấn công.
ACT_MIXED_ATTACK: plugin tạo một đính kèm có thểgây ra các nguy hiểm khác
ACT_DESTRUCTIVE_ATTACK: plugin cố gắng phá hủydata16 hoặc khởi động một tấn công nguy hiểm (thử nghiệmlỗi tràn bộ đệm có khả năng làm sụp đổ một dịch vụ dễ bị tổnthương)
ACT_DENIAL: plugin cố gắng làm sụp đổ một dịch vụ
ACT_KILL_HOST: plugin cố gắng làm sụp đổ máy mụctiêu hoặc vô hiệu hóa nó
ACT_FLOOD: plugin làm sụp đổ mục tiêu hoặc vô hiệu hóa
nó bằng cách gây ngập lụt sử dụng các gói tin hay requestlỗi
o ENCAPS_TLSv1 = 5: TLSv1 được định nghĩa trongRFC 2246 Có thể gọi là SSL v3.1
Sockets option
o MSG_OOB: tùy chọn socket dùng để gửi dữ liệu
Trang 21o TH_RST = 0x04: cờ TCP cho biết kết nối bị từ chối.
o TH_SYN = 0x02: khởi tạo kết nối
o TH_URG = 0x20: cờ TCP chỉ gói tin có chứa dữ liệukhẩn
3.2 Một số hàm tích hợp sẵn
Hàm cơ bản: hàm được sử dụng cho các plugin giao tác.
Trang 22 set_kb_item: tạo ra một mục mới trong KB, hàm có 2 đối số
là “name” và “value” Tạo một mục nhiều lần sẽ tạo thànhmột list
get_kb_item: lấy ra một mục từ KB, hàm nhận một đối
sốkhông định danh (“name” của KB) Nếu mục là một list,plugin sẽ được phân nhánh và mỗi tiến trình con sẽ dùng 1giá trị khác nhau Nessus sẽ nhớ các giá trị, việc đọc lại mộtmục lần thứ 2 sẽ không thực hiện phân nhánh Chúng takhông nên gọi chức năng này khi nhiều kết nối đang được
mở tránh sự xung đột giữa các tiến trình
get_kb_list: lấy ra nhiều mục từ KB, hàm nhận một đối số
không định danh hoặc một mặt nạ Giá trị trả về là giá trịbăm
replace_kb_item: thêm hoặc thay thế một mục trong KB.
Hàm nhận 2 đối số là “name” và “ value” Việc tạo một mụcnhiều lần không tạo ra một list mà nó sẽ ghi đè lên giá trị cũ
Hàm báo cáo: hàm gửi lại thông tin cho Nessus daemon.
scanner_status: báo cáo về tiến trình quét cổng Hàm nhận 2
đối số nguyên “current” – số lượng cổng đang quét và “total”
- tổng số cổng cần được quét
Security_note: báo cáo các thông tin khác Hàm nhận một
đối số nguyên không định danh (số cổng) hoặc một tập cácđối số có tên sau: “data” – dữ liệu báo cáo; “port” – số cổngTCP hoặc UDP của dịch vụ; “proto/protocol” – là giao thức(mặc định là TCP, còn lại là UDP)
security_hole: báo cáo một lỗ hổng nghiêm trọng Hàm nhận
một đối số nguyên không định danh (số cổng), hoặc một tậpcác đối số có tên sau: “data” – dữ liệu báo cáo; “port” – sốcổng TCP hoặc UDP của dịch vụ dễ bị tổn thương;
Trang 23“proto/protocol” – giao thức (mặc định là TCP, còn lại làUDP).
security_warning: báo một lỗ hổng nhẹ Hàm nhận một đối
số nguyên không định danh (số cổng), hoặc một tập các đối
số có tên sau: “data” – dữ liệu báo cáo; “port” – số cổng TCPhoặc UDP của dịch vụ dễ bị tổn thương; “proto/protocol” –giao thức (mặc định là TCP, còn lại UDP)
Hàm mô tả: tất cả các hàm ngoại trừ hàm script_get_preference
chỉ được sử dụng trong 1 phần mô tả của plugin (là các khối đượcchạy khi description = 1) Các hàm chỉ có ý nghĩa khi được thực thitrong môi trường Nessus và không có hiệu lực khi các plugin chạytrên trình thông dịch độc lập nasl
script_add_preference: cho phép thêm một tùy chọn cho
plugin Hàm cần một tập đối số như sau: “name” – tên củatùy chọn; “type” – loại tùy chọn (có thể làcheckbox/entry/password/radio); “value” – là giá trị mặcđịnh tương ứng với từng “type”
script_bugtraq_id: thiết lập SecurityFocus “bid” Hàm cần
một hoặc nhiều đối số nguyên không định danh
script_category: đặt “category” cho các plugin Thường thì
hàm cần đối số nguyên không định danh là một trong nhữnghằng số được xác định trước
script_copyright: đặt một chuỗi bản quyền cho các plugin.
Hàm cần một đối số chuỗi không định danh, hoặc một haymột số đối số có tên khác
script_cve_id: thiết lập định danh cho mã CVE của các lỗ
hổng được thử nghiệm bởi script
script_description: thiết lập mô tả cho plugin Hàm cần một
đối số chuỗi có tên hoặc một hay một số các đối số có tên