简介

NASL是什么

NASL是一个专门为 Nessus 设计的脚本语言, 目的是让任何人在几分钟内就可以为一个安全漏洞编写出一个测试脚本,并且可以分享它而无需担心使用的是什么操作系统(跨平台),以及保证一个NASL脚本只会针对给定的目标测试而不会做其他一些恶心的事情。

因此, NASL允许你更容易的去组装或者发送特定的包。它提供了更方便的函数,使得编写测试WEB或者FTP服务器的脚本更加简单。

NASL保证,一个NASL脚本:
  • 除了目的主机,不会发送任何包到其他主机之上
  • 在您的本地主机上,不会执行任何命令

NASL不是什么

NASL不是一门强大的脚本语言。它的目的仅是编写安全测试脚本。所以,不要指望通过它能编写出一个WEB服务器或者一个文件转换工具。 如果你想编写这些程序,那么请使用perl,python或者其他脚本语言,他们编写起来的速度非常快。

NASL被设计出来的速度很快, 所以,如果你发现它在语法上有一些不合适的地方,请让 知道.

为什么不使用Perl/Python/Tcl这些你喜欢的脚本语言

我知道,现在已经有一大堆很好的脚本语言,同他们相比,NASL看起来很弱。但是这些语言没有一门是真正安全的,在一些场景下,你用他们写出的测试脚本可能会成为一个木马以及连接到第三方主机,从而被发现你是一位Nessus用户,甚至邪恶的第三方主机会探测到你的目的主机名。更糟糕的是,这也会泄露你的密码文件或者任何其他文件。

这些脚本语言的另一个问题是:大部分都是内存饥渴症患者(形象的比喻)。为Nessus配置这些语言,也是一个头疼的问题。以Perl为例,Perl很好而且很优美(对部分人来说), 但是为了编写安全测试脚本,你需要花多长时间在安装所有需要的模块上了。Net::RawIP仅仅是其中的一个模块。

NASL, 从另一方面来说, 不会占用多大的内存。在256M内存之内就可以加载20个nessusd线程。而且NASL无需依赖其他的库, 自给自足,不需要为写一个新的测试脚本而安装一打的包:)

为什么要用NASL去写安全测试脚本

可能你已经在怀疑是否值得去学习另一门脚本语言(NASL),而不是C或者Perl,或者任何其他脚本语言,去写安全测试脚本。你必须知道的是:
  • NASL专门为Nessus优化,用NASL写安全测试脚本的速度很快
  • NASL有很多东西类似C语言,所以请不要害怕
  • NASL可以编写安全并且可共享的测试脚本
  • NASL可以编写可移植以及容易修改的安全测试脚本。

这本指导书将教会你什么

这本手册将教你如何用NASL去写安全测试脚本。这是我第一次尝试写一个完整的文档,所以可能会有些比较复杂的东西。

NASL的限制

像我之前所说的,NASL不是一门强大的脚本语言。现在最大的限制是:
  • 结构体。结构体现在还不支持,不久的将来可能会支持,但不是现在
  • 一个良好的调试器。NASL目前没有一个很好的调试工具。不过,有一个独立的解释器’nasl’。

鸣谢

感谢以下所有的人,感谢他们的对NASL的建议。没有他们,NASL会比现在更挫。

讨论

comments powered by Disqus