Источник: https://github.com/AnaktaCTF/CTF/blob/main — Misc/SMB_Protocol.md
- 1. Что такое SMB
- 2. История развития протокола SMB
- 3. Принцип работы и основные возможности протокола SMB
- 4. Безопасность и современные применения SMB
- 5. Взаимодействие с SMB из-под Linux и Windows
- Заключение

SMB (Server Message Block) — это сетевой протокол прикладного уровня, предназначенный для предоставления общего доступа к файлам, принтерам, портам и другим сетевым ресурсам в локальной сети или через интернет. Протокол позволяет компьютерам в сети запрашивать доступ к ресурсам на других устройствах так, будто они находятся на локальной машине пользователя.
Изначально SMB был разработан компанией IBM в конце 1980-х годов для упрощения совместного использования файлов в сетевых операционных системах. Позже Microsoft адаптировала и доработала протокол для использования в своих продуктах, таких как Windows NT и последующие версии Windows. Именно благодаря Microsoft SMB получил широкую популярность.
Основная задача SMB — обеспечить удобный и безопасный способ обмена данными между клиентами и серверами в сети. С помощью SMB пользователи могут:
-
Открывать, редактировать и сохранять файлы на удалённом сервере, как если бы они работали с локальными файлами.
-
Печать документов на сетевых принтерах.
-
Выполнять административные задачи, например, управление сетевыми общими ресурсами и настройками доступа.
-
Подключаться к удалённым рабочим столам и службам.
Как работает SMB на базовом уровне:
Когда клиент хочет получить доступ к ресурсу на сервере, он отправляет запрос через протокол SMB. Сервер обрабатывает запрос, проверяет права доступа пользователя и отправляет ответ с данными или с отказом в доступе. При этом передача может происходить через различные транспортные протоколы, чаще всего через TCP/IP (на порту 445).
Особенности SMB:
-
Сессии и состояние: протокол устанавливает устойчивые сессии между клиентом и сервером, позволяя выполнять множество операций в рамках одного соединения.
-
Поддержка транзакций: SMB позволяет выполнять пакетные операции с возможностью отката, что повышает надёжность передачи данных.
-
Работа с файлами на уровне блоков: протокол поддерживает управление файлами вплоть до отдельных блоков данных, что делает операции более гибкими и производительными.
Расшифровка ключевых компонентов SMB-сессии:
-
Аутентификация: перед тем как предоставить доступ, сервер требует у клиента пройти процедуру проверки подлинности.
-
Согласование возможностей: после установления соединения клиент и сервер обмениваются данными о поддерживаемых функциях (например, поддерживается ли шифрование данных или ускоренная передача больших файлов).
-
Доступ к ресурсам: после успешной аутентификации клиент может запрашивать доступ к файлам, папкам или принтерам.
Важно отметить, что SMB изначально был разработан для работы в доверенных сетях. Именно поэтому первые версии протокола имели уязвимости в плане безопасности, что позже стало одной из причин создания более защищённых версий, таких как SMB 2.0 и SMB 3.0.
2. История развития протокола SMB
Протокол SMB прошёл долгий путь развития с момента своего появления, постоянно адаптируясь к новым требованиям безопасности, производительности и функциональности. Рассмотрим основные этапы его эволюции:

