此博客仅摘抄重要内容,如有其他需求请移步:原文
[HFish设计理念]
HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的能力。
HFish具有超过40种蜜罐环境、提供免费的云蜜网、可高度自定义的蜜饵能力、一键部署、跨平台多架构、国产操作系统和CPU支持、极低的性能要求、邮件/syslog/webhook/企业微信/钉钉/飞书告警等多项特性,帮助用户降低运维成本,提升运营效率。
[为什么选择HFish]
-
免费、简单、安全的蜜罐产品
蜜罐通常被定义为具有轻量级检测能力、低误报率的检测产品,同时它也是企业生产本地威胁情报的优质来源之一。HFish可以帮助中小型企业用户在日常安全运营中进行避免告警洪水、低成本的增加威胁感知和情报生产能力。目前,社区的力量正在不断帮助HFish完善自身,共同探索欺骗防御的最佳实践。
-
安全、敏捷的威胁感知节点
HFish被广泛应用于感知办公内网、生产环境、云内网及其他环境失陷主机横向移动、员工账号外泄、扫描和探测行为、私有情报生产甚至内部演练和安全意识培训,HFish的多种告警输出形式与态感、NDR、XDR或日志平台结合,极大拓展检测视野。
[HFish架构]
HFish采用B/S架构,系统由管理端和节点端组成,管理端用来生成和管理节点端,并接收、分析和展示节点端回传的数据,节点端接受管理端的控制并负责构建蜜罐服务。
在HFish中,管理端只用于数据的分析和展示,节点端进行虚拟蜜罐,最后由蜜罐来承受攻击。
在最小化测试的情况,您可以直接通过安装管理端,通过管理端内的内置节点,直接进行蜜罐服务测试。
[蜜罐的定义]
蜜罐 技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务 或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获 和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
[蜜罐的优势]
误报少,告警准确
蜜罐作为正常业务的 “影子” 混淆在网络中,正常情况下不应被触碰,每次触碰都可以视为威胁行为。例如,在其它检测型产品中,将正常请求误判为攻击行为的误报很常见,而对于蜜罐来说,几乎不存在正常请求,即使有也是探测行为。
检测深入,信息丰富
不同于其它检测型安全产品,蜜罐可以模拟业务服务甚至对攻击的响应,完整获取整个交互的所有内容,最大深度的获得攻击者探测行为之后的N个步骤,可检测点更多,信息量更大。
例如,对于SSL加密 或工控环境,蜜罐可以轻松伪装成业务,得到完整攻击数据。
主动防御,预见未来,生产情报
在每个企业,几乎每分钟都在发生这样的场景:潜伏在互联网角落中的攻击者发起一次攻击探测,防守方业务不存在安全漏洞,IDS告警后事情就不了了之了。
而应用蜜罐型产品后,转换为主动防御思路: 蜜罐响应了攻击探测,诱骗攻击者认为存在漏洞,进而发送了更多指令,包括从远端地址下载木马程序,而这一切不仅被完整记录下来,还可以转化为威胁情报供给传统检测设备,用于在未来的某个时刻,准确检测主机失陷。
可以发现,转换为主动防护思路后,威胁检测由针对单次、多变的攻击上升到应用威胁情报甚至TTPs检测。
环境依赖少,拓展视野
由于是融入型安全产品,蜜罐不需要改动现有网络结构,并且很多蜜罐是软件形态,对各种虚拟和云环境非常友好,部署成本低。 蜜罐可以广泛部署于云端和接入交换机下游末梢网络中,作为轻量级探针,将告警汇聚到态势感知或传统检测设备中分析和展示。
[蜜罐与情报]
显而易见蜜罐 是非常准确、稳定和恰当的情报感知探针。 蜜罐最大的价值是诱使攻击者展示其能力和资产,再配合误报少,信息丰富等一系列优势,配合态势感知或本地情报平台可以稳定生产私有威胁情报。
[HFish特点]
HFish当前具备如下几个特点:
- 安全可靠:主打低中交互蜜罐,简单有效;
- 功能丰富:支持基本网络 服务、OA系统、CRM系统、NAS存储系统、Web服务器、运维平台、无线AP、交换机/路由器、邮件系统、IoT设备等40多种蜜罐服务,支持用户制作自定义Web蜜罐,支持用户进行流量牵引到云蜜网、可开关的扫描感知能力、支持可自定义的蜜饵配置;
- 开放透明:支持对接微步在线X社区API、五路syslog输出、支持邮件、钉钉、企业微信、飞书、自定义WebHook告警输出;
- 快捷管理:支持单个安装包批量部署,支持批量修改端口和服务;
- 跨平台:支持Linux x32/x64/ARM、Windows x32/x64平台、国产操作系统、龙芯、海光、飞腾、鲲鹏、腾云、兆芯硬件
[常见蜜罐场景]
[HFish典型应用场景]
内网办公/内部服务器失陷检测场景
痛点:
由于设备外带、USB设备接入、员工下载非法软件、客户端漏洞、VPN账号失窃、恶意员工等众多原因导致内部办公或内部服务器失陷,攻击者和蠕虫木马在内网肆无忌惮的横向移动。
解决方法:
该场景是蜜罐在企业环境 最常见 的使用方法,用来捕捉内网已经失陷、勒索软件和恶意行为,重点在于 敏捷准确,具体可细分为 内部办公场景 和 内部服务器场景,
内部办公场景:蜜罐被部署在企业内部办公网区,用于 感知内网失陷主机、勒索软件扫描或恶意员工内网刺探行为 ,常见模板可设置为监听tcp/135、139、445和3389等服务。
内部服务器场景:蜜罐被部署在企业内部服务器区,用于 感知内网失陷和横向移动,常见模板可以设置为模拟Web、MySQL、Redis、Elasticsearch、SSH、Telnet等服务。
外网风险感知和情报生产场景
痛点:
大量业务上云,传统防火墙、IDS、IPS、NDR无法上云或上云后功能受限,最终导致安全感知能力极度弱化。开源情报质量差,大量无效告警,半自动化处置无法落地。
解决方案:
该场景一般是将节点部署在互联网区,用来感知互联网来自自动化蠕虫、竞争对手和境外的 真实威胁,甚至发现针对客户的 0day攻击,通过和具有情报生产能力的 情报平台 对接,可以稳定准确的生产私有威胁情报。
另外,需要注意,该场景会捕捉到 大量真实攻击行为 ,在部署蜜罐之前建议将蜜罐加入网络检测设备白名单中避免产生误报。
云环境风险感知场景
由于云环境特殊性,云上 匮乏 流量检测类安全产品,此外企业防守者需要频繁切换查看本地安全设备的告警与云端有限安全设备的告警。
而通过在云端部署蜜罐产品,应用蜜罐 吸引部分攻击,保护真实业务,并且企业防守者可以通过蜜罐感知到 云上威胁的强度和方式,不至于对安全现状一无所知,最后通过 蜜罐产品的API 和 本地态势感知或检测设备 打通,实现防守者通过一个平台 统一管理。
云蜜网低风险感知真实威胁
在用户本地网络中构建高交互蜜罐存在一定安全风险,过度的高交互蜜罐甚至可以被攻击者控制作为跳板。
HFish主打安全可靠实用中低交互蜜罐的同时,开创性的在云端构建全免费的云蜜网,通过本地蜜罐将指定流量转发到云蜜网,用户无需承担风险,仍能获取攻击者详细信息。
员工账号密码资产遗失感知场景
员工账号密码资产遗失对于企业来说都是 致命隐患,安全团队如何感知是当下一个空白。
企业可将常见的对外服务例如vpn.company.com或hr.company.com 替换成蜜罐,通过监控试图登录的账号判断是否为 内部员工账号,并实时通知安全团队和该员工,敦促其尽快修改密码。
企业安全意识培训场景
在企业安全工作中,员工 安全意识问题 常常被忽略,而对于攻击者,搜集员工信箱批量发送钓鱼或木马病毒链接只要有一个成功即可突破辛苦构建的企业安全防线。
使用开源的钓鱼邮件工具和 Web蜜罐自定义能力,可以快速、低成本的组装 企业安全意识培训平台。
[常见内网部署方式]
内网办公/内部服务器失陷检测场景
[痛点:]
由于设备外带、USB设备接入、员工下载非法软件、客户端漏洞、VPN账号失窃、恶意员工等众多原因导致内部办公或内部服务器失陷,攻击者和蠕虫木马在内网肆无忌惮的横向移动。
[推荐部署位置]
HFish的节点端和管理端只需要单向联通,节点端可以访问管理端的4434端口即可
我们建议管理端部署在可以被尽可能多的网段访问的区域,例如:内部IDC。
4434是数据传输的默认端口,如果要修改改端口,请进入持久化配置 linux和docker:usr/share/hfish/config,windows为C:\Users\Public\hfish,修改后重启hfish-server进程
[内网部署注意事项:]
-
节点部署个数
建议节点的覆盖程度密集更好,在每个网段内建议有两个节点,在网段头和网段尾部署。
-
节点部署的网络要求
节点本身的部署与vlan无关,只要保证攻击者在进入任何一台内网的机器并进行扫描时,都可以访问节点就可以。
- 节点防火墙要求
所有需要开启蜜罐服务的端口防火墙都需要开放。例如这个节点上开启了ssh(22端口)、mysql(3306端口)蜜罐,那么该节点的22和3306端口都要在防火墙上打开。
[内网推荐功能]
-
[攻击列表(重要) ]
可以查看所有蜜罐被攻击的记录。
-
[扫描感知]
扫描感知的功能原理为网卡监听,即使在端口上没有部署蜜罐的情况下,有人连接节点机器的任意一个端口的记录的请求,扫描感知功能都会记录下来。
如果内网部署在纯净机器上(即全新机器只给hfish节点),那么强烈推荐通过扫描感知进行1-65535全端口的感知。
但如果说机器上本身有其他业务,那么这个时候也会记录正常业务的连接
如果要定向对端口做监听,请使用「TCP端口监听服务」
-
[失陷感知]
该页面是利用已经播撒的蜜饵实现对业务主机失陷感知威胁,用户可以在该页面生成蜜饵,并观测蜜饵被触碰状态。
-
[告警配置]
对于蜜罐捕获到的信息,跟据您不同的安全运营流程,您可能需要把该信息第一时间通知其它的安全设备,也可能需要把该信息通知给相关的安全运营人员。
[HFish支持的部署主机]
HFish采用B/S架构,系统由管理端和节点端组成,管理端用来生成和管理节点端,并接收、分析和展示节点端回传的数据,节点端接受管理端的控制并负责构建蜜罐服务。
Windows | Linux X86 | |
---|---|---|
管理端(Server) | 支持64位 | 支持64位 |
节点端(Client) | 支持64位和32位 | 支持64为和32位 |
[HFish内网所需配置]
通常来说部署在内网的蜜罐,对性能的要求较低,接入公网的蜜罐会有更大的性能需求。
针对过往测试情况,我们给出两个配置。注意,如果您的蜜罐部署在互联网,会遭受到较大攻击流量,建议提升主机的配置。
管理端 | 节点端 | |
---|---|---|
建议配置 | 2核4g200G | 1核2g50G |
最低配置 | 1核2g100G | 1核1g50G |
注意:日志磁盘占用情况受攻击数量影响较大,建议管理端配置200G以上硬盘空间。
[HFish外网所需配置(必须更换mysql数据库)]
通常说接入公网的蜜罐会有更大的性能需求。
针对过往测试情况,我们给出两个配置。注意,如果您的蜜罐部署在互联网,会遭受到较大攻击流量,建议提升主机的配置。
管理端(必须更换mysql数据库) | 节点端 | |
---|---|---|
建议配置 | 5个节点以内,4核8g200G。 | 1核2g50G |
最低配置 | 2核4g100G | 1核1g50G |
注意:日志磁盘占用情况受攻击数量影响较大,建议管理端配置200G以上硬盘空间。
[部署权限要求]
管理端对root权限的需求
- 如果使用官网推荐的install.sh脚本安装,需要root权限,安装目录会位于opt目录下;
- 如果下载安装包手动安装,在默认使用SQLite数据库情况下,管理端的部署和使用不需要root权限,但如果要替换SQLite改为MySQL数据,则MySQL安装和配置需要root权限;
节点端对root权限的需求
节点端安装和运行无需root权限,但是由于操作系统限制,非root权限运行的节点无法监听低于tcp/1024的端口;
[联网环境,一键安装]
特别注意:Centos 是我们的原生开发和主力测试系统,我们最优推荐各位使用Centos系统进行安装。
当前HFish启动后会有两个进程,其中"hfish"进程为管理进程,负责监测、拉起和升级蜜罐主程序,"管理端"进程为蜜罐主程序进程,其执行蜜罐软件程序。` `Linux版本HFish管理端数据库及配置文件都存储在 /usr/share/hfish 目录下,重装时会自动读取目录下的配置和数据。
如果您部署的环境为Linux,且可以访问互联网。我们为您准备了一键部署脚本进行安装和配置,在使用一键脚本前,请先配置防火墙
请防火墙开启4433、4434,确认返回success(如之后蜜罐服务需要占用其他端口,可使用相同命令打开。)
firewall-cmd --add-port=4433/tcp --permanent #(用于web界面启动)
firewall-cmd --add-port=4434/tcp --permanent #(用于节点与管理端通信)
firewall-cmd --reload复制失败成功
使用root用户,运行下面的脚本。
bash <(curl -sS -L https://hfish.net/webinstall.sh)复制失败成功
完成安装
登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021复制失败成功
如果管理端的ip是192.168.1.1,登陆链接为:https://192.168.1.1:4433/web/
安装完成后,HFish会自动在管理端上创建一个节点。可进行登录后,在「节点管理」列表中进行查看。
[无法联网,手动安装]
特别注意:Centos是我们的原生开发和主力测试系统,我们最优推荐各位使用
Centos系统进行安装。
如果您的环境无法联网,可以尝试手动安装。
第一步:下载安装包:HFish-Linux-amd64 ( Linux x86 架构 64 位系统)
按如下步骤进行安装 (以Linux 64位系统为例):
[第二步: 在当前目录创建一个路径解压安装包]
mkdir hfish复制失败成功
[第三步:将安装文件包解压到hfish目录下]
tar zxvf hfish-3.1.4-linux-amd64.tgz -C hfish复制失败成功
[第四步:请防火墙开启4433、4434和7879,确认返回success(如果有其他服务需要打开端口,使用相同命令打开。]
firewall-cmd --add-port=4433/tcp --permanent (用于web界面启动)
firewall-cmd --add-port=4434/tcp --permanent (用于节点与管理端通信)
firewall-cmd --reload复制失败成功
[第五步:进入安装目录直接运行install.sh]
cd hfish
sudo ./install.sh复制失败成功
[第六步:登陆web界面]
登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021复制失败成功
如果管理端的ip是192.168.1.1,登陆链接为:https://192.168.1.1:4433/web/
在安装完成后,HFish会自动在管理端上创建一个节点。可在节点管理进行查看。
特别注意:
如果部署节点在外网,可能会出现tcp连接超过最大连接数限制(1024个),导致其他连接被拒绝的情况。在这种情况下,可以手动放开机器tcp最大连接数。
参考解决链接
https://www.cnblogs.com/lemon-flm/p/7975812.html
[网络要求]
HFish管理端会主动访问如下网络域名
HFish支持IPv4和IPv6地址环境,可以在完全隔离互联网的内部网络工作,但为了最大限度感知真实威胁和对接云端接口消费威胁情报,以及接受自动化升级服务,微步在线强烈建议客户允许HFish管理端访问互联网,为兼顾安全性和服务可用性,推荐用户仅允许HFish管理端主动访问如下网络域名、地址和端口:
开放IP | 对应开放域名 | 协议/端口 | 访问目的 |
---|---|---|---|
106.75.31.212、106.75.71.108 | api.hfish.net(禁ping,需要telnet端口) | TCP/443 | 用于官网升级功能与用于攻击数据拉取,建议开启 |
106.75.5.50、106.75.15.34 | zoo.hfish.net(禁ping,需要telnet端口) | TCP/22222(高交互ssh端口)、TCP/22223(高交互Telnet端口) | 用于与云端高交互蜜罐进行通信,建议开启 |
43.227.197.203、43.227.197.42 | hfish.cn-bj.ufileos.com | TCP/443 | 用于分发安装和升级包 |
106.75.36.224、123.59.51.113、123.59.72.253、106.75.36.226 | api.threatbook.cn | TCP/443 | 用于威胁情报查询,如果未启用该功能,无需开放 |
(过多且变化,暂不罗列,建议直接放通域名) | open.feishu.cn | TCP/443 | 用于飞书告警功能,如果未使用该功能,无需开放 |
(过多且变化,暂不罗列,建议直接放通域名) | oapi.dingtalk.com | TCP/443 | 用于钉钉告警功能,如果未使用该功能,无需开放 |
(过多且变化,暂不罗列,建议直接放通域名) | qyapi.weixin.qq.com | TCP/443 | 用于企业微信告警功能,如果未使用该功能,无需开放 |
注意:
1. HFish管理端仅需要通过NAT模式访问互联网,基于安全考虑,不建议用户将HFish管理端管理端口TCP/4433暴露在互联网;
2. 如果使用邮件通知,请开启相应邮件服务器的访问权限;
3. HFish支持 5 路syslog日志发送,便于与安全设备联动,请根据实际情况开放权限;复制失败成功
[安全配置]
[管理端安全要求]
管理端应部署在安全区,只向少部分有网络管理权限和安全分析能力工作的人员和设备开放Web和SSH端口
管理端用于配置管理的Web页面开启了https,默认访问端口为TCP/4433,端口和登录URL,可以在config.ini中自行配置。 如果管理端主机地址为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端口;