【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

  • A+
所属分类:安全文章
【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

网安教育

培养网络安全人才

技术交流、学习咨询


本文讨论出发点为(商业)蜜罐利用js脚本调用jsonp接口的过程与检测&防御手法.本文不提供任何成品插件以及检测,只会提供示例代码。




0x01 概述



由于最近参与做了一些hw前的演习项目,在这个过程中,时不时有别的攻击队踩了蜜罐导致被防守方反向溯源。

之前多多少少了解过几个当前市场的(商业)web蜜罐,知道大致关键技术点如下:

1、配置jsonp接口信息

2、配置蜜罐网站信息

      a.仿站(提供目标站点扒取页面静态文件,功能无法正常使用)

      b.二次修改后的源码(功能可用正常使用,但是所有数据全部为假数据,或者是精简以后的源码)

3、等待踩蜜罐


在配置蜜罐阶段的时候,其实就会将已经配置好的jsonp接口所生成的js文件(固定|动态)URL,插入到蜜罐中的静态文件里面.以此来达到只要你打开蜜罐网站,那么js将会自动加载并且执行调用所有jsonp接口的数据,然后将数据返回至后端。


下图为某蜜罐调用jsonp完成数据获取的部分截图:

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

更多关于(商业)蜜罐的细节请参考各个商业蜜罐给出技术白皮书等信息。





0x02 插件实现



通过上文的概述,大家应该都大概简单的对此类蜜罐有了个大概的了解,那么针对以上这种类型的web蜜罐检查就很方便了,具体可以分为以下几个步骤:

1、打开网页

2、查看源代码

3、查找所有js文件

4、翻阅js文件是否有特征


如果以上4个步骤都是人工来执行,那么很多人在第一步的时候就已经中招了,你的信息已经被偷走了.当然可以直接跳到第二个步骤,不过也是很烦的一件事情。


对于浏览器插件有过使用或者编写过的小伙伴应该知道,浏览器的插件很多时候可以帮助我们完成很多事情,比如shodan的插件,在打开一个网站后可以自动去查询该网站的一些信息,那么我们也可以做一个类似的插件,但是除了要实现上述的4个功能点以外,还需要实现对于网页中发起请求的时候对请求的内容进行分析判断,如果判断出来为蜜罐js脚本,则阻断该js脚本加载的功能.以此来实现访问蜜罐,但是不会被偷取信息的功能。


首先要订阅一个json规则,结构如下:

 1{
2  "test111": [
3    {
4      "filename""xss.min.js",
5      "content""{{honeypotAny}}"
6    },
7    {
8      "filename""xss2.min.js",
9      "content""hello"
10    }
11  ],
12  "test222": [
13    {
14     "filename""{{honeypotAny}}",
15      "content""word"
16    }
17  ]
18}


上诉规则中,filename或者content的内容为{{honeypotAny}}为占位符,表示任意的意思,一般情况下写该js文件中存在的一些特征字符串来进行匹配。


在进行实际编写测试的时候,发现了一些小坑,如果该蜜罐在你访问之后才添加了该插件,或者第一次拦截以后再次访问,前端为了优化加载时间,将会从缓存中加载js文件,由此对浏览器所有缓存设置了个短时间内的缓存时间。

最终效果如下图所示:

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

插件部分核心如下:

 1var honeypotUrlCache = {};
