Nessus安全测试插件编写教程2

2009-05-13 01:13:01来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


Nessus
安全测试插件编写教程2

Nessus
安全测试插件编写教程2

作者:Renaud Deraison
翻译:nixe0n
1.怎样编写一个高效的Nessus安全测试插件
在Nessus安全测试系统中,所有的安全测试都是由nessusd进程发动的。在测试期间,一个好的测试插件必须能够有效地利用其它测试插件的测试结果。例如:一个测试插件需要打开一个到FTP
服务器
的连接,而在这之前它应该首先检查
端口扫描
测试插件的结果,确定FTP端口是否打开。在一般情况下,这样只会节约一点点时间,但是如果被测试主机位于
防火墙
之后,这样做会节省由于防火墙丢弃到21端口的
TCP
报文造成的漫长等待时间。
1.1.确定端口是否打开
get_port_state()函数用于获得端口的状态。如果端口为开,这个函数就返回TRUE;反之,则返回FALSE;如果这个端口没有被扫描过,也就是其状态为未知(unknown),函数也将返回TRUE。
这个函数只消耗很少的CPU资源,因此你可以尽可能地使用它,来提高测试插件的效率。
1.2.基础信息(Knowledge Base,KB)
在测试过程中,Nessus会为每个主机维护一份由扫描测试插件获得的基本信息(Knowledge Base,这个词本来应该是基础知识的意思,但是这里似乎翻译作基本信息更为恰当^_^)。各种其它的测试插件应该尽可能地利用这些信息,以提高测试效率。实际上,端口的状态就保存在这里。
KB被分为好几类。Service类包含每个已知的服务和为其分配的端口号。例如,在大多数情况下,Server/smtp的值为25。但是,如果远程主机的SMTP服务被隐藏于2500端口,这个值就改为2500。
有关基本信息各个元素的细节请参考附录B。
在NASL中,有两个有关节本信息(KB)的函数。使用get_kb_item()函数可以获得基本信息的项的值,这个函数是匿名函数;而函数set_kb_item(name:,value:)能够把项的值设置为。
注意:你不能获得刚刚加入的基本信息条目的值。例如,以下代码将无法象你所期待的那样执行:
set_kb_item(name:"attack",value:TRUE);
if(get_kb_item("attack"))
{
   #这里的代码不可能执行
   #因为attack基本信息项并没有更新
}
之所以会这样,是出于安全和代码稳定性的考虑。在安全测试期间,Nessus服务器会为每个安全测试插件维护一份基本信息(KB)拷贝,安全测试插件只是从自己的基本信息(KB)拷贝中获得信息。而set_kb_item()函数只更新原始的基本信息(KB)拷贝,不对当前安全测试插件使用的拷贝进行更新操作。
2.NASL脚本结构
每个安全测试插件需要向Nessus服务器进行注册后,才能使用。注册信息包括名字、描述、作者等。每个NASL脚本都需要有以下结构:
#
#NASL基本基本结构
#
if(description)
{
   #这里是注册信息
   #
   #这里可以叫做注册部分(register section)
   #
   exit(0);
}
#
#这里是脚本代码。我们可以称为攻击部分(attack section)
#
description是一个全局变量,值可以是TRUE或者FALSE,取决于脚本是否需要注册。
2.1.注册部分
在脚本的注册部分,必须调用以下函数:
script_name(language1:,[...])
设置在Nessus客户程序窗口中显示的名称。
script_description(language1:,[...])
设置在Nessus客户程序中显示的描述信息。
script_summary(language1:,[...])
设置总结信息,必须在一行之内总结描述信息的内容。
script_category()

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux环境下日志式文件系统面面观

下一篇:Nessus安全测试插件编写教程1