一个接入互联网的网站,只要能和外部产生通信,就有被黑客攻击的可能;使用某种陷阱来引诱攻击者,就可以避免自身不被攻击,这种引诱黑客攻击的 “陷阱” 就是 “蜜罐” 。蜜罐是存在漏洞的、暴漏在互联网中的一个虚假的服务(器) 其价值在于被扫描、攻击和攻陷。
蜜罐分类
按类型我们可以将蜜罐分为:产品型 (容易部署 、 实时报警),研究型(高交互、数据捕获);按交互可分为低中交互(模拟的 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