2var http = {};
3var ruleStr = '{"test111":[{"filename":"xss.min.js","content":"hello"}],"test222":[{"filename":"main.js","content":"word"}]}'
4var rule = JSON.parse(ruleStr);
5
6// 给数组添加push2方法,用于向数组push不重复的数据
7<………略………> 
8
9// XMLHttpRequest 请求方法包装
10<………略………> 
11
12// 规则匹配,匹配成功将数据放入缓存
13function checkForRule(url,content){
14  for(item in rule){
15    for(r1 in rule[item]){
16      if (rule[item][r1]["filename"] === '{{honeypotAny}}' && content.indexOf(rule[item][r1]["content"]) != -1){
17          honeypotUrlCache
 = item;
18          return
19      }else if (url.indexOf(rule[item][r1]["filename"]) != -1){
20        if (rule[item][r1]["content"] === '{{honeypotAny}}') {
21          honeypotUrlCache
 = item;
22          return
23        }else if (content.indexOf(rule[item][r1]["content"]) != -1) {
24          honeypotUrlCache
 = item;
25          return
26        }
27      }
28    }
29  }
30}
31
32
33// 传入 URL 检查是否为蜜罐
34function checkHoneypot(url){
35  let status = false
36
37  // 判断是否在历史检测出来中的缓存中存在
38  if (honeypotUrlCache.hasOwnProperty(url)) {
39    status = true
40  }else{
41   // 不存在就进行请求,然后解析内容用规则去匹配
42    http.get(url, function (err, result{
43      checkForRule(url,result)
44    });
45  }
46
47  // 再次从缓存中检查
48  if (honeypotUrlCache.hasOwnProperty(url)) {
49    status = true
50  }
51
52  return status;
53}
54
55
56// 请求监听器
57chrome.webRequest.onBeforeRequest.addListener(details => {
58  var t = (new Date()).getTime() - 1000;
59  chrome.browsingData.removeCache({
60        "since": t
61      },function(){})
62  if(details.type == 'script'){
63    if (checkHoneypot(details.url)) {
64      alert("蜜罐,快跑,当前蜜罐脚本已屏蔽!");
65      return {canceltrue}; 
66    }
67  }
68}, {urls: ["<all_urls>"]}, ["blocking"]);





0x03 思考



通过上述的插件我们实现了基于检测js文件内容的特征,来识别蜜罐以及拦截jsonp获取信息,那么我们考虑以下几个问题。

1、能否通过计算蜜罐特征文件的hash值进行匹配检测?

2、能否不基于检测js文件内容的特征,而是从本站向若干个外部网站同时或者短时间内发起请求进行检测?

3、如果遇到没有js文件,直接在html中使用script标签写入JavaScript内容进行调用jsonp的蜜罐如何检测?

4、如何针对非获取jsonp信息的蜜罐进行检测。

5、………………


其实引发的问题和思考有很多,归根到底就是如何反蜜罐,保证渗透过程中的隐蔽以及防止爆菊,本文仅仅是对使用jsonp获取信息的蜜罐进行了识别和检测,但是还是有一定的问题,如有的蜜罐在你访问的时候,蜜罐控制台就已经接收到了报警信息。


攻防无绝对,现在成熟的开源蜜罐以及商业越来越多,如果选择部署在内网,那么可以不仅限web蜜罐,也可以部署一些服务蜜罐,包括mysql、redis、docker等,综合下来一看,其实也可以成为一个防守方小型的被动式内网入侵感知平台。


那么攻击方在当前检测蜜罐方式资料很少的情况下,可能需要花费大量的时间去研究如何检测蜜罐,或者反日蜜罐.而且如果为商业蜜罐的情况下,可能只有以下几种途径来进行研究

1、实战中踩到了蜜罐,后知后觉被爆后去研究蜜罐的特征

2、给甲方做服务的期间顺便研究一发

3、小伙伴们直接的互相PY

4、…………





0x04 项目地址



github开源地址 AntiHoneypot-Chrome-simple

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法
文:iiusky 来源:先知社区


开源聚合网安训练营

战疫期间,开源聚合网络安全基础班、实战班线上全面开启,学网络安全技术、升职加薪……有兴趣的可以加入开源聚合网安大家庭,一起学习、一起成长,考证书求职加分、升级加薪,有兴趣的可以咨询客服小姐姐哦!

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法

加QQ(1271375291)找小姐姐私聊哦



精选文章


环境搭建
Python
学员专辑
信息收集
CNVD
安全求职
渗透实战
CVE
高薪揭秘
渗透测试工具
网络安全行业
神秘大礼包
基础教程
我们贴心备至
用户答疑
 QQ在线客服
加入社群
QQ+微信等着你

【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法


我就知道你“在看”
【重点拆解】关于检测web蜜罐利用jsonp获取信息的一些想法


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: