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