官方帮助文档:https://hfish.io/#/README
HFish是一款社区型免费的中低交互蜜罐,侧重企业安全场景:
目前共有42种蜜罐应用,包含40种低交互服务,2种高交互服务。
HFish由管理端(server)和节点端(client)组成:
管理端:生成和管理节点端,并接收、分析和展示节点端回传的数据
管理端必须部署在安全区。
注:4433、22端口只能被安全区设备访问,22端口必须能被节点端访问
节点端:接受管理端的控制并负责构建蜜罐服务
HFish的管理端对应蜜罐概念中的管理面,无安全防护功能;节点端对应交互面,负责模拟服务诱导攻击。
1、管理端
HFish可以配置可供外网访问的Server,但若同时有内外网访问需求,建议同时部署两套相互独立的系统。
2、节点端
间插在生产环境中,通过回传端口将数据传递给管理端。
下载安装包HFish-Windows-amd64 (Windows x86 架构 64 位系统),解压缩
防火墙上进出站双向打开TCP/4433、4434端口放行(如需使用其他服务,也需要打开端口)
※若未开启防火墙可跳过这一步
进入HFish-Windows-amd64文件夹内,运行文件目录下的install.bat (脚本会在当前目录进行安装HFish
登录web界面:
登陆链接:https://[ip]:4433/web/
端口和登录URL,可以在config.ini
中自行配置。
官方建议使用MySql数据库。
在系统配置–数据库配置可以更改数据库。
HFish有唯一一个默认节点——“内置节点”。
内置节点在管理端成功安装后,自动在管理端部署设备上建立,作用为节点感知攻击。
该节点将默认开启部分服务,包括FTP、SSH、Telnet、Zabbix监控系统、Nginx蜜罐、MySQL蜜罐、Redis蜜罐、HTTP代理蜜罐、ElasticSearch蜜罐和通用TCP端口监听。
在节点管理页面的节点列表处可新增,提供以下三种安装包:
部署成功后可,运行系统提供的脚本可实现开机自启。
在节点管理页面可进行节点删除。
节点删除的实质是cut掉相对应的进程,节点下的程序和数据不会被删除。
HFish目前提供了共42种服务,包含40种低交互服务和2种高交互服务,在“环境服务”下可以看到全部服务的介绍。
低交互服务包含项目有:基础服务、端口监听服务、WEB服务、数据库服务、自定义服务。
2种高交互服务为:高交互SSH蜜罐、高交互Telnet蜜罐。
- SSH:SSH是Secure Shell的缩写,是专为远程登录会话和其他网络服务提供安全性的协议,目前几乎所有的基于Linux、BSD、Unix的操作系统和IoT都支持使用SSH远程登录,因此SSH也成为最常见的网络服务。
- Telnet:是Internet远程登录服务的标准协议和主要方式,由于Telnet协议采用明文传输,安全性能较差,常被攻击者探测。
高交互和低交互版本服务的对比:
服务名称 | 默认监听端口 | 描述 |
---|---|---|
高交互SSH蜜罐 | TCP/22 | 提供了比较完善的SSH交互服务端,可记录攻击者的暴力破解攻击和shell交互,可被上传、删除和下载文件,默认使用TCP/22端口 |
高交互Telnet蜜罐 | TCP/23 | 提供了比较完善的Telnet交互服务端,可记录攻击者的暴力破解攻击和shell交互,可被上传、删除、和下载文件。Telnet一般只用于内部系统、路由交换等IoT设备,默认使用TCP/23 |
SSH蜜罐 | TCP/22 | 提供虚假的SSH服务端,常见于办公、生产、互联网场景,默认使用TCP/22端口 |
Telnet蜜罐 | TCP/23 | 提供虚假的Telnet服务端,一般只用于内部系统、路由交换等IoT设备,该服务常见于办公场景,默认使用TCP/23端口 |
高交互版本进行了更深入的仿真,提供了上传、删除和下载的功能。
目前HFish支持调取的数据有:
import requests
import json
# 获取攻击来源
src_url = 'https://Server_IP/api/v1/attack/ip?api_key=YOUR_API_KEY'
# 获取攻击详情
detail_url = 'https://Server_IP/api/v1/attack/detail?api_key=YOUR_API_KEY'
# 获取IP使用过的账号信息
acc_url = 'https://Server_IP/api/v1/attack/account?api_key=YOUR_API_KEY'
payload = json.dumps({
'start_time': 0,
'end_time': 0,
# 获取攻击来源
'intranet': '0',
'threat_label': [
'Scanner'
]
# 获取攻击详情
'client_id': [],
'service_name': [],
'info_confirm': '1'
# 获取指定ip暴力破解使用过的账号密码
'attack_ip': []
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request('POST', src_url, headers=headers, data=payload)
print(response.text)
联系客服