Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-38831 — CVE-2023-38831 - WinRAR | Kitploit
工具/GitHubGitHub/mishra0230/cve-2023-38831
漏洞分析漏洞利用Web应用程序漏洞利用取证分析恶意软件分析渗透测试威胁情报论文与研究学习与教育事件响应二进制利用
GitHub
37个月前尚未审核
mishra0230/cve-2023-38831

CVE-2023-38831

CVE-2023-38831 - WinRAR

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-38831 WinRAR 漏洞利用检测逻辑

本仓库包含针对 CVE-2023-38831(WinRAR ZIP 文件欺骗 / 双扩展名漏洞利用)的检测逻辑,包含原始查询 / 代码块以及 ETW 特定的提供程序名称和事件 ID。 目标系统上存在易受攻击的 WinRAR 版本(< 6.23)

行为概述

CVE-2023-38831 在以下情况下被利用:

  • 用户在 WinRAR 中打开恶意 ZIP

  • 压缩包中包含:

    ● 一个诱饵文件(例如 invoice.pdf )

    ● 一个同名目录(例如 invoice.pdf \)

    ● 目录内有两个同名但名称略有差异的文件(其中一个文件名以空格结尾并带有任意扩展名,例如第一个文件是 "invoice.pdf ",那么第二个文件可以是任何脚本或可执行文件,如 "invoice.pdf .cmd")

  • WinRAR 执行脚本或可执行文件,而不是打开文档(本例中为“PDF”)

  • 此执行是通过调用函数 ShellExecuteExW 来执行该文件触发的,并传入 shExecInfo(通过资源管理器执行 ShellExecute)

  • WinRAR 生成一个子进程(cmd、powershell、mshta、wscript、exe,与文件夹中实际存在的内容相同)

  • 执行通常发生在 Temp / AppData / 解压路径中

攻击概述

流程摘要 用户打开压缩包

root@kitploit:~
  ↓

WinRAR 显示诱饵文件

  ↓

用户双击文档

  ↓

WinRAR 解压同名目录
  ↓

可执行文件被写入 *.pdf\*.pdf .exe
  ↓

通过资源管理器执行 ShellExecute

  ↓

可执行文件的 ImageLoad

  ↓

Payload 执行

为什么此流程对检测很重要

root@kitploit:~
●	不使用宏

●	不依赖进程创建

●	漏洞利用依赖于文件系统伪装

●	高置信度、低噪声信号

重要的技术细节

  • 文件以特殊结构写入

    例如压缩包中有两个同名对象(文件/目录)。当压缩文件中同时存在同名文件和目录,而你想临时打开该文件时,只需在打开的压缩文件中双击它(目标文件),WinRAR 就会为你解压该文件,同时也会解压所有与目标文件同名的文件。所有这些文件都会被写入 %tmp% 路径下的临时目录中。

    root@kitploit:~
      	| 文件/目录名称                                          | 解压路径                                                                   |
    
      	| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
    
      	| CLASSIFIED_DOCUMENTS.txt <– 被点击的目标文件   | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
    
      	| CLASSIFIED_DOCUMENTS.txt .cmd <– 目录中的文件 | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
    
  • 如果在临时(解压)目录中有两个同名但大小不同的文件(例如 20k 和 12k),当你打开压缩包并打开第一个文件 1.txt(大小为 20k 字节)时,WinRAR 会提示你用第二个文件 1.txt(大小为 10K)替换该文件。如果点击“是”,则只会打开第二个文件 1.txt。此条件可作为排除项添加。

检测逻辑的要点

  • 从 ZIP 解压路径或临时目录触发的进程执行,带有误导性扩展名或伪装成文件的文件夹

  • 当 WinRAR 在临时目录中释放文件进行解压时,其中必须包含两个同名但名称略有差异的文件(以空格结尾并带有任意扩展名),例如在主文件名末尾添加一个空格“ ”(CLASSIFIED_DOCUMENTS.pdf ),然后再加一个“.cmd”(CLASSIFIED_DOCUMENTS.pdf .cmd)。

  • 当 WinRAR 加载 DLL 并调用 ShellExecuteExA 函数时,参数 "pExecInfo" 中的路径带有一个空格并以任意扩展名结尾,例如 "CLASSIFIED_DOCUMENTS.pdf .cmd"。

  • ETW 提供程序与检测原理(仅 ETW) ETW 提供程序

    root@kitploit:~
      	| 用途                    | ETW 提供程序                          |
    
      	| -------------------------- | ------------------------------------- |
    
      	| 进程创建           | `Microsoft-Windows-Kernel-Process`    |
    
      	| 命令行可见性    | `Microsoft-Windows-Security-Auditing` |
    
      	| 文件操作(可选) | `Microsoft-Windows-Kernel-File`       |
    
    
     检测将依赖于(如果没有 ProcessStart、CreateProcess 或 EDR 风格的父/子逻辑):
    
      	●	文件系统 ETW
    
      	●	Shell / 资源管理器 ETW
    
      	●	映像加载 ETW(可选,非创建)
    
      	●	命令行 ETW(可选)
    
    
     核心 ETW 提供程序
    
      	| 用途                    | ETW 提供程序                          |
    
      	| -------------------------- | ------------------------------------- |
    
      	| 目录创建         | `Microsoft-Windows-Kernel-File`       |
    
      	| EXE 创建               | `Microsoft-Windows-Kernel-File`       |
    
      	| Shell 执行            | `Microsoft.Windows.ShellExecute`      |
    
      	| 映像加载                 | `Microsoft-Windows-Kernel-Image`      |
    
      	| 资源管理器                   | `Microsoft-Windows-Explorer`          |
    
      	| Shell                      | `Microsoft-Windows-Shell-Core`        |	
    

原始检测逻辑

root@kitploit:~
在高层面上,该逻辑检测:

			●	WinRAR.exe 发起文件写入

			●	同时创建同名目录和文件

			●	重命名或覆盖后出现可执行扩展名

			●	在紧凑时间窗口内(<2 秒)发生的序列

这种模式在良性工作流中极为罕见,但却是漏洞利用执行路径的核心。

			●	该规则有意避免:

			●	命令行检查

			●	子进程跟踪

			●	完整文件哈希

核心检测逻辑

下文列出了核心检测逻辑,并附有置信度级别和简要说明。

1.映像加载(执行确认)

root@kitploit:~
	原因:无需进程创建遥测即可确认实际执行。

	检测逻辑:

		Windows 加载器:

			●	将 Invoice.pdf .exe 映射到内存中

		ETW 信号:

			●	ImageLoad

			●	映像路径:

			●	*.pdf\*.pdf .exe	

2.检测规则(API ShellExecuteExA)— 高保真规则逻辑

root@kitploit:~
基于以下遥测数据的通用检测规则:

			●	WinRar.exe 产生的文件创建事件

			●	WinRar.exe 加载 DLL Shell32.dll 并开始使用带参数的 API(ShellExecuteExA|W)的映像加载事件。

			●	该函数只接收一个名为 SHELLEXECUTEINFO 的参数,它是一个结构体。如你所见,这个结构体有许多字段,但其中两个对我们很重要:
				lpVerb 和 lpFile。

			●	lpVerb — 如果将 LpVerb 设置为 NULL,ShellExecuteExA|W 会使用默认动词(如果可用),否则会执行“open”(打开)动词。“open”动词会打开或执行该文件。

			●	lpFile — lpFile 是 ShellExecuteExA 用于执行动词的文件路径,现在请注意文件路径末尾的空格字符(0x20)。


注意:
	1- Shell32.dll:ShellExecuteExA 在此定义。它包含解析 SHELLEXECUTEINFO 结构并决定如何处理请求(例如打开文档、运行 EXE 或显示属性对话框)的逻辑。

	2- 漏洞的工作方式:漏洞就在这里。WinRAR 在写入时从文件名中移除了空格,但忘记将此更改提交到解压列表。因此目标文件名没有改变,空格仍然保留在文件名中。
		我还可以说,ShellExecuteExA 打开的是“CLASSIFIED_DOCUMENTS.pdf .cmd”文件。对 ShellExecuteExA 来说“.cmd”无关紧要,它只是运行该路径中名为“CLASSIFIED_DOCUMENTS.pdf ”的文件。

检测逻辑(高保真规则逻辑):

	●	SQL 方式:\\Detection_Logic\\SQL-based-ShellExecute.txt

	●	KQL(ProcessCommandLine):\\Detection_Logic\\KQL-API-ProcessCommandLine.txt

	●	伪代码检测逻辑:\\Detection_Logic\\SQL-API-ShellExecute.txt

注意:- 你可以按照上述标准创建检测逻辑。我还添加了一个简单的 Python 脚本,用于获取事件,这将有助于你编写检测规则,在创建基于 ETW 的规则时也很有用。


		| 提供程序                              | 事件 ID                                  | 事件 ID / 任务             |

		| ------------------------------------- | ----------------------------------------- | --------------------------- |

		| `Microsoft-Windows-Shell-Core`        | {30336983-0362-4540-9E69-14844E6A3B7A}    | Event ID 1(执行)        |

		| `Microsoft-Windows-Kernel-Process`    | {22FB2AD3-E163-4078-8C2A-801648437D2D}    | 映像加载 / 进程启动  |

3.针对 WinRAR CVE-2023-38831 漏洞利用的高保真规则逻辑

root@kitploit:~
	- 原因:当从名称以文档扩展名结尾的目录中创建或加载可执行文件,并通过资源管理器/Shell API 发起执行时发出警报。
	- 伪代码检测逻辑(高保真规则逻辑)- \\Detection_Logic\\WinRAR-CVE-2023-38831-Exploitation.txt

4.EDR 检测规则(基于 ETW)

root@kitploit:~
	基于以下遥测数据的通用 EDR 检测规则:

			●	文件创建事件

			●	Shell 执行 / 资源管理器调用

			●	映像加载事件(可选但强烈推荐)

	检测逻辑:\\Detection_Logic\\EDR-Detection-ETW-based.txt

