NASL脚本语言教程.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简介 什么是 NASL? NASL 是一个为网络安全扫描工具 Nessus 开发的脚本语言。通过它,任何人都可以方便快速地针对新出现的漏洞编写出测试插件,也便于不同操作系统的用户分享测试脚本。除此之外,NASL 还可以保证编写的脚本只能用于针对目的主机的测试,使编写者难以使用编写的脚本用于恶意用途。 使用 NASL,你可以很容易地打造 IP 报文,或者发送通常的报文。NASL 中还有一些专门的函数用于向 FTP 和 WEB 服务器发送数据。另外,NASL 还可以保证: 除了目标主机之外,不向任何的主机发送报文。不允许在本地系统执行任何命令。 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 本身就足够了,你不必为了为了编写新的安全检测插件而安装大量的软件包。 为什么你应该自己编写安全测试插件 你可能会盘算为了自己编写 Nessus 安全测试插件而在学习一种脚本语言是否值得?但是,你要知道: NASL 为 Nessus 做过专门的优化,因此使用 NASL 编写的安全测试插件效率很高。 在很多方面,NASL 和 C 非常类似,因此你没有必要担心很难掌握。 NASL 非常适合编写安全测试插件。 NASL 的移植性很好。在 M$版本的 Nessus 发布之后,所有的安全测试插件根本勿需修改,就可以使用。 这个教程会教你一些什么东西 这个教程的目的是教你如何使用 NASL 编写自己的 Nessus 安全测试插件。1.6.NASL 的局限 我在上面讲过,NASL 不是一种强大的脚本语言。它最大的局限是: 结构(structure)。目前 NASL 还不支持结构,可能在不久的将来可以支持。 一个调试程序。NASL 还没有一个合适的 debug 程序。不过,有一个单独的解释程序 nasl 可以暂时用于排错。 1.7.感谢 下面这些人为 NASL 的设计提出了高贵的意见,作者在此致谢: Denis Ducamp(denis@hsc.fr) Fyodor(fyodor@) Noam Rathaus(nomr@) 2.NASL 基础:语法 在语法上,NASL 非常类似于 C,只是去掉了一些烦人的东西。你勿需顾及对象的类型,也不用为它们分配和释放内存;在使用变量之前不必事先声明。这样,你就可以只致力于安全测试插件的的编写。 如果你以前不懂 C 语言,读这个教程可能要费点劲,如果你对 C 语言已经很精通,读本教程将非常轻松。 注释 在 NASL 中,注释符是#。它只对当前行有效,例如: 有效的注释: a = 1 ; #let a = 1 #set b to 2 b = 2; 无效的注释: # set a to 1 # a = 1; a = # set a to 1 # 1; 变量、变量类型、内存分配和包含(include) 与 C 语言不同,在使用变量之前,你不用事先声明,也不用关心它们的类型。如果你的操作错误(例如:把一个 IP 报文和一个整数相加),NASL 就会提醒你。你也不必关心 C 语言中经常遇到的内存分配和包含(include) 等问题,在 NASL 中没有 include,而且内存是在需要时自动分配。 数字和字符串 NASL 中的数字可以使用三种进制:十进制、十六进制和二进制。例如: a = 1204; b = 0x0A; c = 0b001010110110; d = 123 + 0xFF; 数组必须使用引号。注意:和C 语言不同,除非使用str

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档