HFish开源强大蜜罐神器

HFish 是一款基于 Golang 开发的跨平台多功能主动诱导型开源蜜罐框架系统,为了企业安全防护做出了精心的打造,全程记录黑客攻击手段,实现防护自主化。
多功能 不仅仅支持 HTTP(S) 蜜罐,还支持 SSH、SFTP、Redis、Mysql、FTP、Telnet、暗网 等
扩展性 提供 API 接口,使用者可以随意扩展蜜罐模块 ( WEB、PC、APP )
便捷性 使用 Golang + SQLite 开发,使用者可以在 Win + Mac + Linux 上快速部署一套蜜罐平台

官方下载地址
https://hfish.io

蜜罐


HFish 命令使用说明
HFish help (--help) 帮助命令
HFish run (--run) 启动服务
HFish version (--version) 查看当前版本


服务端配置

本配置为 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                               # 每秒响应次数

修改配置

[api]
status = 1                                  
web_url = /api/v1/post/report               
deep_url = /api/v1/post/deep_report          
sec_key = 9cbf8a4dcb8e30682b927f352d6559a0  
  • status 是否启动 Api 1 启动 0 关闭
  • web_url Api WEB蜜罐的路径
  • deep_url Api 暗网蜜罐的路径
  • sec_key 走接口上报,生产请修改 KEY

WEB Demo

URL: http://WEB蜜罐地址/api/v1/post/report

POST:

    name    :   WEB管理后台蜜罐                     # 项目名
    info    :   admin&&12345                      # 上报信息,&& 为换行符号
    sec_key :   9cbf8a4dcb8e30682b927f352d6559a0  # API 安全密钥

特殊说明:

    URL api/v1/post/report 可在 config.ini 配置里修改
    sec_key 可在 config.ini 配置里修改,修改后 WEB 模板也需要同时修改

暗网 Demo

URL: http://暗网蜜罐地址/api/v1/post/deep_report

POST:

    name    :   暗网后台蜜罐                        # 项目名
    info    :   admin&&12345                      # 上报信息,&& 为换行符号
    sec_key :   9cbf8a4dcb8e30682b927f352d6559a0  # API 安全密钥

特殊说明:

    URL api/v1/post/deep_report 可在 config.ini 配置里修改
    sec_key 可在 config.ini 配置里修改,修改后 暗网 模板也需要同时修改

黑名单 IP

提供此接口为了配合防火墙使用,具体方案欢迎来讨论!

URL(Get): http://localhost:9001/api/v1/get/ip  

获取全部钓鱼信息

URL(Get): http://localhost:9001/api/v1/get/fish_info

返回数据格式:

  {
      code: 200,
      data: [
          {
              agent: "本机",
              city: "",
              country: "本机地址",
              create_time: "2019-08-26 21:29:00",
              id: 224,
              info: "127.0.0.1:51548 已经连接&&stats&&&&set foo 0 6",
              ip: "127.0.0.1",
              project_name: "MemCache蜜罐",
              region: "本机地址",
              type: "MEMCACHE"
          }, 
      ],
      msg: "success"
  }
字段 说明
id 数据库唯一标识
project_name 项目名称
type 类型
agent 集群名称
ip IP 地址
country 国家
region 省份/地区
city 城市
info 上钩信息
create_time 上钩时间

具体详情请到官网查看。。。

