太阳集团2138备用网址

  • 防弹少年团金泰亨蓝发登各国热搜 玩儿转红粉金黑棕各种发色实力演绎“有颜任性”【组图】 2019-04-25
  • 龙烨为袁竹逍遥画派配画诗欣赏之三 2019-04-25
  • 因应增值税下调 多个豪车品牌在华降价 2019-04-25
  • “小屏论”话两会:“习语”暖人心 2019-04-25
  • 低价 贴心 保障 国美3.15,为消费者保驾护航低价贴心保障 国美315,为消费者保驾护航-国美 2019-04-25
  • 中央政治局同志向党中央和习近平总书记述职 2019-04-25
  • China Daily Website 2019-04-25
  • 【守护好我们的美丽家园】新疆的明天一定会更好 2019-04-25
  • 22年后紫霞仙子归来 可至尊宝已经不是他了 2019-04-25
  • 【独家V观】你好 意大利 2019-04-25
  • 合肥一文化公司人去楼空老板跑路 老人购买保健品被骗上万元 2019-04-25
  • 北京二手房交易实现一网通办 20分钟就办完 ——凤凰网房产北京 2019-04-25
  • NBA史上最牛的9大名帅 波波在这里只能排倒三 2019-04-25
  • 《阿丽塔》要和《流浪地球》抢票房 2019-04-24
  • 百城住宅均价环比涨幅持续收窄 变化大多在1%内 2019-04-24
  • 欢迎来到 黑吧太阳集团2138备用网址 是业内专业的游戏平台,为你提供各式各样的精品游戏,最全的游戏项目,同时还为您提供各种游戏专题游戏攻略人气论坛。

    成功获取WinRAR 19年历史代码执行漏洞

    来源:本站整理 作者:佚名 时间:2019-02-21 TAG: 我要投稿

    太阳集团2138备用网址 www.r-island.com 在本文中,我们讲述了如何使用WinAFL模糊测试工具找到WinRAR中的逻辑错误,并利用它来完全控制失陷主机的故事。该漏洞仅通过提取精心构造的存档文件即可成功利用,使超过5亿用户的主机面临风险。这个漏洞存在已达19年之久!并迫使WinRAR完全放弃对易受攻击格式的支持。
     
    背景
    几个月前,我们的团队构建了一个多处理器模糊测试实验室,并开始使用WinAFL模糊器对Windows环境下的二进制文件进行模糊测试。在收获了Adobe 的模糊测试研究成果后,我们决定扩展我们的模糊测试工作,针对WinRAR进行模糊测试。
    模糊测试过程产生的一个Crash指引我们发现了一个WinRAR使用的2006年编译的,没有保护机制(如ASLR,DEP等)的过时的动态链接库。
    我们将焦点和模糊测试的主要目标转向这个“容易上手”的dll,找到了一个内存损坏错误,并成功引发远程代码执行。
    然而,模糊器产生了一个具有“怪异”行为的测试用例。在研究了这种行为之后,我们发现了一个逻辑错误:绝对路径遍历漏洞。从这一点开始,利用这个漏洞完成远程代码执行变得非常简单。
    也许还值得一提的是,这类漏洞在Bug Bounty计划中,有巨大的奖金份额。

     
    什么是WinRAR?
    WinRAR是Windows的件归档应用程序,可以创建和查看RAR或ZIP文件格式的归档,并解压缩大量归档文件格式。
    据WinRAR网站称,全球超过5亿WinRAR用户,这就使其成为当今世界上最受欢迎的压缩工具。
    这就是GUI的样子:

     
    模糊过程背景
    这些是开始模糊WinRAR所采取的步骤:
    在WinRAR主函数内部构造harness,使我们能够模糊任何存档类型而无需为每种格式构造相应的harness。这是通过给WinRAR可执行文件打补丁来完成的。
    去除用户交互的对话框和GUI等元素,这也可以通过修补WinRAR可执行文件来完成。即使在WinRAR的CLI模式下,也会弹出一些消息框。
    使用奥卢大学2005年左右进行的一项有趣研究发布的巨型语料库。
    在WinRAR命令行模式下使用WinAFL对程序进行模糊处理。通过这样强制WINRAR解析“已损坏的存档”并设置默认密码(“-p”表示密码,“ – kb”表示保留损坏的解压缩文件)。这些参数和选项可以在WinRAR帮助手册中找到。
    在短时间的模糊测试之后,我们发现了几个存档格式的崩溃,例如RAR,LZH和ACE,这些存档格式会导致内存损坏,例如Out-of-Bounds Write。但是,利用这些漏洞并非易事,因为原语提供了对覆盖缓冲区的有限控制。
    然而,解析ACE格式时的崩溃引起了我们的注意。我们发现WinRAR使用名为unacev2.dll的DLL来解析ACE归档文件。快速浏览一下这个dll就会发现它是2006年没有保护机制的旧版dll。事实证明,漏洞利用的时候真的不需要绕过保护。
     
    构建一个特定的Harness
    由于这个dll看起来容易利用,所以我们专注它的模糊测试过程。
    另外,就WinRAR而言,只要归档文件具有.rar扩展名,它就会根据文件的Magic字节处理它,在我们的示例中,是ACE格式。
    为了提高模糊器性能,并仅增加相关dll的代码覆盖,我们为unacev2.dll创建了一个特定的Harness。
    为此,我们需要了解如何使用unacev2.dll。逆向调用unacev2.dll进行ACE归档提取的代码后,我们发现应按以下顺序调用两个导出函数进行归档文件的提取:
    名为ACEInitDll的初始化函数,具有以下签名:INT __stdcall ACEInitDll(unknown_struct_1 * struct_1);•struct_1:指向未知结构的指针
    名为ACEExtract的提取函数,具有以下签名:INT __stdcall ACEExtract(LPSTR ArchiveName,unknown_struct_2 * struct_2);•ArchiveName:指向要提取的ace文件的路径的字符串指针•struct_2:指向未知结构的指针
    这两个函数都需要传递我们不知道的结构。我们有两种方法可以尝试理解未知的结构:逆向,调试WinRAR,或尝试查找使用这些结构的开源项目。
    第一种选择更耗时,因此我们选择尝试第二种选择。我们在github.com上找到了ACEInitDll这个导出函数,并找到了一个名为FarManager的项目,该项目使用此dll并包含未知结构的详细头文件。
    注意:此项目的创建者也是WinRAR的创建者。
    将头文件加载到IDA后,更容易理解两个函数(ACEInitDll和ACEExtract)之前的“未知结构”,因为IDA为每个结构成员显示了正确的名称和类型。
    从我们在FarManager项目中找到的标题中,我们提出了以下签名:
    INT __stdcall ACEInitDll(pACEInitDllStruc DllData);
    INT __stdcall ACEExtract(LPSTR ArchiveName,pACEExtractStruc Extract);
    为了模仿WinRAR使用unacev2.dll的方式,我们分配了与WinRAR相同的结构成员。
    我们开始模糊这个Harness,但我们没有发现新的崩溃,并且覆盖范围没有在模糊测试的前几个小时内扩展。我们试图了解这种限制的原因。
    我们首先查找有关ACE归档格式的信息。
     
    了解ACE格式
    我们没有找到该格式的RFC,但我们确实在互联网上找到了重要信息。
    1.创建ACE存档受专利保护。 唯一允许创建ACE存档的软件是WinACE。 该项目的最后一个版本是在2007年11月编译的。该公司的网站自2017年8月以来一直处于关闭状态。但是,提取ACE存档不受专利保护。
    这个维基百科中提到了一个名为acefile的纯Python项目。 它最有用的功能是:
    它可以提取ACE档案。
    它包含有关ACE文件格式的简要说明。
    它有一个非常有用的功能,打印文件格式标题和解释。
    要理解ACE文件格式,让我们创建一个简单的.txt文件(名为“simple_file.txt”),并使用WinACE对其进行压缩。 然后,我们将使用acefile检查ACE文件的标头。
    simple_file.txt如下:

    [1] [2] [3] [4] [5] [6]  下一页

    【声明】:太阳集团2138备用网址(http://www.r-island.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@www.r-island.com,我们会在最短的时间内进行处理。