Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2023-38831 — CVE-2023-38831 - WinRAR | Kitploit
Herramientas/GitHubGitHub/mishra0230/cve-2023-38831
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAnálisis ForenseAnálisis de MalwarePruebas de PenetraciónInteligencia de AmenazasPapers e InvestigaciónAprendizaje y EducaciónRespuesta a IncidentesExplotación de Binarios
hace 7 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
mishra0230/cve-2023-38831

CVE-2023-38831

CVE-2023-38831 - WinRAR

Ver Repositorio

Lógica de detección para el exploit CVE-2023-38831 de WinRAR

Este repositorio contiene una lógica de detección para CVE-2023-38831 (explotación de suplantación de archivos ZIP / doble extensión de WinRAR) con consultas sin procesar / bloques de código y nombres de proveedores específicos de ETW + ID de eventos. Una versión vulnerable de WinRAR (< 6.23) en el sistema objetivo

Resumen del comportamiento

CVE-2023-38831 se explota cuando:

  • El usuario abre un ZIP malicioso en WinRAR

  • El archivo comprimido contiene:

    ● Un archivo señuelo (por ejemplo, invoice.pdf )

    ● Un directorio con el mismo nombre (por ejemplo, invoice.pdf )

    ● Dentro del directorio "dos" archivos con el mismo nombre pero nombres ligeramente diferentes (para un archivo, un espacio y que termina con cualquier extensión; por ejemplo, si el primer archivo es "invoice.pdf ", el segundo puede ser cualquier script o ejecutable como "invoice.pdf .cmd")

  • WinRAR ejecuta el script o ejecutable en lugar de abrir el documento (“PDF” en este caso)

  • Esta ejecución se desencadena al llamar a la función ShellExecuteExW para ejecutar el archivo, pasando shExecInfo (ShellExecute a través del Explorador)

  • WinRAR genera un proceso hijo (cmd, powershell, mshta, wscript, exe, igual que cualquier cosa presente dentro de la carpeta)

  • La ejecución a menudo ocurre desde Temp / AppData / ruta extraída

Resumen del ataque

Resumen del flujo El usuario abre el archivo

root@kitploit:~
  ↓
  
WinRAR muestra el archivo señuelo

  ↓
  
El usuario hace doble clic en el documento

  ↓
  
WinRAR extrae el directorio con el mismo nombre
  ↓
  
Ejecutable escrito en *.pdf\*.pdf .exe
  ↓
  
ShellExecute vía Explorador
  ↓
  
ImageLoad del ejecutable

  ↓
  
Ejecución del payload

Por qué este flujo es importante para la detección

root@kitploit:~
●	Sin uso de macros

●	Sin dependencia de la creación de procesos

●	El exploit se basa en el enmascaramiento del sistema de archivos

●	Señal de alta confianza y bajo ruido

