摘 要:分析了現有網絡漏洞掃描系統的局限性并使用Agent技術對網絡漏洞掃描系統部件進行了規范設計,描述了Agent間的通信與協作,并給出了基于Agent的分布式網絡漏洞掃描系統的設計方法和實現過程。
關鍵詞:漏洞掃描; 網絡; Agent; 分布式系統
中圖法分類號:TP393.08 文獻標識碼:A 文章編號:1001-3695(2006)10-0098-03
Design and Implementation of Agentbased Network Vulnerability
Scanning System
MA Jie, CHEN Xinmeng, XIANG Guangli
(School of Computer Science, Wuhan University, Wuhan Hubei 430079, China)
Abstract:At the beginning of the paper common shortcoming in the existing network vulnerability scanning systems has been analyzed. Based on these, some Agentbased components of network vulnerability scanning system and the communication and collaboration of Agents are been described in detail. Last section presents the course of designing and implementing network vulnerability scanning system.
Key words:Vulnerability Scanning; Network; Agent; Distributed System
隨著Internet的飛速發展,人們的日常生活與網絡的聯系日漸緊密,同時遭到惡意入侵的風險也不斷增加。為了保護系統資源、阻止惡意入侵,人們研究出了多種安全技術,常用的有防火墻、入侵檢測和安全漏洞掃描等。前兩種技術是相對被動的技術,而安全漏洞掃描是一種主動的安全技術,它不是被動地等待黑客入侵從而發現系統漏洞所在,而是主動發現系統的漏洞并及時進行修補[1]。
安全漏洞掃描按其使用的底層技術不同可以分為基于主機的漏洞掃描和基于網絡的漏洞掃描。基于主機的漏洞掃描主要掃描與本地系統有關的相關漏洞;基于網絡的漏洞掃描也稱為網絡漏洞掃描,主要是通過網絡來掃描遠程計算機中的漏洞,它能模擬黑客的行為對計算機系統進行檢查,發現其中可被黑客利用的漏洞并修補,因此成為安全方案的一個重要組成部分[2]。
1 現有網絡漏洞掃描系統的局限性
現有的網絡漏洞掃描系統(如Nessus,ISS等)多采用集中式或C/S結構,中心控制節點或服務器端負責進行漏洞掃描并存放掃描結果。這兩種結構方式的嚴重缺陷就是當掃描的目標主機較多時,控制節點或服務器端會成為信息處理的瓶頸,從而導致性能的下降。因此,對規模較大的網絡(如Intranet)進行網絡漏洞掃描時往往需要多臺掃描服務器進行協同工作。同時,出于方便管理的需要,要求對網絡中所有的掃描服務器都能進行遠程控制。
為了解決這些問題,引入Agent技術來設計和實現分布式網絡漏洞掃描系統。用Agent來實現漏洞掃描中要用到的功能模塊,并通過相關Agent的協作來完成漏洞掃描,避免了性能瓶頸的產生,提高了掃描效率,適合完成較大規模的網絡漏洞掃描任務。
2 基于Agent的網絡漏洞掃描模型
2.1 模型整體結構
本模型采用多Agent結構,每臺掃描主機上執行的漏洞掃描任務都是獨立的,實現了網絡漏洞掃描的分布化。本文提出的網絡漏洞掃描模型以自治Agent為組織單元,根據它們的功能不同,可以把它們分為五大類:掃描Agent(SA)、通信Agent(CMA)、控制Agent(CA)、狀態檢查Agent(SCA)和接口Agent(IA),如圖1所示。
2.2 網絡漏洞掃描過程
我們的系統基于Agent模型,多種Agent相互協作來完成網絡漏洞掃描任務。用戶通過接口Agent輸入網絡漏洞掃描任務,控制Agent將提交的掃描任務進行廣播,同其他掃描服務器上的控制Agent進行協商并進行任務分解。協商過程和發送分解后的任務通過通信Agent來完成。掃描Agent負責進行相關任務的漏洞掃描,并將掃描結果提交給控制Agent;控制Agent收集所有的掃描任務結果并且發送給接口Agent,由接口Agent生成結果報告并顯示給用戶。整個網絡漏洞掃描流程如圖2所示。
3 Agent部件實現
3.1 通信Agent
通信Agent專門負責通信服務,在每臺掃描主機上通信Agent只有一個。當主機上的Agent要與其他主機上的Agent通信時,它先將數據發給通信Agent,然后通信Agent根據要發送的目標將數據轉發到目標主機上的通信Agent,目標主機上的通信Agent再將數據發給目的Agent。
通信Agent記錄了本機上的Agent和協作主機的通信Agent的聯系方式,可以為數據包提供路由服務。它的主要任務是數據的接收和轉發,不具有控制能力。
3.2 狀態檢查Agent
狀態檢查Agent是專門負責系統中Agent自身安全的Agent[3],它在每臺主機上也是唯一的。它定期檢查協作主機的通信Agent和本機上Agent的狀態,并負責向管理員報告。
由于每臺主機上只有一個通信Agent,因此確保通信Agent的正常運行是整個安全系統的重點。如果通信Agent被破壞,那么主機就無法與其他主機進行協作。同樣,本機Agent的正常運行也很重要,狀態檢查Agent定時檢查協作主機通信Agent和本機Agent的狀態,如果有異常情況出現,它負責向管理員報告,要求管理員檢查錯誤所在。
3.3 控制Agent
控制Agent用來管理漏洞掃描任務。由于本系統采用無中心控制的分布式結構,沒有專門的主機來完成任務的提交和最終結果的收集,每一臺掃描主機上都必須有一個控制Agent來負責任務的調度。
控制Agent負責同協作主機上的控制Agent進行交互,協調任務的分解和調度。一個大型網絡的掃描任務需要分解為多個小型的掃描任務才能在多臺掃描主機上并行執行,接收任務的控制Agent負責與其他主機協調,根據它們的計算能力分解任務,將分解后的任務發送給其他協作主機上的控制Agent。控制Agent在接收到任務后,將任務再分配給多個掃描Agent,由掃描Agent對目標進行掃描。在本機分配的掃描任務完成后,控制Agent將掃描結果發回給接收任務的控制Agent。
3.4 接口Agent
接口Agent是提供用戶接口的一類Agent。接口Agent可以分為以下三種:
(1)用戶交互Agent,負責同用戶進行交互,它向用戶提供一個圖形化界面。用戶使用交互Agent輸入想要掃描的目標和一些控制參數,交互Agent會把用戶輸入的任務提交給控制Agent。
(2)漏洞更新Agent,負責漏洞信息的更新。漏洞信息的及時更新是漏洞掃描系統的一個必不可少的功能[4],我們使用NASL(Nessus攻擊腳本語言)描述漏洞信息并存放在NASL腳本文件中。漏洞更新Agent還負責與其他服務器上的更新Agent交互來保持漏洞信息的一致。
(3)報告生成Agent,負責將掃描結果制作成結果報告,并根據不同的模板生成不同類型的結果報告。結果報告的類型分為三種,即經理級、管理級和技術人員級。不同級別的報告使用不同深度的結果描述和不同方式的表現形式。
3.5 掃描Agent
掃描Agent是本模型中的基本功能單元。每臺掃描主機上都有多個掃描Agent存在。根據掃描Agent的運行步驟把掃描Agent分為如下幾個模塊:
(1)基本信息探測模塊
基本信息探測模塊完成對目標主機的一些基本信息的探測,如是否開機、操作系統類型等。模塊判斷目標主機是否開機所采用的方法是向目標主機發送ICMP echo request報文,如果收到相應的ICMP echo reply報文就說明目標主機是激活的。有的目標主機安裝的個人防火墻能屏蔽此類報文,造成未開機的假象。但本系統主要針對的是提供網絡服務的主機,這樣的主機通常是不會屏蔽ICMP echo報文的。模塊還根據ICMP echo reply報文中的TTL設置來粗略判斷目標主機的操作系統,如TTL值接近256,目標主機為UNIX系統;TTL值接近128,目標主機是Windows系統。
(2)端口掃描模塊
端口掃描模塊根據基本信息探測模塊的結果對激活的目標主機進行端口掃描。針對不同的掃描目的和操作系統有多種掃描策略可以選擇,如NT Server掃描策略、UNIX Server掃描策略等。
本模塊采用TCP Connect掃描技術對目標主機進行端口掃描。TCP Connect掃描不需要任何權限而且比其他掃描方式(如SYN掃描、FIN掃描等)更加穩定可靠;缺點是不夠隱蔽,會在日志上留下大量記錄。由于我們是從管理員角度出發,因此不必擔心這個問題。
(3)漏洞掃描模塊
根據漏洞的不同類型,我們把漏洞掃描模塊分為多種漏洞掃描子模塊,如CGI漏洞掃描子模塊、FTP漏洞掃描子模塊、SMTP漏洞掃描子模塊、HTTP漏洞掃描子模塊等。每個漏洞掃描子模塊完成同一類型的漏洞掃描任務。本系統中的漏洞掃描基于端口掃描的結果,可以避免不必要的模塊調用,根據不同的實際情況來調用相應的漏洞掃描子模塊。
(4)掃描結果記錄模塊
3.6 安全機制
本模型的安全機制是一個很重要的問題,但并不是本文討論的重點,因此只作簡述。
模型中的Agent在運行時往往需要較高的權限,黑客可能通過對Agent攻擊而獲得系統權限,或監聽掃描結果來獲得主機的漏洞信息。因此,Agent間的通信都經過了加密處理,防范黑客的竊聽和竄改;漏洞掃描的結果也采用密文形式存放,黑客即使獲得了加密文件也得不到有用信息。同時,狀態檢查Agent定時檢查系統中Agent的狀態,如果探測到有狀態異常的Agent,狀態檢查Agent會迅速報告管理員。
3.7 通信環境
在多Agent系統中,Agent之間的協作通過通信來實現。我們的實驗系統采用UDP與TCP相結合的方式來實現通信。其通信內容為一個四元組[5],即
〈通信內容〉∷=〈發送者〉〈接收者〉〈時間〉〈數據流〉
當Agent要與其他Agent通信時,它把信息包發送給本機上的通信Agent,通信Agent根據目的地址進行轉發。如果是本地Agent,就轉發到目的Agent的接收端口,否則就轉發給目標主機的通信Agent,再由該通信Agent轉發給目的Agent。
Agent間的通信內容主要是簡短的信息,如控制Agent的任務廣播和任務分配等信息,這些簡短信息都封裝在UDP包中,發送給通信Agent。
大量的數據傳送采用TCP協議,如更新Agent要向另一個更新Agent發送NASL漏洞腳本文件時,更新Agent請求本機上的通信Agent與目的主機上的通信Agent建立TCP連接,然后再進行文件的傳送。
4 結論
本文引入Agent技術對網絡漏洞掃描系統進行了設計與實現。系統采用有多臺掃描主機的分布式結構,Agent間的協作通過規范的通信來完成,同時還采用了一定的安全機制來保護Agent自身的安全和通信安全。本系統具有良好的可擴充性,能方便地通過添加新的Agent來加入新的協作主機和新的漏洞檢測方法,它克服了傳統的漏洞掃描系統的局限性,適合完成較大規模網絡的漏洞掃描任務。
參考文獻:
[1]Sunbelt Software. Sunbelt Software White Paper: Vulnerability Assessment Scanning[EB/OL]. http://www.sunbeltsoftware.com/evaluation/987/Web/documents/snsi_whitepaper.pdf, 2004-02.
[2]Michitaka Yoshimoto, et al. Development of Security Scanner with High Usability[C]. Proceedings of the 18th International Conference on Advanced Information Networking and Application,2004.
[3]馬恒太,蔣建春,陳偉鋒,等.基于Agent的分布式入侵檢測系統模型[J]. 軟件學報,2000,11(10):13121319.
[4]Anonymous. Maximum Security(4th edition)[M]. SAMS, 2002,221-230.
[5]張磊,卿斯漢.一個基于Agent的防火墻系統的設計與實現[J].軟件學報,2000,11(5):642-645.
作者簡介:
馬捷(1976-),男,湖北鐘祥人,博士研究生,主要研究方向為網絡安全、多Agent系統等;陳莘萌(1939-),教授,博導,主要研究方向為并行算法、多媒體技術和信息安全;向廣利(1974-),男,河南信陽人,博士研究生,主要研究方向為網絡安全、多Agent系統等。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文