Honeyd的安裝和配置
Honeyd軟件依賴於下面幾個庫及arpd工具:
(1)Libevent:是一個非同步事件通知的函數庫。
通過使用 libevent,開發者能夠設定某些事件發生時所運行的函數,能夠取代以往程序所使用的循環檢查;
(2)Libdnet:是一個提供了跨平台的網絡相關 API的函數庫,包含 arp 緩存,路由表查詢。IP 包及物理幀的傳輸等。
(3)Libpcap:是一個數據包捕獲(Packet Sniffing)的函數庫,大多數網絡軟件都以它為基礎;
(4)Arpd工具:arpd執行在與honeyd同樣的系統上。是honeyd眾多協作工具中最重要的一個。Arpd工作時監視局域網內的流量。並通過查看honeyd系統的ARP表推斷其他系統的活動與否。
當一次企圖對局域網內系統的連接發生時,Arpd通過查找ARP表得知目的IP地址不存在后,就會嘗試對受害者的IP地址進行ARP廣播,假設honeyd得到了響應,說明目標系統確實存在,於是把目標系統的IP地址與MAC地址的相應寫入honeyd的ARP表,並對這次連接嘗試不動作,由於這可能是合法流量。假設Arpd沒有從目標接收到Arp響應,那么它就覺得目標系統並不存在。假設這是一次攻擊行為,於是就嘗試充當受害者的IP地址並對攻擊者作出回應。由此可見,arpd將對指定的IP地址范圍內未使用的IP 用honeyd主機的MAC地址做出arp應答。這樣對指定的IP地址范圍內未使用的IP的連接訪問都被重定向至honeyd主機。因此這種設計在局域網中特別能最大化的誘騙蠕蟲病毒的攻擊。轉移攻擊流。為下一步檢測和捕獲蠕蟲病毒奠定了基礎。
啟動honeyd前有時必須先啟動arpd
啟動arpd有2種
A.arpd IP
B. %arpd IP(%表示arpd的路徑)由於系統本身有個arpd,有時須要指定自己安裝的那個arpd的路徑。
在對以上幾個庫進行編譯安裝之前。因編譯安裝須要,必須確保gcc已經安裝,可通過指令“gcc -v”查看gcc是否已安裝,若沒有安裝能夠輸入指令:sudo apt-get install g++ gcc進行安裝。
注:在裝gcc之前須要裝build-essential,其作用是提供軟件包列表信息。
此次試驗我們是在Ubuntu環境下進行,網上下載的所有庫的安裝包及工具放在honeyd文件夾(存放在主文件文件夾下)中。
libevent的安裝:
用tar -zxvf libevent-1.4.14b-stable.tar.gz解壓縮
用cd libevent-1.4.14b-stable進入文件夾
用./configure檢測目標特征
用make進行編譯
用高權限的 make install進行安裝
注:最后一步一定要用管理員權限運行,即在指令前加“sudo”,不然會提示權限不夠。
余下幾個庫的安裝基本類似,出現的一些小問題都有說明:
libdnet的安裝:
tar -zxvf libdnet-1.11.tgz
cd libdnet-1.11/
./configure
make
sudo make install
libpcap的安裝:
tar -zxvf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure
*提示錯誤:缺少flex
apt-get install flex(安裝flex)
./configure
make
*提示錯誤:未能找到yacc
apt-get install bison(安裝yacc)
make
sudo make install
honeyd的安裝:
tar -zxvf honeyd-1.5c.tar.gz
cd honeyd-1.5c
./configure
*提示錯誤:需安裝libedit 或libreadline
apt-get install libedit-dev(安裝libedit)
./configure
*提示錯誤:需安裝zlib庫
cd
unzip zlib-1.2.8.zip (安裝zlib)
cd zlib-1.2.8
./configure
make
make install
cd honeyd-1.5c
./configure
*提示錯誤:無法獲取libc
cp /lib/i386-linux-gnu//libc.so.6 /usr/lib/(獲取libc)
./configure
*提示錯誤:pcap_parse沒有定義
cd libpcap-1.3.0(又一次編譯libpcap-1.3.0)
make clean (必做)
./configure
make
make install
cd - (回到honeyd-1.5c)
make
sudo make install
工具arpd的安裝:
tar arpd-0.2.tar.gz
cd arpd-0.2/
./configure
編譯報錯。上網查詢得到以下的解決方法:
在arpd/arpd.c文件里加入 #define __FUNCTION__ ""
make
sudo make install
虛擬出2台主機
在局域網中選擇一個未被使用的IP地址。啟動arpd(此處選擇的是192.168.1.2和192.168.1.3,便於后面虛擬Windows主機和Linux主機),用192.168.1.150主機的MAC地址作為這兩個虛擬主機的MAC地址響應。
啟動honeyd時出現報錯“libdnet.1: can't open sharedobjectfile”,在網上查詢的都解決方法例如以下:
網上介紹若共享庫文件安裝到了“/usr/local/lib”或其它“非/lib或/usr/lib”文件夾下,那在運行Idconfig命令之前還要把新共享庫文件夾載入到共享庫配置文件/etc/ld.c.conf中。例如以下所看到的:
#cat /etc/ld.c.conf
include /etc/ld.c.conf/*.conf
#echo “/usr/local/lib”>>/etc/ld.c.conf
#Idconfig
可是在我們進行如上的改動后任然出現上述的問題,后來在網上查閱后又進行了例如以下改動:
export一個全局變量LD_LABRARY_PATH,然后執行時就會到這個文件夾下尋找共享庫。(LD_LABRARY_PATH的作用是告訴loader在那些文件夾中能夠找到共享庫,能夠設置多個搜索文件夾。在文件夾之間用逗號分隔開)
exportLD_LABRARY_PATH=/usr/local/lib:$ LD_LABRARY_PATH
網絡拓撲結構:有三台主機和一個網關,一台Windows主機用於訪問虛擬服務,IP為192.168.1.115。還有一台Windows主機用於提供FTP服務。IP為192.168.1.104。一台Ubuntu主機用於配置蜜罐,IP為192.168.1.150,網關為192.168.1.1。
honeyd安裝成功后,利用其虛擬出一台windows主機web server。配置文件取名為:honeyd.conf,文件內容例如以下:
create windows
set windows personality "MicrosoftWindows NT 4.0 SP3"
set windows default tcp action reset
set windows default udp action reset
add windows tcp port 80 "shhoneyd/honeyd-1.5c/scripts/web.sh"
bind 192.168.1.2 windows
上面的配置文件創建了一個叫做windows的模板,綁定了一個honeypot的IP到這個模板上。
上面的這個windows模板告訴honeyd,當一個client試圖NMap探測honeypot的指紋時,把它自己偽裝成Microsoft Windows NT 4.0 SP3的系統。用honeyd自帶的web腳本虛擬web服務。
最初我們是在虛擬機上執行,可做到這一步是。同網段的主機無法訪問到虛擬出來的web服務。我們在網上找了各種解決的方法,檢查了配置文件honeyd.conf以及虛擬server的腳本文件web.sh。發現並沒有異樣,檢查了好幾個小時。后來考慮可能是在虛擬機上執行的原因,就又一次在ubuntu的系統下把之前的重做了一遍,然后在ubuntu終端輸入例如以下命令。若有主機對192.168.1.2進行訪問,那192.168.1.2將對其做出對應:
honeyd -d -fhoneyd.conf 192.168.1.2
這個命令-d代表在終端顯示監聽蜜罐的情況,-f代表採用honeyd.conf作為配置文件,192.168.1.2代表對IP地址為192.168.1.2的蜜罐進行監聽。
當用192.168.1.115主機訪問192.168.1.2。頁面顯示結果例如以下:
能夠看到。成功運行了honeyd自帶的web腳本。這是一個簡單的web頁面,用於測試蜜罐的搭建是否成功。
ubuntu主機響應訪問時終端的顯演示樣例如以下:
192.168.1.115的主機成功與蜜罐192.168.1.2建立連接。並運行web腳本。
同理,測試IP地址為192.168.1.3蜜罐的過程類似。
完畢實驗內容的配置文件內容例如以下圖所看到的:
通過上圖配置文件虛擬出兩台主機:一台Windows主機。IP為192.168.1.2。開放80。20。21,22port。80port和22port運行虛擬服務腳本,因為FTP服務比較難模擬,所以21port設置FTP服務代理為192.168.1.104的主機,20port待用;一台Linux主機,IP為192.168.1.3,開放port和虛擬服務與Windows主機同樣。
把訪問虛擬服務的client的按鍵記錄保存在文件里
事先編寫好web服務和按鍵記錄的腳本放在web.sh文件里,后文會有對腳本代碼的分析。
利用192.168.1.115訪問虛擬web服務,輸入username和password例如以下所看到的:
192.168.1.150控制端得到的結果例如以下:
由結果可知192.168.1.115主機與蜜罐已連接成功且成功運行腳本web.sh文件。
點擊登陸,控制主機通過python的os庫調用OS類的system方法,在終端用tshark -d “ip dst192.168.1.2” -w catchlog將抓到的數據包保存在“catchlog”文件里,當中有包括username和password的數據包:
虛擬web服務腳本例如以下: