HFish蜜罐的介绍和简单测试(一)
目录
0、什么是蜜罐
0.1、蜜罐的定义
0.2、蜜罐的优势
0.3、蜜罐与情报
1、HFish介绍
1.1、设计理念
1.2、HFish架构
1.3、HFish特点
1.4、常见蜜罐场景
2、快速部署
2.1、环境要求
2.2、联网环境,一键安装
2.3、安装效果
3、错误排查
3.1、管理端问题
3.1、节点问题
3.3、蜜罐服务问题
0、什么是蜜罐
0.1、蜜罐的定义
蜜罐 技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务 或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获 和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
0.2、蜜罐的优势
误报少,告警准确
蜜罐作为正常业务的 "影子" 混淆在网络中,正常情况下不应被触碰,每次触碰都可以视为威胁行为。例如,在其它检测型产品中,将正常请求误判为攻击行为的误报很常见,而对于蜜罐来说,几乎不存在正常请求,即使有也是探测行为。
检测深入,信息丰富
不同于其它检测型安全产品,蜜罐可以模拟业务服务甚至对攻击的响应,完整获取整个交互的所有内容,最大深度的获得攻击者探测行为之后的N个步骤,可检测点更多,信息量更大。
例如,对于SSL加密 或工控环境,蜜罐可以轻松伪装成业务,得到完整攻击数据。
主动防御,预见未来,生产情报
在每个企业,几乎每分钟都在发生这样的场景:潜伏在互联网角落中的攻击者发起一次攻击探测,防守方业务不存在安全漏洞,IDS告警后事情就不了了之了。
而应用蜜罐型产品后,转换为主动防御思路: 蜜罐响应了攻击探测,诱骗攻击者认为存在漏洞,进而发送了更多指令,包括从远端地址下载木马程序,而这一切不仅被完整记录下来,还可以转化为威胁情报供给传统检测设备,用于在未来的某个时刻,准确检测主机失陷。
可以发现,转换为主动防护思路后,威胁检测由针对单次、多变的攻击上升到应用威胁情报甚至TTPs(Tactics,Techniques, and Procedures)检测。
*失陷指标(Indicators of Compromise,IOC)
环境依赖少,拓展视野
由于是融入型安全产品,蜜罐不需要改动现有网络结构,并且很多蜜罐是软件形态,对各种虚拟和云环境非常友好,部署成本低。 蜜罐可以广泛部署于云端和接入交换机下游末梢网络中,作为轻量级探针,将告警汇聚到态势感知或传统检测设备中分析和展示。
0.3、蜜罐与情报
显而易见蜜罐 是非常准确、稳定和恰当的情报感知探针。 蜜罐最大的价值是诱使攻击者展示其能力和资产,再配合误报少,信息丰富等一系列优势,配合态势感知或本地情报平台可以稳定生产私有威胁情报。
1、HFish介绍
1.1、设计理念
HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的能力。
HFish具有超过40种蜜罐环境、提供免费的云蜜网、可高度自定义的蜜饵能力、一键部署、跨平台多架构、国产操作系统和CPU支持、极低的性能要求、邮件/syslog/webhook/企业微信/钉钉/飞书告警等多项特性,帮助用户降低运维成本,提升运营效率。
1.2、HFish架构
HFish采用B/S架构,系统由管理端和节点端组成,管理端用来生成和管理节点端,并接收、分析和展示节点端回传的数据,节点端接受管理端的控制并负责构建蜜罐服务。
在HFish中,管理端只用于数据的分析和展示,节点端进行虚拟蜜罐,最后由蜜罐来承受攻击。
在最小化测试的情况,您可以直接通过安装管理端,通过管理端内的内置节点,直接进行蜜罐服务测试。
1.3、HFish特点
HFish当前具备如下几个特点:
-
安全可靠:主打低中交互蜜罐,简单有效;
-
功能丰富:支持基本网络 服务、OA系统、CRM系统、NAS存储系统、Web服务器、运维平台、无线AP、交换机/路由器、邮件系统、IoT设备等40多种蜜罐服务,支持用户制作自定义Web蜜罐,支持用户进行流量牵引到云蜜网、可开关的扫描感知能力、支持可自定义的蜜饵配置;
-
开放透明:支持对接微步在线X社区API、五路syslog输出、支持邮件、钉钉、企业微信、飞书、自定义WebHook告警输出;
-
快捷管理:支持单个安装包批量部署,支持批量修改端口和服务;
-
跨平台:支持Linux x32/x64/ARM、Windows x32/x64平台、国产操作系统、龙芯、海光、飞腾、鲲鹏、腾云、兆芯硬件。
1.4、常见蜜罐场景
2、快速部署
2.1、环境要求
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的端口;
2.2、联网环境,一键安装
特别注意: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
2.3、安装效果
本次测试使用Linux下联网环境安装,其他环境安装请参考官方手册。
测试环境是我的VPS。
选择1,安装和运行HFish
等待安装完毕。
配置VPS的防火墙后可以打开管理界面(注意url后写全部包括web)
自己测试使用SQLite数据库。
首先修改密码,因为部署在互联网。
登录以后可以看到节点状态和攻击状态
3、错误排查
3.1、管理端问题
管理端部署完成后,访问Web管理页面始终无法打开
解决办法:
1、确认浏览器访问地址是 https://[server]:4433/web/,注意不可缺少“/web/”这个路径
2、确认管理端进程的运行情况和TCP/4433端口开放情况,如果不正常需要重启管理端进程
# 检查 hfish-server的进程是否运行正常
ps ax | grep ./hfish | grep -v grep
# 检查TCP/4433端口是否正常开放
ss -ntpl
3、检查管理端主机是否开启了防火墙,导致目前无法访问,必要情况,考虑关闭防火墙
#centos7 检查防火墙状态systemctl status firewalld#centos7 检查防火墙开放端口firewall-cmd --list-ports
4、Linux环境使用date命令确认系统时间的准确
5、如果以上都没有问题,请将server和client日志提供给我们
节点端日志在安装目录的logs文件夹内,文件名为client.log
Linux管理端日志在/usr/share/hfish/log文件夹内,文件名为server.log
Windows管理端日志在C:\Users\Public\hfish\log文件夹内,文件名为server.log
3.1、节点问题
节点状态为红色离线
解决办法:
1、检查节点到管理端的网络连通情况,以下是几种常见情况
节点每60秒连接管理端的TCP/4434端口一次,180秒内连接不上即显示为离线。
刚完成部署或网络不稳定的时候会出现显示为离线。
通常情况,等待2~3分钟,如果节点恢复绿色在线,那蜜罐服务也会从绿色启用,变成绿色在线。
2、如果确认网络访问正常,节点在管理端上始终离线,需要检查节点上的进程运行情况。如果进程运行异常,需要杀死全部关联进程后,重启进程,并记录错误日志。
# 检查./client的进程是否运行正常
ps ax | grep -E 'services|./client' | grep -v grep
如果以上都没有问题,请将server和client日志提供给我们
节点端日志在安装目录的logs目录内,文件名为client.log
Linux管理端日志在/usr/share/hfish/log文件夹内,文件名为server.log
Linux管理端日志在C:\Users\Public\hfish\log文件夹内,文件名为server.log
Linux节点端后台运行方案:
nohup .~/client >>nohup.out 2>&1 &
Linux开机自启动方案
echo 'nohup .~/client >>nohup.out 2>&1 &' >> /etc/rc.local
Linux定时任务方案
echo '* * * * * nohup .~/client >>nohup.out 2>&1 &' >> /var/spool/cron/crontabs/root
3.3、蜜罐服务问题
节点在线,部分蜜罐服务在线,部分蜜罐服务离线
可通过触碰状态旁边的问号,确认离线原因。
bind:address already in use解决办法:
该报错情况往往是因为端口冲突
这个问题常见默认22端口的SSH服务,刚启动client的时候服务在线,过了一会儿后服务离线。
使用ss -ntpl命令检查该蜜罐服务的端口是否被占用?如果被占用,建议修改该业务的默认端口。
Windows操作系统上,如果用户启用了tcp端口监听,大概率会发现TCP 135、139、445、3389端口冲突,
这是用于Windows默认占用了这些端口,不建议在Windows上监听TCP 135、139、445、3389端口。
Linux操作系统端口冲突解决方案:
lsof -i:[port]
kill [pin]
重新启用该端口的蜜罐
**变更服务模板后,蜜罐新服务访问不到 **
在HFish当前的产品结构中,管理端**永远不会**主动连接节点进行节点配置的变更。
管理端仅负责生成一个配置,等待节点每60秒尝试连接管理端拉取。
蜜罐服务被攻击的结果,会实时上报到管理端。
=========================================================
以上内容大部分参考HFish官方文档,本篇是介绍和安装,下篇计划更新详细使用。
相关文章:

HFish蜜罐的介绍和简单测试(一)
目录 0、什么是蜜罐 0.1、蜜罐的定义 0.2、蜜罐的优势 0.3、蜜罐与情报 1、HFish介绍 1.1、设计理念 1.2、HFish架构 1.3、HFish特点 1.4、常见蜜罐场景 2、快速部署 2.1、环境要求 2.2、联网环境,一键安装 2.3、安装效果 3、错误排查 3.1、管理端问题…...
2023面试题汇总二
一、CSS面试题 1. 清除浮动的方式有哪些? 为什么要清除浮动?因为浮动的盒子脱离标准流,如果父盒子没有设置高度的话,下面的盒子就会撑上来。 额外标签法(在最后一个浮动标签后,新加一个标签,给其设置cle…...
C# 支付宝接口在线收款退款
收款 在C#中使用支付宝在线支付功能,需要使用支付宝开放平台提供的SDK(软件开发工具包),通过SDK中提供的API(应用程序接口)实现在线支付功能。 以下是使用C#实现支付宝在线支付的大致步骤: 获…...

python例程:《企业编码生成系统》程序
目录《企业编码生成系统》程序使用说明主要代码演示源码及说明文档下载路径《企业编码生成系统》程序使用说明 在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时,只需…...
基于EB工具的TC3xx_MCAL配置开发04_ADC模块软件触发Demo配置
目录 1.概述2. EB配置2.1 添加HwUnit2.2 AdcPrescale配置2.3 添加ADC通道2.4 添加Adc Group2.5 Adc Group配置2.5.1 AdcGroup->General2.5.2 AdcGroup->AdcNotification2.5.3 AdcGroup->AdcGroupDefinition2.5.4 AdcGroup->AdcResRegDefinition2.6 中断配置1.概述 …...

内存操作函数
前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨未来…...

免费搭建个人博客
免费搭建个人博客,并发布到公网 利用hexo搭建个人博客,通过gitee的pages发布到公网 1 前置准备 安装git、安装node.js(尽量选择长期支持的版本) node.js官网:https://nodejs.org/en/ git官网:https://git-scm.com/book/zh/v2 安装…...

【Vue全家桶】详解Vue Router(一)
【Vue全家桶】Vue Router详解(一) Vue系列文章目录: 内容参考链接Vue(一)【Vue全家桶】邂逅Vue、Vue的多种引入方式Vue(二)【Vue全家桶】声明式编程、MVVMVue(三)【Vue…...

9大 HIVE SQL 最频繁被问到的面试题
SQL是用于数据分析和数据处理的最重要的编程语言之一,因此与数据科学相关的工作(例如数据分析师、数据科学家和数据工程师)在面试时总会问到关于 SQL 的问题。 SQL面试问题旨在评估应聘者的技术和解决问题的能力。因此对于应聘者来说&#x…...

学大数据算跟风吗?
随着互联网、物联网和人工智能等技术的不断发展,大数据技术逐渐进入人们的视野,成为一个备受关注的热点话题。那么,大数据专业好学吗?前景如何?下面我们来一起探讨一下。 一、大数据专业的学习难度 大数据技术是一种综…...

[C#]关于ListBox的坑
在用C#写个Demo程序的时候,使用ListBox保存读取到的每行内容。然后在重复读取的时候需要清除ListBox中的内容,我看到ListBox有清除的函数:lsbFiles.Items.Clear();以为这个函数就可以解决所有的问题,但是....于是想了个方法准备一…...

Apache POI 入门·第一话
文章目录1 摘要2 Apache POI2.1 介绍2.2 应用场景2.3 入门案例2.3.1 将数据写入Excel文件2.3.1.1 导入POI maven坐标2.3.1.2 代码开发2.3.1.3 实现效果2.3.2 读取Excel文件中的数据2.3.3 实现效果2.4 开发案例——导出运营数据Excel报表2.4.1 产品原型2.4.2 接口设计2.4.3 代码…...

8个python自动化脚本提高打工人幸福感~比心~
人生苦短,我用Python 最近有许多打工人都找我说打工好难 每天都是执行许多重复的任务, 例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等, 使用自动化脚本,就无需手动一次又一次地完成这些任务, 非常方便…...

【嵌入式烧录/刷写文件】-1-详解Motorola S-record(S19/SREC/mot/SX)格式文件
目录 1 什么是Motorola S-record 2 Motorola S-record的格式 2.1 Motorola S-record的结构 2.1.1 “Record type记录类型”的说明 2.1.2 “Record length记录长度”的说明 2.1.3 如何计算“Checksum校验和” 2.2 Record order记录顺序 2.3 Text line terminator文本行终…...

图形视图界面 图形效果
Qt的标准图形效果类: QGraphicsBlurEffect提供模糊效果QGraphicsColorizeEffect提供染色效果QGraphicsDropShadowEffect提供阴影效果QGraphicsOpacityEffect提供透明效果 QGraphicsBlurEffect(模糊效果) 模糊效果会模糊源。此效果对于减少细…...
ElementUI学习笔记
目录 一、简单介绍 二、安装 1、下载 2、引入 三、布局 1、简介 2、使用 3、好处 四、布局容器 1、常见排布 2、调整样式 五、按钮 1、简单引用 2、改变样式 3、加载中效果 六、表格 1、简单使用 2、样式修改 七、对话框 1、简单使用 2、添加自定义内容 3、…...

安装KVM并创建虚拟机及基本使用
#环境说明:Centos7 环境准备: CPU开启虚拟化,给宿主机的CPU和内存分配足够多的配置 安装KVM 1.安装相关软件包 yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer 软件包简介: qemu-kvm: 为kvm提供…...

一种LCD屏闪问题的调试
背景 项目使用ESP32-S3 RGB接口驱动的LCD, 框架 idf-v5.0, LVGL-v7.11 显示画面正常, 但肉眼可见的像是背光在闪烁, 背光电路是应用很久的经典电路, 且排查背光驱动无错, 但开机一段时间后, 闪烁会明显减轻 记录 这块屏的显示驱动芯片为ST7701S, 查看芯片手册有说明特定的上…...

Java程序运行在Docker等容器环境有哪些新问题?
第30讲 | Java程序运行在Docker等容器环境有哪些新问题? 如今,Docker 等容器早已不是新生事物,正在逐步成为日常开发、部署环境的一部分。Java 能否无缝地运行在容器环境,是否符合微服务、Serverless 等新的软件架构和场景&#x…...
C语言面试最常问的三个关键字
文章目录前言一,static关键字的作用二,const 关键字的作用2.1, 修饰局部变量2.2,修饰指针2.3, 修饰函数形参2.4,修饰函数的返回值三,volatile关键字的作用前言 面试的时候,C语言最常…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...