由於在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指令碼中自動構造報文,進行多項測試了。