Skip to content

on1sm/Anti-Heimdallr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anti-Heimdallr

《孙子兵法》有云:兵者,诡道也。 故能而示之不能,用而示之不用,近而示之远,远而示之近。

利而诱之,乱而取之,实而备之,强而避之,怒而挠之,卑而骄之,佚而劳之,亲而离之,攻其无备,出其不意。

简介

简而言之,这是一个搅屎棍工具,用来在攻防对抗中调戏攻击者

可以在正常网站上挂上这个JS,然后所有Heimdallr就会提示这是蜜罐,让攻击者不敢对该业务发起攻击

背景

在攻防对抗中,防守方常见的溯源方法就是使用JSONP来采集攻击者在三方网站上的身份信息,以此来确认攻击者身份。各种商业蜜罐里面都会集成非常多的JSONP漏洞。

攻击者为了对抗这种方式,一部分人会直接修改host屏蔽这部分域名,但是可能会造成这些网站功能不可用。为此有人专门开发了一个浏览器工具,叫Heimdallr,用来检测当前网站的所有请求,根据内置的规则来判断是否访问了一些敏感站点,当访问的敏感站点超过10个时,提示这可能是蜜罐。

在攻防对抗中,防守方本就处于弱势,要如何来对抗这种蜜罐检测插件呢?

另外,所有攻击者都害怕被溯源,如果碰到蜜罐类站点肯定会避而远之,那是不是可以在正常站点上挂上这些采集信息的链接,以此混淆视听,迷惑攻击者?

原理分析

Heimdallr的规则实际上都在data.js这个文件里,本质上是用的正则表达式判断。

比如:

[
  {
        rulename: "h114_heimdallr_domain_url_5",
        type: 4,
        commandments:"敏感域名请求: 百度接口5-百度账号及设备信息接口",
        ruleposition: 1,
        rulecontent: /sofire.baidu.com/im
    },
    {
        rulename: "h115_heimdallr_domain_url_6",
        type: 4,
        commandments:"敏感域名请求: 百度接口6-百度教育接口",
        ruleposition: 1,
        rulecontent: /easylearn.baidu.com/im
    }
]

而且可以看到本质上他都不是检测host,而是检测整个链接内容,所以只要构造一个符合这个正则表达式的链接访问一下就会触发规则

所以可以根据这个规则,随机生成10条以上的链接,在网站上引入后,就可以扰乱这个插件的检测结果

安装引入

最简安装

下载本项目后执行node generate.js即可生成output.js,将该js在网站页面中引入即可。

samples文件夹内已经随机生成好了一些js,如果不想自己下载生成,可以直接挑一个就行。

现在FOFA之类的网站会给js生成hash,所以就算拿samples里面预生成好的js,建议还是稍微加点注释或者无意义的代码。

高阶配置

config.json中可以配置链接加载的基础路径以及诱饵链接的数量

{
    "url_base": "/",
    "min_count": 20,
    "max_count": 50
}

url_base默认是/,这样会加载本网站的链接,到时候会生成一堆404的访问。解决办法是可以配置成/fuckme/

然后web服务器上配置该路径所有访问都返回空的200。当然不配置也没啥影响,就是访问者在控制台会看到一堆404的请求而已。

以nginx配置文件为例,可以这样写

location /fuckme/ {return 200;}

另外一种配置访问,就是也可以把祸水引到其他地方去,比如url_base配置成https://www.baidu.com/,这样所有诱饵链接相关的请求就都发到百度去了。

min_count和max_count就是诱饵链接的数量,可以自行调整。

讲完安装,来讲讲具体可以怎么玩了

能而示之不能,用而示之不用

如果防守方有必须要开在公网的业务入口,比如一些后台或者OA系统之类的,可以将这个链接挂上去。攻击者收集到这个资产后来访问,如果安装了Heimdallr插件,就会提示这是蜜罐。

notice

攻击者看到这样的提示后,就需要纠结一下了,这个资产要不要搞下去,攻防演习本质上是要在最少的时间内搞下最多的目标,效率要求是非常高的,如果这是个蜜罐,那在这里浪费的时间成本很可能能搞下其他地方的资产。

另外就是在真正的蜜罐上也可以挂这个,如果攻击者被骗多了,觉得挂这个的就是正常业务,那对不起了,这里还真就是个蜜罐

真真假假,虚虚实实

让攻击者永远不知道这是真实的业务还是真实的蜜罐。

乱而取之,实而备之

如果防守方真的有储备可用来溯源的JSONP漏洞,可以和上面的js一起挂上去。当攻击者分析请求的接口的时候,看到一大堆都是假的jsonp请求,可能就放松了警惕。

这时候可以趁乱将真的jsonp挂上去,嘿嘿,乱而取之。

插件的规则是有限的,当攻击者发现这里存在这类取身份的JSONP时,他需要担心的是,他的屏蔽规则或者插件的检测规则是否完备,永远会有新的漏洞出来,这个地方如果真的是蜜罐,那是不是除了JSONP还有别的,会不会有0day,会不会能读本地文件,会不会甚至能RCE?

如果你是攻击者,看到这种提示,你还敢继续搞这个站吗?衡量下时间成本,会不会放弃去挑剩下的软柿子会更好?

About

A tool to fool Heimdallr

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%