目录导航
Hfish简介
HFish是一款安全、简单可信赖的跨平台蜜罐软件,允许商业和个人用户免费使用。
HFish设计理念
HFish承载了全新的架构理念和实现方案,增加了蜜罐在威胁情报和诱捕溯源领域的能力,帮助企业在红蓝对抗中自动化的对攻击者进行画像和追溯。
此外,我们将重点关注企业安全场景,从攻击、处置、溯源角度提升产品联通能力。从威胁分析、告警策略与办公管理多方面出发,为企业用户提供更高的可用性与可拓展性。
我们深知企业环境特殊性,为了便于快速部署和敏捷管理,HFish提供了一系列方便运维和管理的技术,包括:一键闪电部署、应用模板批量管理、节点服务动态调整等特性……
什么是蜜罐
蜜罐的定义
蜜罐 技术本质上是一种对攻击方进行 欺骗的技术,通过布置一些作为 诱饵的主机、网络服务 或者 信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行 捕获 和 分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
蜜罐的优势
误报少,告警准确
蜜罐作为正常业务的 “影子” 混淆在网络中,正常情况下不应被触碰,每次触碰都可以视为威胁行为。
例如,在其它检测型产品中,将正常请求误判为攻击行为的误报很常见,而对于蜜罐来说,几乎 不存在正常请求,即使有也是探测行为。
检测深入,信息丰富
不同于其它检测型安全产品,蜜罐可以 模拟业务服务甚至对攻击的响应,完整获取整个交互的所有内容,最大深度的获得攻击者探测行为之后的N个步骤,可检测点更多,信息量更大。
例如,对于 SSL加密 或 工控环境,蜜罐可以轻松伪装成业务,得到完整攻击数据。
主动防御,预见未来,生产情报
在每个企业,几乎每分钟都在发生这样的场景:
潜伏在互联网角落中的攻击者发起一次攻击探测,防守方业务不存在安全漏洞,IDS告警后事情就不了了之了。
而应用蜜罐型产品后,转换为 主动防御思路:
蜜罐响应了攻击探测,诱骗攻击者认为存在漏洞,进而发送了更多指令,包括从远端地址下载木马程序,而这一切不仅被完整记录下来,还可以转化为威胁情报供给传统检测设备,用于在未来的某个时刻,准确检测主机失陷。
可以发现,转换为主动防护思路后, 威胁检测由针对单次、多变的攻击上升到应用威胁情报甚至TTPs检测。
环境依赖少,拓展视野
由于是融入型安全产品,蜜罐不需要改动现有网络结构,并且很多蜜罐是软件形态,对各种虚拟和云环境非常友好,部署成本低。
蜜罐可以广泛部署于云端和接入交换机下游末梢网络中,作为轻量级探针,将告警汇聚到态势感知或传统检测设备中分析和展示。
蜜罐和威胁情报的关系
显而易见 蜜罐 是非常准确、稳定和恰当的 情报感知探针。
蜜罐最大的价值是 诱使攻击者展示其能力和资产,再配合误报少,信息丰富等一系列优势,配合态势感知或本地情报平台可以稳定生产私有威胁情报。
HFish结构
HFish架构
HFish采用B/S架构,系统由控制端和节点端组成,控制端用来生成和管理节点端,并接收、分析和展示节点端回传的数据,节点端接受控制端的控制并负责构建蜜罐服务。
在HFish中,管理端只用于数据的分析和展示,节点端进行虚拟蜜罐,最后由蜜罐来承受攻击。
HFish特点
HFish当前具备如下几个特点:
- 安全可靠:主打低中交互蜜罐,简单有效;
- 蜜罐丰富:支持SSH、FTP、TFTP、MySQL、Redis、Telnet、VNC、Memcache、Elasticsearch、Wordpress、OA系统等10多种蜜罐服务,支持用户制作自定义Web蜜罐;
- 开放透明:支持对接微步在线X社区API、五路syslog输出、支持邮件、钉钉、企业微信、飞书、自定义WebHook告警输出;
- 快捷管理:支持单个安装包批量部署,支持批量修改端口和服务;
- 跨平台:支持Linux x32/x64/ARM、Windows x32/x64平台
HFish配置说明
HFish支持的部署主机
Windows | Linux X86 | |
---|---|---|
管理端(Server) | 支持64位 | 支持64位 |
节点端(Client) | 支持64位和32位 | 支持64为和32位 |
HFish所需配置
通常来说部署在内网的蜜罐,对性能的要求较低,接入公网的蜜罐会有更大的性能需求。
针对过往测试情况,我们给出两个配置。注意,如果您的蜜罐部署在互联网,会遭受到较大攻击流量,建议提升主机的配置。
控制端 | 节点端 | |
---|---|---|
建议配置 | 2核4g200G | 1核2g50G |
最低配置 | 1核2g100G | 1核1g50G |
(日志磁盘占用情况受攻击数量影响较大,我们通常建议控制端配置200G硬盘空间以上)
部署权限要求
控制端对root权限的需求
1. 如果您使用的是官网推荐的install.sh脚本安装,安装目录被释放到opt目录下,过程需要root权限;
2. 如果您下载安装包手动安装,在默认使用SQLite数据库情况下,控制端的部署和使用不需要root权限,但如何替换SQLite改为MySQL数据,则MySQL安装和配置需要root权限;
节点端对root权限的需求
节点端安装和运行无需root权限,但是由于操作系统限制,非root权限运行的节点无法监听低于tcp/1024的端口;
版本说明
当前最新版本 HFish v2.6.2
2021年9月16日发布
特别注意:只支持2.4.0及其以上的版本支持顺滑升级,其他版本需要重新进行部署安装。
1.启动HFish的时候,会默认在节点管理启动「本机节点」,且默认启用初始服务。
2.支持节点自由添加与修改蜜罐服务,可跳过模版。
3.新增「首页」模块,可快速感知运行状态和攻击态势。
4.增加包括常见运维系统、web系统、邮件系统、OA系统、常见IT设备、常见Web服务器等六种场景下的共21种蜜罐。
5.优化解决节点离线问题 ,增强节点稳定性。
6.修复部分使用交互问题。
HFish安装方法
Linux安装方法
联网,使用一键安装脚本
如果您部署的环境为Linux,且可以访问互联网。我们为您准备了一键部署脚本进行安装和配置。
在使用一键脚本前,请先配置防火墙
请防火墙开启4433、4434和7879,确认返回success(如之后蜜罐服务需要占用其他端口,可使用相同命令打开。)
firewall-cmd --add-port=4433/tcp --permanent (用于web界面启动)
firewall-cmd --add-port=4434/tcp --permanent (用于节点与server端通信)
firewall-cmd --reload
使用root用户,运行下面的脚本。
bash <(curl -sS -L https://hfish.io/install.sh)
完成安装安装
在安装完成后,HFish会自动在控制端上创建一个节点。可在节点管理进行查看。
配置开机自启动
进入管理端(server端)安装目录,执行
sh <(curl -sSL https://hfish.io/autorun.sh)
即可配置开机自启动。
(该方法通用于节点端自启动)
无法联网,手动安装
如果上述的安装脚本您无法使用,您可以尝试用手动安装完成部署。
第一步:下载安装包:HFish-Linux-amd64 ( Linux x86 架构 64 位系统)
使用按如下步骤进行安装 (以linux64位系统为例):
第二步: 在当前目录创建一个路径解压安装包
mkdir hfish
第三步:将安装文件包解压到hfish目录下
tar zxvf hfish-*-linux-amd64.tar.gz -C hfish
第四步:请防火墙开启4433、4434和7879,确认返回success(如果有其他服务需要打开端口,使用相同命令打开。
firewall-cmd --add-port=4433/tcp --permanent (用于web界面启动)
firewall-cmd --add-port=4434/tcp --permanent (用于节点与server端通信)
firewall-cmd --reload
第五步:进入安装目录直接运行server,或者后台运行 nohup ./server &
cd hfish
nohup ./server &
第六步:登陆web界面
登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021
例:如果控制端的ip是192.168.1.1,
登陆链接为:https://192.168.1.1:4433/web/
Windows安装方法
第一步:下载安装包HFish-Windows-amd64 (Windows x86 架构 64 位系统)
第二步:运行文件目录下的autorun.bat
autorun.bat将帮助server.exe转为后台运行,启动后直接运行。(启动在一分钟内)
第三步:登陆web界面
登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021
例:如果控制端的ip是192.168.1.1,登陆链接为:https://192.168.1.1:4433/web
如果您启动页面失败,请查看windows防火墙是否放开4433与4434
docker安装方法
Docker版本简介
Docker是我们推荐的部署方式,当前在2.6.2版本,我们增加了以下特性
- 使用docker-compose,默认拉起HFish以及MySql镜像
HFish镜像采用host模式启动,MySql镜像bridge模式启动。可在docker-compose.yml中修改MySql镜像的密码和映射端口。
- 进行数据持久化保存。
docker-compose.yml同目录下,会生成一个data文件夹,用于存放当前的所有攻击数据。另外,会生成一个logs文件夹,存放当前的所有日志。
Docker安装说明
请确认自己的环境已经安装docker和docker compose
步骤1:将docker-compose.yml放置到需要启动HFish的服务器
步骤2:在dockercompose.yml中,按需修改MySql容器的对外映射端口和登陆密码
注意,无论是修改端口还是密码,都需要将箭头所指的两个位置同步做修改
步骤3: 使用docker-compose up命令,启动docker
docker-compose up -d
注意:在docker启动后,会有几分钟的mysql容器初始化,请耐心等待
步骤4:登陆HFish
登陆地址:https://ip:4433/web
初始用户名:admin
初始密码:HFish2021
查看HFish日志
docker-compose.yml同目录下,会生成一个data文件夹,用于存放当前的所有攻击数据。另外,会生成一个logs文件夹,存放当前的所有日志。
查看Docker日志
进入docker-compose.yml的目录,执行
docker-compose logs
提高数据库性能方法
数据库选择方案
部署情况 | 内网和小规模部署情况 | 外网及大规模部署 |
---|---|---|
适用数据库 | Sqlite/Mysql均可 | Mysql |
综合来说,Mysql数据库适合于所有部署情况,也是我们优先推荐的数据库,其他数据处理能力和并发兼容上都要优于SQLite
SQlite详述
HFish系统默认使用的sqlite数据库,具体见 db/hfish.db(自带的已经初始化好的db),相关的初始化脚本见 db/sql/sqlite/V2.6.2__sqlite.sql
如果您想要重置 hfish.db, 可以通过下面命令生成新的 db 文件(请确保安装了sqlite3数据库)。 替换 db/hfish.db 即可。
sqlite3 hfish.db < db/sql/sqlite/V2.6.2__sqlite.sql
sqlite数据库无需安装,使用方便,但在遭到大规模攻击,及当前版本升级时候会存在数据丢失的问题。
Sqlite更换为Mysql
HFish同时支持mysql数据库,相关的初始化脚本见 db/sql/mysql/V2.6.2__mysql.sql。
如果您想要切换到mysql数据库,可以进行以下操作(请确认已经安装了mysql数据库,推荐5.7及以上版本)
- 初始化数据库
linux环境可以在命令行执行下述命令,然后输入密码(root用户密码)。
mysql -u root -p < db/sql/mysql/V2.6.2__mysql.sql
windows环境可以使用远程连接工具(比如sqlyog等)导入db/sql/mysql/V2.6.2__mysql.sql 脚本。
- 修改config.ini配置文件,数据库的连接方式,主要需要修改type和url,如下:
[database]
type = sqlite3
max_open = 50
max_idle = 50
url = ./db/hfish.db?cache=shared&mode=rwc
# type = mysql
# url = mysql用户名:密码@tcp(:3306)/hfish?charset=utf8&parseTime=true&loc=Local
如果mysql想要加ip,则使用:
url = mysql用户名:密码@tcp(ip:3306)/hfish?charset=utf8&parseTime=true&loc=Local
企业部署策略
网络要求
HFish控制端会主动访问如下网络域名
HFish支持IPv4和IPv6地址环境,可以在完全隔离互联网的内部网络工作,但为了最大限度感知真实威胁和对接云端接口消费威胁情报,以及接受自动化升级服务,微步在线强烈建议客户允许HFish控制端访问互联网,为兼顾安全性和服务可用性,推荐用户仅允许HFish控制端主动访问如下网络域名、地址和端口:
目的IP | 协议/端口 | 对应域名 | 访问目的 |
---|---|---|---|
103.210.21.74 | TCP/443 | hfish.io | 用于官网升级功能,建议开启 |
该域名使用CDN解析,建议在实际网络中解析后开放权限 | TCP/443 | hfish.cn-bj.ufileos.com | 用于分发安装和升级包 |
106.75.36.224 123.59.72.253 123.59.51.113 106.75.36.226 117.50.17.104 | TCP/443 | api.threatbook.cn | 用于威胁情报查询,如果未启用该功能,无需开放 |
该域名使用CDN解析,建议在实际网络中解析后开放权限 | TCP/443 | open.feishu.cn | 用于飞书告警功能,如果未使用该功能,无需开放 |
该域名使用CDN解析,建议在实际网络中解析后开放权限 | TCP/443 | oapi.dingtalk.com | 用于钉钉告警功能,如果未使用该功能,无需开放 |
该域名使用CDN解析,建议在实际网络中解析后开放权限 | TCP/443 | qyapi.weixin.qq.com | 用于企业微信告警功能,如果未使用该功能,无需开放 |
注意:
- HFish控制端仅需要通过NAT模式访问互联网,基于安全考虑,不建议用户将HFish控制端控制端口TCP/4433暴露在互联网;
- 如果使用邮件通知,请开启相应邮件服务器的访问权限;
- HFish支持 5 路syslog日志发送,便于与安全设备联动,请根据实际情况开放权限;
安全配置
控制端安全要求
控制端应部署在安全区,只向少部分有网络管理权限和安全分析能力工作的人员和设备开放web和ssh端口
控制端用于配置管理的web页面开启了https,默认访问端口为tcp/4433,端口和登录URL,可以在config.ini中自行配置。
如果控制端主机的IP为192.168.11.11,那么应该在浏览器中输入如下的URL进行访问。
https://192.168.11.11:4433/web/
此外控制端还会开放另外两个端口,节点数据回传端口tcp/4434和SSH服务默认访问端口tcp/22。
强烈建议:
- tcp/4433端口和tcp/22端口 “只能” 被安全区的管理设备访问;
- tcp/4434端口“必须能”被蜜罐节点访问;
节点端安全要求
节点直接面对攻击者,建议遵循以下安全配置:
- 如果用户同时有外网和内部需求,强烈建议用户分别在外网和内网部署完全独立的两套控制端和节点端;
- 如果有节点需要能被外网访问,那么建议把节点和控制端部署在DMZ区;
- 外网节点除了能访问控制端的tcp/4434端口外,不能有权限访问内网中的任何资产;
- 内网节点除了开放蜜罐服务相应端口外,其它任何端口都不应该在网络中能被用户访问到。考虑安全区设备有维护节点主机的需求,可以向有限的设备开放ssh端口;
HFish快速上手
HFish基本结构
HFish由管理端(server)和节点端(client)组成,管理端用来生成和管理节点端,并接收、分析和展示节点端回传的数据,节点端接受管理端的控制并负责构建蜜罐服务。
HFish各模块关系图
融合在企业网络中
添加/删除节点
当前,我们会为所有用户,在Server机器上默认建立一个节点感知攻击。该节点命名为「内置节点」。
该节点将默认开启部分服务,包括FTP、SSH、Telnet、Zabbix监控系统、Nginx蜜罐、MySQL蜜罐、Redis蜜罐、HTTP代理蜜罐、ElasticSearch蜜罐和通用TCP端口监听。
新增节点
进入节点管理页面,可进行 新增节点
选择对应的安装包和回连地址
在节点机器执行命令语句或安装包,即可成功部署节点。
进入「节点管理」页面,对可对该节点进行管理。
删除节点
如果您进行节点删除,那么
- 节点端进程会自动退出,但程序会保留在原有路径,需要手动二次删除。
- 所有攻击数据不会丢失,仍然能在所有数据中进行查看
添加/删除蜜罐
当前,修改节点服务可分为两种,
直接修改服务
点击单个节点,可直接对节点上的服务进行添加和删除
创建模版,应用到多节点
进行模版创建,即可以将一套配置批量应用到多个节点上,其操作步骤如下:
进入模版管理,进行模版创建
展开蜜罐节点,选择上面创建的蜜罐模板
刚变更模板后的蜜罐服务状态为【启用】
节点正常完成模板加载后,服务状态应该为【在线】。如果是【离线】,说明蜜罐服务没有正常启动,请参考我们后面的【排错说明】,找到问题。
查看攻击
当前,HFish提供四个不同的功能进行攻击信息查看,分别为:攻击列表、扫描感知、攻击来源、账号资产
四种功能分别代表四种不同的攻击数据场景
功能简介 | 功能原理 | |
---|---|---|
攻击列表 | 收集了所有对蜜罐的攻击信息。 | 在节点部署蜜罐后,攻击者对蜜罐的所有攻击信息都会被收录到「攻击列表」中。 |
扫描感知 | 收集了节点机器网卡的所有连接信息。 | 在生成节点之后,HFish会记录对节点所有网卡的连接,包括来访IP,连接IP和端口。 |
攻击来源 | 收集了所有连接和攻击节点的IP信息 | 所有尝试连接和攻击节点的IP信息都被记录在攻击来源中,如果蜜罐溯源和反制成功,信息也会被记录其中。 |
账号资产 | 收集了所有攻击者破解蜜罐使用的账号密码 | HFish会提取攻击者对SSH、以及所有WEB蜜罐登陆所使用的账号密码,进行统一展示。同时,用户可自定义监控词汇,如员工姓名、公司名称等,一旦与攻击者使用的账号重合,可高亮显示并告警。 |
攻击列表
攻击列表是展示蜜罐捕获攻击数据的地方
攻击列表本身有一定的聚合能力,会把一段时间内,针对同一IP同一蜜罐的同一攻击者行为聚合在一起。
内容分为攻击概览和攻击详情两个部分。
- 攻击概览攻击概览展示的数据有:
- 被攻击蜜罐名称
- 被攻击数量
- 被攻击节点名称
- 攻击来源IP和所属地理位置信息
- 威胁情报
- 最后一次攻击时间
- 攻击详情攻击详情展示的数据有:
- 攻击时间
- 被攻击IP和所属地理位置信息
- 节点名称
- 攻击数据长度
扫描感知
扫描感知可以感知到针对蜜罐节点的扫描行为
扫描感知通过对网卡抓包,可以感知到针对该节点全端口的扫描行为。支持TCP、UDP和ICMP扫描类型。
- 目前扫描感知列表内能够展示的信息如下:
- 扫描IP
- 威胁情报
- 被扫描节点
- 被扫描IP
- 扫描类型
- 被扫描端口
- 节点位置
- 扫描开始时间
- 扫描持续时间
注意!Windows节点的扫描感知依赖WinPcap,需要手动进行下载安装!
WinPcap官方链接:winpcap.org/install/bin/WinPcap_4_1_3.exe
扫描感知数据异常
当前,Hfish的节点定义为“蜜罐机器”,即在常理上,部署节点的机器是不运行任何正常业务的空机器。
但在我们跟很多用户的访谈和交流中,用户往往会将自己正常业务使用的笔记本,虚拟机作为节点机器。
在这种情况下,因此您会在数据中发现您的软件信息被记录了,比如在很多windows的用户中,我们检测到了445端口的使用,该端口是由于用户有真实的软件占用了445端口。
在之后,我们会友好的帮您区分业务机器和蜜罐机器,做不同的监听手段。在当前,我们建议您采用业务机器部署的情况下,可以暂时关闭扫描感知功能。
如果您的扫描感知出现了其他问题,可以加入官方交流微信群,我们将会为您的问题提供详尽解答。
攻击来源
攻击来源页面将监控所有攻击IP的相关信息,包括微步情报及企业自定义情报。
另外,所有的溯源信息,最终都会呈现在恶意IP页面,并成为企业的私有情报库。
账号资产
用户名密码页面收集了所有被用来攻击的账号密码,可以对企业账号资产有效监控
为辅助企业进行内部账号监控,设定高级监测策略,建议输入企业的邮箱、员工姓名、企业名称等信息进行监控,从而随时监控泄漏情况
1.点击界面右上角查看高级监测策略
2.按照规则要求,导入csv文件。
注意!务必按照提示规则进行写入
3.页面可查看到所有匹配高级监测策略的数据,从而帮助运维人员精准排查泄漏账号,实现企业账号资产安全防护。
错误信息排查
server部署完成后,web页面始终无法打开
解决办法:
- 确认浏览器访问地址是 https://[server]:4433/web/login,注意不可缺少“/web/login”这个路径
- 确认server进程的运行情况和4433端口开放情况,如果不正常需要重启server进程,并记录错误日志
# 检查./server的进程是否运行正常 ps ax | grep ./server | grep -v grep # 检查tcp/4433端口是否正常开放 ss -ntpl 蜜罐服务名称.log
- 检查server主机是否开启了防火墙,导致目前无法访问
- 如果以上都没有问题,请将server和client日志提供给我们
# 节点端日志在安装目录的logs文件夹内,文件名为client.log # 控制端日志在安装目录的logs文件夹内,文件名为server-*.log
节点问题
在机器上执行了节点脚本,但是「节点管理」处没有信息
检查管理端防火墙以及ACL策略是否放行了节点对server 4434端口的访问
# 可以从节点主机发起wget测试
wget [服务器地址]:4434
节点状态为红色离线
解决办法:
- 检查节点到管理端的网络连通情况,并等待……
节点每90秒连接server的TCP/4433端口一次,180秒内连接不上,即显示离线。 在刚刚完成部署或网络不稳定的时候会出现这种情况。 通常情况,等待2~3分钟,如果节点恢复绿色在线,那蜜罐服务也会从绿色启用,变成绿色在线。
- 如果确认网络访问正常,节点在server上始终离线,需要检查节点上的进程运行情况。如果进程运行异常,需要杀死全部关联进程后,重启进程,并记录错误日志。
# 检查./client的进程是否运行正常 ps ax | grep -E 'services|./client' | grep -v grep # 检查./service的进程是否运行正常 ps ax | grep ./server | grep -v grep
蜜罐服务问题
节点在线,部分蜜罐服务在线,部分蜜罐服务离线
解决办法:
- 确认蜜罐服务进程是否还在运行?
# 检查service的进程是否运行正常,如果进程退出,建议查看service的日志 ps ax | grep service | grep -v grep
- 确认是否端口冲突?
这个问题常见默认22端口的SSH服务,刚启动client的时候,服务在线,过了一会儿后服务离线。 用ss -ntpl检查该蜜罐服务的端口是否被占用?如果被占用,建议修改该业务的默认端口。 在Windows操作系统上,如果用户启用了tcp端口监听,大概率会发现tcp 135、139、445、3389端口冲突, 这是用于Windows默认占用了这些端口,不太建议在Windows上使用tcp 135、139、445、3389端口的蜜罐。
变更服务模板后,蜜罐新服务访问不到
在HFish当前的产品结构中,管理端永远不会主动连接节点进行节点配置的变更。
而是在管理端上生成一个配置,等待节点来拉取。
节点每90秒尝试连接管理端一次,获取到变更数据后,还需要从管理端上拉取新的服务,解压服务包并运行。
运行服务的结果,会在下一个90秒回连时,上报到管理端。
这个流程最慢的话,可能会有一个3分钟左右延时。
所以刚刚变更蜜罐服务后,请大家稍微等等。
场景使用建议
常见蜜罐场景
内网失陷检测场景
该场景是蜜罐在企业环境 最常见 的使用方法,用来捕捉内网已经失陷、勒索软件和恶意行为,重点在于 敏捷准确,具体可细分为 内部办公场景 和 内部IDC场景,
内部办公场景:蜜罐被部署在企业内部办公网区,用于 感知内网失陷主机、勒索软件扫描或恶意员工内网刺探行为 ,常见模板可设置为监听tcp/135、139、445和3389等服务。
内部服务器场景:蜜罐被部署在企业内部服务器区,用于 感知内网失陷和横向移动,常见模板可以设置文模拟Web、MySQL、Redis、Elasticsearch、SSH、Telnet等服务。
外网风险感知和情报生产场景
该场景一般是将节点部署在互联网区,用来感知互联网来自自动化蠕虫、竞争对手和境外的 真实威胁,甚至发现针对客户的 0day攻击,通过和具有情报生产能力的 情报平台 对接,可以稳定准确的生产私有威胁情报。
另外,需要注意,该场景会捕捉到 大量真实攻击行为 ,在部署蜜罐之前建议将蜜罐加入网络检测设备白名单中避免产生误报。
云环境风险感知场景
由于云环境特殊性,云上 匮乏 流量检测类安全产品,此外企业防守者需要频繁切换查看本地安全设备的告警与云端有限安全设备的告警。
而通过在云端部署蜜罐产品,应用蜜罐 吸引部分攻击,保护真实业务,并且企业防守者可以通过蜜罐感知到 云上威胁的强度和方式,不至于对安全现状一无所知,最后通过 蜜罐产品的API 和 本地态势感知或检测设备 打通,实现防守者通过一个平台 统一管理。
员工账号密码资产遗失感知场景
员工账号密码资产遗失对于企业来说都是 致命隐患,安全团队如何感知是当下一个空白。
企业可将常见的对外服务例如vpn.company.com或hr.company.com 替换成蜜罐,通过监控试图登录的账号判断是否为 内部员工账号,并实时通知安全团队和该员工,敦促其尽快修改密码。
企业安全意识培训场景
在企业安全工作中,员工 安全意识问题 常常被忽略,而对于攻击者,搜集员工信箱批量发送钓鱼或木马病毒链接只要有一个成功即可突破辛苦构建的企业安全防线。
使用开源的钓鱼邮件工具和 Web蜜罐自定义能力,可以快速、低成本的组装 企业安全意识培训平台。
自定义web蜜罐
通过样例了解功能实现方式
web蜜罐样例
# 下载自定义web蜜罐样例
http://img.threatbook.cn/hfish/svc/service-demo.zip
解压后获得index.html和portrait.js两个文件
index.html文件中的代码功能
<form>中的代码明确了页面上账密表单的提交方式,具体利用方式参考下文“制作全新的登陆页面”
<script>中的代码明确了调用jsonp的方式
portrait.js 文件中的代码功能
这个文件是jsonp溯源功能的利用代码,攻击者在已登录其他社交平台的情况下,蜜罐可以获得部分社交平台的账号信息。
本代码因为利用了浏览器的漏洞,有一定的时效性,随着攻击者更新自己的浏览器,利用代码可能失效。并有可能让攻击者在访问该页面时,触发杀毒软件的报警。
在利用代码失效后,您可以选择删除index.html中的利用代码。
同时请关注我们的官网( https://hfish.io )和x社区( https://x.threatbook.cn ),等待我们和社区用户更新漏洞利用代码,并替换本文件和index内的利用代码,恢复溯源能力。
制作全新的登陆页面
我们可以自己制作一个全新的登陆页面,通过替换表单元素实现“定制开发”
- 修改主页文件名为index.html
- 按照下面图片的要求,修改表单元素。
打包并上传到蜜罐的管理后台
打包所有静态文件资源
把所有的静态文件文件打包名为“service-xxx.zip”文件。包括但不限于index.html 、portrait.js 和其它格式的静态文件、文件夹。
注意:文件命名为规范格式前缀 必须 为“service-” ; “xxx”可以自定义,但不能为“web”和“root”,且压缩包 必须 压缩为.zip格式文件。
打开控制端后台
配置新增服务页面
自定义web蜜罐添加成功
蜜饵配置
什么是蜜饵
蜜饵泛指任意伪造的高价值文件(例如运维手册、邮件、配置文件等),用于引诱和转移攻击者视线,最终达到牵引攻击者离开真实的高价值资产并进入陷阱的目的。
使用场景
HFish的蜜饵在 牵引 攻击者的功能上增加了 精确定位失陷 能力,即每个蜜饵都是 唯一的,攻击者入侵用户主机后,如果盗取蜜饵文件中的数据并从任意主机发起攻击,防守者仍能知道失陷源头在哪里。
举个例子:
攻击者侵入企业内部某台服务器,在其目录中找到一个payment_config.ini文件,文件中包含数据库主机IP地址和账号密码,
攻击者为隐藏自己真实入侵路径,通过第三台主机访问数据库主机……
在以上场景中,payment_config.ini为蜜饵,所谓的数据库主机是另外一台位于安全区域的蜜罐,而攻击者得到的所谓账号密码也是虚假且唯一的,防守者可以根据其得到攻击者真实的横向移动路径。
由于蜜饵只是静态文件,所以蜜饵适合部署在任何主机和场景中,例如作为附件通过邮件发送(检测邮件是否被盗)、在攻防演练期间上传到百度网盘或github上混淆攻击者视线、压缩改名成backup.zip放置在Web目录下守株待兔等待攻击者扫描器上钩……
HFish的蜜饵
HFish的蜜饵模块由 分发接口 和 蜜饵 文件两部分组成,
其中 分发接口 实际位于节点端,启用或禁用开关位于控制端的节点管理页面任意一个节点的详情页面中,默认监听tcp/7878端口,
任何一台节点都可以作为节点分发服务器使用,如下图:
启用后,用户可以从需要部署蜜饵的主机上访问如下地址,得到一个唯一的蜜饵文件:
wget http://[节点IP]:7878/download/bait -O node_account.conf
用户可以在【账号资产】-【蜜饵数据】页面查看到已经生成的蜜饵。
卸载蜜罐
卸载server端
- 杀死server进程
# 结束server进程
root@HFish~# ps ax | grep ./server | grep -v grep
8435 ? Sl 97:59 ./server
root@HFish:~# kill -9 8435
- 删除server文件夹
# 使用install.sh安装的HFish会被部署到/opt/hfish目标,删除即可
root@HFish~# rm -rf /opt/hfish
- 清理数据库(如果使用的是SQLite数据库请忽略)
# 删除HFish数据库
root@HFish:~# mysql -h127.0.0.1 -uroot -p
Enter password:*******(默认密码详见config.ini配置文件)
mysql> DROP DATABASE hfish;
# 停止MySQL服务
root@HFish:~# systemctl stop mysqld
root@HFish:~# systemctl disable mysqld
- 还原SSH和Firewall配置
# 清除SSH config内对于访问来源的限制
root@HFish~# vi /etc/ssh/sshd_config
注释掉以 AllowUsers root@ 开头的行
# 重启SSH服务
root@HFish~# systemctl restart sshd
# 清除Firewall服务的规则(请根据实际情况删除!)
root@HFish~# firewall-cmd --permanent --list-all | grep ports | head -n 1 | \
cut -d: -f2 | tr ' ' '\n' | xargs -I {} firewall-cmd --permanent --remove-port={}
# 重启Firewall服务
root@HFish~# systemctl restart firewalld
卸载节点端
- 杀死client和services进程
# 结束 client 和 services 进程
root@HFish~# ps ax | grep -E 'services|./client' | grep -v grep
10506 ? Sl 134:20 ./client
1685739 ? Sl 0:00 services/mysql/mysql 0.0.0.0:3306 true
1685743 ? Sl 0:00 services/redis/redis 0.0.0.0:6379 true
1685747 ? Sl 0:00 services/telnet/telnet 0.0.0.0:23 true
1685751 ? Sl 0:00 services/ftp/ftp 0.0.0.0:21 true
1685755 ? Sl 0:00 services/es/es 0.0.0.0:9200 true
root@HFish:~# kill -9 10506 1685739 1685743 1685747 1685751 1685755
- 删除client文件夹
# 使用 install.sh 安装的 HFish 会被部署到/opt/hfish目标,删除即可
root@HFish~# rm -rf /opt/hfish
- 还原SSH和Firewall配置
# 还原默认SSH端口
root@HFish~# vi /etc/ssh/sshd_config
- 把 Port 22122 注释掉或修改为默认的22
# 清除SSH config内对于访问来源的限制
root@HFish~# vi /etc/ssh/sshd_config
注释掉以 AllowUsers root@ 开头的行
# 重启SSH服务
root@HFish~# systemctl restart sshd
# 清除Firewall服务规则(请根据实际情况删除!)
root@HFish~# firewall-cmd --permanent --list-all | grep ports | head -n 1 | \
cut -d: -f2 | tr ' ' '\n' | xargs -I {} firewall-cmd --permanent --remove-port={}
# 重启Firewall服务
root@HFish~# systemctl restart firewalld
详细功能说明
威胁态势
当前,我们在「数据首页」中对攻击数据进行可视化处理,希望能够协助对攻击态势的分析和统计。
数据首页包括以下几部分
系统运行状态
针对HFish系统的运行状况,我们对节点状态和蜜罐状态提供了可视化查看能力.
针对管理端的运行情况,我们提供了状态栏进行查看
威胁链条
参考Kill Chain,我们在攻击者的攻击链路,从不同的威胁等级进行区分,绘制了HFish蜜罐的攻击链路图。从扫描/攻击/登陆尝试/高危登陆尝试和失陷这五个角度进行区分,进行更好的威胁发现。
被攻击趋势
从攻击IP的分布趋势、蜜罐服务的被攻击趋势,以及部署节点的被攻击趋势,三个部分进行可视化分析展示,更好了解自己的威胁来源。迅速做出对策和反应。
已知问题
2.5.0版本,Windows版本控制端页面上传安装包升级会不成功。
一、可以在页面上传升级之后、打开任务管理器关闭老的server.exe进程,然后到安装目录执行autorun.bat脚本,等待一分钟左右会重新启动server.exe。
二、不通过页面上传升级,打开任务管理器关闭老的server.exe进程,然后到安装目录,将下载的安装包解压到安装目录,执行autorun.bat脚本,等到拉起。
备注:根本原因是windows不支持gin框架的endless热启动方案,页面上传后包已经解压 但是进程没有退出,需要手动杀死老的进程。考虑下个版本重新规划下升级方案,敬请期待!
更多详细信息请查看官网指导书:
GitHub项目地址:
https://github.com/hacklcx/HFish
注意事项:
2019年的8月7日,我们发布了自己的第一款开源蜜罐,在16个月里,在Github上获得2.6k个star,在Gitee上成为安全类目TOP5的GVP项目。
2021年2月9日,融合社区反馈和过去2年的思考,我们发布了全新概念的威胁捕捉和诱骗系统 HFish V2,采用闭源共享方式向所有用户免费授权使用。
目前该软件为闭源状态