Honeyd:您私人的蜜罐系統(tǒng)
Honeyd是一個可以在網(wǎng)絡(luò)上創(chuàng)建虛擬主機的小型daemon。可以對此虛擬主機的服務(wù)和TCP進行配置,使其在網(wǎng)絡(luò)中看起來是在運行某種操作系統(tǒng)。Honeyd可以使一臺主機在局域網(wǎng)中模擬出多個地址以滿足網(wǎng)絡(luò)實驗環(huán)境的要求。虛擬主機可以被ping通,也可以對它們進行路由跟蹤。通過對配置文件進行設(shè)置可以使虛擬計算機模擬運行任何服務(wù)。也可以使用服務(wù)代理替代服務(wù)模擬。它的庫有很多,所以編譯和安裝Honeyd比較難。
下載鏈接:http://down.51cto.com/data/158561
>>去網(wǎng)絡(luò)安全工具百寶箱看看其它安全工具
1.摘要
本文主要介紹了虛擬蜜罐產(chǎn)生的相關(guān)背景,重點放在對流行的虛擬蜜罐軟件honeyd的介紹上,對 honeyd 的安裝,配置,運行和測試結(jié)果,以及 honeyd 的軟件架構(gòu)做了介紹和剖析。
2.相關(guān)問題
2.1 蜜罐(honeypot)和蜜網(wǎng)(honeynet)技術(shù)
蜜罐技術(shù)是一種欺騙入侵者以達到采集黑客攻擊方法和保護真實主機目標的誘騙技術(shù)。Honeypot不同與大多數(shù)傳統(tǒng)安全機制,它的安全資源的價值是在于它被探測,被攻擊,或者被威脅。
Honetpot 能夠是任何計算機資源,它能是工作站,文件服務(wù)器,郵件服務(wù)器,打印機,路由器,任何網(wǎng)絡(luò)設(shè)備,甚至整個網(wǎng)絡(luò)。
Honetpot是故意被部署再危險的環(huán)境中,以便它被攻擊,并且相對于部署honeypot的目的來說,honeypot 沒有合法的產(chǎn)品價值,即它不能用于對外的正常服務(wù)。如果你的web server經(jīng)常被訪問,并且你分析服務(wù)器上的信息,這就不代表你把他配置成一個 honeypot,而僅僅是一個缺乏安全防護措施的 web server.
Honeynet是一組honeypot的集合,這些honeypot是在一個人或者一個組織的控制之下,一個 honeynet 上可以運行多種不同的操作系統(tǒng),可以有一個或者多個不同的主題。
2.2 虛擬蜜罐(virtual honeypot)
虛擬蜜罐可以一種快速的方式配置若干個蜜罐,虛擬蜜罐軟件能夠模仿 IP 棧,OS,和真實系統(tǒng)的應(yīng)用程序,一旦你建立了你的虛擬蜜罐系統(tǒng),在它被攻陷了后你也很容易重建。通常情況下,模仿是完全在內(nèi)存中實現(xiàn)的。虛擬蜜罐軟件也允許在單一的物理主機上配置一個完全的密網(wǎng),一個虛擬蜜罐系統(tǒng)可被用來模仿成千上萬個系統(tǒng),每個系統(tǒng)使用成千上萬個端口且使用不同的IP.
由于整個 Honeynet 可以部署在一臺機器上,可以大大的減少費用,只要足夠大的內(nèi)存與虛擬軟件的支持,我們可以在一臺機器上安裝任意多的操作系統(tǒng)。
Honeyd就是一款優(yōu)秀的虛擬蜜罐軟件。#p#
3.Honeyd 軟件
3.1 簡介
Honeyd 是一個小的守護程序,它能夠產(chǎn)生虛擬的主機,這些主機能夠被配置以提供任意的服務(wù),系統(tǒng)特征也是與之相適應(yīng),以至于使之看起來像真實的系統(tǒng)在運行。在一個局域網(wǎng)的網(wǎng)絡(luò)仿真中,Honeyd 能夠使單個主機擁有許多 IP(多達 65536 個)。通過提供對威脅探測和評估的機制,增強了計算機的安全性,通過隱藏真實的系統(tǒng)在虛擬的系統(tǒng)中,也達到了阻止敵手的目的。
3.2 安裝
Honeyd 不能單獨運行,需要如下三個函數(shù)庫作為配套,libenvent,libdnet,libdcap.
3.2.1 libenvent
libevent API 提供了一種機制:當一個特殊事件在一個文件描述符上發(fā)生或者一個事先設(shè)定的時間到達的時候執(zhí)行一個 callback 函數(shù),另外,callback 也支持由信號或者規(guī)則的timeout 引發(fā)的 callback.
最新版下載地址:http://www.monkey.org/~provos/libevent-1.1a.tar.gz
相關(guān)網(wǎng)站:http://www.monkey.org/
3.2.2 libdnet
libdnet 為若干個低層的網(wǎng)絡(luò)例程提供了一個簡單的可移植的接口,包括網(wǎng)絡(luò)地址處理,內(nèi)核 arp 緩沖和路由表查找和管理,網(wǎng)絡(luò)防火墻(IP filter, ipfw, ipchains, pf, PktFilter, ...),網(wǎng)絡(luò)接口查找和管理,IP 隧道(BSD/Linux tun, Universal TUN/TAP device),未加工的 IP 包和以太網(wǎng)幀的傳輸。
支持的語言包括:C, C++, Python ,Perl (see below)
支持的平臺包括:BSD (OpenBSD, FreeBSD, NetBSD, BSD/OS) ,Linux (Redhat, Debian, Slackware, etc.) ,MacOS X ,Windows (NT/2000/XP) ,Solaris ,IRIX ,HP-UX ,Tru64
下載地址:http://prdownloads.sourceforge.net/libdnet/libdnet-1.10.tar.gz
相關(guān)網(wǎng)站:http://libdnet.sourceforge.net/
3.2.3 libdcap
libpcap 是 unix/linux 平臺下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)包,大多數(shù)網(wǎng)絡(luò)監(jiān)控軟件都以它為基礎(chǔ)。Libpcap 可以在絕大多數(shù)類 unix 平臺下工作。
下載地址:http://www.tcpdump.org/release/libpcap-0.9.1.tar.gz
相關(guān)網(wǎng)站:http://www.tcpdump.org/#needs
3.2.4 arpd
在運行honeyd之前,我們需要保證 honeyd 的主機對我們配置的honeypot的ip做出arp請求的應(yīng)答。可以通過運行arpd軟件來做出 arp 應(yīng)答。arpd 將對指定的 IP 地址范圍內(nèi)未使用的 IP 用 honeyd 主機的 MAC 地址做出arp應(yīng)答。
下載地址:http://www.citi.umich.edu/u/provos/honeyd/arpd-0.2.tar.gz
3.2.5 honeyd
這里介紹在linux下安裝honeyd的方法,首先在http://www.citi.umich.edu/u/provos/honeyd/honeyd-1.0a-rc2.tar.gz,下載最新版的 honeyd:honeyd 1.0。#p#
3.2.6 安裝
z 對于壓縮的檔案包,先解壓:tar –xzvf filename
z 切換到解壓后的目錄下執(zhí)行:
- &S249; ./configure
- &S249; make
- &S249; make install
注:libevent,libdnet,libdcap 安裝在/usr 目錄下,在配置時,用./configure –-prefix=/usr
也可以通過預(yù)編譯包來安裝。只需要下載相應(yīng)的軟件包,直接解壓就可以使用,
下載地址:http://www.tracking-hackers.com/solutions/honeyd/honeyd-linux-kit-0.5a.tgz
3.2.7 運行
Honeyd 的命令格式如下:
honeyd [ &S722;dP] [ &S722;l logfile] [ &S722;p fingerprints] [ &S722;x xprobe] [ &S722;a assoc] [ &S722;f file]
[ &S722;i interface] [ &S722;V|--version] [ &S722;h|--help] [ &S722;-include-dir] [ &S722;i interface] [net ...]
各選項的含義如下:
-d :非守護程序的形式,允許冗長的調(diào)試信息。
-P :在一些系統(tǒng)中,pcap 不能通過 select(2)來獲得事件通知是不可能的,在這種情況
下,honeyd 需要在輪訓模式下工作,這個標志位是使論詢位有效的。
-l logfile:對日志包和日志文件的連接是被日志文件指定的。
&S722;x xprobe:讀 xprobe 類型的指紋,這個文件決定了 honeyd 如何響應(yīng) ICMP 指紋工具。
&S722;a assoc:讀聯(lián)系 nmap 風格指紋和 xprobe 指紋風格的文件。
&S722;f file:讀取名為 file 的配置文件。
&S722;i interface:指定偵聽的接口,可以指定多個接口。
[ &S722;V|--version:打印出版本信息同時退出。
&S722;-include-dir:用作插件開發(fā),指定 honeyd 存貯它的頭文件的位置。
net:指定IP地址或者網(wǎng)絡(luò)或者IP地址范圍,如果沒有指定,honeyd將監(jiān)視它能看見的任何IP地址的流量。#p#
3.3 配置
我們通過一個簡單的配置文件的例子來說明如何模擬單機,文件取名為 honeyd1.conf
- create windows
- set windows personality "Microsoft Windows NT 4.0 SP3"
- set windows default tcp action reset
- set windows default udp action reset
- add windows tcp port 110 open
- add windows tcp port 80 open
- add windows tcp port 25 open
- add windows tcp port 22 open
- add windows tcp port 21 open
- bind 172.31.35.10 windows
- bind 172.31.35.12 windows
- bind 172.31.35.19 windows
上面的配置文件創(chuàng)建了一個叫做windows的模板,綁定了三個honeypot的IP到這個模板上。上面的這個windows模板告訴honeyd,當一個客戶端試圖用NMap或者XProbe探測honeypot的指紋時,把它自己偽裝成Microsoft Windows NT 4.0 SP3的系統(tǒng)。在蜜罐上有5個端口被打開:21/tcp, 22/tcp, 25/tcp, 80/udp and 110/udp。對于關(guān)閉的端口,honeyd將發(fā)出一個RST(對于TCP協(xié)議),或者一個ICMP端口不可到達的消息(對于UDP協(xié)議)。
honeyd也可以用于模擬一個網(wǎng)絡(luò)(假定文件名為honeyd2.conf),我們先模仿如下的網(wǎng)絡(luò)拓撲:
#p#這個網(wǎng)絡(luò)拓撲的配置文件如下:
- route entry 172.31.0.100 network 172.31.0.0/16
- route 172.31.0.100 link 172.31.0.0/24
- route 172.31.0.100 add net 172.31.1.0/24 172.31.1.100
- route 172.31.1.100 link 172.31.1.0/24
- create windows
- set windows personality "Microsoft Windows NT 4.0 SP3"
- set windows default tcp action reset
- add windows tcp port 80 open
- add windows tcp port 25 open
- add windows tcp port 21 open
- create router
- set router personality "Cisco 7206 running IOS 11.1(24)"
- set router default tcp action reset
- add router tcp port 23 "script/router-telnet.pl"
- bind 172.31.0.100 router
- bind 172.31.1.100 router
- bind 172.31.0.20 windows
- bind 172.31.0.30 windows
- bind 172.31.1.15 windows
- bind 172.31.1.16 windows
路由器R1是從LAN進入虛擬網(wǎng)絡(luò)的入口點,”route entry”配置用來指定入口點:
route entry 172.31.0.100 network 172.31.0.0/16
上面的這一行告訴honeyd,172.31.0.100是到虛擬網(wǎng)絡(luò)172.31.0.0/16的入口點。Honeyd也可以模擬多個網(wǎng)絡(luò)入口路由器,每個入口路由器服務(wù)不同的網(wǎng)絡(luò)范圍。172.31.0.0/24網(wǎng)絡(luò)是從路由器R1直接可達的。”route link”配置命令用來指定哪個網(wǎng)絡(luò)是直接可達的,即不需要更遠的跳數(shù)來到達。
在這個例子中,配置行如下:
route 172.31.0.100 link 172.31.0.0/24
上面的第一個IP是路由器IP。在”link”關(guān)鍵字后指定的網(wǎng)絡(luò)地址定義了直接可以訪問的網(wǎng)絡(luò)地址。多個”link”命令可以用來把多個虛擬子網(wǎng)連接到直接連接到一個路由器上。為了增加一個連接到R1的路由器R2,可以使用“route add net”命令,下面是此命令的用法:
route 172.31.0.100 add net 172.31.1.0/24 172.31.1.100
上面的命令行說明了172.31.0.100(路由器R1)能夠通過網(wǎng)關(guān)172.31.1.100(路由器R2)到達網(wǎng)絡(luò)172.31.1.0/24。最后的IP地址是新的路由器R2的IP地址。指定的網(wǎng)絡(luò)地址范圍是通過新的路由器R2可以到達的網(wǎng)絡(luò)。
增加的路由器R2后我們需要指定哪些IP地址可以由路由器R2直接到達。我們再一次使用” route link”命令。在我們的配置的網(wǎng)絡(luò)拓撲中,172.31.1.0/24子網(wǎng)是經(jīng)路由器R2可以直接到達的。具體的命令行如下:
route 172.31.1.100 link 172.31.1.0/24
為了模仿這個網(wǎng)絡(luò),需要先在配置文件中寫一個路由器的模板和一個一個蜜罐模板,并綁定172.31.0.100和172.31.1.100到這個路由器上,綁定四臺虛擬蜜罐主機172.31.0.20和172.31.0.30,172.31.1.15和172.31.1.16到這個蜜罐模板上.它們分別處于172.31.0.0/24和172.31.1.0/24兩個局域網(wǎng)中。
至此,模仿圖1的配置文件完成。#p#
Honeyd配置還可以指定網(wǎng)絡(luò)延遲,丟包率,帶寬,以及指定多個網(wǎng)絡(luò)入口點,甚至整合物理主機到honeyd模擬的網(wǎng)絡(luò)拓撲中,和GRE隧道。
詳細的信息可見Simulation Networks With Honeyd 一文。
下載地址:http://paladion.net/papers/simulating_networks_with_honeyd.pdf
我們可以運行如下的命令來運行honeyd。
首先,切換到honeyd配置文件所在的目錄。然后鍵入:
- #arpd 172.31.0.0/16
- #honeyd –f honeyd1.conf 172.31.35.10-172.31.35.20
(模擬單機的honeyd)
或者
- #arpd 172.31.0.0/16
- #honeyd –f honeyd2.conf 172.31.0.0-172.31.1.255
(模擬網(wǎng)絡(luò)拓撲的honeyd)
注意:如果防火墻開啟,honeyd模擬的主機或網(wǎng)絡(luò)可能不能被探測到。
3.4 Honeyd 對應(yīng)用層協(xié)議的模擬
Honeyd提供仿真服務(wù)腳本來對應(yīng)用層的協(xié)議進行模擬,安裝honneyd后,可以在源代碼包中的scripts目錄下找到honeyd提供的腳本。Honeyd提供的腳本的語法并不復(fù)雜,基本的規(guī)則就是當黑客登陸后,輸入命令,腳本會做出相應(yīng)的輸出回應(yīng),最簡單就是通過case語句來區(qū)別命令,對不同的命令用echo命令來做出響應(yīng)。我們從honeyd提供的stmp.sh中抽取一段來分析:
- ......
- case $incmd_nocase in QUIT* )
- echo "220 2.0.0 $host.$domain closing connection"
- exit 0;;
- RSET* )
- echo "250 2.0.0 Reset state"
- .........
變量incnd_nocase中保存的是黑客輸入的命令,對于不同的命令,用不同的echo命令做回答,若黑客輸入QUIT命令,回顯給黑客的是保存在變量host與domain中的主機域名關(guān)閉鏈接。#p#
Honeyd提供的腳本一般比較很簡單,用戶想要編寫更為復(fù)雜的腳本,可以用以honeyd提供的腳本為模板來改寫。
下載相應(yīng)的仿真服務(wù)腳本和相應(yīng)的配置文件:http://www.citi.umich.edu/u/provos/honeyd/honeyd_kit-1.0c-a.tgz
在honeyd的配置文件中可以指定某個端口的仿真服務(wù)腳本,如:
add windows tcp port 21 open
改寫為:
add windows tcp port 21 "sh scripts/ftp.sh"
就可以使honeyd運行仿真服務(wù)腳本ftp.sh,來模擬ftp服務(wù)。仿真服務(wù)腳本要指定路徑,才能被honeyd找到。
對于要運行的其他端口的仿真服務(wù)腳本,可以在配置文件中的相應(yīng)端口的語句中改。
3.5 日志
honeyd 對黑客在終端的輸入提供了完善的日志,該日志文件在運行honeyd 時已經(jīng)指定,即使用-f參數(shù)加指定的日志文件名。一般指定日志文件為/var/log/honeyd,可以通過查看該日志獲得黑客登陸的信息和一些攻擊的方法。
4.honeyd 的架構(gòu)
honeyd 的軟件架構(gòu)由如下幾個組件構(gòu)成:一個配置數(shù)據(jù)庫,一個中央包分發(fā)器,協(xié)議處理器,一個特征引擎,以及一個可選的路由器組件。
進來的包首先被中央包分配器處理,它首先檢查 IP 包的長度并確認包的校驗和。honeyd 框架知道主要的 3 種 Internet 協(xié)議:TCP,UDP,ICMP。其他協(xié)議的包將被日志記錄并丟棄。在處理包之前,分配器必須查詢配置數(shù)據(jù)庫來找到一個與目的 IP 相符合的蜜罐配置,如果沒有指定的配置存在,一個默認的模板將被使用。給定一個配置,包和相應(yīng)的配置將被分發(fā)給指定的協(xié)議處理器。#p#
ICMP 協(xié)議處理器支持大多數(shù) ICMP 請求。在默認情況下,所有的 honeypot 支持對 echo requests 和 process destination unreachable 消息的應(yīng)答。對其他消息的響應(yīng)決定與配置的個性特征。
對于 TCP 和 UDP 協(xié)議,honeyd 框架能建立連接到任意的服務(wù)。服務(wù)是外部程序,能從標準輸入獲取數(shù)據(jù),并把輸入發(fā)送到標準輸出。服務(wù)的行為完全取決于外部應(yīng)用程序。當一個連接請求被收到,honeyd 框架檢查包是否是一個已經(jīng)建立好的連接的一部分。如果是的話,任何新的數(shù)據(jù)都發(fā)往已經(jīng)建立好的連接的應(yīng)用程序。如果包是一個連接請求,一個新的進程將被創(chuàng)建來運行合適的服務(wù)。為了替代為每個連接建立一個進程,honeyd 框架也支持subsystems 和 internal services。一個 subsysytem 是一個能運行在虛擬蜜罐名字空間下的應(yīng)用程序。當相應(yīng)的虛擬蜜罐被初始化的時候,subsystem 指定的應(yīng)用程序就被啟動了。一個
subsystem 能夠綁定到端口,接受連接,發(fā)起網(wǎng)絡(luò)通訊。當一個 subsystem 作為外部程序運行的時候,一個內(nèi)部的服務(wù)就是一個能在 honeyd 中運行的 python 腳本。比起 subsystem 來,internal service 需要的資源更少。
UDP 數(shù)據(jù)報直接傳遞給應(yīng)用程序。當 honeyd 框架接受到一個發(fā)送給關(guān)閉端口的數(shù)據(jù)包的時候,如果配置的個性特征允許,它將發(fā)送一個 ICMP port unreachable。在 發(fā) 送 ICMP port unreachable 的過程中,honeyd 框架允許像 traceroute 一樣的工具去發(fā)現(xiàn)被模仿的網(wǎng)絡(luò)拓撲。
另外,建立一個到本地服務(wù)的連接,honeyd 框架也支持連接的重定向。連接的重定向可能是靜態(tài)的,或者取決于連接的四個要素(源目的端口,源目的地址)。重定向可以使我們把對虛擬蜜罐上的服務(wù)的連接請求定向到一個運行著的真實服務(wù)上。例如,我們可以重定向一個 DNS 請求到一個合適的名字服務(wù)器上。
在一個包被發(fā)送到網(wǎng)絡(luò)前,它會被個性引擎處理。個性引擎調(diào)整包的內(nèi)容,以至于它看起來像被配置的操作系統(tǒng)的協(xié)議棧中產(chǎn)生的。
5.總結(jié)
honeyd 是一款非常優(yōu)秀的虛擬蜜罐軟件,能完成蜜罐的大部分功能,花費的資源相對較少,并能完成對網(wǎng)絡(luò)拓撲的模擬,對抗指紋探測。honeyd 的使用也很方便,僅需要一個配置文件,就可以完成響應(yīng)的部署。此外,honeyd 的使用也是相當廣泛。在引誘黑客攻擊,反蠕蟲,遏制垃圾郵件等方面都有廣泛的應(yīng)用。目前對于虛擬蜜罐的研究還處于起步階段,以后對它的研究會越來越深入。