WinRAR或成APT组织得力攻击武器?

admin 2023年9月22日23:25:56评论23 views字数 3961阅读13分12秒阅读模式

1 |背景

    2023年8月23日,Group-IB的研究人员披露了利用WinRAR任意执行漏洞CVE-2023-38831的攻击活动。研究人员表示,该漏洞最早于2023年4月被利用,于2023年7月被该组织发现并提交至RARLAB,最终于2023年8月2日由RARLAB发布修复了该漏洞的WinRAR v6.23正式版本。

    9月14日,知道创宇404高级威胁情报团队发表了APT组织利用该漏洞的报告——《Konni APT 利用 WinRAR 漏洞(CVE-2023-38831)攻击数字货币行业》。报告中,表示首次发现有APT组织(Konni组织)利用WinRAR任意执行漏洞CVE-2023-38831进行攻击活动。

    本次漏洞影响范围为WinRAR低于v6.23的所有版本,以下是该漏洞的基本信息:

CVE ID

CVE-2023-38831

公布时间

2023-08-24

类型

代码执行

等级

高危

攻击向量

本地

所需权限

攻击复杂度

用户交互

需要

PoC/EXP

已公开

在野利用

已发现

表1-1  CVE-2023-38831基本信息

    WinRAR工具发展历史悠久,拥有庞大的用户团体,白泽安全实验室在调查中发现存在安全缺陷的WinRAR仍被大量Windows用户使用,这无疑给了攻击者可乘之机。本文对该漏洞的原理进行了介绍,旨在为普通用户进行提醒和安全科普,为分析人员研究工作提供一定参考。

2 |漏洞简介

    WinRAR是一款功能强大的文件压缩和解压缩工具,常用于Windows操作系统,其具备高效的压缩算法、密码保护、分卷压缩、恢复记录等特性,同时支持多种压缩格式,提供图形和命令行界面,以及自解压缩功能,为用户提供了方便、安全的文件管理和传输工具。

    zip文件格式是一种数据压缩和文档储存的文件格式。该文件格式使用了三种数据结构对压缩包文件内容进行管理,其中有一个名为ZIPDIRENTRY的数据结构,zip文件为压缩包内每个文件和文件夹都存储了一个这样的结构体,该结构体指明了文件/文件夹的名称、名称长度和修改日期等多项数据。

    WinRAR压缩文件管理工具支持用户预览并执行压缩包内文件,当用户打开zip格式的压缩包并执行其中的文件时,WinRAR工具会遍历zip文件的ZIPDIRENTRY结构体,比较用户选择的文件名和每个结构体内存储的文件名,比较成功的文件会被WinRAR释放至临时目录下并在稍后执行。然而由于WinRAR在比较文件名的代码部分存在问题,导致非用户所选目标文件的释放。

    WinRAR使用了ShellExecuteExW启动目标文件,ShellExecuteExW是Windows系统的一个API函数,可根据传入参数对目标文件进行操作。该API执行时会对文件的路径进行检查,当路径字符串末尾存在空格时,该API会在文件路径末尾加上通配符“.*”并搜索目标路径下匹配的文件来执行。

    当打开经过特殊构造zip压缩包内的文件时,WinRAR会错误的释放非目标文件并由ShellExecuteExW执行。综上所述,该漏洞的触发包含两个环节:

  1. 文件释放:在使用WinRAR执行压缩包内文件时,由于文件名字符串比较的问题,导致了非目标文件的释放;

  2. 文件执行:释放文件后,WinRAR使用ShellExecuteExW执行目标文件,当为API传入的路径字符串末尾有空格时,会导致路径下其他特定文件的执行。

3 |漏洞详情

    本节以WinRAR v6.11(x64)为例,分析漏洞的实现原理和过程。

3.1 文件释放

    zip文件使用三种数据结构管理压缩包内容:ZIPFILERECORD, ZIPDIRENTRY和ZIPENDLOCATOR,其中ZIPDIRENTRY是我们要重点关注的对象,zip压缩包内对每个文件和文件夹都存储了一个这样的数据结构,该数据结构下有一个名为deFileName的成员,存储了目标文件/文件夹的名称,下文将该字符串简称为entryName。

    构建一个zip格式的压缩包,其源文件结构和zip文件结构如下所示:

WinRAR或成APT组织得力攻击武器?

图3-1  压缩文件的源文件结构

WinRAR或成APT组织得力攻击武器?

图3-2  压缩文件的数据结构

    当在WinRAR工具内点击目标文件test.txt时,程序会遍历所有ZIPDIRENTRY结构体,并比较字符串test.txt和entryName,文件名比较部分的代码如下所示。

WinRAR或成APT组织得力攻击武器?

图3-3  WinRAR比较文件名的代码

    从图中代码可以看出:(1)函数会计算目标文件名的长度,并以此长度为限制调用字符串比较函数进行比较;(2)字符串比较成功时,函数会对entryName未被比较的首个字符进行检查,当该字符为正反斜杠(/ 和 )或字符串结束符时,返回1(表示文件名匹配成功)。

    根据此处代码的比较逻辑,当以test.txt为目标文件名时,除了test.txt本身以外,其他任何形如test.txt/*或test.txt*的文件名(这里*表示任意字符串)都会被匹配成功。为验证此结论,我们修改zip的ZIPDIRENTRY结构体,将其中一个entryName改为下图形式:

WinRAR或成APT组织得力攻击武器?

图3-4  经特殊修改后的zip文件

    当在WinRAR内点击test.txt执行,正常情况下WinRAR只会解压目标文件test.txt,而此处WinRAR释放了两个文件,test.txt和被修改过entryName的test2.tx,如下所示:

WinRAR或成APT组织得力攻击武器?

图3-5  被释放的多个文件

3.2 文件执行

    如上节所述,WinRAR在释放目标文件后会使用ShellExecuteExW执行目标文件,该Windows API会对传入的文件路径进行处理,包括使用PathFindExtensionW提取目标文件路径的扩展名,从ShellExecuteExW到PathFindExtensionW的函数调用关系如下图所示:

WinRAR或成APT组织得力攻击武器?

图3-6  ShellExecuteExW到PathFindExtensionW的调用关系

    PathFindExtensionW能对传入的文件路径字符串进行处理,并返回文件扩展名所在位置的指针。提取文件扩展名所在位置指针的功能由其子函数PathCchFindExtension实现,对该函数进行分析可以发现:当路径的最后一个‘.’字符之后存在字符反斜杠和空格(‘’和‘ ’)时,PathCchFindExtension函数会返回路径字符串的末尾指针(可以看作是一个空字符串指针)。以下为该函数的代码和调试情况:

WinRAR或成APT组织得力攻击武器?

图3-7  PathFindExtensionW函数

WinRAR或成APT组织得力攻击武器?

图3-8  PathFindExtensionW的子函数PathCchFindExtension

WinRAR或成APT组织得力攻击武器?

图3-9  调试中函数PathCchFindExtension的传出值情况

    PathFindExtensionW返回空字符串后,函数CShellExecute::_PerformantBindCtx会调用一个函数在字符串末尾拼接通配符“.*”并查找当前路径下满足条件的文件。该通配符的匹配顺序依次为“.pif”、“.com”、“.exe”、“.bat”、“.lnk”、“.cmd”,成功匹配到其中一个时,函数返回。

WinRAR或成APT组织得力攻击武器?

图3-10  添加通配符并匹配文件的代码

    举例来说,当传入的文件路径为“C:test.txt ”时(注意在文件名后有空格),该函数会在路径后添加通配符(“C:test.txt .*”),并在路径“C:”下查找满足该条件的文件(如“C:test.txt .exe”、“C:test.txt .cmd”等)。

    随后匹配到的文件会被执行。

WinRAR或成APT组织得力攻击武器?

图3-11  添加通配符后匹配到的文件被执行

3.3 流程总结

    文件释放的执行流程总体如下图所示,其中标红字体为导致漏洞的关键部分:

WinRAR或成APT组织得力攻击武器?

图3-12  文件释放漏洞的大致触发流程

    文件执行的执行流程总体如下图所示,其中标红字体为导致漏洞的关键部分:

WinRAR或成APT组织得力攻击武器?

图3-13  文件执行漏洞的大致触发流程

4 |漏洞验证

    根据对该漏洞的触发原理的分析,可以构造具有特殊结构的zip压缩包,下图为构造的压缩包结构:

WinRAR或成APT组织得力攻击武器?

图4-1  经过特殊构造的zip压缩包

    其中a1.txt .cmd的文件内容如下,其执行的命令行功能为打开计算器:

WinRAR或成APT组织得力攻击武器?

图4-2  cmd文件的内容

    使用WinRAR打开该压缩包并执行文件“a1.txt ”,可以观察到计算器被启动,并且在temp目录下可以看到被释放的文件除了“a1.txt”以外,还有“a1.txt .cmd”和“b.txt”。

WinRAR或成APT组织得力攻击武器?

图4-3  漏洞触发的演示

5 |总结

    CVE-2023-38831漏洞严重威胁到了使用WinRAR工具的用户信息安全,该漏洞触发条件极为简单,影响范围极广,并且已经有APT组织使用该漏洞进行攻击活动。在此白泽安全实验室提醒各位用户:

  • 保持软件和系统更新:及时升级WinRAR软件版本或更换其他同类型工具,定期更新您的操作系统、应用程序和防病毒软件,以确保它们具有最新的安全补丁和防护机制;

  • 不要点击未知的链接或附件:不要打开来自未知发件人的电子邮件,尤其是那些包含附件或链接的电子邮件;

  • 定期备份数据:定期备份重要数据,以便在遭受攻击时可以恢复数据;

6 |参考链接

[1] https://www.group-ib.com/blog/cve-2023-38831-winrar-zero-day/

[2] https://www.rarlab.com/rarnew.htm

[3] https://www.secrss.com/articles/58122

[4] https://paper.seebug.org/3032/

原文始发于微信公众号(白泽安全实验室):WinRAR或成APT组织“得力攻击武器”?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月22日23:25:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WinRAR或成APT组织得力攻击武器?https://cn-sec.com/archives/2060244.html

发表评论

匿名网友 填写信息