利用强迫超时规避JavaScriptExploit特征码检测.doc.doc

利用强迫超时规避JavaScriptExploit特征码检测.doc.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用强迫超时规避JavaScriptExploit特征码检测.doc

利用强迫超时规避JavaScript Exploit特征码检测 作者:Sven Taute 译者:riusksk(泉哥) 由于JavaScript的动态特性,用它来混淆exploit代码很是容易。由于JavaScript是一种解释语言,网站也提供源代码给用户,因此,Javascript混淆代码的功能常常被用于保护源代码,以防止被复制粘贴,同时保护开发者的知识产权。在过去几年,用于混淆攻击代码的算法已经被大大改进了。再加上商业工具的运用,甚至已经开发出可伪装(隐含经空白字符格式化的payload)的混淆器。 检测恶意Javascript的问题 对于经动态混淆的代码,利用已知特征码的方法是检测不到的,因此经混淆处理后的代码就无法识别出是恶意代码。对此,反病毒扫描器需要有一个良好的仿真引擎,以识别出经解压后脚本的运行行为。既而,这也就引发了一场攻击者与安全软件厂商之间的争夺战。混淆代码是为了保护源代码的知识产权,同时也可用于更好地隐藏exploit特征码,它们似乎有许多共性:它们都被复杂化处理,以隐藏真实代码,防止被人们或检测软件识别。 基于特征码的检测方法一经失效,反病毒引擎就必须分析和仿真JavaScript,直到识别出脚本的真实功能,以达到检测恶意代码的目的。如上所述,JavaScript是一种可用多种方法来隐藏代码的语言,它支持各类元编程(metaprogramming)(译注:元编程是指某类计算机程序的编写,这类计算机程序编写或者操纵其它程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。多数情况下,与手工编写全部代码相比,程序员可以获得更高的工作效率, 或者给与程序更大的灵活度去处理新的情形而无需重新编译),这意味着代码可实现自修改,并创建出新代码。先加密字符串,然后用eval()函数来执行也是一种众所周知的方法。由于代码必须能够自我运行,因此JavaScript混淆器集成了KEY和经大量混淆算法实现的解密程序。 JavaScript代码压缩器的不同功能和限制 从攻击者的角度来看,存在一个优势,那就是网站开发者在大多JavaScript压缩器中并未考虑到因素:时间因素。在正当网站上经混淆的代码必须执行得够快,即使是未经压缩的代码也应如此。然而,从攻击者的角度来看,我们确实还有一些时间可以拿来利用,但如果exploit的执行是在毫秒或2秒内完成的,这就无所谓了,因为大多受害者并不会注意到它,甚至不会在当时打开任务管理器杀死进程。然而反病毒扫描器必须像网站开发者一样以相同的方式来处理Javascript,它的执行不能比未扫描时花费明显过多的时间,最好是1秒的十分之一。 利用时间因素 为了利用时间因素,代码压缩器需要创建出不会在一定时间跨度(timespan)内被分析出来的代码。由于这技术不应过于复杂,因此它必须以某种方式来执行,并且这种方式要求在短时间内不会分析出代码,所以最好的解决方案就是加密payload。对比现在流行的代码压缩器,它们均没有满足加密payload的所有关键要求,自然而然地,也就不可能在合理的时间内进行解密。这不仅要求让反病毒扫描器无法查看payload,攻击者的浏览器也不能。如前所述,由于反病毒扫描器的快速分析,因此在攻击者浏览器上的执行时间相对比较紧迫。然而也并非都是如此,我们可以创建一个加载器,用于暴力搜索访问payload的KEY,然后选用一个在数秒内可破解的KEY。最后导致反病毒引擎超时,但此时payload已经在浏览器中运行了。在当今浏览器里都拥有高优化的JavaScript引擎,运行暴破算法的速度很快,这给我们提供了很大的优势。 实行方案 为了实现加密功能,代码压缩器使用了MD5链接库,它可在正当网站中正常使用。压缩器使用MD5 hash对payload异或加密中的KEY进加密处理,而KEY本身被分为三部分。提供给浏览器是第一部分;第二部分是浏览器进行重定向的URL查询字符串,单独网页(常作为临时文件被保存)并不包含有解密payload所需任何信息,如果不能得到查询字符串就无法分析代码;第三部分必须猜解才能得到,为了达到此目的,浏览器获得部分md5 hash,因为key相当短,可以结合salt值对所有可能hash值进行预测。 最后一部分是最关键的:KEY必须是随机选择的,以便需要花费2-3秒才能破解。如果选择一个薄弱的KEY,那么首次猜解就可能就猜对了。为了解决此问题,就要求大小最小的5个KEY必须都能够破解。利用这一技巧,再做进一步优化即可在特定时间内生成KEY。在计算出KEY的未知部分(已知是基于MD5哈希加密的)后,受害者的浏览器能够重组出原始KEY,此后使用它解密payload,然后使用eval()函数来执行它。 另一个难点在于不同浏览

文档评论(0)

75986597 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档