蜜罐是什么?
蜜罐技术本质上是一种对攻击方进行欺骗的技术,蜜罐的出现让在明处的防守者可以化被动为主动,由此,提出了主动防御的概念。在本篇博客中我们简单分析一下开源蜜罐Hfish。
开源蜜罐HFish
HFish开源地址
https://github.com/hacklcx/HFish
HFish官方使用文档
https://hfish.io/docs/#/
HFish的部署方式官方文档已经写的很详细了,这里就不再做赘述了。在centos 7虚拟机上在用shell运行。
出现【GIN-debug】,我们可以在HFish的官方文档看到HFish 是用使用 Golang + SQLite 开发的。运行信息也暴露了HFish使用的开源框架Gin框架。感兴趣的可以自己研究,毕竟开源。
Gin 是一个 go 写的 web 框架,具有高性能的优点。
Gin框架官方地址:https://github.com/gin-gonic/gin
回到正题
这里就能理解为什么说蜜罐是网络管理员经过周密布置而设下的“黑匣子”了吧。因为蜜罐本身也是一种网络服务。登陆HFish的后台界面:
这是登陆后的界面,展示了蜜罐被攻击后采集的攻击者信息。
HFish全球动态感知图
HFish WEB蜜罐
打开web蜜罐的页面。所谓web蜜罐,在HFish里就是一个设计好的后台登陆界面。如图:
这是一个假的内部管理平台登录界面。如果你是攻击者,当你尝试弱口令暴力破解时,你的行为就会被记录到蜜罐中。攻击者攻击的类型,节点和攻击者的IP,地理信息,攻击时间都被记录了下来并上传至蜜罐服务器。
WEB蜜罐源码分析
放源码的文件夹里,就只有这一个html文件,也就是说这个页面无论被怎样攻击,都不会被攻破,因为他只是一个假的后台登陆界面。那么攻击者的行为是如何被记录的呢?这个html界面调用了一个x.js脚本,如下:
function report() {
var login_field = $("#user_login").val();
var password = $("#user_pass").val();
$.ajax({
type: "POST",
url: "/api/v1/post/report",
dataType: "json",
data: {
"name": "WordPress钓鱼",
"info": login_field + "&&" + password,
"sec_key": "9cbf8a4dcb8e30682b927f352d6559a0"
},
success: function (e) {
if (e.code == "200") {
alert("账号密码错误");
} else {
console.log(e.msg)
}
},
error: function (e) {
console.log("fail")
}
});
}
这个脚本会通过ajax方法,把输入的用户名和密码信息上传到蜜罐服务器并保存到数据库中。如果攻击者用了暴力破解的字典,那么蜜罐就可以得到它。
到这里我们也差不多看清了web蜜罐的实质,接下来我们研究一下蜜罐得到的攻击者信息
在蜜罐中我们得到了攻击者的ip信息,这个IP信息真的准确嘛?为此,我用路由跟蜜罐服务器做了端口映射,从外部网络来访问蜜罐。当我攻击web蜜罐时,得到的攻击者信息却是我本地路由器的ip。(10.1.168.174)这就对溯源工作产不利。这里就可以利用我们之前说到的JSONP漏洞结合蜜罐让溯源更加准确。
JSONP漏洞结合蜜罐利用
先搞清楚HFish蜜罐究竟是如何得到IP信息的,是查看了网络层的IP报文嘛?这里我直接把HFish ELF文件拉进了IDA,readelf查看入口点
直接G跳转查看,报堆栈不平衡的错,平衡了堆栈之后,发现入口地址没什么有用的信息。去查看一下字符串
结合GIN源码分析。
如何将jsonp漏洞和蜜罐系统结合?
我们可以写一个js脚本,插入web蜜罐中,将jsonp漏洞带来的返回数据插入蜜罐的数据库中。插入的数据要跟蜜罐数据库的数据格式一样。HFish 蜜罐是用golang+sqlite开发的。打开本机的sqlite数据库,查找数据库的表信息。
查看hfish_info表的数据
可以看到攻击者的信息都被保存在了数据库的hfish_info表中,HFish全球动态感知系统的数据都是来源于这个hfish_info表中,查看hfish_info字段:
既然知道了这个表的字段结构,我们就可以根据jsonp漏洞获得的Ip和地理位置信息构造相同的数据结构,然后插入到数据库中,这样,当攻击者访问web蜜罐,触发jsonp漏洞,将更准确的攻击者的ip和地理位置信息保存到蜜罐的数据库中,显示在蜜罐后台上。上篇讲到的jsonp漏洞还不止是Ip信息,甚至能得到攻击者的邮箱信息,QQ号信息。同样可以显示出来,做到对攻击者更精确的溯源。(JS直接向数据库插入数据得本机直接连接的数据库)
总结
本篇到这里就完结了。这里只是简单的剖析了一下开源蜜罐HFish。可以举一反三