Обход механизма Mark-of-the-Web в 7-Zip
Обход механизма Mark-of-the-Web в 7-Zip
Категория: Программы Теги: Уязвимости Опубликовано: 9 апреля 2025

Уязвимость BDU:2025-00670 обхода механизма Mark-of-the-Web в 7-Zip

Уязвимость BDU:2025-00670 (CVE-2025-0411, ZDI-25-045, ZDI-CAN-25456) в архиваторе 7-Zip позволяет обойти механизм Mark-of-the-Web (MOTW). 

Mark-of-the-Web (MOTW) — механизм безопасности Windows, помечающий файлы из ненадёжных источников (например, интернета) через альтернативный поток данных NTFS (Zone.Identifier со значением ZoneId=3). Это активирует предупреждения SmartScreen и ограничивает выполнение скриптов или макросов.

Затронутые версии: 7-Zip до 24.09.

В уязвимых версиях при распаковке вложенных архивов (например, ZIP внутри 7z) MOTW не распространяется на извлечённые файлы. Это позволяет злоумышленникам скрыть вредоносный код, упакованный в двойной архив, и выполнить его без предупреждений.


Технический механизм эксплуатации

1. Подготовка вредоносного архива

  • Двойное архивирование: Злоумышленник создаёт архив (например, inner.zip), содержащий вредоносный исполняемый файл (например, malware.exe). Этот архив упаковывается во внешний 7z-архив (outer.7z). При загрузке outer.7z из интернета браузер добавляет к нему MOTW.

  • Обход MOTW: При распаковке outer.7z 7-Zip (версии <24.09) не копирует MOTW на inner.zip и его содержимое. В результате malware.exe извлекается без метки безопасности.

2. Векторы атаки

  • Фишинг: Архив рассылается через письма, маскирующиеся под документы (например, «Список.doс» с использованием кириллической «с» для обмана пользователя).

  • Homoglyph-атаки: Подмена символов в расширениях файлов (например, .doc → .doс с кириллической «с») для имитации легитимных документов.

3. Выполнение кода

Пример шеллкода для запуска calc.exe (демонстрационный PoC):

#include <windows.h>  
// Шеллкод для calc.exe  
unsigned char p[] = { ... };  

int main() {  
    void *payload_mem = VirtualAlloc(0, sizeof(p), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);  
    RtlMoveMemory(payload_mem, p, sizeof(p));  
    VirtualProtect(payload_mem, sizeof(p), PAGE_EXECUTE_READ, &oldprotect);  
    CreateThread(0, 0, (LPTHREAD_START_ROUTINE)payload_mem, 0, 0, 0);  
    return 0;  
}  

Этапы работы:

  1. Выделение памяти: VirtualAlloc резервирует область с правами на запись.

  2. Копирование шеллкода: RtlMoveMemory размещает код в памяти.

  3. Изменение прав доступа: VirtualProtect разрешает выполнение кода.

  4. Создание потока: CreateThread запускает вредоносный код.


Реальные кейсы эксплуатации

  • Атаки: Хакерские группы использовали BDU:2025-00670 для распространения SmokeLoader через фишинговые письма, маскирующиеся под документы госучреждений.

  • Метод доставки: Внешний архив содержал внутренний файл с поддельным расширением (например, .url), который перенаправлял на сервер злоумышленника для загрузки вредоносного ПО.


Рекомендации по защите

  1. Обновление 7-Zip: Установите версию 24.09 или новее, где MOTW корректно распространяется на вложенные архивы.

  2. Ограничение выполнения файлов:

    • Используйте Group Policy для блокировки запуска файлов из временных папок браузера.

    • Настройте Microsoft Office на открытие файлов в Protected View.

  3. Обучение пользователей:

    • Расскажите о рисках homoglyph-атак (например, подмене символов в расширениях).

    • Тренируйте распознавание фишинговых писем.

  4. Мониторинг и анализ:

    • Внедрите EDR-решения для детектирования подозрительной активности (например, массовое создание архивов).

    • Анализируйте логи 7-Zip на предмет аномальных операций распаковки.

Алексей Черемных Алексей Черемных
55