網絡蜜罐的前世今生
一個接入互聯網的網站,只要能和外部產生通信,就有被黑客攻擊的可能;使用某種陷阱來引誘攻擊者,就可以避免自身不被攻擊,這種引誘黑客攻擊的 “陷阱” 就是 “蜜罐” 。蜜罐是存在漏洞的、暴漏在互聯網中的一個虛假的服務(器) 其價值在于被掃描、攻擊和攻陷。
蜜罐分類
按類型我們可以將蜜罐分為:產品型 (容易部署 、 實時報警),研究型(高交互、數據捕獲);按交互可分為低中交互(模擬的 TCP/IP 協議棧、模擬的服務 & 漏洞),高交互( 真實的系統 & 應用 & 漏洞,數據捕獲、分析、控制)。
蜜罐主要優勢
蜜罐的主要優勢在于能誘導和記錄網絡攻擊行為,阻止或延緩其對真正目標的攻擊,而且能記錄攻擊日志,便于審計和回溯。
if 系統沒有對外開放任何真實的服務 then 任何一個對它的連接嘗試都是可疑的 |
蜜罐起源
”蜜罐“ 這一概念最早起源于一本上世紀出版的小說——《The Cuckoo's Egg》 ,小說描述了主人公作為一個公司的網管人員,如何追蹤并發現一起商業間諜的故事,該書的作者 CliffordStoll 還是個計算機安全專家,他在 1988 年提出 “蜜罐是一個了解黑客的有效手段” 。
在這一概念被提出 10 年后,蜜罐思想吸引到一匹網絡安全技術員的注意,同時也開發出一批相應的虛擬蜜罐產品,該階段的 “蜜罐工具” 能夠模擬成虛擬的操作系統和網絡服務,并對黑客的攻擊行為做出回應,從而欺騙黑客。
低交互式蜜罐不足
該階段的蜜罐為低交互式蜜罐,只是模擬出了真正操作系統的一部分,例如模擬一個 FTP 服務。雖然低交互式蜜罐容易建立和維護,但模擬可能不足以吸引攻擊者,還可能導致攻擊者繞過系統發起攻擊,從而使蜜罐在這種情況下失效。
蜜罐發展
為了獲取更多攻擊者信息,于是有人就提出一些設想:
如果用蜜罐獲取到更多的攻擊者信息,比如攻擊者的 IP,就可以對攻擊來源打上標記,這樣一來就可以直接防御來自被標記的攻擊。
在這種思想的引領下,衍生出了一種高交互蜜罐。高交互蜜罐提供真實的操作系統和真實的服務,因此,這種蜜罐的交互性最強,收集到的數據也最全面。
更多開源 “蜜罐” 可見以下列表鏈接:
https://github.com/paralax/awesome-honeypots/blob/master/README_CN.md
1. 高交互蜜罐風險與挑戰
高交互蜜罐部署和維護起來十分困難,而且被攻破的系統可能會被用來攻擊互聯網上其他的系統,這必須承擔很高的風險,數據收集也是設置蜜罐的技術挑戰。
- 蜜罐監控者需記錄下進出系統的每個數據包;
- 蜜罐本身上面的日志文件也是很好的數據來源,但日志文件很容易被攻擊者刪除。
2. 高交互蜜罐優點
它們大大減少了所要分析的數據。對于通常的網站或郵件服務器,攻擊流量通常會被合法流量所淹沒。而蜜罐進出的數據大部分是攻擊流量。因而,瀏覽數據、查明攻擊者的實際行為也就更加容易。
蜜罐現狀
隨著新型的 APT 攻擊的出現,很多企業意識到傳統安全技術手段已經無法滿足對內部威脅的及時發現,于是,很多傳統的安全公司大佬都開始轉戰使用動態沙箱技術來解決問題,來探測未知威脅。
- 賣設備型: Symantec ATP 硬件配合終端的 SEP
- 威脅情報聯動型: 360 威脅情報中心
以上方式主要是針對 APT 攻擊的第一個環節,黑客通過社會工程學的手段得到用戶的信息,使用網絡釣魚或者水坑攻擊的方式進入企業內網個人 PC。但是要拿到有價值的內部敏感信息,黑客需要進一步部署攻擊鏈,包括獲取憑證、內網資產掃描等探測工作,因為很多行業包括金融機構是不允許在業務服務器上安裝安全解決方案的,甚至配置日志系統都不可以,那么,目前部署蜜罐是最好的解決方案。
蜜罐作為一種解決方案,其開源產品和商用產品的不同特性、國內外的成熟的商業蜜罐解決方案介紹、蜜罐所涉及的核心技術分析,可見:
為什么這么多創業公司都在做「蜜罐」?
https://www.secpulse.com/archives/50235.html
蜜罐部署實戰
1. 內網低交互蜜罐-opencanary
opencanary 是 2015 年 blackhat 在單獨發布環節推出的的一款蜜罐工具,純 python 模擬多種應用和服務。當模擬的服務被某人使用(交互登錄)時,它就會產生相應的日志。
項目地址:https://github.com/p1r06u3/opencanary_web
實驗環境:
- #虛擬機-1-Web
- [root@localhost ~]# cat /etc/redhat-release
- CentOS Linux release 7.5.1804 (Core)
- [root@localhost ~]# ifconfig
- ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 10.0.10.208 netmask 255.255.255.0 broadcast 10.0.10.255
- #虛擬機-2-Agent
- [root@localhost ~]# cat /etc/redhat-release
- CentOS Linux release 7.5.1804 (Core)
- [root@localhost ~]# ifconfig
- ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 10.0.10.209 netmask 255.255.255.0 broadcast 10.0.10.255 ......
部署:
部署方式有,自動化安裝和手工安裝,手工安裝需要自己進行 tornado、Mysql、 supervisor、opencanary,這里采用自動化安裝方式。
Web 端:
- [root@localhost ~]#curl -O https://raw.githubusercontent.com/p1r06u3/opencanary_web/master/install/install_opencanary_web.sh
- [root@localhost ~]#chmod +x install_opencanary_web.sh
- [root@localhost ~]# ./install_opencanary_web.sh
- ###########正在初始化環境#########
- 服務端IP地址:10.0.10.208
- 192.168.122.1
- IP是否正確(y/n):y
- #########安裝依賴包############
- 已加載插件:fastestmirror, langpacks ......
- #啟動服務
- systemctl start supervisord.service
- systemctl start nginx.service
- systemctl start mariadb.service
啟動成功后,訪問:http://10.0.10.208 ,登錄管理后臺:
Client 端:
- [root@localhost ~]#curl -O https://raw.githubusercontent.com/p1r06u3/opencanary_web/master/install/install_opencanary_agent.sh
- [root@localhost ~]#chmod +x install_opencanary_agent.sh
- #啟動服務
- [root@localhost ~]#opencanaryd --start
安裝成功后,可在后臺查看 agent 端主機在線狀態。
訪問 http://10.0.10.209/index.html 可見模擬的蜜罐站點,路徑如下,為了達到更逼真的效果站點可 DIY。
- [root@localhost nasLogin]# pwd
- /usr/local/src/opencanary/opencanary/modules/data/http/skin/nasLogin
- [root@localhost nasLogin]# ls
- 403.html 404.html index.html static
Nmap探測agent 端服務開啟情況如下:
2. kippo 更改的中交互蜜罐-Cowrie
是一個具有中等交互的 SSH 蜜罐,安裝在 Linux 中,它可以獲取攻擊者用于暴力破解的字典、輸入的命令以及上傳或下載的惡意文件。攻擊者在上傳惡意文件后,執行惡意文件的操作均會失敗,所以對蜜罐本身來說比較安全。
- 項目地址:https://github.com/cowrie/cowrie
- 部署官方文檔:https://cowrie.readthedocs.io/en/latest/INSTALL.html
實驗環境(這里使用的是 VPS):
- root@VM-0-3-debian:~# lsb_release -a
- No LSB modules are available.
- Distributor ID: Debian
- Description: Debian GNU/Linux 9.0 (stretch)
- Release: 9.0
- Codename: stretch
關于 Cowrie 的安裝主要有七個步驟:
(1) 安裝依賴項
查看 Python 版本,更新相關依賴。
- root@VM-0-3-debian:~# python -V
- Python 2.7.13
- root@VM-0-3-debian:~# apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
- Reading package lists... Done
- ......
- Processing triggers for libc-bin (2.24-11) ...
(2) 創建用戶帳戶
- root@VM-0-3-debian:~# useradd -r -m -s /bin/bash cowrie
- root@VM-0-3-debian:~# passwd cowrie
- Enter new UNIX password:
- Retype new UNIX password:
- passwd: password updated successfully
(3) 拉取部署文件
- root@VM-0-3-debian:/opt# su cowrie
- cowrie@VM-0-3-debian:/opt$ cd ~
- cowrie@VM-0-3-debian:~$ git clone https://github.com/cowrie/cowrie.git
- Cloning into 'cowrie'...
- remote: Enumerating objects: 26, done.
- remote: Counting objects: 100% (26/26), done.
- remote: Compressing objects: 100% (20/20), done.
- remote: Total 12330 (delta 6), reused 24 (delta 6), pack-reused 12304
- Receiving objects: 100% (12330/12330), 8.09 MiB | 1.14 MiB/s, done.
- Resolving deltas: 100% (8561/8561), done.
- cowrie@VM-0-3-debian:~$ ls
- cowrie
- cowrie@VM-0-3-debian:~$ cd cowrie/
(4) 設置虛擬環境
設置為 python2 的虛擬環境
- cowrie@VM-0-3-debian:~/cowrie$ pwd
- /home/cowrie/cowrie
- cowrie@VM-0-3-debian:~/cowrie$ virtualenv --python=python2 cowrie-env
- Running virtualenv with interpreter /usr/bin/python2
- New python executable in /home/cowrie/cowrie/cowrie-env/bin/python2
- Also creating executable in /home/cowrie/cowrie/cowrie-env/bin/python
- Installing setuptools, pkg_resources, pip, wheel...done.
激活虛擬環境并安裝包:
- cowrie@VM-0-3-debian:~/cowrie$ source cowrie-env/bin/activate
- (cowrie-env) cowrie@VM-0-3-debian:~/cowrie$ pip install --upgrade pip
- Requirement already up-to-date: pip in ./cowrie-env/lib/python2.7/site-packages (19.0.3)
- (cowrie-env) cowrie@VM-0-3-debian:~/cowrie$ pip install --upgrade -r requirements.txt
- Collecting twisted>=17.1.0 (from -r requirements.txt (line 1))
- Using cached https://files.pythonhosted.org/packages/f8/2b/a80a70f71eb2b86992ffa5aaae41457791ae67faa70927fd16b76127c2b7/Twisted-19.2.0.tar.bz2
- Collecting cryptography>=0.9.1 (from -r requirements.txt (line 2))
- ......
- Successfully built twisted tftpy pycparser......
- Successfully installed Automat-0.7.0 ......
(5) 安裝配置文件
要啟用telnet,請創建cowrie.cfg并僅輸入以下內容:
- (cowrie-env) cowrie@VM-0-3-debian:~/cowrie$ pwd
- /home/cowrie/cowrie
- (cowrie-env) cowrie@VM-0-3-debian:~/cowrie$ vim cowrie.cfg
- #寫入以下文件,啟用 telnet
- [telnet]
- enabled = true
(6) 啟動 Cowrie
- (cowrie-env) cowrie@VM-0-3-debian:~/cowrie/bin$ ./cowrie start
- Join the Cowrie community at: http://bit.ly/cowrieslack
- Using activated Python virtual environment "/opt/cowrie/cowrie-env"
- Starting cowrie: [twistd --umask=0022 --pidfile=var/run/cowrie.pid --logger cowrie.python.logfile.logger cowrie ]...
- (cowrie-env) cowrie@VM-0-3-debian:/opt/cowrie/bin$ ./cowrie status
- cowrie is running (PID: 13215).
(7) 端口重定向
有三種方法可以在默認的 SSH 端口(22)上訪問 Cowrie:iptables,authbind 和 setcap。
更多輸出配置,可參見:
https://blog.csdn.net/Kevinhanser/article/details/79282309
3. 基于 Docker 的高交互 t-pot
t-pot 是一個基于 Docker 的高交互蜜罐平臺,集成了Conpot、Cowrie、Dionaea、Honeytrap 等多個蜜罐。t-pot 對于資源的要求也比較高(t-pot 安裝需要至少 6-8 GB RAM 和128 GB可用磁盤空間 (SSD) 以及可用的互聯網連接),目前的最新版本為 19.03。可采用鏡像 (ISO)的方式進行安裝。
項目地址:https://github.com/dtag-dev-sec/tpotce
安裝部署:
下載鏡像,虛擬機安裝,安裝過程和常規的 Linux 安裝差不多,需要選擇 t-pot 安裝類型及設置賬戶及密碼,安裝好之后界面如下:
Web 控制端:https://10.0.*.**:64297,輸入賬號、密碼即可訪問:
更多 t-pot 的使用細節可參考:https://www.freebuf.com/sectool/134504.html
思考
在真正的生產環境中,我們不僅要考慮到安全,還需考慮部署的成本,高交互蜜罐,存在被攻陷的可能。
蜜罐的部署成本也較高,但隨之也更真實,更容易迷惑攻擊者,捕獲到高級的威脅;opencanary 這種低交互蜜獾適合部署在局域網用來檢測來自攻擊者橫向移動階段的掃描,Cowrie 的中交互蜜罐適合放在外網用來捕獲一些惡意樣本,擴充 IOC 庫及提供給分析師分析(這一類方法是比較實在且行之有效的方式)。捕獲針對性攻擊的樣本需要部署針對性的蜜罐,t-pot 雖融合了多種蜜罐,但可重構性不高。想利用開源的蜜罐作為捕獲威脅的一種解決方式,還需要花更多的心思。情報驅動應急響應,數據驅動安全,蜜罐作為獲取情報的一種手段,怎么樣利用蜜罐以最小的風險,去獲取攻擊者的攻擊方式、反向追蹤攻擊者,御敵于安全事件發生之前,這是一件看似簡單實際不簡單的事情。
更多蜜罐項目:http://www.honeynet.org/project
參考鏈接:
- http://bigsec.com/bigsec-news/wechat-16721-miguan-kepu
- https://www.secpulse.com/archives/50235.html
- https://github.com/paralax/awesome-honeypots/blob/master/README_CN.md
- http://www.myh0st.cn/index.php/archives/36/
- https://sosly.me/index.php/2017/08/23/goldenspark1/
- https://blog.csdn.net/Kevinhanser/article/details/79282309