RSS订阅
RSS订阅TT安全

使用Nessus攻击脚本语言寻找程序漏洞

2008-10-10  选择字号:  | |
打印本文章

导读:本文中将用编写攻击脚本的实例介绍如何使用Nessus攻击脚本语言(Nessus Attack Scripting Language ),以及NASL语言的主要语法。

关键词:编写 脚本 Nessus 攻击脚本语言 NASL 语言 语法

正在加载数据... 【TechTarget中国原创】之前的Nessus指南的话题中包括了如何安装和配置Nessus,以及如何运行基本的安全扫描。直到这一点,特征都是来自可维持网络安全(Tenable Network Security)订阅提供的大型数据库。这些特征都是最新的漏洞信息的来源,而且他们提供了对大部分已知存在的威胁的防御。尽管如此,还是有一种情况不能通过数据库的方法解决:你的公司内部编写的自定义应用和已知的漏洞……

【TechTarget中国原创】之前的Nessus指南中包括了如何安装和配置Nessus,以及如何运行基本的安全扫描。之前的特征都是来自可维持网络安全(Tenable Network Security)订阅提供的大型数据库。这些特征都是最新漏洞信息的来源,而且他们提供了对大部分已知存在的威胁的防御。尽管如此,还有一种情况不能通过数据库的方法解决:公司内部编写的自定义应用和已知的漏洞。

  从实例开始

  假设你拥有一个名为KillerApp的自定义的Web监控程序,而该程序中的文件"killerapp.asp"存在已知漏洞。在你发现该程序包含这个严重漏洞之前,它会一直在本地网络中所有的Web服务器上运行。而该漏洞将允许匿名用户关闭服务器。因此应该立即卸载该程序,但是你怀疑仍有一些服务器安装有该程序。还好这时我们可以采用Nessus攻击脚本语言(NASL)来编写一个用户Nessus“攻击”,或者一个检测程序以找到"killerapp.asp"。

  首先介绍完整的NASL脚本。接着,分解这段脚本进一步分析NASL结构。下面是完整的脚本代码:

#
# KillerApp check
#
if (description)
{
script_id(50000);
script_name(english:"Check for KillerApp");
script_description(english:"KillerApp is a high-risk application and should be removed.");
script_summary(english:"Checks for KillerApp");
script_copyright(english:"Copyright 2008, Mike Chapple");
script_category(ACT_ATTACK);
script_family(english:"Denial of Service");
script_require_ports("Services/www",80); 
}
include("http_func.inc");
include("http_keepalive.inc");
port = get_http_port(default:80);
if (get_port_state(port))
{
if (is_cgi_installed_ka(item:"/killerapp.asp",port:port))
{
security_hole(port);
}
}

  NASL 脚本结构

  NASL脚本可以明显地分为两部分:一部分是对项目的描述,另一部分是对攻击内容的规划。描述部分以“if(description)”语句开始,并包括之后的大括号(“{}”)间的所有内容。从名字就可以了解该部分的很多项的作用。较为重要的有:

  • script_id(50000):设置脚本标识号,该标识号必须是1至99999间的唯一整数。推荐选择一个较大的数字以避免与其他Nessus检测脚本(包括用户创建以及从Nessus订阅下载的脚本)的冲突。
  • script_category(ACT_ATTACK):设置检测的类别。在本例中,检测漏洞的脚本将允许黑客进行一次攻击,所以我们将其设置为ACT_ATTACK类别。再举一个例子,当NASL脚本发现可能的探测的可能性时,需要将其设置为ACT_GATHER_INFO。
  • script_require_ports("Services/www",80):明确了进行成功攻击所要求的端口号。本例中,攻击只能在Web服务器运行于80端口的目标系统上进行。

  脚本的其他部分定义了攻击代码。下面将逐行进行分析:

  • port = get_http_port(default:80):检测Web服务器是否运行在80端口。
  • if (get_port_state(port)):这是一个开始的if语句,它规定包含在大括号中的代码只在端口开放时运行。
  • if (is_cgi_installed_ka(item:"/killerapp.asp",port:port)):‘is_cgi_installed_ka’函数检测某个项是否存在于Web服务器中。本例中,我们检测文件killerapp.asp是否存在于服务器的根目录下。
  • security_hole(port):如果文件不存在,则报告一个安全漏洞。

  使用自定义脚本

  执行自定义脚本有两种方法:从命令行运行nasl.exe独立工具,或者把它包括到Nessus扫描中。

  在命令行运行的语法是:

