首 页
┆
源码下载
┆
IT学院
┆
字体下载
┆
模板下载
┆
源码发布
┆
广告合作
┆
网站地图
┆
虚拟主机
┆
中文域名
►
设为首页
►
加入收藏
►
联系我们
源码下载
>>
ASP源码
|
PHP源码
|
ASP.net源码
|
JSP源码
|
CGI源码
|
VC/C++源码
|
VB源码
|
Delphi源码
|
Flash源码
文章学院
>>
网络编程
|
网页设计
|
图形图象
|
数据库
|
服务器
|
网络媒体
|
网络安全
|
操作系统
|
办公软件
|
软件开发
|
黑客知识
字体下载
>>
精制字体
|
非英字体
|
艺术字体
|
著名字体
|
哥特式
|
简单字体
|
手写体
|
节假日
|
图案字体
|
精度像素
|
中文字体
模板下载
>>
企业门户
|
数码网络
|
休闲娱乐
|
影视音乐
|
旅游名胜
|
文化艺术
|
电子商务
|
个性展示
|
登陆导航
|
Flash模板
源码搜索
文章搜索
字体搜索
模板搜索
►►
您当前的位置:
源码园
→
IT学院
→
操作系统
→
FreeBSD
→ 文章内容
Nessus安全测试插件编写教程1
作者:佚名 来源:网上收集 发布时间:2006-5-22 18:38:40
Nessus安全测试插件编写教程1
Nessus安全测试插件编写教程1作者:Renaud Deraison(Nessus最主要的编写者,法国人)翻译:nixe0n版本:1.0.0pre21.简介1.1.什么是NASL?NASL是一个为网络安全扫描工具Nessus开发的脚本语言。通过它,任何人都可以方便快速地针对新出现的
漏洞编写出测试插件,也便于不同操作系统的用户分享测试脚本。除此之外,NASL还可以保证编写的脚本只能用于针对目的主机的测试,使编写者难以使用编写的脚本用于恶意用途。使用NASL,你可以很容易地打造IP报文,或者发送通常的报文。NASL中还有一些专门的函数用于向FTP和WEB
服务器发送数据。另外,NASL还可以保证:除了目标主机之外,不向任何的主机发送报文。不允许在本地系统执行任何命令。1.2.What NASL is notNASL不是一种功能很强大的脚本语言。它的目的只是用于安全测试。因此,别指望使用这种脚本语言写出第三代的WEB服务器或者文件转换工具,要编写此类软件还是使用Perl、Python或者其它的脚本语言吧。用它们编写要比使用NASL快100倍。另外,由于NASL的设计有些仓促,在语法上还有一些需要改进的地方。1.3.为什么不在Nessus中使用Perl、Python、tcl或者其它脚本语言我知道有很多功能非常强大的脚本语言,和它们相比NASL功能要弱很多。不过,虽然这些语言都非常强大,但是它们都不太安全。使用这些语言,你可以非常容易地编写出木马检测插件,泄露你的信息,让第三者知道你是一个Nessus用户,甚至会把一些敏感信息(例如:
密码文件)发送到第三方主机。使用这些语言还有另外一个问题,它们都会消耗大量的系统资源,尤其是内存。这非常令人头疼。以Perl为例,Perl非常棒,并且非常优美。但是,如果要使用它编写Nessus的测试插件,你需要消耗大量的时间安装必须的模块,Net::RawIP就是其中之一。与此相反,NASL根本不会消耗大料的内存。因此,即使没有256M内存,你也可以同时启动20个nessusd线程。而且,对于编写检测插件,NASL本身就足够了,你不必为了为了编写新的安全检测插件而安装大量的软件包。1.4.为什么你应该自己编写安全测试插件你可能会盘算为了自己编写Nessus安全测试插件而在学习一种脚本语言是否值得?但是,你要知道:NASL为Nessus做过专门的优化,因此使用NASL编写的安全测试插件效率很高。在很多方面,NASL和C非常类似,因此你没有必要担心很难掌握。NASL非常适合编写安全测试插件。NASL的移植性很好。在M$版本的Nessus发布之后,所有的安全测试插件根本勿需修改,就可以使用。1.5.这个教程会教你一些什么东西这个教程的目的是教你如何使用NASL编写自己的Nessus安全测试插件。1.6.NASL的局限我在上面讲过,NASL不是一种强大的脚本语言。它最大的局限是:结构(structure)。目前NASL还不支持结构,可能在不久的将来可以支持。一个调试程序。NASL还没有一个合适的debug程序。不过,有一个单独的解释程序nasl可以暂时用于排错。1.7.感谢下面这些人为NASL的设计提出了高贵的意见,作者在此致谢:Denis Ducamp(denis@hsc.fr)Fyodor(fyodor@dhp.com)Noam Rathaus(nomr@securiteam.com)2.NASL基础:语法在语法上,NASL非常类似于C,只是去掉了一些烦人的东西。你勿需顾及对象的类型,也不用为它们分配和释放内存;在使用变量之前不必事先声明。这样,你就可以只致力于安全测试插件的的编写。如果你以前不懂C语言,读这个教程可能要费点劲,如果你对C语言已经很精通,读本教程将非常轻松。2.1.注释在NASL中,注释符是#。它只对当前行有效,例如:有效的注释:a = 1 ; #let a = 1#set b to 2b = 2;无效的注释:#set a to 1#a = 1;a = # set a to 1 # 1;2.2.变量、变量类型、内存分配和包含(include)与C语言不同,在使用变量之前,你不用事先声明,也不用关心它们的类型。如果你的操作错误(例如:把一个IP报文和一个整数相加),NASL就会提醒你。你也不必关心C语言中经常遇到的内存分配和包含(include)等问题,在NASL中没有include,而且内存是在需要时自动分配。2.3.数字和字符串NASL中的数字可以使用三种进制:十进制、十六进制和二进制。例如:a = 1204;b = 0x0A;c = 0b001010110110;d = 123 + 0xFF;数组必须使用引号。注意:和C语言不同,除非使用string()函数,否则NASL解释器将不解释特殊字符(例如:\n)。例如:a = "Hello\nI'm Renaud"; #a等于Hello\nI'm Renaud",\n没有特殊含义a = string("Hello\nI'm Renaud");#b等于"Hello# I'm Renaud"c = string(a); #c等于bstring()函数将在“字符串处理”中详细讨论。2.4.匿名/非匿名参数非匿名函数(Non-anonymous Function)NASL对函数参数的处理方式也C语言也不相同。在C语言中,程序员必须只参数的位置。如果一个函数的参数超过10个,就非常让人头疼。例如,一个构造IP报文的函数就可能有很多参数。如果你需要使用这个函数,就得记住参数的确切次序,这非常浪费时间。在NASL中尽量避免出现这种情况。在NASL中,当函数的参数次序比较重要,并且当这个函数不同的参数是不同的类型,这个函数就是一个非匿名函数。也就是,你必须给出元素名。如果你忘记了某些元素,在运行时NASL会给你错误提示。例如:forge_ip_packet()函数有很多参数。以下两种调用方式都有效并且执行相同的操作:forge_ip_packet(ip_hl:5,ip_v:4,ip_p:IPPROTO_
TCP);forge_in_packet(ip_p:IPPROTO_TCP,ip_v:4,ip_hl:5);在运行时,用户会被提示缺少参数(ip_len等)。匿名函数(Anonymous function)如果函数只有一个参数,或者所有参数的类型是相同的,这种函数就叫做匿名函数。例如:send_packet(my_packet);send_packet(packet1,packet2,packet3);这些函数可以有选项。例如:在使用send_packet()函数时,你可以决定是否等待回应。如果你感觉没有必要接收目标的回应,你可以使用如下调用形式来加速安全测试速度:send_packet(packet,use_pcap:FALSE);2.5.for和while在NASL中也存在for和while两种循环控制,和C语言的几乎完全相同,其语法格式如下:for(instruct_start;condition;end_loop_instruction){ # #需要执行的代码 #}或者for(instruction_start;condition;end_loop_instruction)fuction();While的格式:while(condition){ # #执行的代码 #}或者:while(condition)function();例如:# 显示从1到0for(i=1;i<=10;i=i+1)display("i : ",i,"\n");# 显示从1到9以及它们是奇数还是偶数for(j=1;j<=10;j=j+1){ if(j&1)display(j," is odd\n"); else display(j," is even\n");}# 使用whilei = 0;while(i<10){ i=i+1;}2.6.用户定义的函数NASL允许用户定义自己的函数。用户可以使用如下的语法定义自己的函数:function my_func(argument1,argment2,....)用户定义的函数必须使用非匿名(non-anonymous)参数,NASL能够处理递归调用。例如:function fact(){ if((n==0)││(n==1)) return(n); else return(n*fact(n:n-1));}display("b! is ",fact(n:5),"\n);另外,用户自己定义的函数不能调用其它的用户定义函数(实际上是可以的但是遇到这种情况,NASL解释器会向你发出警告)。注意:如果你需要让自己的函数返回一个值,需要使用return()函数。因为return()是一个函数,因此需要有括号,下面这种写法就是错误的:function func(){ return 1; #这种写法在C语言中是可以的,但是在NASL中不性}2.7.操作符一些标准的C语言操作符也可以用于NASL,包括:+、-、*、/和%。目前,NASL还不支持操作符的优先级,但是以后版本将会支持操作符的优先级。另外,NASL也支持C语言的二进制操作符│和&。除此之外,NASL还有两个独有的操作符:x操作符对于某些简单的循环使用for或者while非常不便,而且每次循环还需要对条件进行检查,造成效率的下降。因此NASL引入了一个x操作符来简化某些循环代码。例如:如果你需要发出10次
UDP报文,使用x操作符,只要下面一行代码就可以了:send_packet(udp)x10;><操作符><操作符是一个布尔型操作符,表示如果一个字符串A包含在另一个字符串B中,就返回真,例如:a = "Nessus"'b = "I like Nessus";if(a>
,length:
[,timeout:
[] [
返回上一页
] [
打 印
]
上一篇文章:
Nessus安全测试插件编写教程2
下一篇文章:
信息安全的隐患-GoogleHacking原理和防范
相关文章:
Nessus安全测试插件编写教程1
Nessus安全测试插件编写教程2
关于本站
-
网站帮助
-
广告合作
-
下载声明
-
友情连接
-
网站地图
-
源码发布
Copyright © 2003-2009
Ymyasp
.Com
. All Rights Reserved .
备案序号:粤ICP备07029071号