Уязвимость протокола SMBv1 операционной системы Microsoft Windows
Уязвимость протокола SMBv1 операционной системы Microsoft Windows
Категория: Программы Теги: Уязвимости Опубликовано: 22 мая 2025

Уязвимость BDU:2017-01100 (CVE-2017-0143) SMBv1 Windows

Уязвимость BDU:2017-01100 (CVE-2017-0143) в протоколе SMBv1 (Server Message Block) в операционных системах Microsoft Windows возникает из-за недостаточной проверки входных данных при обработке специально сформированных пакетов. Злоумышленник может удалённо выполнить произвольный код, что приводит к полному захвату контроля над системой. Уязвимость связана с ошибкой в функции SrvOs2FeaListToNt(), которая неправильно обрабатывает FEA (File Extended Attributes) структуры, позволяя перезаписать память.

Анализ уязвимости

Уровень опасности: 8.8 (HIGH)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

  • AV:N (Вектор атаки) — Сетевой. Эксплуатация возможна через сеть без физического или локального доступа.

  • AC:L (Сложность атаки) — Низкая. Для эксплуатации не требуются специальные условия.

  • PR:L (Уровень привилегий) — Требуются базовые права пользователя.

  • UI:N (Вовлечение пользователя) — Не требуется взаимодействие с пользователем.

  • S:U (Влияние на другие системы) — Не оказывает влияния на другие ресурсы.

  • C:H (Конфиденциальность) — Полное раскрытие конфиденциальных данных.

  • I:H (Целостность) — Полная компрометация целостности системы.

  • A:H (Доступность) — Полный отказ в обслуживании.


Условия эксплуатации

  1. Сетевой доступ: Атакующий должен находиться во внутренней сети или иметь доступ к порту 445/TCP (SMB).

  2. Уязвимые версии ОС: Windows XP, Server 2003, Vista, 7, 8, 10, Server 2008–2016.

  3. Включённый SMBv1: Протокол должен быть активен (по умолчанию отключён в Windows 10 Creators Update).

  4. Отсутствие патчей: Нет обновлений.

Пример проверки доступности SMB-порта:

nmap -p 445 192.168.1.0/24

Технический анализ эксплоита

Эксплоит EternalBlue (BDU:2017-01100, CVE-2017-0143) использует уязвимость для перехвата управления памятью через поддельные SMB-пакеты. Рассмотрим ключевые этапы работы кода из exploit.py для понимания работы вектора атаки с использованием этой уязвимости BDU:2017-01100 (CVE-2017-0143):

  1. Установление соединения:
    Эксплоит подключается к целевой системе через SMB, используя библиотеку impacket для формирования пакетов.

    conn = MYSMB(target, port)
    conn.login(username, password)
  2. Поиск именованного канала:
    Эксплоит ищет доступные каналы (например, \pipe\srvsvc) для взаимодействия с сервисами.

    pipe_name = conn.find_named_pipe()
  3. Манипуляция транзакциями (GROOMING):
    Метод align_transaction_and_leak создаёт "дыры" в пуле памяти для размещения вредоносных структур.

    leakInfo = align_transaction_and_leak(conn, tid, fid, info)
  4. Чтение/запись памяти:
    Функции read_data и write_data модифицируют структуры безопасности сессии SMB, подменяя токены пользователя на SYSTEM.

    write_data(conn, info, secCtxAddr, info['FAKE_SECCTX'])
  5. Выполнение кода:
    После повышения привилегий эксплоит запускает шелл или загружает полезную нагрузку (например, через service_exec).


Способы защиты

  1. Отключение SMBv1:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "SMB1" -Value 0
  2. Установка обновлений.

  3. Сегментация сети: Блокировка порта 445 на межсетевых экранах.

  4. EDR-решения: Использование Carbon Black или Microsoft Defender для детектирования аномалий.

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