前段时间我们在「巧用 Cowrie 部署 SSH 蜜罐,让黑客攻击无处遁形!」 一文中给大家介绍了一款好用开源的 SSH
蜜罐系统,但遗憾的是这个蜜罐系统只支持 SSH
这一种协议。
今天,我们就给大家介绍一套功能更加强大、支持跨平台和多种协议的全功能蜜罐钓鱼开源系统 HFish。
什么是 HFish ?
HFish
是一款基于 Golang SqlLite
开发的跨平台多功能主动攻击型蜜罐钓鱼平台框架系统。
项目地址:https://github.com/hacklcx/HFish
HFish 支持的特性
- 多功能:不仅仅支持
HTTP(S)
钓鱼,还支持SSH
、SFTP
、Redis
、MySQL
、MemCache
、VNC
、ES
等多种蜜罐。 - 扩展性:
HFish
提供API
接口,使用者可以随意扩展钓鱼模块。 - 便捷性:
HFish
使用Golang
开发,使用者可以在多平台上(Windows
、MacOS
、Linux
等) 上快速进行部署。
什么是蜜罐?
蜜罐技术本质上是一种对攻击方进行 欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
蜜罐好比是情报收集系统。蜜罐好像是故意让人攻击的目标,引诱黑客前来攻击。所以攻击者入侵后,你就可以知道他是如何得逞的,随时了解针对服务器发动的最新的攻击和漏洞。还可以通过窃听黑客之间的联系,收集黑客所用的种种工具,并且掌握他们的社交网络。
部署 HFish
HFish
支持单机、集群、Docker
多种形式的部署,部署方法也是非常简单的。
二进制部署模式
- 下载当前系统二进制安装包
首先通过浏览器打开 https://github.com/hacklcx/HFish/releases
,然后下载对应系统的二进制安装包。
darwin
为MacOS
版本arm64
为ARM
架构的 64 位,可用于树莓派386
为32
位系统,amd64
为64
位系统
- 快速启动 HFish
二进制安装包下载完成,解压后执行即可。
2.1 Linux Mac 平台
代码语言:javascript复制# 名字是下载的压缩包,根据实际情况修改
$ tar -zxvf HFish-0.5-linux-amd64.tar.gz
# 名字是解压后压缩包,根据实际情况修改
$ cd HFish-0.5-linux-amd64
$ chmod 777 -R db # sqlite 临时文件需要最高权限
$ ./HFish run
注意:db 目录必须要设置 777 最高权限,否则会报 unable to open database file。
2.2 Windown 平台
代码语言:javascript复制# 鼠标右键解压压缩包,打开命令终端 (cmd.exe) 进入程序跟目录
# 名字是解压后压缩包,根据实际情况修改
$ cd c:/HFish-0.5-win-amd64
# Windows 一样要给 db 目录所有权限,具体方法谷歌搜索。
$ ./HFish.exe run
- 访问 HFish
启动成功后,直接通过浏览器访问 IP:9001
端口即可进行访问。
默认登陆账号/密码为:admin/admin
Docker 部署模式
如果你对 Docker
比较了解还可以直接通过 Docker
来一键完成单节点部署或集群部署。
- 单节点部署
$ docker run -d --name hfish -p 21:21 -p 22:22 -p 23:23 -p 3306:3306 -p 6379:6379 -p 8080:8080 -p 8989:8989 -p 9000:9000 -p 9001:9001 -p 11211:11211 imdevops/hfish:latest
- 集群部署
# 主节点部署
$ docker run -d --name hfish-master -p 21:21 -p 22:22 -p 23:23 -p 3306:3306 -p 6379:6379 -p 7879:7879 -p 8080:8080 -p 8989:8989 -p 9000:9000 -p 9001:9001 -p 11211:11211 imdevops/hfish:latest
# 客户端子节点部署
$ docker run -d --name hfish-client -p 21:21 -p 22:22 -p 23:23 -p 3306:3306 -p 6379:6379 -p 8080:8080 -p 8989:8989 -p 9000:9000 -p 11211:11211 -e CLUSTER_IP=master_ip:7879 -e NODE_NAME=clinet imdevops/hfish:latest
具体方法可以参考官方文档:https://hfish.io/docs/#/deploy/docker
配置 HFish
HFish
的配置分为服务器端和客户端,大致配置内容基本相同。官方也说得很清楚了,只要按需启用相应服务即可,这里就不再赘述了。
服务端配置
本配置为 Demo
服务端,需要启动 rpc
, 修改状态 status
为 1
。
[rpc]
status = 1 # 模式 0关闭 1服务端 2客户端
addr = 127.0.0.1:7879 # RPC 服务端地址 or 客户端地址
name = Server # 状态1 服务端名称 状态2 客户端名称
[admin] # RPC 状态为 2 集群客户端的时候 admin 可以删掉
addr = 127.0.0.1:9001 # 管理后台启动地址
account = admin # 登录账号
password = admin # 登录密码
[api]
status = 1 # 是否启动 API 1 启动 0 关闭
web_url = /api/v1/post/report # 管理后台启动地址
deep_url = /api/v1/post/deep_report # 管理后台启动地址
plug_url = /api/v1/post/plug_report # 插件蜜罐上报 API
sec_key = 9cbf8a4dcb8e30682b927f352d6559a0 # API 认证秘钥
[plug]
status = 0 # 是否启动 蜜罐插件 0 关闭 1 启动, 需要先启动 API
addr = 0.0.0.0:8989 # 蜜罐插件 启动地址
[web]
status = 0 # 是否启动 WEB 1 启动 0 关闭, 启动 API 后 WEB 方可上报结果
addr = 0.0.0.0:9000 # WEB 启动地址,0.0.0.0 对外开放,127.0.0.1 对内开放 可走 Nginx 反向代理
template = wordPress/html # WEB 模板路径
index = index.html # WEB 首页文件
static = wordPress/static # WEB 静态文件路径 注意:必须存在两个目录,html 文件 和静态文件 不能平级
url = / # WEB 访问目录,默认 / 可更改成 index.html index.asp index.php
[deep]
status = 0 # 是否启动 暗网 1 启动 0 关闭, 启动 API 后 方可上报结果
addr = 0.0.0.0:8080 # 暗网 WEB 启动地址
template = deep/html # 暗网 WEB 模板路径
index = index.html # 暗网 WEB 首页文件
static = deep/static # 暗网 WEB 静态文件路径 注意:必须存在两个目录,html 文件 和静态文件 不能平级
url = / # 暗网 WEB 访问目录,默认 / 可更改成 index.html index.asp index.php
[ssh]
status = 0 # 是否启动 SSH 1 启动 0 关闭
addr = 0.0.0.0:22 # SSH 服务端地址 注意端口冲突,请先关闭服务器 openssh 服务 或 修改端口
[redis]
status = 0 # 是否启动 Redis 1 启动 0 关闭
addr = 0.0.0.0:6379 # Redis 服务端地址 注意端口冲突
[mysql]
status = 0 # 是否启动 Mysql 1 启动 0 关闭
addr = 0.0.0.0:3306 # Mysql 服务端地址 注意端口冲突
files = /etc/passwd,/etc/group # Mysql 服务端读取客户端任意文件; 多写逗号分隔,会随机取
[telnet]
status = 0 # 是否启动 Telnet 1 启动 0 关闭
addr = 0.0.0.0:23 # Telnet 服务端地址 注意端口冲突
[ftp]
status = 0 # 是否启动 Ftp 1 启动 0 关闭
addr = 0.0.0.0:21 # Ftp 服务端地址 注意端口冲突
[mem_cache]
status = 0 # 是否启动 MemCache 0 关闭 1 启动
addr = 0.0.0.0:11211 # Memcache 服务端地址 注意端口冲突
rate_limit = 4 # 每秒响应次数
客户端配置
本配置为 Demo
客户端,可删除 admin
配置项。客户端需要启动 rpc
, 修改状态 status
为 2
。
[rpc]
status = 2 # 模式 0关闭 1服务端 2客户端
addr = 127.0.0.1:7879 # RPC 服务端地址 or 客户端地址
name = Beijing_Clinet # 状态1 服务端名称 状态2 客户端名称
[api]
status = 1 # 是否启动 API 1 启动 0 关闭
web_url = /api/v1/post/report # 管理后台启动地址
deep_url = /api/v1/post/deep_report # 管理后台启动地址
plug_url = /api/v1/post/plug_report # 插件蜜罐上报 API
sec_key = 9cbf8a4dcb8e30682b927f352d6559a0 # API 认证秘钥
[plug]
status = 0 # 是否启动 蜜罐插件 0 关闭 1 启动, 需要先启动 API
addr = 0.0.0.0:8989 # 蜜罐插件 启动地址
[web]
status = 0 # 是否启动 WEB 1 启动 0 关闭, 启动 API 后 WEB 方可上报结果
addr = 0.0.0.0:9000 # WEB 启动地址,0.0.0.0 对外开放,127.0.0.1 对内开放 可走 Nginx 反向代理
template = wordPress/html # WEB 模板路径
index = index.html # WEB 首页文件
static = wordPress/static # WEB 静态文件路径 注意:必须存在两个目录,html 文件 和静态文件 不能平级
url = / # WEB 访问目录,默认 / 可更改成 index.html index.asp index.php
[deep]
status = 0 # 是否启动 暗网 1 启动 0 关闭, 启动 API 后 方可上报结果
addr = 0.0.0.0:8080 # 暗网 WEB 启动地址
template = deep/html # 暗网 WEB 模板路径
index = index.html # 暗网 WEB 首页文件
static = deep/static # 暗网 WEB 静态文件路径 注意:必须存在两个目录,html 文件 和静态文件 不能平级
url = / # 暗网 WEB 访问目录,默认 / 可更改成 index.html index.asp index.php
[ssh]
status = 0 # 是否启动 SSH 1 启动 0 关闭
addr = 0.0.0.0:22 # SSH 服务端地址 注意端口冲突,请先关闭服务器 openssh 服务 或 修改端口
[redis]
status = 0 # 是否启动 Redis 1 启动 0 关闭
addr = 0.0.0.0:6379 # Redis 服务端地址 注意端口冲突
[mysql]
status = 0 # 是否启动 Mysql 1 启动 0 关闭
addr = 0.0.0.0:3306 # Mysql 服务端地址 注意端口冲突
files = /etc/passwd,/etc/group # Mysql 服务端读取客户端任意文件; 多写逗号分隔,会随机取
[telnet]
status = 0 # 是否启动 Telnet 1 启动 0 关闭
addr = 0.0.0.0:23 # Telnet 服务端地址 注意端口冲突
[ftp]
status = 0 # 是否启动 Ftp 1 启动 0 关闭
addr = 0.0.0.0:21 # Ftp 服务端地址 注意端口冲突
[mem_cache]
status = 0 # 是否启动 MemCache 0 关闭 1 启动
addr = 0.0.0.0:11211 # Memcache 服务端地址 注意端口冲突
rate_limit = 4 # 每秒响应次数
除了这些,Hfish
还支持通过 API 请求
、白名单
、WebHook
、插件扩展
等很多强大的功能。如果你很感兴趣,可自行前往官网进一步探索哟!
更多功能演示截图
- HFish 管理界面
- HFish 数据统计界面
- HFish SSH 蜜罐后台界面
- HFish Telnet 蜜罐后台界面
- HFish Redis 蜜罐后台界面
- HFish Memcache 蜜罐后台界面
- HFish MySQL 蜜罐后台界面
- HFish FTP 蜜罐后台界面
- HFish Web 蜜罐后台界面
参考文档
- https://www.google.com
- https://hfish.io/docs/
- https://bithack.io/forum/484