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