SMB 1.0 (оригинальный протокол)
-
Год появления: конец 1980-х — начало 1990-х.
-
Разработка: изначально разработан компанией IBM как часть операционной системы LAN Manager.
-
Особенности:
-
Работал поверх протокола NetBIOS (Network Basic Input/Output System).
-
Поддерживал базовые операции обмена файлами и принтерами в локальных сетях.
-
Не требовал высокой пропускной способности или сложной сетевой инфраструктуры.
-
-
Недостатки:
-
Очень низкий уровень безопасности.
-
Отсутствие шифрования данных.
-
Сложные и "тяжёлые" транзакции, требовавшие большого числа команд для выполнения простых операций.
-
Уязвимости к атакам типа "man-in-the-middle".
-
SMB 2.0 (революционное обновление)
-
Год появления: 2006 год, вместе с Windows Vista и Windows Server 2008.
-
Цели обновления:
-
Уменьшение количества команд для типичных операций (сокращение "болтливости" протокола).
-
Повышение производительности передачи файлов.
-
Улучшение устойчивости соединения (например, возможность автоматического восстановления сессии при кратковременном обрыве связи).
-
-
Ключевые изменения:
-
Существенное сокращение числа команд (с 100+ до менее чем 20 основных).
-
Поддержка пакетной обработки запросов (batching), что снижало задержки.
-
Улучшенная обработка больших файлов и транзакций.
-
Возможность более эффективного использования сетевых ресурсов.
-
-
Безопасность: улучшена, но шифрование всё ещё отсутствовало на уровне самого протокола.
SMB 2.1
-
Год появления: 2008 год, вместе с Windows 7 и Windows Server 2008 R2.
-
Улучшения:
-
Повышение производительности при работе с большими файлами.
-
Поддержка "оппортунистических блокировок" (Oplocks) нового типа для оптимизации кэширования файлов.
-
SMB 3.0 (и последующие версии)
-
Год появления: 2012 год, с выпуском Windows 8 и Windows Server 2012.
-
Реакция на новые вызовы:
- SMB 3.0 стал ответом на растущую потребность в безопасности в условиях использования облачных решений и виртуализированных сред.
-
Основные новшества:
-
Шифрование на уровне протокола: возможность шифровать весь сетевой трафик между клиентом и сервером без использования VPN.
-
Поддержка многоканальности (SMB Multichannel): возможность использовать несколько сетевых адаптеров одновременно для увеличения пропускной способности и отказоустойчивости.
-
SMB Direct: интеграция с RDMA (Remote Direct Memory Access) для ещё большей скорости передачи данных и минимизации нагрузки на процессор.
-
Поддержка кластерных хранилищ (Clustered Shared Volumes) для высокодоступных файловых систем в дата-центрах.
-
-
Уровень безопасности: значительно вырос, сделав SMB 3.0 пригодным для использования даже в потенциально небезопасных сетевых средах.
Последующие улучшения (SMB 3.02, 3.1.1 и новее)
-
SMB 3.02 (Windows 8.1, Server 2012 R2) — улучшения в производительности и поддержке виртуальных машин.
-
SMB 3.1.1 (Windows 10, Server 2016):
-
Добавление алгоритмов шифрования AES-128-GCM.
-
Защита процесса установления соединения с использованием предварительной аутентификации (Pre-authentication Integrity).
-
Повышение совместимости и отказоустойчивости.
-
3. Принцип работы и основные возможности протокола SMB

