当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Nessus安全测试插件编写教程2

Unix/Linux
linux 操作技巧收集_
linux下如何读取使用iso 镜像文件的方法
Linux平台下文件的压缩与解压参数说明
Linux下常用压缩格式的压缩与解压方法
Linux JDK,TOMCAT安装及环境设置
Linux sleep命令使用参数
Linux cat命令参数
nfs 配置的简单例子
linux kill 关闭进程命令
linux ultrasphinx Anonymous modules have no name to be referenced by
Linux oracle 9i图文安装方法一
Linux oracle 9i图文安装教程二
Linux oracle 9i图文安装教程三
Linux oracle 9i图文安装教程四
Linux oracle 9i图文安装教程五
Linux oracle 9i图文安装教程六 完结篇
linux AS3 oracle9i 安装指南
Linux 下 (RedHat 9.0) JDK,Tomcat,MySQL的安装
RedHat 9.0下Apache+PHP+MySQL服务器安装配置
Linux 下用 Python 连接 MSSql Server 2008

Unix/Linux 中的 Nessus安全测试插件编写教程2


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 81 ::
收藏到网摘: n/a

Nessus安全测试插件编写教程2
Nessus安全测试插件编写教程2作者:Renaud Deraison翻译:nixe0n1.怎样编写一个高效的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()