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

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

Уязвимость BDU:2017-01095 (CVE-2017-0148) возникает из-за некорректной обработки специально сформированных SMBv1-пакетов в ядре Windows. Атакующий может вызвать переполнение буфера при обработке транзакционных запросов, что позволяет выполнить произвольный код с правами SYSTEM. Уязвимы все версии Windows, не установившие патч MS17-010.

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

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

  • AV:N (Attack Vector: Network) - Атака через сеть

  • AC:H (Attack Complexity: High) - Высокая сложность эксплуатации

  • PR:N (Privileges Required: None) - Права не требуются

  • UI:N (User Interaction: None) - Взаимодействие с пользователем не нужно

  • S:U (Scope: Unchanged) - Воздействие на другие компоненты отсутствует

  • C:H (Confidentiality: High) - Полное нарушение конфиденциальности

  • I:H (Integrity: High) - Полное нарушение целостности

  • A:H (Availability: High) - Полное нарушение доступности


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

  1. Сетевой доступ к SMB-порту (445/TCP)

  2. Отсутствие патча MS17-010 на целевой системе

  3. Включенный протокол SMBv1 (по умолчанию активен в уязвимых версиях)

  4. Не требует аутентификации или действий пользователя

Уязвимые версии ОС

  • Windows XP
  • Windows 8
  • Windows 10
  • Windows 8
  • Windows 7 SP1
  • Windows 8.1 RT
  • Windows Server 2003
  • Windows Server 2008 R2 SP1
  • Windows Server 2008 SP2
  • Windows Server 2012 gold
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Vista SP2

Анализ эксплойта EternalBlue

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2017-0148.

Механизм обнаружения уязвимости (Ruby-код):

def do_smb_probe(ip)
  connect
  simple.login(datastore['SMBName'], '', '', datastore['SMBDomain'])
  simple.connect("\\\\#{ip}\\IPC$")
  
  # Ключевая проверка через транзакцию FID=0
  pkt = make_smb_trans_ms17_010(tree_id)
  sock.put(pkt)
  response = sock.get_once
  
  # Интерпретация ответа
  case pkt['SMB'].v['ErrorClass']
  when 0xC0000205 # STATUS_INSUFF_SERVER_RESOURCES
    return :vulnerable
  end
end

Принцип работы:
Эксплойт отправляет специальный SMB-пакет с операцией PeekNamedPipe для FID 0. Непатченные системы возвращают статус STATUS_INSUFF_SERVER_RESOURCES (0xC0000205), что подтверждает уязвимость. Патч изменяет поведение ядра, возвращая STATUS_ACCESS_DENIED.


Шеллкод EternalBlue (ASM-анализ):

mov ecx, 0              ; Инициализация счетчика
loop_start:             
inc ecx                 ; Увеличение счетчика
loop loop_start         ; Цикл до переполнения ECX
call $+5                ; Динамическое вычисление адреса
pop rsi                 
add rsi, 0x308          ; Смещение к полезной нагрузке
mov rbx, [rsi]          ; Загрузка адреса ядерной структуры

Что достигает шеллкод:

  1. Обходит ASLR через динамическое вычисление адресов

  2. Эскалирует привилегии до уровня ядра

  3. Загружает и исполняет произвольный код (например, ransomware)


Последствия успешной эксплуатации:

  1. Удаленное выполнение кода с правами SYSTEM

  2. Массовое заражение по типу WannaCry

  3. Кража учетных данных (Pass-the-Hash атаки)

  4. Установка бэкдоров (DoublePulsar)

  5. Криптоджекинг и шифрование данных


Актуальные меры защиты:

  1. Отключение SMBv1 (только для внутренних сетей!):

    Set-SmbServerConfiguration -EnableSMB1Protocol $false
  2. Сетевые правила Suricata (IDS/IPS):

    alert smb any any -> any 445 (msg:"ET EXPLOIT EternalBlue attempt"; 
    flow:established; content:"|FF|SMB|25|"; depth:5; 
    content:"|00|"; distance:0; within:1; 
    content:"|00 00 00 00|"; distance:4; 
    metadata:policy balanced-ips; sid:202417010; rev:1;)
  3. Сегментация сети: Блокировка 445/TCP из ненадежных зон

  4. Application Whitelisting: Запрет исполнения .exe из TEMP-директорий

  5. Обновление систем: Критически важно для Windows Server 2003/XP


Почему IPS не панацея:

  • Ложные срабатывания: Могут блокировать легитимный SMB-трафик

  • Слепая зона: Бесполезны при атаке из доверенной сети

  • Обход подписей: Современные эксплойты используют полиморфный код

Важно! Для Windows XP/2003 используйте физическую изоляцию. Официальные патчи недоступны.

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