Принцип работы SMB
-
Установление соединения
-
Клиент инициирует подключение к серверу по сетевому протоколу TCP/IP (чаще всего на порт 445).
-
При необходимости сервер может потребовать аутентификацию (например, по логину и паролю, через Kerberos или NTLM).
-
-
Аутентификация и авторизация
-
После подключения клиент проходит проверку подлинности.
-
Сервер проверяет учетные данные и определяет уровень доступа (например, только чтение или полный контроль).
-
Для повышения безопасности в новых версиях SMB может использоваться предварительная проверка целостности (Pre-authentication Integrity).
-
-
Установление сеанса
- После успешной аутентификации клиент создаёт сессию, в рамках которой может выполнять множество операций без повторной аутентификации.
-
Обращение к ресурсам
-
Клиент отправляет команды для доступа к файлам, папкам, принтерам и другим ресурсам.
-
Команды могут включать:
-
Открытие или создание файла.
-
Чтение или запись данных.
-
Печать документов на сетевом принтере.
-
Закрытие открытых объектов после окончания работы.
-
-
-
Передача данных
-
В процессе работы клиент и сервер обмениваются пакетами данных, используя команды SMB для управления транзакциями и целостностью данных.
-
При необходимости данные могут быть защищены шифрованием (в SMB 3.0 и выше).
-
-
Закрытие сеанса
-
После завершения работы клиент закрывает открытые файлы и сессию.
-
Сервер освобождает занятые ресурсы.
-
Основные возможности протокола SMB
1. Совместное использование файлов и папок
-
Классическое и наиболее известное применение SMB.
-
Пользователи могут видеть, открывать, редактировать и сохранять файлы на удалённом сервере так, будто они работают с локальными файлами.
-
Поддерживается управление правами доступа (например, разрешения на чтение, запись, изменение).
2. Работа с сетевыми принтерами
-
SMB позволяет пользователям отправлять документы на печать через сетевые принтеры, размещённые на другом устройстве.
-
Поддерживается централизованное управление принтерными очередями и заданиями.
3. Поддержка оппортунистических блокировок (Oplocks)
-
Позволяет клиенту кэшировать файлы локально для повышения производительности.
-
Сервер информирует клиента о необходимости обновления кэша, если другой пользователь изменил файл.
4. Транзакционные операции
- SMB поддерживает выполнение комплексных операций в рамках транзакций: если одна из частей транзакции неудачна, вся операция отменяется, обеспечивая согласованность данных.
5. Поддержка многопоточности и параллельной обработки команд
-
Клиенты могут отправлять несколько команд одновременно без ожидания ответа на каждую из них (асинхронная работа).
-
Это значительно ускоряет работу при большом количестве запросов.
6. Шифрование данных
-
Начиная с SMB 3.0, появилась возможность шифровать передаваемые данные между клиентом и сервером.
-
Это предотвращает перехват или подмену данных злоумышленниками в сети.
7. Поддержка устойчивости соединения
- Если сетевое соединение временно прерывается (например, из-за неполадок сети), SMB 2.0+ может автоматически восстановить сеанс без потери данных.
8. Мультиканальное подключение (SMB Multichannel)
- Клиенты и серверы могут использовать несколько сетевых адаптеров одновременно для увеличения пропускной способности и надёжности соединения.
4. Безопасность и современные применения SMB
Со временем протокол SMB столкнулся с серьёзными вызовами в области безопасности. Устаревшие версии оказались уязвимыми для различных видов атак, что потребовало серьёзных улучшений. Сегодняшние версии SMB интегрируют современные механизмы защиты, а его применение вышло далеко за рамки локальных сетей.
Проблемы безопасности старых версий SMB
Особенно уязвимой оказалась версия SMB 1.0:
-
Отсутствие шифрования: все данные передавались в открытом виде, их можно было перехватить и изменить.
-
Слабая аутентификация: использование устаревших схем аутентификации (например, NTLMv1) делало возможным атаки по типу "перехват пароля" (pass-the-hash).
-
Уязвимости протокола: например, в 2017 году именно через SMB 1.0 произошла массовая атака вируса-шифровальщика WannaCry, использующего уязвимость EternalBlue.
-
Отсутствие целостности данных: пакеты данных могли быть подменены злоумышленником без обнаружения.
Реакция: Microsoft после этих событий начала рекомендовать полностью отключить SMB 1.0 на всех системах и переходить на более новые версии протокола.
Улучшения безопасности в новых версиях SMB
Начиная с SMB 2.0 и особенно с SMB 3.0 и выше, были добавлены важнейшие механизмы защиты:
-
Шифрование данных на уровне протокола:
-
Возможность шифровать весь трафик между клиентом и сервером.
-
В SMB 3.1.1 используется современный алгоритм шифрования AES-128-GCM, который обеспечивает как шифрование, так и контроль целостности передаваемых данных.
-
-
Подпись сообщений (SMB Signing):
- Каждое сообщение SMB может быть подписано, чтобы гарантировать, что оно действительно пришло от доверенного клиента или сервера и не было изменено в пути.
-
Pre-authentication Integrity:
-
Введено в SMB 3.1.1.
-
Защищает процесс установления сеанса от атак "человек посередине" (Man-in-the-Middle), проверяя целостность всех сообщений, начиная с первой стадии аутентификации.
-
-
Улучшенная аутентификация:
-
Интеграция с современными схемами, такими как Kerberos.
-
Поддержка многофакторной аутентификации при доступе к ресурсам через доменные службы.
-
-
Защита от переборов паролей:
- Ограничение скорости аутентификационных попыток.
-
Безопасная передача файлов для виртуальных машин (SMB over RDMA):
- Ускорение передачи данных без ущерба для безопасности благодаря аппаратному шифрованию.
Современные применения SMB
Сегодня SMB используется в самых разных сферах — от домашних сетей до крупных корпоративных инфраструктур:
1. Файловые серверы в организациях
-
Основное назначение: совместный доступ к документам, медиафайлам, проектным данным.
-
Файловые серверы Windows Server активно используют SMB 3.0+ для безопасного обмена.
2. Кластерные и виртуализированные среды
-
SMB 3.0 поддерживает высокодоступные кластеры хранения (например, Clustered Shared Volumes в Windows Server).
-
Используется для подключения виртуальных машин к их виртуальным дискам без использования iSCSI или Fibre Channel.
3. Облачные решения и гибридные сценарии
- SMB используется для подключения к файлам, хранящимся в облаках (например, Azure Files поддерживает SMB-протокол для работы с облачными файлами как с локальными).
4. Резервное копирование и восстановление данных
- Многие современные системы резервного копирования используют SMB для доступа к данным на серверах или NAS-устройствах.
5. Поддержка домашних и малых сетей
- Протокол активно применяется в домашних условиях для организации обмена файлами между компьютерами, медиасерверами, смарт-телевизорами и сетевыми хранилищами (NAS).
6. Интеграция с Linux и другими системами
- Благодаря проекту Samba, SMB работает не только в Windows-средах, но и на Linux, macOS и других Unix-подобных системах, обеспечивая совместимость между разными платформами.
5. Взаимодействие с SMB из-под Linux и Windows
Протокол SMB традиционно ассоциируется с операционными системами Windows, но благодаря его широкому распространению и открытым спецификациям, он также активно используется в Linux, macOS и других системах. Взаимодействие с SMB на обеих платформах имеет свои особенности, инструменты и нюансы.
SMB в Windows
В операционных системах Windows SMB интегрирован на уровне ядра сети. Пользователь даже может не знать, что работает через этот протокол, поскольку все операции выполняются прозрачно.
Основные моменты:

