Aggregator
利用代码相似度检测污点传播中的过滤函数
心存敬畏 安全常在
AntSword v2.1.15 更新汇总
ptmalloc cheatsheet
CVE-2022-2073 Grav CMS Twig SSTI RCE 漏洞及最新版补丁绕过
2022西湖论剑·网络安全大会
反-反蜜罐:以三个反蜜罐插件的缺陷为例
0x00 关于本文 当时想保研,想搞篇论文,就捣鼓了个XSS平台并研究了反蜜罐插件的缺陷,缝在一起投某中文期刊,然后这种乱缝合果不其然被拒,之后我就把这事丢在一边了。 最近上t00ls看到某公司某蜜罐,发现其中已经采用了某些绕过反蜜罐插件的措施,一下子勾起了我的回忆。尽管过去了那么久,事后证明保研没有看起来的那么难,而且我也准备退学跑路了,但这些研究依然在那里并且还没过时,因此我决定去掉里面吹水的部分,整理下后发出来。 本文以三个反蜜罐插件为例(anti-honeypot、AntiHoneypot-Chrome-simple、antiHoneypot),分析蜜罐插件的工作原理及导致其被反向检测以及绕过的缺陷。尽管本文会对具有反制能力的蜜罐做一定的介绍,但读者需要对XSS、Jsonp劫持有一定的了解才能更好地理解本文。
0x01 会咬人的蜜罐&反蜜罐插件 有网络安全基础的读者应该都知道蜜罐是什么。防御者搞一个外表诱人但监控严密的系统来引诱黑客进攻,将黑客的一举一动记录下来,以对其分析和追踪。据说当年大名鼎鼎的黑客凯文米特尼克就栽在蜜罐上,结果惨遭溯源。 在2013年BlackHat Eu上,有研究者提出通过Jsonp/CSRF/XSS的方法攻击黑客的浏览器,以定位黑客的身份。随着护网行动的普及,默安幻阵和长亭谛听这样具有反制能力的蜜罐在各个攻防演练中大放异彩,这些蜜罐内置了大量的Jsonp和XSS接口,一旦访问,运行在浏览器前端的js脚本就通过这些接口拿到大黑客的QQ/CSDN/微博/爱奇艺/优酷 等等的账号名,再通过社工库等办法拿到大黑客的更多信息,让大黑客率先响应国家实名上网的号召。
当然大黑客也不是吃素的,黑客们开发了各式各样的蜜罐阻拦插件,这些插件可以通过检查网页的Dom和请求的URL来判断当前访问的的网站是否是蜜罐,并实时阻断浏览器发出的可疑请求,阻止恶意js脚本拿到敏感信息。
0x02 AntiHoneypot-Chrome-simple 插件原理&缺陷分析原理分析 AntiHoneypot-Chrome-simple插件通过简单的预置的蜜罐特征来检测蜜罐,它在插件的background.js中定义了一组规则,分别是文件名和内容的对应。 插件通过chrome.webRequest.onBeforeRequest监听了所有的网络请求,过滤出对js的请求并进行检查。
负责检查的代码给了很清晰的注释,首先如果检查过那就直接用缓存结果,否则通过ajax请求一次js的内容,然后用checkForRule函数检查url和内容。如果URL和内容命中规则,举个例子,如果请求了record.js并且内容还包括document[__Ox3f21b[0xd]](__Ox3f21b,那就判定为蜜罐。
如果判定为蜜罐,那除了写缓存之外,那就再网络请求的监听函数里面返回{cancel:true},阻拦这个请求,并且展示一个吓人的框框
缺陷分析:反向检测&与绕过。
像这种插件,直接匹配几个知名蜜罐的规则,其实是很容易被绕过去的,因为只要随便混淆下脚本或者改个文件名,它就无法识别了。 除此之外,这个插件还有个致命弱点。它为了检测加载的js的内容,预先用ajax去请求了一次,这样的话本来只该被请求一次的js被请求了两次,这给防御者留了很多的机会。
首先,多出来的一次请求在服务端上就非常的明显,正常浏览器不可能干这事,所以只需要在服务端检测同一个用户是否莫名其妙地多请求了js脚本,就可以确定该插件的存在性。
此外,在这两个请求中,第一个是插件发出来用于检查的,第二次是浏览器为了加载js而真正发出来的,因此只需要在第一个请求里面返回正常的内容,在第二个请求里面加载真正的恶意代码即可绕过检查。
0x03 antiHoneypot 插件原理&缺陷分析原理分析 antiHoneypot插件就要复杂很多,从Github上看它包含了很多检测手段,因此我们就看的粗略一些。
首先在插件的manifest.json中,我们可以看到该插件首先通过在前端注入js的形式来抵御多种浏览器指纹识别手段。
反映到前端上就是好好的一个网页会被它插入许多js
这些插入的js可以通过替换函数的方法记录对敏感函数的调用,并且一旦发现了某些信息就通过postMessage发送给窗口
窗口上会监听postMessage发来的东西,将其发至运行在background的js,这些js处理后就会向用户产生告警 告警长这样
此外它还能通过运行在background的js监听并检查所有的请求,多种方式去检测请求的URL,阻止Jsonp请求
缺陷分析:反向检测&与绕过。 想要检测该插件的存在性是极其容易的,只需要检查前端是否被注入了额外的Dom即可。 针对注入到了前端的代码,不难发现其依赖window.postMessage的通信方式很容易被劫持,前端只需要把window.postMessage覆盖掉(比如直接window.postMessage=console.log),前端的代码就算检测到了敏感函数的调用也无法和后端通信。当然这种绕过依然有缺陷,尽管我们能隐蔽地调用一些敏感函数了,但因为该反蜜罐插件通过函数替换实现伪造Canvas指纹,而我们无法绕过它调用真正的函数获取Cavas指纹。无论如何,至少这种绕过已经不会让黑客感到警觉。当然我们也可以反其道而行之,主动发起postMessage来调戏大黑客。
而该插件对Jsonp/XSS的检测也有个致命的弱点: 在检测代码的开头,会对url进行检查,一旦包含chrome-extension://那就直接放行。这导致了只需要在URL里面的参数中加一个chrome-extension://就可以绕过检测。这个缺陷已经被部分蜜罐厂商发现并用了起来,额外加一个叫做ooxx的参数,内容是chrome-extension://,实现绕过蜜罐插件继续用Jsonp溯源。 当然除了这种加法外,还可以在URL后面加一个#chrome-extension://,这样URL里既包含了chrome-extension://,又能不在流量中显现出来(稍有常识的人都会看出,#后面的东西是浏览器处理的,不会发到服务器那里去的)
0x04 anti-honeypot 插件原理&缺陷分析原理分析 anti-honeypot插件是相对简单的插件,首先它判断当前请求发起的域是否在白名单中,如果是则正常,如果不是则匹配发起域名是否与请求域名相同,相同则正常,否则匹配目标的path中是否包含jsonp或者callback这样的关键字,如果有则告警。缺陷分析:反向检测&与绕过。
该插件貌似不存在明显的特征可供反向检测。但manifest.json中有玄机,其中的web_accessible_resources使得扩展中的所有资源都可以被访问,因此可以构造形如chrome-extension://[id]/[resource_path]的链接,通过探测资源的型式探测其存在性。
很遗憾的是,由于该扩展并未上架Chrome商店,因此使用者只能下载源码解压后安装,而id则和解压路径相关,因此这种办法很难在实际场景中使用。 幸运的是我还发现了一种侧信道的手段可以通用地检测反蜜罐插件的存在,我将在后文详细叙述。 要绕过这个插件是很容易的,尽管看上去有严密的规则,但它的域名提取算法存在缺陷,攻击者只需要让这个正则表达式匹配不到东西,使得domain[0]无法取到而报错,即可让整个检查因为报错而直接放行。这个正则表达式只匹配了部分域名的结尾,并且不支持IP地址,因此最简单的情况,只需要让蜜罐的域名为一个IP地址就可以迫使它报错
0x05 一种具有一定通用性的侧信道检测反蜜罐插件的方法 在研究的过程中,我发现了一种侧信道的手段可以通用地检测反蜜罐插件,这种方法不一定稳,但是还是有一些研究的价值的。 上述所有的插件都会在URL请求的时候事先进行并匹配,而这个匹配过程会有一定时间的耗时,该耗时在正常情况下是不应存在的,因此可以通过分析这个耗时来分析来判断插件的存在性。经测试,当域名的长度大于等于64,浏览器看到这么长的诡异域名时会直接放弃而产生错误,因此这中间的时间就是插件处理时产生的耗时。 我们可以很轻易地构造js代码,测试给定URL请求时所需的耗时 function testTime(urllength) { url="http://"+'a'.repeat(urllength) starttime=new Date().getTime() let ajax = new XMLHttpRequest() ajax.open('GET',url,false) try{ ajax.send() } catch(e){ interval=new Date().getTime()-starttime return interval; } } 为了排除机器的干扰,采用增长倍数进行计算,即以域名长度为100为基准值,计算更长的域名的增长倍数。经测试,anti-honeypot的增长与无插件情况的增长较接近,没有明显到可以作为判断条件。但是AntiHoneypot-Chrome-simple和antiHoneypot就与无插件情况下有较大的区别(为了偷懒直接拿当时做的图来表示),在无插件的情况下耗时增长倍数相对缓慢,而有插件情况下则增长迅速。
但这种方法存在弊端,SwitchOmega这种翻墙插件也会较大增加耗时倍数,此外反蜜罐插件想要对抗这种技术也很简单,只需要检测URL长度,太长了直接报警即可。
0x06 总结 本文研究了三个反蜜罐的插件的原理及缺陷并提出一种侧信道的反蜜罐插件检测方法。 总结一下,反蜜罐插件的反向检测方法:基于注入的js篡改的Dom、基于额外请求、基于侧信道、基于web_accessible_resources。反蜜罐插件的绕过方法:针对注入的js覆写部分函数或变量、针对请求拦截制造错误或利用其匹配逻辑中的黑白名单缺陷。
Ukrainian/Russian War
RASP| SPEL/OGNL表达式注入检测与防御
安恒信息全球网络安全6月月报完整版下载
安恒高级安全威胁情报周报(2022.7.9~7.15)
Cybersecurity Is a Team Sport: 3 Takeaways from Israel?s Cyber Week
我的网络安全观:论“事前”企业信息安全建设(第三季)
你既要知道组成“问题”结构的事前,你又要知道组成“问题”结构的事中,你还要知道解决“问题”的事后。最后在回归到“问题”的本身。
——Micropoor
本文主论的“事前”就是“企业信息安全建设”的概念。认识“事前”的目的不是认识事情本身,而是实践于企业信息安全建设的整体。针对企业信息安全建设的整体,要回归实践企业信息安全建设本身。
企业信息安全是木桶原理,木桶原理又称:木桶效应。其意义为:盛水的木桶是由许多块木板箍成的,盛水量也是由这些木板共同决定的。若其中一块木板很短,则此木桶的盛水量就被短板所限制。但这正是“建设”的本身。对于“企业信息安全建设”的“木桶原理”仅仅阐述了最后一个词语“建设”,而本文主论的第一个词语“企业”即“事前”。该系列文章,将分为:事前、事中、事后、再次回归实践,共计4篇,为大家分别阐释。
针对“事前”的企业信息安全建设,主要从“4个维度”和“3个方向”进行规划与考虑。
针对“事前”企业信息安全建设,做好规划的4个维度,包括:事实、观点、立场、信仰。
事实:是客观存在,也是最不容易发生争执的,信息安全必须合规就是事实。
观点:是基于个体对“事物”的看法,所有人(个体)都觉得自身代表的是“事实”,多数出现在“专业型”人员。例如:“这个版本很旧,你需要马上升级,否则后果很严重——信息安全型专业人员”、“这个系统不能升级,已经平稳运行很多年——运维型专业人员”、“这带代码没有问题,因为这样不影响运行效率——开发型专业人员”等。
立场:不分对错,只有输赢。
信仰:有自我“完整”的闭合逻辑,也就是说,“当事人认为的,是一定正确的”。
考虑他人立场的时候,一定先考虑他的“信仰”。如果他坚定的认为他对待“信息安全”的看法(重要或不重要、重视或不重视)以及逻辑是“坚不可摧”的,那么就不要擅自“强推”,不要“改变”他人的信仰,很难有较为理想的结果。如果没有这个层面,那么需要站在他的角度考虑“立场”,也就是按照这个角度,定制3个方向的沟通、规划、协调、反馈方案。
针对“事前”企业信息安全建设,应该思考的3个方向包括:上级、平级、下级。
宏观总结:对内不折腾,对外有谋略。
微观总结:对上沟通,应该永远积极主动。平级沟通,永远追求双赢。对下沟通,永远坚持跟进。
上级:对“领导”在阐述网络安全的建设的规划中、建设的进展中、落地的过程中,要保持职业性和专业性,了解上级的真实需求,做事要超出上级的预期,并要衷心感谢上级的指点和教导。
平级:对“平级”之间的沟通,重在合作共赢,尤其是网络安全专业本身。如何既能解决问题,又能在解决问题的过程中,减少双方不必要的“工作”,减少“一刀切”的方式、减少“强推”的场景,有类有序的推进。在对方需要帮助时,主动支援;在对方取得成绩时,真心感到高兴。
下级:对“下级”沟通,要严格有温度。对事,需要公事公办。
对团队,你需要有负责的态度。总结一句:对上以敬,对下以慈,对人以和,对事以真。
“事前”企业信息安全建设对于“事中”企业安全建设的过程,至关重要。决策前要多调研、深入调研、充分调研。深刻理解4个维度和3个方向。“事前”建设与“事中”建设的关系,即:从企业信息安全建设走出来,在回到企业信息安全建设过程中去。实践是检验认识的唯一标准,将在实践中获得的认识再放进实践中去检验,在用这个认识来指导实践。笔者相信,如此以后,那么在企业信息安全建设的过程,也一定会是一个享受工作的过程。
历史是不断前进的,时代是不断发展的,企业信息安全建设是不断变化的,我们要不断地实践,认识,再实践,再认识,循环往复。这也验证梭伦所说“活到老学到老。”在文章的结尾处更想引用《庄子·内篇·养生主第三》来做本文的结尾:“吾生也有涯,而知也无涯。”
我的网络安全观:论质量既“品牌”(第二季)
品牌的基石是产品质量的品质,产品质量的品质是百年品牌的保障。
——Micropoor
- 能扫描出真实漏洞(可包含大量误报,甚至误报率高于真实漏洞)
同一时间内,扫描2次且扫描同一个主机或Web,2次扫描漏洞结果数量一致(可包含大量误报,甚至误报率高于真实漏洞)
同一时间内,扫描2次且扫描同一个主机或Web,2次扫描漏洞结果漏洞类型一致。(可包含大量误报)
同一时间内,扫描1次同一主机或Web后且修复结果漏洞,第2次扫描该主机或Web漏洞结果数量比第1次漏洞结果数量少对应修复的数量。(可包含大量误报,甚至误报率高于真实漏洞)
还在维护且可持续更新规则(更新时间可日、周、月、年其中之一即可,也就是说一年更新一次都可以)
网络安全行业相关产品经过近二十年的自由化市场充分竞争,正在从“有没有”向“好不好”跨越。“品牌革命”既要在质量上实现突破,更要在品牌上站稳脚跟。分析一个行业,其中之一离不开分析该行业属于“买方市场”亦或“卖方市场”,而网络安全行业以当下情况来讲,大部分场合、场景是标准的“买方市场”,网络安全产品的市场份额是同类产品激烈竞争的结果,这种竞争的实质就是质量的竞争、服务的竞争、售后的竞争,产品质量差价扩大则是同类产品供过于求而优质产品供不应求的结果。某些优秀方向的安全产品之所以占领大量市场,其原因就在于该“安全产品方向与产品本身”满足了买方市场对产品的质量需求,而质量需求的增长则是推动质量差价的根本原因。因此,质量需求便成为“品牌”核心问题。只有深刻理解产品质量的涵义,才能明确如何去创造真正满足当下市场需求的不同安全公司的同类产品。网络安全企业不仅要提供高质量的安全产品,还要注意提供完善的售后服务,这是产品质量的延续,也是企业提升自身形象、提高竞争力的重要手段之一。随着某些方向技术的成熟和市场行业需求的变化,经济较为发达国家的销售、技术、产品、服务也发生了变化,最显著的就是安全行业的售后服务变得越来越重要了。而在我国,尤其是网络安全行业的售后服务尚未引起足够重视。如果说网络安全产品的质量是“第一次竞争”,那么网络安全行业的售后服务则是“第二次竞争”。经过二十年市场优胜劣汰后,许多产品在质量、价格、服务、产品类型方面十分接近时,售后服务的优劣就显得更为重要,作为竞争手段就有了战略上的意义。例如一些后起之秀安全公司,售后服务以“第一时间真实解决客户实际问题”为文化,随时间推移形成“品牌”,逐步展现在了大众视野。网络安全行业从某种意义上讲,网络安全产品为客户提供了“现实问题”上的“满足”,而强大的品牌则提供了信用的保障以及其他产品的延伸。产品质量与品牌相辅相成,网络安全产品质量上的“积累”转化成了一定意义上的“品牌”,而“品牌”又反哺安全产品的“溢价”以及新产品延伸的“载体”。在其他成熟的行业中可以得到一些借鉴,“品牌”的最高境界,便是一种“感性”上的文化“消费”,而这一点,值得网络安全行业深思。
我的网络安全观:论服务既“销售”(第一季)
销售的本质是敲门砖,服务才是持续“销售”
——Micropoor
技术红利的时代已来临,通过大规模的技术创新,在产业结构上实现从劳动密集转向资本技术密集,在不缺乏资本的既定前提下,通过技术创新达致技术密集,从而为经济发展创造出有力的技术条件,促成整个国家提升整体产业结构从而实现产业升级。可以通过调研与观察分析,近几年的“创业型”企业的成功案例大部分是技术型人才的创业,也伴随间接影响了“下游”人员的“方向”比重,销售的“资源红利”一去不复返。反而增加了“下游”的技术红利。也就是说,企业与企业之间的核心竞争的是“产品”、“服务”、“咨询”等。也就是“人才”战略。随着技术红利的来临,时代的浪潮把“技术”型人才推向了“前端”的舞台,既交叉伴随着与“人”打交道同时,也要与“物”打交道。
美国20世纪80年代的调查,顾客更换供应商的原因如下:
(1)1%造成顾客或用户伤亡
(2)3%厂家改变了销售或服务地点
(3)5%因他人劝说而另寻其他供应商
(4)9%竞争对手的争夺
(5)14%顾客对销售公司的服务不满
(6)68%顾客不满供应商提供的产品与服务
也就是说82%的结果是由于顾客对产品与服务的质量不满造成的。这一结果提出警示:只有向顾客提供比竞争对手更高质量的产品与服务才能赢得和保住客户。随着“数字化”时代的到来,“大数据”应用场景的广泛落地,该比重将会持续继续扩大,从而缩小销售的“资源”红利。
历史告诉我们:“没有谁的时代,只有时代的谁”,同样,“时代需要人才,时代造就人才”,在网络安全行业尤为如此,既然时代已经把“技术”型人才推向前端与其后端相结合。加大了参与销售之间的紧密配合,而销售也应该把“内部”技术同事当成“客户”的分支,才能顺应当下的“高质量”竞争。
愿每一位销售人员,尤其是销售管理者扩大视野,有“内部”、“外部”客户的思维。
从不说硬话,从不做软事。知行合一,伴我余生。