最近大家都开始hw了,各种0day/1day也是层出不穷,作为一个脚本小子,挖不出洞,但是也想看看0day是什么样子的,因此尝试搭建了蜜罐。官方的蜜罐不够用,所以需要学会自定义web蜜罐才行。
最近出了用友的洞,所以想通过自定义蜜罐的网页来捕捉poc,效果也超出了我的意料拿到了很多的poc,有些确实是没见过的,有空分析分析。在搭建蜜罐的时候,遇到了很多问题,因此写下本文方便各位师傅在遇到问题时能够有个参考方案。
网上的蜜罐有很多,但是我感觉比较实用的就是火线的HFish(因为可以一键搭建),并且能免费用。
我之前经常用的是野草云服务器,但是搭建蜜罐的话最好还是使用国内的服务器这样才有伪装效果,对比了多家服务器后,我发现阿里云服务器目前是最有性价比的。今年阿里云还出了一个阿里云99计划,2核2G的服务器才99块,并且续费还是99。
之前买的服务器,到期了就涨价,导致服务还得重新换一台服务器。像是火山云服务器的话,相同配置的情况下价格没有99元优惠,并且没有后续的续费优惠,续费价格会在1030元左右。其他很多平台的这个价位也大多是轻量型服务器,流量还有限制。
阿里云99的服务器我是在这里购买的:
https://www.aliyun.com/daily-act/ecs/activity\_selection?userCode=ko4bxhro
对比了一下,像是同价位的京东云、腾讯云、华为云服务器,则是轻量级服务器,并且还有流量限制。阿里云这个服务器是经济型服务器,性能更高更稳定,使用过程中不会有带宽用量相关的费用,我们搭建蜜罐流量还是走得很快的。轻量型服务器买了之后搭建蜜罐就会有坑点,如超出流量包后会额外收费,有几率被刷爆账单。
除此之外,轻量级服务器只够一个人用的,如果多人协作的话,就容易崩溃。相比而言阿里云的经济型服务器能进行多人共享,如果后续搭建其他的服务,类似confluence的话,最好还是使用经济型服务器。现在阿里云还有分享计划,推荐给朋友买能领取奖励金,既让朋友买个好用的服务器,俩人还能进一步领到优惠。
买了服务器后,后续还可以用来自己搭建指纹扫描系统之类的,相比于使用国外的服务器,能更大程度上获取到国内资产的相关指纹,因为现在很多资产都ban掉了国外的IP,所以准备一台国内的服务器还是很有必要的。
阿里云服务器系统我选择的是ubuntu2024,我们来搭建HFish。
安装包下载地址:https://hfish.cn-bj.ufileos.com/hfish-3.3.5-linux-amd64.tgz\[2\]
在云服务器上创建一个文件夹,将下载后的文件放入该文件夹中并进行解压
mkdir /tool/HFish
tar zxvf hfish-3.3.5-linux-amd64.tgz -C /tool/HFish
确保配置防火墙开启TCP/4433、TCP/4434
//CentOS
sudo firewall-cmd --add-port=4433/tcp --permanent (用于web界面启动)
sudo firewall-cmd --add-port=4434/tcp --permanent (用于节点与管理端通信)
sudo firewall-cmd --reload
//Ubuntu
sudo ufw allow 4433/tcp
sudo ufw allow 4434/tcp
运行install.sh文件
sudo ./install.sh
登录web页面,这里是默认的账号密码
登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021
登录后的第一件事就是修改默认密码,防止被其他黑客拿弱口令扫进蜜罐后台:
安装HFish管理端后,我们首先要做的是建立节点,节点就等同于一台独立的主机:
可以看到右侧就是用来添加蜜罐服务的,我们等下自定义的蜜罐就是通过这里进行添加的。
如果蜜罐被打了,我们就可以在这里看到打过来的poc,和对应的请求包。当然,请求包是很多的,因为资产放在公网上一直都在被扫,我们要做的就是过滤出可能存在攻击行为的请求包。
HFish的过滤检测是使用YARA语言,对所有蜜罐收集到的攻击原始信息进行关键词检测,支持自定义规则。
HFish使用的yara监测语法分为三部分,rule,string和condition。
rule部分:检测规则命名。
strings部分:定义了规则中使用的字符串或字节模式。这些模式是YARA用来检测恶意软件的核心。
condition部分:指定了规则匹配的条件。条件可以是简单的逻辑表达式,检查字符串是否存在,或更复杂的条件,结合多个模式和文件属性。
例如:
rule name1
{
strings:
$str1 = "1"
$str12 = "2"
condition:
any of them
}
以Log4j远程命令执行3(CVE-2021-44228)漏洞为例,string中定义了常见的拦截规则
如果部署的蜜罐中,就会被标记拦截
可以点击命中目标发现对方的ip,和请求接口
点击攻击详情可发现详细的请求包:
所以根据这一应用我们可以自定义大量检测规则以及新增新服务蜜罐来获取攻击者的poc。
这里我们测试新增一个对sql注入进行检测的规则
YARA规则输入区 :
rule SQL_Injection_Detection
{
strings:
$a = "SELECT" nocase
$b = "DROP TABLE" nocase
$c = "OR " nocase
$d = "INTO OUTFILE" nocase
$e = "LOAD_FILE" nocase
$f = "'" nocase
$g = /UPDATE [^\s]+ SET [^\s]+ WHERE 1=1/ nocase
$h = /admin' OR '1'='1/ nocase
$i = /BENCHMARK\((\d+),\s*(\d+)\)/i nocase
$j = /sleep\((\d+)\)/ nocase
$k = /DBMS_PIPE.RECEIVE_MESSAGE\('(\d+)',\s*(\d+)\)/i
$l = /WAITFOR DELAY '0:0:(\d+)'/i
$m = "and" nocase
condition:
any of them
}
可在YARA规则测试工具进行测试
新增后的规则,可进行操作修改,状态栏勾选表示已启动
如果搭建的蜜罐受到该配置规则下的sql注入攻击,该规则就会被命中标记,可点击命中记录对请求包进行漏洞验证。
自定义web蜜罐在环境管理-服务管理-新增服务中
可点击自定义Web蜜罐制作查看官方文档制作
将制作好的web蜜罐文件进行打包处理,注意:(html文件的命名必须是index.html,zip的文件名最好是service-xxx.zip)
在服务管理-新增服务模块中上传web服务包
在节点管理-内置节点下添加蜜罐服务
添加成功后,如果蜜罐显示在线,说明已成功部署。
访问搭蜜罐的ip+端口,如果web页面正常回显,且功能点正常,说明web蜜罐搭建成功。
拿内置漏洞-Log4j远程命令执行3(CVE-2021-44228)漏洞进行测试,输入payload进行,点击登录进行验证。
管理平台这边可以看到攻击列表成功已经成功捕获到了攻击行为:
后面可在漏洞模拟模块下选中命中记录查看完整的攻击请求包,
可以看到我们拿到了get的包,如果有day我们就可以进行下一步验证:
除了用友之外,我这边再举一个例子,相关的蜜罐压缩包放在后台,感兴趣的师傅可以去下载下来看看源码是怎么写的。
捕获攻击报文信息:
差不多就是这样了,师傅们可以买一个99ECS玩玩,搭建完蜜罐还可以玩其他项目。嫌麻烦的可以直接用阿里云蜜罐服务,方便搭建。
祝愿各位师傅在hw期间能够多多捕获0day!
关注公众号后台回复0729,可获取WVP视频平台蜜罐包进行学习。
加入我们学习群一起学习交流,获取最新安全资讯,一群已超过400人,可扫码添加左侧运营微信发送验证"云鸦"进入,也可以扫码直接二群,欢迎师傅们一起学习交流,每天学习安全新知识~
[1]
: https://www.aliyun.com/daily-act/ecs/activity\_selection?userCode=ko4bxhro
[2]
: https://hfish.cn-bj.ufileos.com/hfish-3.3.5-linux-amd64.tgz