-
Автоматическое подключение:
-
При подключении к сетевому ресурсу через проводник Windows (
Пуск → Выполнить → \\имя_сервера\папка) используется SMB. -
Подключение возможно по имени NetBIOS, по IP-адресу или через DNS.
-
-
Работа с сетевыми дисками:
-
Пользователь может "смонтировать" сетевой ресурс как отдельный диск (например, диск Z:).
-
Пример подключения:
- В проводнике: Подключить сетевой диск → указать путь (
\\server\share).
- В проводнике: Подключить сетевой диск → указать путь (
-
-
Командная строка и PowerShell:
-
Можно использовать команды типа:
net use Z: \\server\share /user:username password -
Или через PowerShell:
New-PSDrive -Name "Z" -PSProvider "FileSystem" -Root "\\server\share" -Credential (Get-Credential)
-
-
Управление SMB через параметры Windows:
- Включение или отключение версий протокола через "Компоненты Windows" (например, отключение SMB 1.0).
SMB в Linux
На Linux доступ к ресурсам SMB обеспечивается через пакет Samba или утилиты вроде cifs-utils.
Основные инструменты:
-
Samba:
-
Samba — это реализация SMB для Linux/Unix-систем, которая позволяет как подключаться к ресурсам Windows, так и предоставлять свои ресурсы другим устройствам через SMB.
-
Конфигурационный файл Samba:
/etc/samba/smb.conf. -
Запуск сервера Samba позволяет расшаривать папки Linux-системы для Windows-клиентов.
-
-
Монтирование SMB-ресурсов через cifs-utils:
-
Для подключения к сетевому ресурсу используется файловая система типа CIFS (Common Internet File System).
-
Установка пакета (если не установлен):
sudo apt install cifs-utils -
Монтирование ресурса вручную:
sudo mount -t cifs //server/share /mnt/point -o username=your_username,password=your_password(Можно также использовать параметры
vers=2.0,vers=3.0для выбора версии SMB.)
-
-
Автоматическое подключение через fstab:
-
Чтобы автоматически монтировать ресурсы при загрузке системы, можно добавить строку в
/etc/fstab://server/share /mnt/point cifs username=your_username,password=your_password,vers=3.0 0 0
-
-
Интерактивные инструменты:

-
smbclient— консольный клиент для работы с SMB-ресурсами в стиле FTP:smbclient //server/share -U username
-
Особенности кроссплатформенного взаимодействия
-
Проблемы с правами доступа:
- Windows и Linux используют разные модели прав. Иногда требуется дополнительная настройка маппинга пользователей (
username mapping) в Samba или корректная настройка прав доступа на стороне сервера.
- Windows и Linux используют разные модели прав. Иногда требуется дополнительная настройка маппинга пользователей (
-
Версии протокола:
- Иногда Windows-серверы настроены так, чтобы поддерживать только SMB 2.x или 3.x. В таком случае в Linux нужно явно указывать используемую версию (
vers=3.0в параметрах монтирования).
- Иногда Windows-серверы настроены так, чтобы поддерживать только SMB 2.x или 3.x. В таком случае в Linux нужно явно указывать используемую версию (
-
Шифрование и безопасность:
- В новых версиях Samba появилась поддержка шифрования SMB 3.0+, что позволяет безопасно монтировать шифрованные ресурсы даже в публичных сетях.
-
Аутентификация через Kerberos:
- В корпоративных сетях, где используется Active Directory, можно настроить Linux-системы на использование Kerberos для бесшовной аутентификации к ресурсам Windows.
Заключение
Протокол SMB играет ключевую роль в организации совместного доступа к файлам, принтерам и другим ресурсам в локальных и корпоративных сетях. С момента своего появления в конце 1980-х годов он прошёл значительный путь эволюции: от уязвимой первой версии до современных надёжных реализаций, обеспечивающих шифрование, целостность данных и устойчивость соединений.
Сегодня SMB — это не просто механизм обмена файлами. Это важнейшая инфраструктурная технология для Windows-сетей, серверных ферм, виртуализированных сред и облачных сервисов. Благодаря развитию таких проектов, как Samba, протокол SMB стал по-настоящему кроссплатформенным, что позволяет ему успешно работать как в Windows, так и в Linux/Unix-системах.
Правильная настройка безопасности, своевременное обновление версий протокола и понимание принципов работы SMB позволяют выстраивать стабильные, безопасные и высокопроизводительные сетевые решения, соответствующие требованиям современного мира.