蜜罐的定义
首先我们要弄清楚一台蜜罐和一台没有任何防范措施的计算机的区别,虽然这两者都有可能被入侵破坏,但是本质却完全不同,蜜罐是网络管理员经过周密布置而设下的“黑匣子”,看似漏洞百出却尽在掌握之中,它收集的入侵数据十分有价值;而后者,根本就是送给入侵者的礼物,即使被入侵也不一定查得到痕迹……因此,蜜罐的定义是:“蜜罐是一个安全资源,它的价值在于被探测、攻击和损害。”
设计蜜罐的初衷就是让黑客入侵,借此收集证据,同时隐藏真实的服务器地址,因此我们要求一台合格的蜜罐拥有这些功能:发现攻击、产生警告、强大的记录能力、欺骗、协助调查。另外一个功能由管理员去完成,那就是在必要时候根据蜜罐收集的证据来起诉入侵者。
涉及的法律问题
蜜罐是用来给黑客入侵的,它必须提供一定的漏洞,但是我们也知道,很多漏洞都属于“高危”级别,稍有不慎就会导致系统被渗透,一旦蜜罐被破坏,入侵者要做的事情是管理员无法预料的。例如,一个入侵者成功进入了一台蜜罐,并且用它做“跳板”(指入侵者远程控制一台或多台被入侵的计算机对别的计算机进行入侵行为)去攻击别人,那么这个损失由谁来负责?设置一台蜜罐必须面对三个问题:设陷技术、隐私、责任。
设陷技术关系到设置这台蜜罐的管理员的技术,一台设置不周全或者隐蔽性不够的蜜罐会被入侵者轻易识破或者破坏,由此导致的后果将十分严重。
由于蜜罐属于记录设备,所以它有可能会牵涉到隐私权问题,如果一个企业的管理员恶意设计一台蜜罐用于收集公司员工的活动数据,或者偷偷拦截记录公司网络通讯信息,这样的蜜罐就已经涉及法律问题了。
对于管理员而言,最倒霉的事情就是蜜罐被入侵者成功破坏了。有人也许会认为,既然蜜罐是故意设计来“牺牲”的,那么它被破坏当然合情合理,用不着小题大做吧。对,蜜罐的确是用来“受虐”的,但是它同时也是一台连接网络的计算机,如果你做的一台蜜罐被入侵者攻破并“借”来对某大学服务器进行攻击,因此引发的损失恐怕只能由你来承担了。还有一些责任是谁也说不清的,例如,你做的一台蜜罐不幸引来了Slammer、Sasser、Blaster等大名鼎鼎的“爬虫类”病毒而成了传播源之一,那么这个责任谁来负担。

蜜罐类型:

世界上不会有非常全面的事物,蜜罐也一样。根据管理员的需要,蜜罐的系统和漏洞设置要求也不尽相同,蜜罐是有针对性的,而不是盲目设置来无聊的,因此,就产生了多种多样的蜜罐……
实系统蜜罐
实系统蜜罐是最真实的蜜罐,它运行着真实的系统,并且带着真实可入侵的漏洞,属于最危险的漏洞,但是它记录下的入侵信息往往是最真实的。这种蜜罐安装的系统一般都是最初的,没有任何SP补丁,或者打了低版本SP补丁,根据管理员需要,也可能补上了一些漏洞,只要值得研究的漏洞还存在即可。然后把蜜罐连接上网络,根据目前的网络扫描频繁度来看,这样的蜜罐很快就能吸引到目标并接受攻击,系统运行着的记录程序会记下入侵者的一举一动,但同时它也是最危险的,因为入侵者每一个入侵都会引起系统真实的反应,例如被溢出、渗透、夺取权限等。
伪系统蜜罐
什么叫伪系统呢?不要误解成“假的系统”,它也是建立在真实系统基础上的,但是它最大的特点就是“平台与漏洞非对称性”。
大家应该都知道,世界上操作系统不是只有Windows一家而已,在这个领域,还有Linux、Unix、OS2、BeOS等,它们的核心不同,因此会产生的漏洞缺陷也就不尽相同,简单的说,就是很少有能同时攻击几种系统的漏洞代码,也许你用LSASS溢出漏洞能拿到Windows的权限,但是用同样的手法去溢出Linux只能徒劳。根据这种特性,就产生了“伪系统蜜罐”,它利用一些工具程序强大的模仿能力,伪造出不属于自己平台的“漏洞”,入侵这样的“漏洞”,只能是在一个程序框架里打转,即使成功“渗透”,也仍然是程序制造的梦境——系统本来就没有让这种漏洞成立的条件,谈何“渗透”?实现一个“伪系统”并不困难,Windows平台下的一些虚拟机程序、Linux自身的脚本功能加上第三方工具就能轻松实现,甚至在Linux/Unix下还能实时由管理员产生一些根本不存在的“漏洞”,让入侵者自以为得逞的在里面瞎忙。实现跟踪记录也很容易,只要在后台开着相应的记录程序即可。
这种蜜罐的好处在于,它可以最大程度防止被入侵者破坏,也能模拟不存在的漏洞,甚至可以让一些Windows蠕虫攻击Linux——只要你模拟出符合条件的Windows特征!但是它也存在坏处,因为一个聪明的入侵者只要经过几个回合就会识破伪装,另者,编写脚本不是很简便的事情,除非那个管理员很有耐心或者十分悠闲。



扫描二维码分享到微信

网络安全培训
培训请联系微信:

18622800700