摘要:本文給出了蜜罐和虛擬蜜罐的定義,介紹了可以用Honeyd構(gòu)造虛擬蜜罐,并分析了Honeyd的結(jié)構(gòu)和配置,以及其在網(wǎng)絡(luò)安全領(lǐng)域的應用。
關(guān)鍵詞:蜜罐;虛擬蜜罐;Honeyd;網(wǎng)絡(luò)安全
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)14-20863-04
1 引言
隨著計算機網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,開放式的網(wǎng)絡(luò)體系的安全隱患日益明顯地暴露出來,從上世紀八十年代至今各種計算機安全事件不斷發(fā)生。傳統(tǒng)意義上的網(wǎng)絡(luò)安全,如防火墻、入侵檢測系統(tǒng)、加密等等,都是被動防御的。它們的策略是,先考慮系統(tǒng)可能出現(xiàn)哪些問題,然后對問題進行分析解決,而蜜罐技術(shù)提出了一種新的網(wǎng)絡(luò)安全防御策略,變被動防御為主動進攻,使其具有主動交互性。蜜罐系統(tǒng)的主要作用是學習了解入侵者的思路、工具、目的,通過獲取這些信息,讓互聯(lián)網(wǎng)上的組織更好地了解他們所遇到的威脅,并且針對這些威脅及時找出相應的防御策略來提高系統(tǒng)的安全。
2 蜜罐的定義及其優(yōu)缺點
2.1 蜜罐的定義
蜜罐(HoneyPot),是受到嚴密監(jiān)控的網(wǎng)絡(luò)誘騙系統(tǒng),它通過真實或模擬的網(wǎng)絡(luò)和服務來吸引攻擊,從而在黑客攻擊蜜罐期間對其攻擊行為及過程進行記錄分析,以搜集信息,同時對新攻擊發(fā)出預警。蜜罐本身并不直接增強網(wǎng)絡(luò)的安全性,但可以延緩攻擊和轉(zhuǎn)移攻擊目標。簡單地說,蜜罐就是誘捕攻擊者的一個陷阱。
2.2 虛擬蜜罐的定義
虛擬蜜罐是指在擁有IP地址的真實機器上安裝特定的軟件,可模擬出運行多種操作系統(tǒng)的數(shù)臺虛擬機,并通過這臺真實的機器響應發(fā)往虛擬蜜罐的網(wǎng)絡(luò)流量。其優(yōu)點是減低了成本而且容易部署和維護。
2.3 蜜罐技術(shù)的優(yōu)缺點
2.3.1 蜜罐的優(yōu)點
(1)數(shù)據(jù)價值高
當今,安全組織所面臨的一個問題就是怎樣從收集到的海量數(shù)據(jù)中獲取有價值的信息,通過防火墻日志、系統(tǒng)日志和入侵檢測系統(tǒng)發(fā)出的警告信息中收集到的數(shù)據(jù)的量非常的大,從中間提取有價值的信息很困難。
蜜罐不同于其他的安全工具每天收集到若干GB的數(shù)據(jù),大多數(shù)Honeypot每天收集到的數(shù)據(jù)只有幾兆。并且這些數(shù)據(jù)的價值卻非常高,因為蜜罐沒有任何產(chǎn)品型的功能,所有對他的訪問都是非法的、可疑的。
(2)資源消耗少
當前大多數(shù)安全組織所而臨的另一個難題就是有時會由于網(wǎng)絡(luò)資源耗盡而導致安全措施失去了作用。例如,當防火墻的狀態(tài)檢測表滿的時候,它就不能接受新的連接了,它會強迫防火墻阻斷所有的連接。同樣入侵檢測系統(tǒng)會因為網(wǎng)絡(luò)流量太大,使其緩沖區(qū)承受不起,而導致IDS丟失數(shù)據(jù)包。
因為Honeypot只需要監(jiān)視對它自己的連接,因此需要捕獲和監(jiān)視的網(wǎng)絡(luò)行為很少,很少會存在網(wǎng)絡(luò)流量大的壓力,所以一般不會出現(xiàn)資源耗盡的情況。我們不需要在充當蜜罐的主機的硬件配置上投入大量的資金,只需要一些相對便宜的計算機就可以完成蜜罐的部署工作。
(3)實現(xiàn)簡單
部署一個蜜罐,不需要開發(fā)復雜和新奇的算法,不需要維護特征數(shù)據(jù)庫,不需要配置規(guī)則庫。只要配置好蜜罐,把它放在網(wǎng)絡(luò)中,然后靜觀其變。
2.3.2 蜜罐的缺點
蜜罐也有其自身的缺點,因此蜜罐不能完全取代其它的安全工具,必須把它和其它的安全工具相結(jié)合才能更好的發(fā)揮它的作用。
(1)數(shù)據(jù)收集面狹窄
如果沒有人攻擊蜜罐,它們就變得毫無用處。在某些情況下攻擊者可能會識別出蜜罐,那么攻擊者就會避開蜜罐直接進入網(wǎng)絡(luò)中的其他主機,這樣蜜罐就不會發(fā)現(xiàn)入侵者已經(jīng)進入了你的網(wǎng)絡(luò)。
(2)有一定風險
蜜罐可能會把風險帶入它所在的網(wǎng)絡(luò)環(huán)境。蜜罐一旦被攻陷,它就有可能成為攻擊、潛入或危害其它的系統(tǒng)或組織的跳板。
3 虛擬蜜罐框架Honeyd
3.1 Honeyd概述
Honeyd是一款源代碼開放,可免費使用的軟件,它是用C語言編寫的可創(chuàng)建虛擬蜜罐的框架。它可以同時模擬上百甚至上千臺不同的虛擬計算機,每個虛擬計算機和一個未使用的IP綁定在一起。這些虛擬機可以模擬不同的操作系統(tǒng)以及與該操作系統(tǒng)相關(guān)聯(lián)的服務。
3.2 Honeyd的數(shù)據(jù)收集
要使Honeyd可以正確的接收和回應目的地址是我們的虛擬蜜罐的網(wǎng)絡(luò)數(shù)據(jù)包,必須正確的配置網(wǎng)絡(luò)。有幾種方法可以實現(xiàn)網(wǎng)絡(luò)的配置:如為指向Honeyd主機的虛擬IP創(chuàng)建特殊的路由,使用ARP代理。
如圖1所示,假設(shè)10.0.0.1是路由器的IP地址,10.0.0.2是Honeyd主機的IP地址,10.0.0.11—10.0.0.14是Honeyd虛擬蜜罐的IP地址。最簡單的情況是虛擬蜜罐的IP位于我們局域網(wǎng)內(nèi)。當入侵者通過互聯(lián)網(wǎng)向虛擬蜜罐Linux 1.0.9發(fā)送一個數(shù)據(jù)包時,路由器會接收數(shù)據(jù)包并試圖發(fā)送這個數(shù)據(jù)包。路由器會查詢路由表來決定把該數(shù)據(jù)包發(fā)往哪里。
數(shù)據(jù)包有以下3種處理方式:
(1)路由器A將數(shù)據(jù)包轉(zhuǎn)發(fā)到另一個路由器。
(2)10.0.0.11位于路由器所在的局域網(wǎng)范圍內(nèi),路由器可以直接將數(shù)據(jù)包傳遞給10.0.0.11。
(3)當沒有路由指向10.0.0.11時,路由器會丟棄這個數(shù)據(jù)包。
為了將虛擬蜜罐的數(shù)據(jù)流引向Honeyd主機,我們可以用以下方法:
(1)如果沒有配置專門的路由,路由器通過ARP請求確定虛擬蜜罐的MAC地址,因為沒有相應的物理機器,我們配置Honeyd主機用自己的MAC地址對10.0.0.11的ARP請求作出反應。這樣通過ARP代理路由器就把發(fā)送給虛擬蜜罐Linux 1.0.9的數(shù)據(jù)包轉(zhuǎn)到了Honeyd主機的MAC地址。
(2)將到虛擬蜜罐的路由器入口設(shè)置為指向Honeyd主機,這樣路由器轉(zhuǎn)發(fā)到虛擬蜜罐的數(shù)據(jù)包會直接發(fā)送到Honeyd主機。
3.3 Honeyd軟件的結(jié)構(gòu)
Honeyd系統(tǒng)的組成包括配置數(shù)據(jù)庫、中央包分配器、協(xié)議處理器、個性引擎、路由組件(可選),其系統(tǒng)結(jié)構(gòu)可以簡化為圖2所示。
當Honeyd接收到數(shù)據(jù)包時,中央包分配器會檢查IP包的長度,并修改包的校驗和。Honeyd主要響應ICMP、TCP和UDP這三種互聯(lián)網(wǎng)協(xié)議,其他協(xié)議包在被記入日志后被偷偷丟棄。
在處理數(shù)據(jù)包之前,中央包分配器會讀取配置數(shù)據(jù)庫,查找與數(shù)據(jù)包目的地址相對應的蜜罐配置。如果沒有對應的配置存在,系統(tǒng)會采用一個缺省的配置。給定配置后,數(shù)據(jù)包傳輸層的協(xié)議類型把數(shù)據(jù)包分配給特定的協(xié)議處理器。
數(shù)據(jù)包會經(jīng)過個性引擎處理后再往外部網(wǎng)絡(luò)發(fā)送。個性引擎會修改數(shù)據(jù)包內(nèi)容,使數(shù)據(jù)包看上去和從指定操作系統(tǒng)的網(wǎng)絡(luò)棧發(fā)出的一樣。
(1)配置數(shù)據(jù)庫
配置數(shù)據(jù)庫實際上是一個二進制的配置文件,它包含了蜜罐系統(tǒng)所要模仿的系統(tǒng)、服務與網(wǎng)絡(luò)拓撲結(jié)構(gòu)以及其它部件行為特性等等。Honeyd通過讀取該文件配置和實施蜜罐系統(tǒng)。
(2)中央包分配器
中央包分配器是負責將數(shù)據(jù)包分配給相應協(xié)議處理器的部件。
當獲取到一個數(shù)據(jù)包時,中央包分配器首先計算該數(shù)據(jù)包的長度并進行驗證,然后讀取配置數(shù)據(jù)庫,查找與數(shù)據(jù)包的目的地址相對應的配置。如果配置存在則根據(jù)數(shù)據(jù)包傳輸層的協(xié)議類型把該數(shù)據(jù)包分配給特定的協(xié)議處理器,否則就使用一個缺省的配置。
(3)協(xié)議處理器
協(xié)議處理器是模仿特定服務的部件。目前,協(xié)議處理器響應ICMP、TCP和UDP這三種協(xié)議的數(shù)據(jù)包。對于ICMP數(shù)據(jù)包,所有echo請求都以目標不可達的信息響應,不過通過對配置數(shù)據(jù)庫中配置的修改,可以改變ICMP響應的行為。對于TCP數(shù)據(jù)包,協(xié)議處理器會把它們與特定的協(xié)議建立連接。當一個數(shù)據(jù)包到達時,協(xié)議處理器會檢查是否為已經(jīng)建立了連接的數(shù)據(jù)包,如果是,這個數(shù)據(jù)包會被送給已經(jīng)開始的服務,否則開始建立一個新的連接。目前,協(xié)議處理器可以通過TCP三次握手來建立和響應TCP會話,也可以通過設(shè)置FIN或RST標志位來撤消一次會話,但是擁塞窗口管理沒有完全實現(xiàn)。對于UDP數(shù)據(jù)包,協(xié)議處理器直接將其傳給相應的服務。
(4)個性引擎
個性引擎是Honeyd的一個非常關(guān)鍵的部件,黑客通常會運用象Xprobe或Nmap的指紋識別工具來收集目標系統(tǒng)的信息,為了讓虛擬蜜罐在被探測的時候顯得象真實主機一樣,所以必須讓它在被指紋識別的時候不被暴露出來。對于一個特定的操作系統(tǒng),它的網(wǎng)絡(luò)協(xié)議棧也是特定的。不同的虛擬蜜罐可以被賦予不同的網(wǎng)絡(luò)協(xié)議棧?!皞€性引擎”個性化虛擬蜜罐的網(wǎng)絡(luò)棧行為的方法是:在每個發(fā)送出去的數(shù)據(jù)包的協(xié)議頭中進行適當?shù)男薷?,使得?shù)據(jù)包符合指紋識別軟件預期的操作系統(tǒng)的特征。
Honeyd利用Nmap指紋庫作為TCP和UDP連接個性化的參考,利用Xprode指紋庫作為ICMP連接個性化的參考。
(5)路由部件
Honeyd是通過路由部件來模擬虛擬網(wǎng)絡(luò)拓撲結(jié)構(gòu)的。通常,虛擬路由拓撲是一個具有根的樹。在這種網(wǎng)絡(luò)結(jié)構(gòu)中,數(shù)據(jù)包從這個根進入虛擬路由拓撲。樹的每一個非終端節(jié)點表示一個虛擬路由器,每條邊代表一個連接,它包括等待時間和包丟失等特性,而葉子結(jié)點對應一個網(wǎng)絡(luò)。
當Honeyd接收到一個數(shù)據(jù)包時,從根結(jié)點開始傳輸數(shù)據(jù)包,直到找到擁有該目的IP地址的網(wǎng)絡(luò)。在傳輸?shù)倪^程中,路由部件會計算包丟失和等待時間來決定是否丟棄該數(shù)據(jù)包,并當數(shù)據(jù)包傳輸時每經(jīng)過一個路由器時,路由部件都對數(shù)據(jù)包中TTL值做減1操作。當TTL值減為0時,路由部件會發(fā)送一個ICMP超時數(shù)據(jù)包。
3.4 Honeyd的應用
(1)產(chǎn)生入侵檢測
可以利用Honeyd為入侵檢測系統(tǒng)產(chǎn)生入侵規(guī)則。Honeycomb是英國劍橋大學開發(fā)的Honeyd插件。Honeycomb可以自動地為入侵檢測系統(tǒng)Snort產(chǎn)生檢測特征。Honeycomb會記錄進出的數(shù)據(jù)包,并對這些數(shù)據(jù)包進行入侵模式抽取,然后把這些模式和snort的模式庫進行比較。如果模式庫中沒有相似的入侵模式存在,Honeycomb會自動創(chuàng)建一個新的模式。如果模式庫中有類似的模式存在,Honeycomb會更新這個模式。所以Honeycomb能幫助Snort及時地發(fā)現(xiàn)新攻擊,對于已有其模式的攻擊,Honeycomb能將其新的變種反應到Snort的模式中。
(2)網(wǎng)絡(luò)誘騙
可以用虛擬蜜罐來裝備一個工作網(wǎng)絡(luò)的未分配地址,這樣可以迷惑攻擊者,延緩對工作網(wǎng)絡(luò)的掃描和攻擊。
(3)阻止垃圾郵件
可以利用Honeyd自動對新垃圾郵件做出辯別,然后提交給一起合作的垃圾過濾器。垃圾郵件發(fā)送者主要是使用開放代理服務器和郵件轉(zhuǎn)發(fā)代理來發(fā)送垃圾郵件。發(fā)送者通過使用開放代理服務器來隱藏自己的IP地址,從而防止自己被追蹤來源。郵件轉(zhuǎn)發(fā)代理可以接受任何第三方的郵件,并轉(zhuǎn)發(fā)非本地用戶的郵件。所以,垃圾郵件發(fā)送者可以幾乎無限制地通過郵件轉(zhuǎn)發(fā)代理發(fā)送垃圾郵件。
Honeyd可以用來有效地過濾垃圾郵件。Niels Provos利用Honeyd設(shè)計了一個過濾垃圾郵件的框架(圖3)。在這個框架中Niels Provos使用一臺主機虛擬一個C類網(wǎng)絡(luò)。并在該網(wǎng)絡(luò)中,隨機地配置了運行開放代理服務器和郵件轉(zhuǎn)發(fā)代理的蜜罐系統(tǒng)。當垃圾郵件發(fā)送者企圖通過開放代理服務器和郵件轉(zhuǎn)發(fā)代理發(fā)送郵件時,這些郵件會自動被轉(zhuǎn)發(fā)給垃圾郵件陷阱。垃圾郵件陷阱則將垃圾郵件轉(zhuǎn)發(fā)給合作的郵件過濾器。與此同時,垃圾郵件的發(fā)送者被記錄于垃圾郵件陷阱日志文件中。
(4)發(fā)現(xiàn)和反擊蠕蟲病毒
蜜罐可以模擬系統(tǒng)漏洞來吸引掃描。我們可以通過布置虛擬蜜罐來發(fā)現(xiàn)和反擊利用隨機大面積掃描來尋找新目標的蠕蟲病毒。我們可以把虛擬蜜罐布置在未分配的網(wǎng)絡(luò)地址上,受到掃描刺探的可能性從一定程度上取決于布置的蜜罐數(shù)量。因此,虛擬蜜罐布置得越多,蜜罐之一就越容易收到蠕蟲病毒的刺探。
4 虛擬蜜罐的配置
我們可以選取2 臺P4 微機:1臺作為攻擊機,另1臺作為實現(xiàn)蜜罐系統(tǒng)的宿主機,它有一個真實的IP地址。在安全Linux Red Hat 9.0 系統(tǒng)上運行虛擬蜜罐框架Honeyd。通過模擬操作系統(tǒng)的TCP/IP 棧來建立蜜罐,使用與Nmap 或Xprobe 相同的指紋數(shù)據(jù)庫來模擬操作系統(tǒng),來響應針對虛擬蜜罐的網(wǎng)絡(luò)請求。
honeyd 的安裝需要以下庫的支持:libevent :異步事件庫; libdnet :數(shù)據(jù)包構(gòu)造和發(fā)送開發(fā)庫;libpcap :數(shù)據(jù)包捕獲開發(fā)庫;libdnsres :無阻塞的域名解決開發(fā)庫;libpcre :Perl 的正規(guī)表達庫。安裝好了上述庫之后就可以把honeyd 安裝上了,然后就可以對它進行配置。
在Honeyd 框架中,是通過模板來配置虛擬蜜罐系統(tǒng)的,一個模板相當于一個虛擬的計算機系統(tǒng)。配置文件其實是一個簡單的文本文件。用create 命令來創(chuàng)建一個模板。用set 命令把從Nmap 指紋文件中得到的個性分配給模板,并設(shè)置系統(tǒng)支持的網(wǎng)絡(luò)協(xié)議的缺省行為,行為可以有三種選項:open—指定端口開放、reset—指定端口關(guān)閉、block—指定協(xié)議的數(shù)據(jù)包都被丟棄。用bind 命令分配IP 地址、用add 命令來指定服務。
5 結(jié)束語
蜜罐已經(jīng)成為安全專家所青睞的對付黑客的有效工具之一。而虛擬蜜罐使用簡單,配置靈活,占用的資源少,不僅僅可以捕獲到那些防火墻之外的腳本,還可以發(fā)現(xiàn)自己組織中的入侵者;收集的數(shù)據(jù)和信息有很好的針對性和研究價值。既可作為獨立的安全工具,還可以與其他的安全機制聯(lián)合使用。蜜罐也有缺點和不足,主要是收集數(shù)據(jù)面比較狹窄和可能會引入新的風險。面對不斷該進的黑客技術(shù),蜜罐技術(shù)也要不斷的完善和更新。
參考文獻:
[1] 周蓮英.虛擬蜜罐系統(tǒng)框Honeyd的分析與研究[J].計算機工程與應用,2005(27).
[2] 翟繼強,葉飛.利用Honeyd構(gòu)建虛擬網(wǎng)絡(luò)[J].計算機安全,2006,(3):26-48.
[3] 官凌青,婁嘉鵬,劉莉.蜜罐Honeyd的擴展設(shè)計與實現(xiàn)[J].北京電子科技學院學報,2006,14(4):83-86,90.
[4] http://www.citi.umich.edu/u/provos/honeyd/[EB/OL].
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文