Detalles técnicos importantes

  • Los archivos se escriben en una estructura especial

    Es como tener dos objetos (archivo/directorio) con el mismo nombre; cuando tienes un archivo y un directorio con el mismo nombre en un archivo comprimido y quieres abrir el archivo temporalmente, al hacer doble clic en él (archivo objetivo) dentro del archivo comprimido abierto, WinRAR extrae ese archivo por ti y también extrae todos los archivos que tienen el mismo nombre que el archivo objetivo. Todos se escriben en un directorio temporal en la ruta %tmp%.

    root@kitploit:~
      	| Nombre de archivo/directorio                          | Ruta de extracción                                                              |
      	
      	| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
      	
      	| CLASSIFIED_DOCUMENTS.txt <– archivo objetivo en el que se hizo clic | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
      	
      	| CLASSIFIED_DOCUMENTS.txt .cmd <– el archivo en el directorio | `C:\Users\UsersName\AppData\Loca\Temp\Rar$DIa8432.13968\CLASSIFIED_DOCUMENTS.txt\`|
      	
    
  • Si hay dos archivos en un directorio temporal (de descompresión) con el mismo nombre pero diferente tamaño (por ejemplo, 20k y 12k), y abres el archivo comprimido y abres el primer archivo, 1.txt, que tiene 20k bytes, WinRAR te pedirá que reemplaces un archivo con el segundo archivo, 1.txt, que tiene 10K. Si haces clic en "Sí", solo se abrirá el segundo archivo, 1.txt. Esta condición se puede añadir como exclusión.

Punto importante para la lógica de detección

  • Ejecución de procesos desencadenada desde una ruta de extracción ZIP o un directorio temporal, con una extensión engañosa o una carpeta que se hace pasar por un archivo

  • Cuando WinRAR libera un archivo para descompresión en el directorio temporal, debe contener dos archivos con el mismo nombre pero nombres ligeramente diferentes (un espacio y que termina con cualquier extensión), como un nombre igual al del archivo principal con un “ ” (CLASSIFIED_DOCUMENTS.pdf ) al final de su nombre y luego un “.cmd” (CLASSIFIED_DOCUMENTS.pdf .cmd).

  • Cuando WinRAR carga una DLL y llama a la función ShellExecuteExA, el parámetro "pExecInfo" tiene una ruta con un espacio y que termina con cualquier extensión, como "CLASSIFIED_DOCUMENTS.pdf .cmd."

  • Proveedores ETW y filosofía de detección (solo ETW) Proveedores ETW

    root@kitploit:~
      	| Propósito                     | Proveedor ETW                          |
      	
      	| -------------------------- | ------------------------------------- |
      	
      	| Creación de procesos           | `Microsoft-Windows-Kernel-Process`    |
      	
      	| Visibilidad de la línea de comandos    | `Microsoft-Windows-Security-Auditing` |
      	
      	| Operaciones de archivo (opcional) | `Microsoft-Windows-Kernel-File`       |
      	
    
     La detección se basará en (si no hay ProcessStart, CreateProcess o lógica de padre/hijo estilo EDR):
     
      	●	ETW del sistema de archivos
      	
      	●	ETW de Shell / Explorador
      	
      	●	ETW de carga de imagen (opcional, sin creación)
      	
      	●	ETW de línea de comandos (opcional)
      	
      
     Proveedores ETW principales
     
      	| Propósito                     | Proveedor ETW                          |
      	
      	| -------------------------- | ------------------------------------- |
      	
      	| Creación de directorios         | `Microsoft-Windows-Kernel-File`       |
      	
      	| Creación de EXE               | `Microsoft-Windows-Kernel-File`       |
      	
      	| Ejecución de Shell            | `Microsoft.Windows.ShellExecute`      |
      	
      	| Carga de imagen               | `Microsoft-Windows-Kernel-Image`      |
      	
      	| Explorador                    | `Microsoft-Windows-Explorer`          |
      	
      	| Shell                         | `Microsoft-Windows-Shell-Core`        |	
    

Lógica de detección sin procesar

root@kitploit:~
A alto nivel, la lógica detecta:

			●	WinRAR.exe iniciando escrituras de archivos

			●	Creación de un directorio y un archivo con el mismo nombre base

			●	Extensión de ejecutable que se materializa después de un renombrado o sobrescritura

			●	Secuencia que ocurre dentro de una ventana de tiempo estrecha (<2 s)

Este patrón es extremadamente raro en flujos de trabajo benignos, pero es fundamental para la ruta de ejecución del exploit.

			●	La regla evita intencionalmente:

			●	Inspección de la línea de comandos

			●	Seguimiento de procesos hijos

			●	Hash completo de archivos

Lógica de detección principal

La lógica de detección principal se menciona a continuación, junto con un nivel de confianza y una breve justificación.

1. Carga de imagen (confirmación de ejecución)

root@kitploit:~
	Razón: esto confirma la ejecución real sin telemetría de creación de procesos.
	
	Lógica de detección:
	
		Cargador de Windows:
		
			●	Mapea Invoice.pdf .exe en memoria
			
		Señal ETW:
		
			●	ImageLoad
			
			●	Ruta de imagen:
			
			●	*.pdf\*.pdf .exe	
			
	

2. Regla de detección (API ShellExecuteExA) - lógica de regla de alta fidelidad

root@kitploit:~
Regla de detección genérica basada en la siguiente telemetría:

			●	Eventos de creación de archivos por parte de WinRar.exe
			
			●	Eventos de carga de imagen para WinRar.exe que carga una DLL Shell32.dll y comienza a usar una API (ShellExecuteExA|W) con los parámetros.
			
			●	Esta función solo recibe un argumento llamado SHELLEXECUTEINFO, que es una estructura. Como ves, esta estructura tiene muchos campos, pero dos de ellos son importantes para nosotros:
				lpVerb y lpFile.
				
			●	lpVerb: indica que si estableces lpVerb en NULL, ShellExecuteExA|W usa el verbo predeterminado si está disponible; si no, realiza el verbo “open”. Y el verbo “open” abre o ejecuta el archivo.
			
			●	lpFile: lpFile es la ruta del archivo que se usa en ShellExecuteExA para realizar el verbo; y ahora puedes prestar atención al carácter de espacio (0x20) al final de la ruta del archivo.
			             
			
Nota:
	1- Shell32.dll: aquí es donde se define ShellExecuteExA. Contiene la lógica para analizar la estructura SHELLEXECUTEINFO y determinar cómo manejar la solicitud (por ejemplo, abrir un documento, ejecutar un EXE o mostrar un cuadro de diálogo de propiedades)
			
	2- Así es como funciona la vulnerabilidad: la vulnerabilidad está aquí. WinRAR eliminó el espacio del nombre del archivo en el momento de la escritura, pero olvidó aplicar este cambio a la lista de extracción. Entonces el nombre del archivo objetivo no cambió y el espacio sigue en el nombre del archivo.
		Tambi├®n puedo decir que ShellExecuteExA abre el archivo “CLASSIFIED_DOCUMENTS.pdf .cmd”. El “.cmd” no importa para ShellExecuteExA; solo ejecuta un archivo con el nombre “CLASSIFIED_DOCUMENTS.pdf ” en esa ruta.
        			
Lógica de detección (lógica de regla de alta fidelidad):

	●	Basado en SQL: \\Detection_Logic\\SQL-based-ShellExecute.txt
	
	●	KQL (ProcessCommandLine): \\Detection_Logic\\KQL-API-ProcessCommandLine.txt
	
	●	Lógica de detección en pseudocódigo: \\Detection_Logic\\SQL-API-ShellExecute.txt

Nota: puedes crear una lógica de detección de acuerdo con los estándares anteriores. También estoy añadiendo un script simple de Python para obtener eventos que te ayudarán a escribir tu regla de detección. También se añadió algo útil al crear reglas basadas en ETW.

	 
		| Proveedor                             | ID de evento                               | ID de evento / Tarea          |
		                                                                       
		| ------------------------------------- | ----------------------------------------- | --------------------------- |
		                                                                       
		| `Microsoft-Windows-Shell-Core`        | {30336983-0362-4540-9E69-14844E6A3B7A}    | ID de evento 1 (Ejecutar)   |
		
		| `Microsoft-Windows-Kernel-Process`    | {22FB2AD3-E163-4078-8C2A-801648437D2D}    | Carga de imagen / Inicio de proceso |


		
		

3. Lógica de regla de alta fidelidad para la explotación de CVE-2023-38831 en WinRAR

root@kitploit:~
	- Razón: alerta cuando se crea o carga un ejecutable desde un directorio cuyo nombre termina con una extensión de documento, y la ejecución se inicia a través de las API del Explorador/Shell.			
	- Lógica de detección en pseudocódigo (lógica de regla de alta fidelidad): \\Detection_Logic\\WinRAR-CVE-2023-38831-Exploitation.txt				

4. Regla de detección EDR (basada en ETW)

root@kitploit:~
Regla de detección EDR genérica basada en la siguiente telemetría:	 
	
			●	Eventos de creación de archivos
			
			●	Ejecución de Shell / invocación del Explorador
			
			●	Eventos de carga de imagen (opcionales pero sólidos)
			
	Lógica de detección: \\Detection_Logic\\EDR-Detection-ETW-based.txt
	

5. Consulta KQL sin DeviceProcessEvents (si el endpoint lo admite)

root@kitploit:~
		Razón: esta versión funciona sin depender de DeviceProcessEvents.
		
		Lógica de detección: \\Detection_Logic\\KQL-Detection-without-DeviceProcessEvents.txt
		
   

6. Señal de ejecución de Shell (si está habilitada y es compatible)

root@kitploit:~
		Razón: esto refuerza la confianza cuando se correlaciona con la creación de archivos.
		
		Lógica de detección: \\Detection_Logic\\Shell-Execution-Signal.txt	
		

7. Amigable para SOC (flujo de triaje)

root@kitploit:~
		Razón: esta regla se creó para cada paso descubierto durante un ataque.
		
		Lógica de detección: \\Detection_Logic\\SOC-Friendly.txt
		
		

Lógica de detección alternativa

(Alerta / si se incluye ProcessStart, CreateProcess o lógica de padre/hijo estilo EDR)

1. Detectar cuando winrar.exe crea un directorio/archivo sospechoso, especialmente desde rutas de extracción temporal o de archivos, y ejecuta un archivo sospechoso creado usando una versión vulnerable de WinRAR

root@kitploit:~
Razón: crea reglas según los eventos que maneja tu producto, como los basados en acceso, eventos o en la nube.

Lógica de detección: \\Detection_Logic\\Gen-Pseudocode-Detection-Logic.txt

2. Detectar cuando winrar.exe genera un proceso hijo sospechoso, especialmente desde rutas de extracción temporal o de archivos

root@kitploit:~
	Lógica de detección:
	
		Endpoint: \\Detection_Logic\\winrar-spawns-suspicious-child-process.txt
		
		Regla Sigma: \\Detection_Logic\\Sigma-Rule-WinRAR Exploit.txt
			

3. Alerta basada en el proveedor ETW (creación de procesos)

root@kitploit:~
		| Proveedor                             | ID de evento                    |
		
		| ------------------------------------- | --------------------------- |
		
		| `Microsoft-Windows-Security-Auditing` | 4688 (Creación de procesos)     |
		

	Lógica de detección
	
		●	Proceso padre = winrar.exe
		
		●	Nuevo proceso = motor de scripting o ejecutable
		
		●	La línea de comandos incluye Temp/AppData

4. Consulta KQL con DeviceProcessEvents (si el endpoint lo admite)

root@kitploit:~
		Razón: si queremos desarrollar usando DeviceProcessEvents.
		
		Lógica de detección: \\Detection_Logic\\KQL-Detection-with-DeviceProcessEvents.txt
		

5. Indicador de ataque (puedes añadir una alerta de alta confianza)

root@kitploit:~
	Al cumplir las condiciones siguientes, puedes añadir una regla de IOA o lista de vigilancia para alertar.

	| Indicador                          | Confianza  |
	
	| ---------------------------------- | ---------- |
	
	| winrar.exe generando cmd/powershell |  Alta      |
	
	| Ejecución desde Temp/AppData        |  Alta      |
	
	| Ejecución de `.cmd/.bat /.exe `     |  Alta      |
	
	| ZIP de doble extensión abierto      |  Media     |

Lista de vigilancia

Crea una lista de vigilancia para dos archivos con el mismo nombre en un directorio creado por una versión vulnerable de WinRAR (< 6.23):

Como no puedes tener dos archivos con el mismo nombre en un directorio, y tampoco puedes tener un directorio y un archivo con el mismo nombre.

Pero esto es posible en software de compresión como WinRar/7zip. En un archivo comprimido, sin importar si tienes archivos con el mismo nombre, los archivos se escriben en una estructura especial.

Así que puedes tener dos objetos (archivo/directorio) con el mismo nombre en un archivo ZIP/RAR.

Exclusiones (disparadores legítimos)

root@kitploit:~
	Disparadores probablemente legítimos
	
		●	cmd.exe generado por instaladores autoextraíbles de 7-Zip/WinRAR
		
		●	powershell.exe lanzado por actualizadores de software empresarial empaquetados en RAR
		
		●	rundll32.exe utilizado por instaladores de controladores de impresora o GPU

	Lógica de exclusión (ejemplo)
	
		AND NOT (
		  ChildImage IN (cmd.exe, powershell.exe, rundll32.exe)
		  AND
		  CommandLine CONTAINS (
			"setup.exe",
			"install.cmd",
			"driverinstall",
			"vendorupdate"
		  )
		)
			

Oportunidad de correlación

root@kitploit:~
	Esto preserva la detección del exploit mientras suprime el comportamiento conocido de los instaladores.
	Telemetría de archivos comprimidos (eventos del sistema de archivos): correlacionar esta regla con la actividad de extracción de RAR/ZIP (por ejemplo, la creación de archivos .cmd/.bat/.exe inmediatamente antes de la ejecución, especialmente desde directorios de extracción de WinRAR como Rar$EX*) aumentaría significativamente la confianza y reduciría los falsos positivos al demostrar que la ejecución siguió directamente a la extracción del archivo.
	
	

Mapeo MITRE ATT&CK

root@kitploit:~
	T1204.002 – Ejecución de usuario: archivo malicioso
	T1059 – Intérprete de comandos y scripts
	T1036 – Enmascaramiento (doble extensión)

Aviso legal

root@kitploit:~
Este código de detección es solo para fines educativos y de pruebas autorizadas.  
No lo uses en sistemas que no te pertenezcan o para los que no tengas permiso explícito de prueba.

Referencias

  • Blog de Group-IB: CVE-2023-38831 WinRAR Zero-Day
  • Análisis de B1tg (GitHub): CVE-2023-38831
  • PoC del exploit WinRAR de B1tg (GitHub): CVE-2023-38831
  • PoC del exploit WinRAR CVE-2023-38831 (GitHub)
  • Módulo de rapid7 para Metasploit (GitHub)
  • Módulo de Metasploit (GitHub)
Descargar herramienta