CVE-2023-38831 - WinRAR
Этот репозиторий содержит логику обнаружения для CVE-2023-38831 (эксплойт WinRAR, основанный на подмене ZIP-файлов / двойном расширении) с готовыми запросами / блоками кода, а также именами ETW-провайдеров и идентификаторами событий. Уязвимая версия WinRAR (< 6.23) на целевой системе
CVE-2023-38831 эксплуатируется, когда:
Пользователь открывает вредоносный ZIP-файл в WinRAR
Архив содержит:
● Файл-приманку (например, invoice.pdf)
● Каталог с тем же именем (например, invoice.pdf )
● Внутри каталога «два» файла с одинаковым именем, но немного разными именами (у одного файла — пробел и любое расширение в конце; например, если первый файл — «invoice.pdf », то второй может быть любым скриптом или исполняемым файлом, например «invoice.pdf .cmd»)
WinRAR выполняет скрипт или исполняемый файл вместо открытия документа (в данном случае «PDF»)
Это выполнение инициируется вызовом функции ShellExecuteExW для запуска файла с передачей shExecInfo (ShellExecute через Explorer)
WinRAR порождает дочерний процесс (cmd, powershell, mshta, wscript, exe — как и всё, что находится внутри папки)
Выполнение часто происходит из пути Temp / AppData / извлечённой папки
Схема потока Пользователь открывает архив
↓
WinRAR показывает файл-приманку
↓
Пользователь дважды щёлкает по документу
↓
WinRAR извлекает каталог с тем же именем
↓
Исполняемый файл записывается в *.pdf\*.pdf .exe
↓
ShellExecute через Explorer
↓
ImageLoad исполняемого файла
↓
Выполнение полезной нагрузки
Почему этот поток важен для обнаружения
● Нет использования макросов
● Нет зависимости от создания процессов
● Эксплойт основан на маскировке в файловой системе
● Сигнал с высокой точностью и низким уровнем шума
Важные технические детали
Файлы записываются в особой структуре
Например, есть два объекта (файл/каталог) с одинаковым именем: когда в архивном файле есть файл и каталог с одним именем, и вы хотите временно открыть файл, дважды щёлкнув по нему (целевому файлу) в открытом архиве, WinRAR извлекает этот файл, а также извлекает все файлы с тем же именем, что и целевой. Все они записываются во временный каталог по пути %tmp%.
| Имя файла/каталога | Путь извлечения |
| ------------------------------------------------------ | --------------------------------------------------------------------------------- |
| 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\`|
Если во временном каталоге (для распаковки) есть два файла с одинаковым именем, но разного размера (например, 20 КБ и 12 КБ), и вы открываете архив и открываете первый файл, 1.txt, размером 20 КБ, WinRAR предложит заменить файл вторым файлом, 1.txt, размером 10 КБ. Если нажать «Да», откроется только второй файл, 1.txt. Это условие можно добавить для исключения.
Важный момент для логики обнаружения
Выполнение процесса, инициированное из пути извлечения ZIP или временного каталога, с вводящим в заблуждение расширением или папкой, маскирующейся под файл
Когда WinRAR распаковывает файл во временный каталог, в нём должно быть два файла с одинаковым именем, но немного разными именами (пробел и любое расширение в конце), например, имя основного файла с « » (CLASSIFIED_DOCUMENTS.pdf) в конце имени, а затем «.cmd» (CLASSIFIED_DOCUMENTS.pdf .cmd).
Когда WinRAR загружает DLL и вызывает функцию ShellExecuteExA, параметр «pExecInfo» содержит путь с пробелом и любым расширением в конце, например «CLASSIFIED_DOCUMENTS.pdf .cmd».
ETW-провайдеры и философия обнаружения (только ETW) ETW-провайдеры
| Назначение | ETW-провайдер |
| -------------------------- | ------------------------------------- |
| Создание процесса | `Microsoft-Windows-Kernel-Process` |
| Видимость командной строки | `Microsoft-Windows-Security-Auditing` |
| Файловые операции (опционально) | `Microsoft-Windows-Kernel-File` |
Обнаружение будет полагаться на (если нет ProcessStart, CreateProcess или EDR-логики «родитель/потомок»):
● ETW файловой системы
● ETW оболочки / Explorer
● ETW загрузки образов (опционально, без создания)
● ETW командной строки (опционально)
Основные ETW-провайдеры
| Назначение | ETW-провайдер |
| -------------------------- | ------------------------------------- |
| Создание каталога | `Microsoft-Windows-Kernel-File` |
| Создание EXE-файлов | `Microsoft-Windows-Kernel-File` |
| Выполнение через оболочку | `Microsoft.Windows.ShellExecute` |
| Загрузка образов | `Microsoft-Windows-Kernel-Image` |
| Explorer | `Microsoft-Windows-Explorer` |
| Оболочка | `Microsoft-Windows-Shell-Core` |
Базовый принцип логики обнаружения
На высоком уровне логика обнаруживает:
● WinRAR.exe инициирует запись файлов
● Создание каталога и файла с одинаковым базовым именем
● Появление исполняемого расширения после переименования или перезаписи
● Последовательность в узком временном окне (<2 с)
Эта закономерность крайне редко встречается в легитимных сценариях, но является ключевой для пути выполнения эксплойта.
● Правило намеренно избегает:
● Анализа командной строки
● Отслеживания дочерних процессов
● Полного хеширования файлов
Основная логика обнаружения описана ниже, вместе с уровнем уверенности и кратким обоснованием.