Dionaea低互動式蜜罐部署詳解
0x00 Dionaea 低互動式蜜罐簡介
Dionaea(捕蠅草) 低互動式蜜罐(http://dionaea.carnivore.it) 是 Honeynet Project 的開源專案,起始於 Google Summer of Code 2009,是Nepenthes(豬籠草)專案的後繼。Honeynet Project 是成立於 1999 年的國際性非盈利研究組織,致力於提高因特網的安全性,在蜜罐技術與網際網路安全威脅研究領域具有較大的影響力。
Dionaea 蜜罐的設計目的是誘捕惡意攻擊,獲取惡意攻擊會話與惡意程式碼程式樣本。它透過模擬各種常見服務,捕獲對服務的攻擊資料,記錄攻擊源和目標IP、埠、協議型別等資訊,以及完整的網路會話過程,自動分析其中可能包含的 shellcode 及其中的函式呼叫和下載檔案,並獲取惡意程式。
有別於高互動式蜜罐採用真實系統與服務誘捕惡意攻擊,Dionaea 被設計成低互動式蜜罐,它為攻擊者展示的所有攻擊弱點和攻擊物件都不是真正的產品系統,而是對各種系統及其提供的服務的模擬。這樣設計的好處是安裝和配置十分簡單,蜜罐系統幾乎沒有安全風險,不足之處是不完善的模擬會降低資料捕獲的能力,並容易被攻擊者識別。
0x01 Dionaea 的整體結構和工作機制
Dionaea是執行於Linux上的一個應用程式,將程式執行於網路環境下,它開放Internet上常見服務的預設埠,當有外來連線時,模擬正常服務給予反饋,同時記錄下出入網路資料流。網路資料流經由檢測模組檢測後按類別進行處理,如果有 shellcode 則進行模擬執行;程式會自動下載 shellcode 中指定下載或後續攻擊命令指定下載的惡意檔案。從捕獲資料到下載惡意檔案,整個流程的資訊都被儲存到資料庫中,留待分析或提交到第三方分析機構。
Dionaea 整體結構和工作機制如圖:
0x02 Dionaea 蜜罐安裝過程
Dionaea 目前版本是 0.1.0,採用原始碼安裝。軟體執行依賴於以下庫:
libev,libglib,libssl,liblcfg,libemu,python,sqlite,readline,cython,lxml,libudns,libcurl,libpcap。
安裝過程詳見http://dionaea.carnivore.it/#compiling,需要注意的是安裝 Python-3.2 時注意按說明修改 setup.py 以確保 zlib 庫能正確安裝。
安裝時要注意依賴庫成功安裝,否則 Dionaea 可能不能正常工作。
安裝詳細過程:
OS:ubuntu 12.04 (32-bit)
# 安裝依賴
apt-get update
apt-get install aptitude
aptitude install libudns-dev libglib2.0-dev libssl-dev libcurl4-openssl-dev libreadline-dev libsqlite3-dev python-dev libtool automake autoconf build-essential subversion git-core flex bison pkg-config
其餘的依賴,必須從原始碼安裝,我們將安裝到路徑/opt/dionaea,所以請確保該目錄存在,並允許讀寫許可權。
mkdir /opt/dionaea cd /opt/dionaea
安裝其他依賴
liblcfg
git clone git://git.carnivore.it/liblcfg.git liblcfg
cd liblcfg/code
autoreconf -vi
./configure --prefix=/opt/dionaea
make install
cd ..
cd ..
libemu
git clone git://git.carnivore.it/libemu.git libemu
cd libemu
autoreconf -vi
./configure --prefix=/opt/dionaea
make install
cd ..
libnl
apt-get install libnl-3-dev libnl-genl-3-dev libnl-nf-3-dev libnl-route-3-dev
libev
wget http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz
tar xfz libev-4.04.tar.gz
cd libev-4.04
./configure --prefix=/opt/dionaea
make install
cd ..
Python 3.2
wget http://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz
tar xfz Python-3.2.2.tgz
cd Python-3.2.2/
./configure --enable-shared --prefix=/opt/dionaea --with-computed-gotos --enable-ipv6 LDFLAGS="-Wl,-rpath=/opt/dionaea/lib/ -L/usr/lib/i386-linux-gnu/"
make
make install
cd /opt/dionaea/bin
ln python3.2 /usr/bin/python3
cd ..
sqlite 3.3.7
wget http://www.sqlite.com.cn/Upfiles/source/sqlite-3.3.7.tar.gz
tar xzf sqlite-3.3.7.tar.gz
cd sqlite-3.3.7
mkdir /home/sqlite-3.3.7
./configure --prefix=/home/sqlite-3.3.7
make && make install && make doc
cd /home/sqlite-3.3.7/bin/
ln sqlite3 /usr/bin/sqlite3
Cython
wget http://cython.org/release/Cython-0.15.tar.gz
tar xfz Cython-0.15.tar.gz
cd Cython-0.15
/opt/dionaea/bin/python3 setup.py install
cd ..
libpcap
wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
tar xfz libpcap-1.1.1.tar.gz
cd libpcap-1.1.1
./configure --prefix=/opt/dionaea
make
make install
cd ..
編譯安裝dionaea
git clone git://git.carnivore.it/dionaea.git dionaea
cd dionaea
autoreconf -vi
./configure --with-lcfg-include=/opt/dionaea/include/ \
--with-lcfg-lib=/opt/dionaea/lib/ \
--with-python=/opt/dionaea/bin/python3.2 \
--with-cython-dir=/opt/dionaea/bin \
--with-udns-include=/opt/dionaea/include/ \
--with-udns-lib=/opt/dionaea/lib/ \
--with-emu-include=/opt/dionaea/include/ \
--with-emu-lib=/opt/dionaea/lib/ \
--with-gc-include=/usr/include/gc \
--with-ev-include=/opt/dionaea/include \
--with-ev-lib=/opt/dionaea/lib \
--with-nl-include=/opt/dionaea/include \
--with-nl-lib=/opt/dionaea/lib/ \
--with-curl-config=/usr/bin/ \
--with-pcap-include=/opt/dionaea/include \
--with-pcap-lib=/opt/dionaea/lib/
make
make install
安裝結束
0x03 Dionaea 使用方法
Dionaea 根據命令引數執行,可選擇不同的執行環境、任務和篩選事件記錄內容。配置檔案則具體規定蜜罐執行後開啟的模組,記錄檔案的儲存位置和擴充套件功能的引數等資訊。預設配置下 Dionaea 自動選擇一個網路介面進行監聽。
Dionaea 具體的命令格式如下:
dionaea [-c, --config=FILE] [-D, --daemonize] [-g, --group=GROUP]
[-G, --garbage=[collect|debug]] [-h, --help] [-H, --large-help]
[-l, --log-levels=WHAT] [-L, --log-domains=WHAT] [-u, --user=USER]
[-p, --pid-file=FILE] [-r, --chroot=DIR] [-V, --version] [-w, --workingdir=DIR]
選項的意義分別是:
-c:指定執行程式所使用的配置檔案,預設下配置檔案是/opt/dionaea/etc/dionaea.conf。
-D:後臺執行。
-g:指定啟動後切換到某個使用者組,預設下保持當前組。
-G:收集垃圾資料,用於除錯記憶體洩露。不能用於 valgrind 軟體。
-h:幫助資訊。
-H:幫助資訊,包括預設值資訊。
-l:選擇事件記錄級別,可以選擇 all, debug, info, message, warning, critical, error 這些值,多選使用“,”做分隔,排除使用“-”。
-L:選擇域,支援萬用字元“*”和“?”,多選使用“,”,排除使用“-”。
-u:指定啟動後切換到某個使用者,預設下保持當前使用者。
-p:記錄 pid 到指定檔案。
-r:指定啟動後切換根目錄到指定目錄,預設下不切換。
-V:顯示版本資訊。
-w:設定程式工作目錄,預設下為/opt/dionaea。
例子:
切換到 cd /opt/dionaea/bin
# ./dionaea -l all,-debug -L '*'
# ./dionaea -l all,-debug -L 'con*,py*'
# ./dionaea -u nobody -g nogroup -r /opt/dionaea/ -w /opt/dionaea -p /opt/dionaea/var/dionaea.pid
0x04 安裝 DionaeaFR
DionaeaFR(https://github.com/RootingPuntoEs/DionaeaFR)是用於前端web展示Dionaea的資料。
安裝詳細過程:
ubuntu 12.04 預設已安裝 python 2.7.3
切換到cd /opt/,下載DionaeaFR
git clone https://github.com/RootingPuntoEs/DionaeaFR.git
安裝pip,django,nodejs
apt-get install python-pip
pip install Django
pip install pygeoip
pip install django-pagination
pip install django-tables2
pip install django-compressor
pip install django-htmlmin
pip install django-filter
django-tables2-simplefilter:
https://github.com/benjiec/django-tables2-simplefilter
python setup.py install
SubnetTree:
git clone git://git.bro-ids.org/pysubnettree.git
python setup.py install
nodejs:
http://nodejs.org/dist/v0.8.16/node-v0.8.16.tar.gz
tar xzvf node-v0.8.16.tar.gz
cd node-v0.8.16
./configure
make
make install
npm install -g less
apt-get install python-netaddr
下載GeoIP 和 GeoLiteCity
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
解壓GeoIP 和 GeoLiteCity
gunzip GeoLiteCity.dat.gz
gunzip GeoIP.dat.gz
移動GeoIP 和 GeoLiteCity到 /opt/DionaeaFR/DionaeaFR/static
mv GeoIP.dat /opt/DionaeaFR/DionaeaFR/static
mv GeoLiteCity.dat /opt/DionaeaFR/DionaeaFR/static
修改SQLite路徑
cd /opt/DionaeaFR/DionaeaFR
vim settings.py
第17行,SQLite路徑更改為
/opt/dionaea/var/dionaea/logsql.sqlite
如果你安裝dionaea的目錄不在/opt/,那就find下。
find / -name logsql.sqlite
把查詢到的路徑替換到17行中。
執行
cd /opt/DionaeaFR
python manage.py collectstatic python manage.py runserver 0.0.0.0:8000
瀏覽器訪問:http://你的IP:8000
0x05 結束
低互動式蜜罐的普遍弱點,即對網路服務的模擬與真實服務存在差距,可能無法捕獲某些對環境敏感的攻擊,可以搭配其他專用服務蜜罐一起使用,來不斷進行完善。
Kippo(SSH蜜罐開源軟體)
Glastopf(Web應用攻擊誘捕軟體)
參考文件:
本文基本上參考代恆,諸葛建偉前輩下面這2篇文章。
http://netsec.ccert.edu.cn/zhugejw/files/2011/09/Dionaea低互動式蜜罐介紹.pdf http://netsec.ccert.edu.cn/zhugejw/files/2011/09/Dionaea低互動式蜜罐部署實踐.pdf
相關文章
- Dionaea蜜罐指南2020-08-19
- 如何設定自己的Dionaea蜜罐來收集惡意軟體樣本2018-07-31
- Python|Python互動之mongoDB互動詳解2018-08-28PythonMongoDB
- WKWebView詳解&WKWebVieW和JS互動2019-03-04WebViewJS
- 互動投影+沉浸式互動投影綜合解決方案2021-05-06
- 用DecoyMini部署業務系統蜜罐2022-04-14
- Android 整合 Flutter 及通訊互動詳解2019-05-24AndroidFlutter
- 互動式 .Net2022-05-09
- 打造低延遲互動音訊: Oboe2018-11-12音訊
- 淺析mysql互動式連線&非互動式連線2021-09-09MySql
- 分散式系統關注點——「高內聚低耦合」詳解2019-01-30分散式
- 前後端資料互動(四)——fetch 請求詳解2021-09-07後端
- Powershell————2、Powershell互動式2018-05-24
- 互動式 .Net 容器版2022-05-16
- 構建動態互動式H5導航欄:滑動高亮、吸頂和錨點導航技巧詳解2024-04-14H5
- Keepalived部署與配置詳解2019-04-27
- Xwiki安裝部署詳解2018-03-25
- ELK詳解(七)——Kibana部署2022-07-02
- 前後端資料互動(二)——原生 ajax 請求詳解2021-09-05後端
- 前後端資料互動(一)——網路請求詳解2021-09-03後端
- 詳解低延時高音質:編解碼篇2021-11-16
- Vue元件之間的資料傳遞(通訊、互動)詳解2019-08-12Vue元件
- 新風口還是偽需求?詳解互動劇的前世今生2019-05-24
- 詳解 WebRTC 高音質低延時的背後 — AGC(自動增益控制)2021-06-07WebGC
- dbdeployer MySQL沙盒部署詳解2020-09-27MySql
- 互動式反彙編ida pro2022-06-30
- JS互動邏輯詳解——data資料變更時同步(setData 函式) & 檢視層更新是非同步2020-10-16JS函式非同步
- 詳解Java函式式介面2020-12-23Java函式
- 與低層次互動活動相比,深層次互動活動的參與頻率更高(附原資料表) 2021-01-25
- Kippo蜜罐指南2020-08-19
- 蜜罐網路2020-08-19
- SetupDiGetClassDevs函式詳解2019-02-28dev函式
- Lambda表示式詳解2019-06-16
- 桌面互動投影遊戲能否改變“低頭族”現象2020-09-24遊戲
- Linux Shell互動式自動化運維程式2019-05-02Linux運維
- 可以玩的UI-iOS互動式動畫2019-01-04UIiOS動畫
- 大屏互動解決方案2021-04-27
- 沉浸式互動讓遊戲更加迷人2020-01-14遊戲