5.不使用 DeviceProcessEvents 的 KQL 查询(如果端点支持)

root@kitploit:~
	原因:此版本无需依赖 DeviceProcessEvents 即可正常工作

	检测逻辑:\\Detection_Logic\\KQL-Detection-without-DeviceProcessEvents.txt

6.Shell 执行信号(如果已启用且受支持)

root@kitploit:~
	原因:与文件创建关联时可增强置信度。

	检测逻辑:\\Detection_Logic\\Shell-Execution-Signal.txt

7.面向 SOC 的规则(分流流程)

root@kitploit:~
	原因:此规则针对攻击过程中发现的每一个步骤而创建。

	检测逻辑:\\Detection_Logic\\SOC-Friendly.txt

备选检测逻辑

(警报 / 如果包含 ProcessStart、CreateProcess 或 EDR 风格的父/子逻辑)

1.检测 winrar.exe 何时创建可疑目录/文件(尤其是从临时目录或压缩包解压路径创建),以及使用存在漏洞的 WinRAR 版本运行可疑创建文件

root@kitploit:~
原因:根据你的产品所处理的事件来创建规则,例如访问类、事件类或基于云的产品

检测逻辑:\\Detection_Logic\\Gen-Pseudocode-Detection-Logic.txt

2.检测 winrar.exe 何时生成可疑子进程(尤其是从临时目录或压缩包解压路径生成)

root@kitploit:~
	检测逻辑:

		端点:\\Detection_Logic\\winrar-spawns-suspicious-child-process.txt

		Sigma 规则:\\Detection_Logic\\Sigma-Rule-WinRAR Exploit.txt

3.基于 ETW 提供程序(进程创建)的警报

root@kitploit:~
		| 提供程序                              | 事件 ID                    |

		| ------------------------------------- | --------------------------- |

		| `Microsoft-Windows-Security-Auditing` | 4688(进程创建)     |


	检测逻辑

		●	父进程 = winrar.exe

		●	新进程 = 脚本引擎或可执行文件

		●	命令行包含 Temp/AppData

4.使用 DeviceProcessEvents 的 KQL 查询(如果端点支持)

root@kitploit:~
	原因:如果我们希望使用 DeviceProcessEvents 进行开发

	检测逻辑:\\Detection_Logic\\KQL-Detection-with-DeviceProcessEvents.txt

5.攻击指标(可添加高置信度警报)

root@kitploit:~
	通过满足以下条件,你可以添加 IOA 或观察列表规则用于警报。

	| 指标                          | 置信度 |

	| ---------------------------------- | ---------- |

	| winrar.exe 生成 cmd/powershell | 高     |

	| 从 Temp/AppData 执行        | 高     |

	| `.cmd/.bat /.exe ` 执行       | 高     |

	| 打开双扩展名 ZIP        | 中   |

观察列表

为存在漏洞的 WinRAR 版本(< 6.23)创建的目录中的两个同名文件创建观察列表:

因为在目录中不能有两个同名文件,也不能有同名的目录和文件。

但在 WinRAR/7zip 等压缩软件中这是可能的。在压缩文件中,无论是否存在同名文件,文件都以特殊结构写入。

因此,你可以在 ZIP/RAR 文件中拥有两个同名的对象(文件/目录)。

排除项(合法触发条件)

root@kitploit:~
	可能合法的触发条件

		●	7-Zip/WinRAR 自解压安装程序生成的 cmd.exe

		●	RAR 打包的企业软件更新程序启动的 powershell.exe

		●	打印机驱动或 GPU 驱动安装程序使用的 rundll32.exe

	排除逻辑(示例)

		AND NOT (
		  ChildImage IN (cmd.exe, powershell.exe, rundll32.exe)
		  AND
		  CommandLine CONTAINS (
			"setup.exe",
			"install.cmd",
			"driverinstall",
			"vendorupdate"
		  )
		)

关联机会

root@kitploit:~
	这可以在抑制已知安装程序行为的同时,保留漏洞利用检测能力。
	压缩包文件遥测(文件系统事件)— 将此规则与 RAR/ZIP 解压活动关联(例如,在执行前立即创建 .cmd/.bat/.exe 文件,尤其是从 WinRAR 解压目录(如 Rar$EX*)中创建),可以通过证明执行紧随压缩包解压之后发生,从而显著提高置信度并减少误报。

MITRE ATT&CK 映射

root@kitploit:~
	T1204.002 – 用户执行:恶意文件
	T1059 – 命令和脚本解释器
	T1036 – 伪装(双扩展名)

免责声明

root@kitploit:~
此检测代码仅用于教育和授权测试目的。  
请勿在你不拥有或未经明确许可测试的系统上使用。

参考资料

  • Group-IB 博客:CVE-2023-38831 WinRAR 零日漏洞
  • Github- B1tg 分析:CVE-2023-38831
  • Github- B1tg WinRAR 漏洞利用 PoC CVE-2023-38831
  • Github- CVE-2023-38831 WinRAR 漏洞利用 PoC
  • Github- rapid7 的 metasploit 模块
  • Github- Metasploit 模块
下载工具