• sullime2day > 二进制比较与反二进制比较对抗1day和0day
  • 二进制比较与反二进制比较对抗1day和0day

    免费下载 下载该文档 文档格式:PDF   更新时间:2009-08-02   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:pdf
    文档作者:li
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    二进制比较与反二进制比较 ——对抗 1day 和 0day
    作者:
    Jeong Wook Oh,韩国人,中文名:吴政昱,就职于 Eeye 美国,超过十年的工作经验,韩国 bugtruck 网络安全邮件列表 运营者,Eeye 产品 Blink 的开发者,主要负责攻击过滤分析.其分析引擎使得 Blink 与传统的基于 IPS 的签名相比,提 高了识别的准确率. 陈琛,昵称 Eong, 国内安全研究人员,就职于启明星辰,Ph4nt0m 成员,超过七年网络安全研究经验,主要研究方向为 Linux/Mac 安全研究,基于二进制的漏洞挖掘,Fuzz 技术,手持终端安全等等.
    简介
    起因
    众所周知,安全补丁是用来修复安全漏洞的并保护最终用户不受安全威胁的.但是公开 补丁其实也会带来安全风险.这就是我们常说的"1day".在安全补丁公开的数小时内,就会 有人用二进制比较技术来寻找安全补丁所修补的漏洞.这很讽刺,但是这却是事实. 二进制比较技术最早应用于微软的补丁.不像其它厂商,微软会较为有规律地发布安全 补丁,而且补丁通常都只修补一个应用程序的一个或几个漏洞.所以补丁较为容易分析. 我们在 2006 年的时候开发了一套叫做"eEye Binary Diffing Suites"的工具包,世界上有很 多安全研究人员都使用过这个工具.它是免费而且开源的,很容易被用于"1day"挖掘.实际 上,攻击者有这些工具并在补丁公布和用户打补丁这个时间差上进行攻击.这个过程有可能持 续几分钟,也可能持续几天. 从我们对过去几年的监测中可以知道,所有重要的安全补丁都被二进制比较过,不管是 自动化的还是手动的.快的时候几十分钟就有人跳出来说他已经完成补丁的分析了.大概一天 的时间,就会有可利用的漏洞被确认并写出可工作的 exploit.现在二进制比较工具很容易获 取,所以在这个补丁还没完全部署到每一台机器上的时间,用户的确正在遭受 1-day 的攻击. 另外,通过二进制比较,攻击者可能找到一些厂商没有发现,没有公开或者没有正确修 补的漏洞,从而引发更为危险的 0day 攻击.
    解决方案
    实际上,使补丁分析变得更困难能够缓解这一问题并使得用户能有更多的时间来部署补 丁.尽管微软并不会对他们的产品进行代码混淆,他们依然可以使用一些技巧和策略来增加二 进制比较的难度.我们会讨论一些使得二进制比较更为困难的方法并且会演示一个用来混淆二 进制文件的工具,这就是反二进制比较.
    二进制比较
    历史
    从最早的 BMAT 那篇文章至今已经有十年之久,直到最近两年二进制比较才被人们广泛 使用.除了昂贵的"bindiff",我们目前有 2~3 个免费或者开源的工具可以用于补丁分析.这 里我们大概介绍一下历来有哪些二进制比较的理论和工具.
    BMAT(1999) 这种方法严重地依赖于符号文件,它主要是用于微软的二进制文件,因为这些文件都是有符号 文件下载的.在基于名称匹配的基础上,当所有的函数都已经被匹配以后,它会对函数内的块 进行基于哈希的比较.它从汇编指令生成 64bit 的哈希值,并对指令和操作数进行了抽象分 级.这篇文章并没有集中于安全补丁的分析.它主要是介绍如何通过校检值来比较块.如果代 码优化参数被改变,那么生成的块也会被改变,但是一般厂商并不会改变这些优化参数,所以 块都会保持原来的指令顺序不变.所以对块计算校检值并用于比较比比较整个所有的指令要好 一些.文章中还提到了五种不同级别的块校检值计算方法.他们将这五种级别称成为 "matching fuzziness" 级别.级别越低,用于计算校检值的信息就越多,0 级基本上将所有信息 都用于计算校检值,包括寄存器,块地址,操作数,opcode 指令等等,而第五级只使用 opcode 指令生成校检值. 这篇文章还阐述了如何基于块比较来获得 CFG,这种方法成为目前所有二进制比较所采 用的基本方法.
    自动化逆向引擎(2004)
    Halvar 在 Blackhat 2004 就这个议题进行了演讲.他提出使用函数的指纹 (fingerprints)来进行比较.而且他基于这个独特而简单的思路开发了著名的 bindiff.Bindiff 使用节点的个数,边界数以及调用数作为特征,生成一个函数的签名,然后使用它进行比较. 该工具还使用了基于函数 CG(call graph)的同构比较.
    基于同构分析的二进制比较 (2004)
    Todd Sabin 提出了基于同构分析的二进制比较方法.它基于指令图形的同形匹配.它不 再对函数进行分割,而是直接将整个函数结构进行同构匹配.有意思的是它比较指令而不是基 本块.他声称性能还不错可以用于使用,但是从未公布工具.

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • me2day  宋茜me2day  me2day中文版  me2day注册  尼坤me2day  权志龙me2day  me2day下载  me2day是什么  shinee的me2day  amberme2day