引言: 作者:Renaud Deraison(Nessus最主要的编写者,法国人) 翻译:nixe0n 版本:1.0.0pre2 1.简介 1.1.什么是NASL? NASL是一个为网络安全扫描工具Nessus开发的脚本语言。
摘要:1、 nessus http://www.nessus.org2、 netcat http://www.l0pht.com/~weld/netcat/3、 tcpdump http://www.tcpdump.org4、 snort http://www.snort.org5、 saint http://www.wwdsi.com/saint/6、 ethereal http://ethereal......
摘要:在csdn论坛(http://expert.csdn.net/expert/topic/1487/1487604.xml?temp=.133526)上看到下面这篇文章。作者很诚恳,说的都是切身感受。我相信名副其实的研究生肯定是存在的,不过矫枉必须过正,就来添一点过激的言论:现在的教育制度快要沦落到旧时的科举制度了,都是经世致用之学,旧时是为官,现时是为钱。为钱本身无可厚非,不过如果整个民族的眼睛里......
Nessus安全测试插件编写教程作者:renaud deraison(nessus最主要的编写者,法国人) 翻译:nixe0n 【程序编程相关:
中小企业服务器配置方案(Modem拨号)】 【推荐阅读:
中小企业服务器配置方案(Squid代理服】 版本:1.0.0pre2 【扩展信息:
中小企业服务器配置方案(ISDN拨号)f】 1.简介 1.1.什么是nasl? nasl是一个为网络安全扫描工具nessus开发的脚本语言.通过它,任何人都可以方便快速地针对新出现的漏洞编写出测试插件,也便于不同操作系统的用户分享测试脚本.除此之外,nasl还可以保证编写的脚本只能用于针对目的主机的测试,使编写者难以使用编写的脚本用于恶意用途. 使用nasl,你可以很容易地打造ip报文,或者发送通常的报文.nasl中还有一些专门的函数用于向ftp与web服务器发送数据.另外,nasl还可以保证: 除了目标主机之外,不向任何的主机发送报文. 不允许在本地系统执行任何命令. 1.2.what nasl is not nasl不是一种功能很强大的脚本语言.它的目的只是用于安全测试.因此,别指望使用这种脚本语言写出第三代的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 2 b = 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\nim renaud"; #a等于hello\nim renaud",\n没有特殊含义 a = string("hello\nim renaud");#b等于"hello # im renaud" c = string(a); #c等于b string()函数将在“字符串处理”中详细讨论. 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()函数时,你可以决定是否等待回应....
下一页 摘要:上次的文章结束的时候把一大段我的boot loader贴出来了,可能会让人迷惑.这里我又写了个小小的微缩版的16位实模式下的boot loader,大家看看吧.这里我再次说明一下,这个文章只是记录我自己做16位os的经验,绝不是什么标准的教程.但是我也不会像其它的文章讲个boot loader就结束了.后面我还会做到kernel以及文件系统等很多东西
bits 16org 0x7c00
ent......