nasl.exe –t<IP><script>

  例如,如果想对位于192.168.1.1的Web服务器运行killerapp.nasl,可以执行:

nasl.exe -t 192.168.1.1 "C:\Program Files\Tenable\Nessus\plugins\killerapp.nasl"

  如果这个脚本返回一个漏洞,就会输出如下的“成功”数据:

[Wed Jun 11 19:08:58 2008][5832] Only Ethernet is supported for now (type of {07 061642-1076-44D2-9D72-6C7BC3022BCF} = 71)
C:\Program Files\Tenable\Nessus\plugins\killerapp.nasl: Success

  或者,NASL检测脚本可以包含在一个标准的Nessus扫描中,只需要在Nessus文件夹的‘插件程序(plug-ins)’目录中加入这个文件。然后你就会发现当配置Nessus扫描时,你就可以在检测脚本中使用。

  了解更多NASl

  NASL是一种相当简单的脚本语言,但是它确实包含一些内置功能,可以帮助你定义自己的脚本。如果要了解更权威的NASL的参考资料,请查看Nessus网站上的NASL参考指南

还没有登录? 阅读全文请先登录或注册
用户名:(请填写您的E-mail做为登录账号)
  • 获取最新的IT业界资讯、市场动态、行业趋势等独家原创内容。
  • 分享国内外技术专业人士提供的技巧经验。
  • 利用专注IT的技术资源中心,不断更新专业知识。
  • 享受白皮书、Webcast等系列特色增值服务。
  • 免费参加TT中国举办的各种会员活动。
  • 更多的精彩服务,在不断开发中……
用户名:(请填写您的E-mail)
密 码:
 永久登录
请输入您的登录email:
相关的白皮书
如果正在寻找一个漏洞扫描器,而又没有的商业解决方案的预算,这时候你可能转向考虑使用Nmap这样的免费工具,但它们的性能设置不能与商业解决方案相比,这时可以用Nessus……
TrueCrypt可以实现真正的可携带,而且应该选择这个选项。我们推荐最小2GB的存储设备。在旅行模式下,TrueCrypt不需要安装到所运行的操作系统中……
TrueCrypt的操作界面很简单而且很直接,可以允许你简单地执行你选择的加密方法。而加密方法的选择会影响到加密的性能,那么如何平衡呢?
Eclipse是一个开放源代码的、基于Java的可扩展开发平台,目前该平台在世界范围内得到了广泛的应用。本文将介绍对于Eclipse本地Web服务器一个跨站脚本漏洞的利用方法……
在Windows上安装 TrueCrypt很简单,只需要下载、运行安装器、接受许可、选择安装选项钮并接受最后一步的默认选项。那么它是如何实现加密的呢?

当身份窃取猖獗的时候,有力地用户认证、客户认证和合作伙伴认证是至关重要的措施。有了用户名和密码就足够了吗?双因素认证是有效的方法吗?还是无力应对新出现的威胁呢?本专题将提供全面的信息,帮助理解目前的认证方式和面临的挑战,并且介绍如何采用安全的认证系统。

本专题将介绍一款免费的、开源的、可移动的适用于笔记本电脑的加密软件TrueCrypt。TrueCrypt适用于个人或者小型企业和团队,可以在任何系统上运行而不需要安装。TrueCrypt可以采用多种加密算法,有效地保护机密数据。
本专题可以帮助理解在无线网络中,无线入侵检测/防御系统(WIDS/WIPS)的价值,及时您所在的公司不支持无线局域网。此外,本专题还将介绍如何为公司环境选择合适的WIDS,以及如何防御无线拒绝服务攻击。
最新更新
专家答疑
技巧
Michael Cobb
渗透测试的目标不仅是要评估电脑系统或者网络的安全性,还要决定成功攻击的可行性和商业影响。那么如果选择合适的渗透测试人员呢?
Mike Chapple
渗透测试可以提供安全防御的有价值的信息,但是成本很高。为了渗透测试的可信性,通常必须要有独立的外部公司进行。如果使用内部人员和测试示范漏洞……
Ed Skoudis
问:社会工程应该是渗透测试的一部分吗?这样做是道德的吗?   答:这个问题的答案还在争论之中。