由于在linux下提供了很多基于命令行的程序,因此搭建自动化测试环境更方便一些。
在linux里提供了net-snmp程序,这组程序中包括了基于命令行的SNMP get/next/walk/set命令,将这些命令与tcl/expect结合起来,就可以实现一些SNMP的自动化测试项目。
构造报文的测试通常是测试的一个难点,曾经想过使用linux下的libcap库来构造报文,但这种方式仍需要大量的编码。今天在网上搜索了一下,Nessus项目提供了一个非常便利的脚本语言,叫做NASL(Nessus Attack Script Language),利用这种脚本语言,可以很容易的构造出各类报文。实际上,Nessus中的很多plugin都是利用这种脚本语言写成的。关于这种脚本语言的介绍,可以参见:The Nessus Attack Scripting Language Reference Guide。这里是中译版本:Nessus安全测试插件编写教程。
如果要进行交换机、路由器的测试的话,构造报文只是第一步,接下来还需要验证报文能否被正确的转发。要自动完成对转发报文的验证有点难度,因为首先必须有转发前的报文进行比较。我设想可以使用一个带有双网卡linux计算机,用来进行发包和收包,设置交换机的上、下连口分别与这台linux计算机的两个网卡相连。然后使用tcl/expect/NASL/嗅探器(如tcpdump)等协同工作,完成自动测试。
上面所说的都是一些设想,等有时间编写一些测试程序验证一下。
2006/4/5补
昨天仔细看了一下NASL脚本语言的手册,发现它只能用来构造IP、TCP、UDP及应用层的报文,用来测试路由器、应用层网关大概可以,但测试交换机,需要构造MAC报文,还不能实现。需要另外想办法。NASL脚本,需要nessusd来调用,因此需要安装nessusd来实现构造报文的功能。
2006/4/12补
在网上搜索了一下,找到一个构造以太报文及IP、TCP/UDP等报文的工具,名字叫做nemesis,可以运行在windows及unix下,在unix下需要有root权限才能运行。
借助这个工具,就可以在TCL脚本中自动构造报文,进行多项测试了。