
Уязвимость 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 (Доступность) — Полный отказ в обслуживании.
Условия эксплуатации
-
Сетевой доступ: Атакующий должен находиться во внутренней сети или иметь доступ к порту 445/TCP (SMB).
-
Уязвимые версии ОС: Windows XP, Server 2003, Vista, 7, 8, 10, Server 2008–2016.
-
Включённый SMBv1: Протокол должен быть активен (по умолчанию отключён в Windows 10 Creators Update).
-
Отсутствие патчей: Нет обновлений.
Пример проверки доступности 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):
-
Установление соединения:
Эксплоит подключается к целевой системе через SMB, используя библиотекуimpacket
для формирования пакетов.conn = MYSMB(target, port) conn.login(username, password)
-
Поиск именованного канала:
Эксплоит ищет доступные каналы (например,\pipe\srvsvc
) для взаимодействия с сервисами.pipe_name = conn.find_named_pipe()
-
Манипуляция транзакциями (GROOMING):
Методalign_transaction_and_leak
создаёт "дыры" в пуле памяти для размещения вредоносных структур.leakInfo = align_transaction_and_leak(conn, tid, fid, info)
-
Чтение/запись памяти:
Функцииread_data
иwrite_data
модифицируют структуры безопасности сессии SMB, подменяя токены пользователя на SYSTEM.write_data(conn, info, secCtxAddr, info['FAKE_SECCTX'])
-
Выполнение кода:
После повышения привилегий эксплоит запускает шелл или загружает полезную нагрузку (например, черезservice_exec
).
Способы защиты
-
Отключение SMBv1:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "SMB1" -Value 0
-
Установка обновлений.
-
Сегментация сети: Блокировка порта 445 на межсетевых экранах.
-
EDR-решения: Использование Carbon Black или Microsoft Defender для детектирования аномалий.
