參考鏈接:
1句携、https://blog.csdn.net/jack237/article/details/6828771
2医吊、http://netsecurity.51cto.com/art/201101/242209_all.htm
3液南、https://www.oschina.net/uploads/doc/honeyd.pdf
Honeyd是一個(gè)小型守護(hù)進(jìn)程浪讳,可以在網(wǎng)絡(luò)上創(chuàng)建虛擬主機(jī)吸耿≈仆可以將主機(jī)配置為運(yùn)行任意服務(wù)掸绞,并且可以調(diào)整它們的個(gè)性以使它們看起來(lái)運(yùn)行某些操作系統(tǒng)。
Honeyd可以使一臺(tái)主機(jī)在局域網(wǎng)中模擬出多個(gè)地址以滿足網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境的要求耕捞。(- 目前已經(jīng)測(cè)試了多達(dá)65536個(gè)用于網(wǎng)絡(luò)仿真衔掸。)
Honeyd通過(guò)提供威脅檢測(cè)和評(píng)估機(jī)制來(lái)提高網(wǎng)絡(luò)安全性。它還通過(guò)在虛擬系統(tǒng)中隱藏真實(shí)系統(tǒng)來(lái)阻止攻擊者俺抽。
一敞映、介紹
1、虛擬蜜罐
????虛擬蜜罐可以一種快速的方式配置若干個(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.
2、Honeyd蜜罐
????Honeyd就是一款優(yōu)秀的虛擬蜜罐軟件销凑。它能夠產(chǎn)生虛擬的主機(jī)丛晌,這些主機(jī)能夠被配置以提供任意的服務(wù),系統(tǒng)特征也是與之相適應(yīng)斗幼,以至于使之看起來(lái)像真實(shí)的系統(tǒng)在運(yùn)行澎蛛。
二、安裝
1蜕窿、支持平臺(tái):linux谋逻、unix等呆馁。
2、安裝依賴項(xiàng):源碼安裝
Honeyd 軟件依賴于 Libevent 事件處理 API毁兆、Libdnet 數(shù)據(jù)包構(gòu)造與發(fā)送庫(kù)浙滤、Libpcap 數(shù)
據(jù)包捕獲庫(kù)、Libdnsres DNS反向解析函數(shù)庫(kù)以及Arpd工具气堕。
各個(gè)庫(kù)作用:
1)libevent:事件通知纺腊。是一個(gè)非同步事件通知(Asynchronous Event Notification)的函數(shù)庫(kù)。通過(guò)使用 libevent茎芭,開發(fā)人員可以設(shè)定某些事件發(fā)生時(shí)所執(zhí)行的函數(shù)揖膜,可以代替以往程序所使用的循環(huán)檢查。(libevent API 提供了一種機(jī)制:當(dāng)一個(gè)特殊事件在一個(gè)文件描述符上發(fā)生或者一個(gè)事先設(shè)定的時(shí)間到達(dá)的時(shí)候執(zhí)行一個(gè) callback 函數(shù)梅桩,另外壹粟,callback 也支持由信號(hào)或者規(guī)則的timeout 引發(fā)的 callback。)
2)Libdnet:數(shù)據(jù)包創(chuàng)建摘投。是一個(gè)提供了跨平臺(tái)的網(wǎng)絡(luò)相關(guān) API(Application Programming Interface)的函數(shù)庫(kù)(主要是較底層的網(wǎng)絡(luò)操作)煮寡,包括 arp 緩存,路由表查詢犀呼,IP 包及物理幀的傳輸?shù)取?3)Libpcap:數(shù)據(jù)包嗅探幸撕。是一個(gè)數(shù)據(jù)包捕獲(Packet Sniffing)的函數(shù)庫(kù),大多數(shù)網(wǎng)絡(luò)監(jiān)控軟件都以它為基礎(chǔ)外臂。
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)答。
3罪佳、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)答。
4蕾管、安裝honeyd枷踏。http://www.honeyd.org/release.php?version=1.5c
5、具體安裝步驟:
安裝依賴包:
sudo apt-get install build-essential g++ gcc進(jìn)行安裝掰曾。
注:在裝gcc之前需要裝build-essential,其作用是提供軟件包列表信息旭蠕。
詳見(jiàn)[http://www.citi.umich.edu/u/provos/honeyd/](http://www.citi.umich.edu/u/provos/honeyd/)。
1、下載libenvent源碼:[http://libevent.org/old-releases.html](http://libevent.org/old-releases.html)
2掏熬、下載libdnet源碼:[http://libdnet.sourceforge.net/](http://libdnet.sourceforge.net/)
3佑稠、下載libdcap源碼:[http://www.tcpdump.org/release/](http://www.tcpdump.org/release/)
4、源碼安裝:
先解壓:tar -xzvf filename
切換到解壓后的目錄執(zhí)行:./configure 孽江;make 讶坯;make install。
**注:libevent,libdnet,libdcap 安裝在/usr 目錄下岗屏,在配置時(shí)辆琅,用./configure –-prefix=/usr**
5、通過(guò)預(yù)編譯包安裝:下載軟件包这刷,直接解壓并使用婉烟。http://www.tracking-hackers.com/solutions/honeyd/honeyd-linux-kit-0.5a.tgz
通過(guò)源碼安裝:需先編譯,可參考[https://cloud.tencent.com/developer/article/1019325](https://cloud.tencent.com/developer/article/1019325)暇屋。
三似袁、運(yùn)行
1、相關(guān)參數(shù)含義如下:
honeyd [OPTIONS] [net ...]
OPTIONS:
-d:非守護(hù)程序的形式咐刨,允許冗長(zhǎng)的調(diào)試信息昙衅。
-P:輪詢模式。
-l:日志文件指定了日志包和日志文件的連接定鸟。
-s:將服務(wù)狀態(tài)輸出記錄到logfile而涉。
-i:監(jiān)聽接口,指定偵聽的接口,可以指定多個(gè)接口联予。
-p:從文件中讀取nmap樣式的指紋啼县。
-x:從文件中讀取xprobe風(fēng)格的指紋,這個(gè)文件決定了 honeyd 如何響應(yīng) ICMP 指紋工具沸久。
-a:從文件中讀取nmap-xprobe關(guān)聯(lián)季眷。
-0:從文件中讀取pf樣式的OS指紋。
-u:設(shè)置Honeyd應(yīng)該運(yùn)行的uid 卷胯。
-g:設(shè)置Honeyd應(yīng)該運(yùn)行的gid子刮。
-f:從文件中讀取配置。
-c host:port:name:pass:報(bào)告開始收集窑睁。
--webserver-port=port:Web服務(wù)器偵聽的端口挺峡。
--webserver-root=path:文檔樹的根。
--fix-webserver-permissions:更改所有權(quán)和權(quán)限卵慰。
--rrdtool-path=path:到rrdtool的路徑。
--disable-webserver:禁用內(nèi)部Web服務(wù)器佛呻。
--disable-update:禁用檢查安全修復(fù)程序裳朋。
-V, --version
-h,--help
--include-dir:用作插件開發(fā),指定 honeyd 存貯它的頭文件的位置。
net:
指定IP地址或者網(wǎng)絡(luò)或者IP地址范圍鲤嫡,如果沒(méi)有指定送挑,honeyd將監(jiān)視它能看見(jiàn)的任何IP地址的流量。
2暖眼、常用運(yùn)行命令(若防火墻開啟惕耕,則honeyd模仿的主機(jī)或網(wǎng)絡(luò)可能無(wú)法被探測(cè)到)
1、./honeyd -f honeyd.conf -p nmap.prints -x xprobe2.conf -a nmap.assoc -0 pf.os -l /var/log/honeyd 192.168.1.100-192.168.1.253
2诫肠、模擬單機(jī):
./arpd 172.31.0.0/16
./honeyd –f honeyd1.conf 172.31.35.10-172.31.35.20
3司澎、模擬網(wǎng)絡(luò)拓?fù)洌?/p>
sudo ./arpd 172.31.0.0/16
./honeyd –f honeyd2.conf 172.31.0.0-172.31.1.255
四、配置
1栋豫、模擬單機(jī)
配置文件如下:
create default
set default default tcp action filtered
set default default udp action filtered
set default default icmp action filtered
create template
set template ethernet "3com"
set template personality "Linux 2.4.7 (X86)"
bind 192.168.1.125 template
上面的配置文件創(chuàng)建了一個(gè)叫做template的模板挤安,將IP:192.168.1.125綁定到這個(gè)模板上。上面的這個(gè)windows模板告訴honeyd丧鸯,當(dāng)一個(gè)客戶端試圖用NMap或者XProbe探測(cè)honeypot的指紋時(shí)蛤铜,把它自己偽裝成Linux 2.4.7 (X86)的系統(tǒng)。default模塊丛肢,對(duì)于關(guān)閉的端口围肥,honeyd將發(fā)出對(duì)于TCP協(xié)議、UDP協(xié)議蜂怎、ICMP協(xié)議已被過(guò)濾的消息穆刻。
2、模擬網(wǎng)絡(luò)
網(wǎng)絡(luò)拓?fù)涞呐渲梦募缦拢?/p>
#route entry 10.0.0.1
#route 10.0.0.1 link 10.2.0.0/24
#route 10.0.0.1 add net 10.3.0.0/16 10.3.0.1 latency 8ms bandwidth 10Mbps
#route 10.3.0.1 link 10.3.0.0/24
#route 10.3.0.1 add net 10.3.1.0/24 10.3.1.1 latency 7ms loss 0.5
#route 10.3.1.1 link 10.3.1.0/24
create default
set default default tcp action filtered
set default default udp action filtered
set default default icmp action filtered
# Example of a simple host template and its binding
create windows
set windows personality "OpenBSD 4.0 (x86)"
set windows uptime 1728650
set windows maxfds 35
add windows tcp port 80 "scripts/web.sh"
add windows tcp port 22 "scripts/test.sh"
add windows tcp port 23 "scripts/router-telnet.pl"
add windows udp port 53 open
set windows ethernet "dell"
set windows default tcp action closed
#create router
#set router personality "Cisco 2514 router (IOS 12.1)"
#set router default tcp action closed
#add router tcp port 22 "scripts/test.sh"
#add router tcp port 23 "scripts/router-telnet.pl"
#bind 10.3.0.1 router
#bind 10.3.1.1 router
#bind 10.3.1.12 template
#bind 10.3.1.11 template
bind 192.168.3.137 windows
#set 10.3.1.11 personality "Microsoft Windows NT 4.0 SP3"
#set 10.3.1.10 personality "IBM AIX 4.2"
“route entry”配置用來(lái)指定入口點(diǎn)派敷,“route link”配置命令用來(lái)指定哪個(gè)網(wǎng)絡(luò)是直接可達(dá)的蛹批,即不需要更遠(yuǎn)的跳數(shù)來(lái)到達(dá)。
3篮愉、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提供的腳本一般比較很簡(jiǎn)單散址,用戶想要編寫更為復(fù)雜的腳本,可以用以honeyd提供的腳本為模板來(lái)改寫诀诊。
在honeyd的配置文件中可以指定某個(gè)端口的仿真服務(wù)腳本月幌,如:
add windows tcp port 21 open
改寫為:
add windows tcp port 21 "sh scripts/ftp.sh"
就可以使honeyd運(yùn)行仿真服務(wù)腳本ftp.sh,來(lái)模擬ftp服務(wù)。仿真服務(wù)腳本要指定路徑员舵,才能被honeyd找到脑沿。
五、日志
honeyd 對(duì)黑客在終端的輸入提供了完善的日志马僻,該日志文件在運(yùn)行honeyd 時(shí)已經(jīng)指定,即使用-f參數(shù)加指定的日志文件名庄拇。一般指定日志文件為/var/log/honeyd,可以通過(guò)查看該日志獲得黑客登陸的信息和一些攻擊的方法韭邓。
六措近、源碼分析
Honeyd
| |--compat
| | |--用到的相關(guān)代碼
| |--debian
| | |--honeyd的默認(rèn)配置在Debian中使用'honeyd'用戶。
| |--doc
| | |--各類相關(guān)文檔
| |--dpkt
| |--os-test
| | |--內(nèi)含一個(gè)ostest腳本
| |--pypcap
| | |--pcap流量包
| |--regress
| | |--對(duì)nmap等探測(cè)活動(dòng)的響應(yīng)
| |--sample-config
| | |--配置文件樣式
| |--scripts
| | |--Honeyd提供仿真服務(wù)腳本來(lái)對(duì)應(yīng)用層的協(xié)議進(jìn)行模擬
| |--subsystems
| | |--為了替代為每個(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 需要的資源更少。
| |--webserver
| | |--web服務(wù)器相關(guān)仿真及前端樣式
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é)議的包將被日志記錄并丟棄捌议。在處理包之前,分配器必須查詢配置數(shù)據(jù)庫(kù)來(lái)找到一個(gè)與目的 IP 相符合的蜜罐配置引有,如果沒(méi)有指定的配置存在瓣颅,一個(gè)默認(rèn)的模板將被使用。給定一個(gè)配置譬正,包和相應(yīng)的配置將被分發(fā)給指定的協(xié)議處理器宫补。
協(xié)議處理器
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)建立好的連接的一部分蜈彼。如果是的話,任何新的數(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)生的丰介。
七、測(cè)試
nc 10.211.55.23 23
八鉴分、優(yōu)點(diǎn)
1哮幢、honeyd 是一款非常優(yōu)秀的虛擬蜜罐軟件,能完成蜜罐的大部分功能志珍,花費(fèi)的資源相對(duì)較少橙垢。
2、能完成對(duì)網(wǎng)絡(luò)拓?fù)涞哪M伦糯,對(duì)抗指紋探測(cè)柜某。
3、honeyd 的使用很方便敛纲,僅需要一個(gè)配置文件莺琳,就可以完成響應(yīng)的部署。
4载慈、此外惭等,honeyd 的使用也是相當(dāng)廣泛。在引誘黑客攻擊办铡,反蠕蟲辞做,遏制垃圾郵件等方面都有廣泛的應(yīng)用。