標籤:內容 func eset sdn 情況 bre 執行 == 目標
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服務指令碼例如以下:
這是一個shell指令碼。主要是用於寫入圖中紫色的html代碼,html代碼由兩部分組成。<body>至</body>建立一個web介面,包括username和password兩個表單;上面為javascript部分,當點擊登陸button的事件發生時,它會將使用者username和password兩個表單中的內容提交給192.168.1.2的備用開放port20。
honeyd蜜罐配置和web監聽指令碼