前言
这两年蜜罐技术
被关注的越来越多,也渐形成低交互、中交互、高交互等交互程度的各类蜜罐,从WEB
业务蜜罐、SSH应用蜜罐、网络协议栈蜜罐到系统主机型蜜罐的各功能型蜜罐。小到一个Word文档的蜜标,到一个系统级的服务蜜罐,再到多功能蜜罐组成的蜜网,大到包含流控制重定向分布式蜜网组成的蜜场。
这里将介绍一个开源多蜜罐平台,安装一次系统,轻松使用里面多种蜜罐
。
T-Pot
蜜罐是德国电信下的一个社区蜜罐项目,是一个基于Docker
容器的集成了众多针对不同应用蜜罐程序的系统,根据官方的介绍,每年都会发布一个新的版本。
蜜罐技术:本质上是一种对攻击者进行欺骗技术,通过布置一些作为诱饵的主机、网络服务或信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析
蜜罐一般是在隔离环境,攻击者入侵后是在系统之上的系统中,攻击者做的任何事情都记录在系统中,以供分析
官方介绍:https://dtag-dev-sec.github.io/mediator/feature/2019/04/01/tpot-1903.html
官方github: https://github.com/dtag-dev-sec/tpotce
T-pot 19.03运行在debian(Sid)上,基于docker, docker-compose并且包括以下蜜罐的docker镜像:
adbhoney,ciscoasa,conpot,cowrie,dionaea,elasticpot,glastopf,glutton、heralding,honeypy,honeytrap,mailoney,medpot,rdpy,snare,tanner
据介绍为了更接近滚对发布模型设计,此版本从ubuntu迁至debian
在19.03版本更新了一个共享T-pot数据功能,可通过SISSDEN门户创建账户进行提交
上图就是当前 T-Pot 最新版本的组成部分,T-Pot 可以理解成是这么多系统的一个整合。
下面将针对各个部分进行简单的介绍
Elastic-Search
- 项目地址: https://www.elastic.co/products/elasticsearch
- 监听端口:64298(本地,可以通过 64297 端口的 web 服务使用)
Elastic Search 一个性能十分强大的全文搜索引擎,他可以快速的进行海量数据的查询
在 T-Pot 的实际应用中,各个蜜罐所产生的日志都会导入到 Elastic Search 中,因此可以使用 Elastic Search 来进行检索,同时也可以使用他对数据进行各种复杂条件的查询和导出等
Logstash
- 项目地址: https://www.elastic.co/products/logstash
- 监听地址:N/A
Logstash 用于接收从蜜罐传递过来的日志,然后对数据进行过滤和格式化后交由 Elastic Search 进行存储和建立索引
Kibana
- 项目地址: https://www.elastic.co/products/kibana
- 监听端口:64296(本地,可以通过 64297 端口的 web 服务使用)
Kibana 用于对进行数据的可视化查询,支持以柱状图、线状图、饼图、旭日图等等输出各种图形,也能通过时间序列对蜜罐日志某个特征的趋势进行分析。
Head
- 项目地址: https://mobz.github.io/elasticsearch-head/
- 监听端口:64302(本地,可以通过 64297 端口的 web 服务使用)
Head 是一个网页前端,主要用于与 Elastic Search 集群进行交互。
和上面的 Kibana 不同的是,他的可视化程度相对较低,但是更便于直接对数据进行操作,类似与 phpMyAdmin 的存在
Conpot
- 项目地址: http://conpot.org/
- 监听端口:1025 50100
Conpot 是一个低交互式的工业控制系统的蜜罐,内置了一系列常见的工业控制协议,并且易于修改和拓展,尽其所能的欺骗攻击者,以获得攻击者的最终目的
Cowrie
- 项目地址: http://www.micheloosterhof.com/cowrie/
- 监听端口:2222 2223
Cowrie 是一个中等交互式的 SSH / Telnet 蜜罐,设计上用来记录暴力破解以及登录后 Shell 执行的操作
主要功能有:
- 提供了虚假的文件系统(类似 Debian5.0),并且可以进行文件的增加和删除
- 随机增加某些文件的内容以便攻击者使用
cat
功能,例如/etc/passwd
- 提供 UML 兼容格式的回话日志,可供用来重放会话
- 保存通过 wget 和 curl 下载的文件供后续的分析
Dionaea
- 项目地址: https://github.com/DinoTools/dionaea
- 监听端口:21 42 69/udp 8081 135 443 445 1433 1723 1883 1900/udp 3306 5060/udp 5061/udp
Dionaea 是一系列基于 Python 语言开发、libemu 作为 Shellcode 分析的蜜罐系统,支持多种不同协议,见下表
- blackhole
- epmap
- ftp
- http
- memcache
- mirror
- mqtt
- mssql
- mysql
- pptp
- sip
- smb
- tftp
- upnp
ElasticPot
- 项目地址: https://github.com/schmalle/ElasticpotPY
- 监听端口:9200
ElasticPot 是一个 Elasticsearch 的蜜罐
eMobility
- 项目地址: https://github.com/dtag-dev-sec/emobility
- 监听端口:8080
eMobility 是一个高交互式的蜜罐,针对的是下一代的交通基础设施(充电桩系统),用于收集攻击者的动机和方法。
系统主要包括中央充电系统、充电点以及模拟的用户交易。
Glastopf
- 项目地址: https://github.com/mushorg/glastopf
- 监听端口:80
Glastopf 是一个 Python 语言开发的 Web 蜜罐,能提供各种基于漏洞类型的模拟
HoneyTrap
- 项目地址: https://github.com/armedpot/honeytrap
- 监听端口:NFQUEUE
HoneyTrap 是一个低交互式的蜜罐,通过监听 NFQUEUE 用户态数据包,相当与就监听了所有其他未监听的端口
主要功能用于观察攻击者的行为,同时也可以解析攻击的字符串,并且进行相应的下载保存
Mailoney
- 项目地址: https://github.com/awhitehatter/mailoney
- 监听端口:25
Mailoney 是一个 SMTP 蜜罐
Rdpy
- 项目地址: https://github.com/citronneur/rdpy
- 监听端口:3389
Rdpy 是一个用 Python 实现的 RDP 和 VNC 协议,可以用作服务端以及客户端,同时也提供 RDP 的蜜罐,用于记录 RDP 的过程
vnclowpot
- 项目地址: https://github.com/magisterquis/vnclowpot
- 监听端口:5900
vnclowpot 是一个低交互式的 VNC 蜜罐,主要用于记录 VNC 的认证过程
Suricata
Suricata 是一个网络 IDS、IPS 和 NSM 引擎,主要分析并记录下连接中一些有用的信息
p0f
p0f 利用一系列复杂的流量指纹识别,被动的来识别 TCP/IP 通信的对方信息,例如可以识别出对方的系统、在线时间等
T-Pot提供了许多并行运行的蜜罐守护进程,并将网络接口上捕获的流量重新路由到最合适的开源蜜罐。
处理数据并将其存储在本地ELK堆栈中。
一、安装
-
安装要求
6-8GRAM
128G磁盘空间
-
安装模式
标准安装、传感器安装、 工业安装、 收集器安装 、 下一代安装
详细信息见官方说明 https://github.com/dtag-dev-sec/tpotce#postinstallauto
提供三种安装方式:
-
裸设备安装
1、获取ISO的两种方式:
- ISO方式:
- https://github.com/dtag-dev-sec/tpotce/releases/download/19.03/tpot.iso
- 自建ISO方式:
- 创建ISO镜像要求:
- Debian 9.7或更新
- 4GB可用RAM
- 32G磁盘空间
- 互联网连接
- 创建ISO镜像:
- 从github获取T-pot
- git clone https://github.com/dtag-dev-sec/tpotce
- cd tpotce
- 使用构建ISO脚本。该脚本将会下载并安装所需依赖项
- ./makeiso.sh
- #成功构建后,在目录会生成iso镜像tpot.iso以及tpot.sha256
- 从github获取T-pot
- 创建ISO镜像要求:
2、 在硬件上运行
将镜像烧录至U盘,进行安装
3、 在虚拟机上运行
将iso挂载进行安装
4、安装
- 选择第一个选项进行安装
选择第一个选项进行安装
- 选择Tpot的安装模式这里选择标准
- 设置tsec默认用户密码
- 设置web用户名
- web用户密码
- 系统装好自动执行安装脚本
安装好之后,ssh端口不再是默认的22,变成了64295
web管理界面:https://[IP]:64297
服务器管理界面:https://[IP]:64294
-
基于现有系统安装
1.更换apt源
cp /etc/apt/sources.list /etc/apt/sources.list_bak_$(date +%F) #T-pot使用的是Sid版本所以我添加的源也是Sid版的(注释的是官方提供的其中一个国外源站): echo "deb http://mirrors.163.com/debian/ sid main non-free contrib deb-src http://mirrors.163.com/debian/ sid main non-free contrib deb https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main non-free contrib deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main non-free contrib deb http://mirrors.ustc.edu.cn/debian/ sid main non-free contrib deb-src http://mirrors.ustc.edu.cn/debian/ sid main non-free contrib #deb http://ftp.sg.debian.org/debian/ sid main non-free contrib #deb-src http://ftp.sg.debian.org/debian/ sid main non-free contrib deb http://ftp.hk.debian.org/debian/ sid main non-free contrib deb-src http://ftp.hk.debian.org/debian/ sid main non-free contrib " > /etc/apt/sources.list
#系统升级 apt-get update
#安装curl git apt-get install curl git
2.安装apt-fast
apt-fast 加速包下载速度,通过aria2的多线程在多个镜像源中进行下载同一个文件,此步骤可忽略,install.sh会自动安装
apt-get install aria2 -y git clone https://github.com/ilikenwf/apt-fast.git cd apt-fast/ cp apt-fast /usr/bin/ cp apt-fast /usr/local/sbin/ chmod +x /usr/bin/apt-fast chmod +x /usr/local/sbin/ cp apt-fast.conf /etc apt-fast update sed -i "/^ *MIRRORS/d" /etc/apt-fast.conf echo "MIRRORS=( 'http://mirrors.163.com/debian/,https://mirrors.tuna.tsinghua.edu.cn/debian/,http://mirrors.ustc.edu.cn/debian/' ) " >> /etc/apt-fast.conf #后面看了下T-pot install脚本发现脚本内有下载apt-fast(所以可以不用自己下载apt-fast)? #此框命令可选执行,建议执行一遍用不了多久
3.配置npm源
apt-fast install npm npm config set registry http://registry.npm.taobao.org #将npm源换成国内源
4.克隆Tpot
#github克隆速度慢的话可以尝试更改hosts文件 echo "13.229.188.59 github.com www.github.com 185.199.111.153 assets-cdn.github.com www.assets-cdn.github.com 151.101.228.249 global.ssl.fastly.net www.global.ssl.fastly.net" >> /etc/hosts
#这里指定克隆库到/opt/tpot,因为此版的install.sh中会到这个目录下读配置文件,不存在的话,会自动再从github clone一份 git clone https://github.com/dtag-dev-sec/tpotce /opt/tpot
5.更改脚本
#发现脚本会将镜像源替换成官方源,需要将脚本中的替换命令删除,以下是19.03版本的删除命令: sed -i '/^ *tee /etc/d' install.sh sed -i '/^ *deb/d' install.sh sed -i "$(cat -n install.sh | grep "EOF$" | awk '{print $1}' | sed -n "1p")d" install.sh #以上三条命令不建议在非19.03版本运行,可能install脚本内容更改。 sed -i "/^ *git clone https://github/d" install.sh #此条删除install.sh中克隆库到/opt/tpot前面已经克隆到这个目录所以删除 #默认拉docker镜像的是国外的网站,总有几个镜像拉不动,配置加速会快很多 cd /opt/tpot/iso/installer AA=$(cat -n install.sh | grep "myTPOTCOMPOSE" | grep "for name in" | awk '{ print $1 }') sed -i "${AA}i curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io" install.sh sed -i "${AA}a systemctl restart docker" install.sh
6.安装
cd /opt/tpot/iso/installer/ ./install.sh --type=user #如果中途退出执行install.sh,可能会报版本不支持错误,需要删除检测版本验证 sed -i "s/if [ "$myLSB" !=.*/if [ 1 != 1];/" install.sh
安装完成
7.部署视频
https://player.youku.com/embed/XNDE5NDAyMDEwMA==
-
云部署
在cloud文件夹中有一个ansible例子 #此方法没有验证,可自行验证
不建议裸设备安装,在获取足够的系统包前无法使用apt-fast进行多线程下载将会特别慢
裸设备安装需要先安装成debian 再执行install,由于安装系统部分包安装缓慢不建议使用此方法
测试大约2-6小时不等的时间
建议直接安装在现有Debian系统上,使用iso源的速度很慢通常安装要几个小时
在现有系统安装使用多线程下载安装20分钟差不多就可以安装完成
二丶检查安装
-
检查Tpot服务
systemctl status tpot
-
检查容器
cd /opt/tpot/bin ./dps.sh #如果没有启动参考下面使用中的启动命令 #如果部分没有成功下载,可以手动下载下面的下载缺失容器
UP为正常
· 下载缺失容器
cd /opt/tpot/etc/compose for i in `cat ./standard.yml | grep image | cut -d '"' -f2 | uniq` do docker pull $i done
· 启动容器
cd /opt/tpot/etc/compose docker-compose -f ./standard.yml #如果安装别的模式yml用相应版本的 #如果部分没有成功下载,可以手动下载
三、使用
-
启动Tpot服务
systemctl start tpot
-
停止Tpot服务
systemctl stop tpot
-
选择关闭数据提交
默认情况,捕获的数据将提交给社区后端,并在 Sicherheitstacho 网站进行展现,可根据个人喜好关闭
- 1. 停止T-Pot服务
systemctl stop tpot
- 2. 删除Ewsposter服务
vi /opt/tpot/etc/tpot.yml
- 3. 删除以下行,保存并退出
# Ewsposter service ewsposter: container_name: ewsposter restart: always networks: - ewsposter_local image: "dtagdevsec/ewsposter:1903" volumes: - /data:/data - /data/ews/conf/ews.ip:/opt/ewsposter/ews.ip
- 4. 启动T-Pot服务
systemctl start tpot
-
选择加入HPFEEDS分享数据
现在可以与第三方HPFEEDS共享T-Pot数据提供额外的选项来提交攻击数据,例如SISSDEN。如果您想分享您的T-Pot数据,您只需在第三方经纪人处注册一个帐户,并为社区带来好处。注册后,您将收到您的凭证,以便与社区分
创建账户并申请凭证 https://portal.sissden.eu/profile
运行脚本
./hpfreeds_option.sh
-
系统使用
1、系统监控web https://yourip:64294
用系统用户登陆
2、管理web https://yourip:64297
3.ssh登录
ssh -l tsec -p 64295 yourip
4.开通root帐户登录
sudo passwd root
· 公网收集数据
可以使用内网穿透工具将需要收集信息的端口转发出去,可以参考
四、更新
·备份重要文件
请自行选择备份
· 执行更新命令
cd /opt/tpot ./update.sh