Подробный гайд: Полный справочник по протоколу SMB: команды SMB / SMB2 / SMB3 - Часть 4

Полный справочник по протоколу SMB: команды SMB1, SMB2 и SMB3, структура пакетов, FSCTL, типовые сценарии обмена, диагностика трафика и настройки безопасности сетей.

2026.09.29                  


Подробный гайд: Полный справочник по протоколу SMB: команды SMB / SMB2 / SMB3 - Часть 4Подробный гайд: Полный справочник по протоколу SMB: команды SMB / SMB2 / SMB3 - Часть 4

15. Ключевые флаги доступа

В SMB2 CREATE поле DesiredAccess определяет права. Ниже типовые значения.

Флаг Назначение
FILE_READ_DATA Чтение данных
FILE_WRITE_DATA Запись данных
FILE_APPEND_DATA Добавление данных
FILE_READ_EA Чтение расширенных атрибутов
FILE_WRITE_EA Запись расширенных атрибутов
FILE_EXECUTE Выполнение/доступ к каналу
FILE_DELETE_CHILD Удаление дочерних объектов
FILE_READ_ATTRIBUTES Чтение атрибутов
FILE_WRITE_ATTRIBUTES Запись атрибутов
DELETE Право на удаление
READ_CONTROL Чтение security descriptor
WRITE_DAC Изменение DACL
WRITE_OWNER Смена владельца
SYNCHRONIZE Синхронизация
ACCESS_SYSTEM_SECURITY Доступ к системной безопасности
MAXIMUM_ALLOWED Запрос максимально разрешённого доступа
GENERIC_READ Обобщённое чтение
GENERIC_WRITE Обобщённая запись
GENERIC_EXECUTE Обобщённое выполнение
GENERIC_ALL Обобщённый полный доступ



16. Команды ОС и утилит для работы с SMB

Если под “командами SMB” имеются в виду не команды протокола, а команды администрирования, ниже основные варианты.

16.1. Windows: классические команды

Команда Назначение
net use Подключение/отключение сетевых дисков
net use \\server\share Подключить шару
net use * /delete Удалить подключения
net view Список доступных серверов/ресурсов
net share Управление локальными общими ресурсами
net session Просмотр сессий к серверу
net file Просмотр открытых файлов
net config server Информация о конфигурации сервера
sc qc lanmanserver Состояние службы сервера
sc query lanmanworkstation Состояние рабочей станции

Примеры:

net use Z: \\server\share /user:DOMAIN\User
net use Z: /delete
net share MyShare=C:\Data /grant:Everyone,read
net share MyShare /delete

16.2. Windows: PowerShell

Команда Назначение
Get-SmbServerConfiguration Конфигурация SMB-сервера
Set-SmbServerConfiguration Изменение конфигурации SMB-сервера
Get-SmbShare Список общих ресурсов
New-SmbShare Создание общего ресурса
Remove-SmbShare Удаление общего ресурса
Get-SmbShareAccess Права доступа к шаре
Grant-SmbShareAccess Выдать доступ
Revoke-SmbShareAccess Отозвать доступ
Block-SmbShareAccess Заблокировать доступ
Unblock-SmbShareAccess Разблокировать доступ
Get-SmbSession Активные сессии
Close-SmbSession Закрыть сессию
Get-SmbConnection Активные подключения
Get-SmbMapping Подключённые диски
New-SmbMapping Создать подключение
Remove-SmbMapping Удалить подключение
Get-SmbClientConfiguration Конфигурация SMB-клиента
Set-SmbClientConfiguration Изменение конфигурации клиента
Get-SmbServerNetworkInterface Сетевые интерфейсы сервера
Get-SmbClientNetworkInterface Сетевые интерфейсы клиента

Примеры:

Get-SmbServerConfiguration | Format-List

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Set-SmbServerConfiguration -EncryptData $true -Force

Get-SmbShare | Format-Table Name, Path, Description
New-SmbShare -Name Data -Path C:\Data -ReadAccess Everyone

Get-SmbSession
Close-SmbSession -SessionId 123456

Get-SmbMapping
New-SmbMapping -LocalPath Z: -RemotePath \\server\share

16.3. Linux / Samba

Команда Назначение
smbclient Клиент SMB/CIFS
smbstatus Состояние Samba-сервера
testparm Проверка smb.conf
mount.cifs Монтирование SMB-шары
smbcacls Работа с ACL через SMB
smbcquotas Работа с квотами
smbtree Обзор сетевых ресурсов
nmblookup NetBIOS-поиск
net Административные операции Samba/AD

Примеры:

smbclient -L //server -U user
smbclient //server/share -U user
smbclient //server/share -U user -c 'ls; get report.txt'

mount.cifs //server/share /mnt/smb -o user=user,domain=DOMAIN,vers=3.1.1,seal

smbstatus
testparm



17. Диагностика SMB-трафика

17.1. Полезные фильтры захвата

Для Wireshark можно использовать:

tcp.port == 445
smb || smb2
smb2.cmd == 0x0000

NEGOTIATE

smb2.cmd == 0x0001

SESSION_SETUP

smb2.cmd == 0x0003

TREE_CONNECT

smb2.cmd == 0x0005

CREATE

smb2.cmd == 0x0008

READ

smb2.cmd == 0x0009

WRITE

smb2.cmd == 0x000b

IOCTL

smb2.cmd == 0x0012

OPLOCK_BREAK


17.2. Windows-журналы

Полезные журналы и источники:

  • Microsoft-Windows-SMBServer/Operational;
  • Microsoft-Windows-SMBClient/Connectivity;
  • Microsoft-Windows-SMBClient/Security;
  • события безопасности при доступе к файлам;
  • логи файрвола и сетевые захваты.

17.3. Быстрая проверка

Get-SmbConnection
Get-SmbSession
Get-SmbMapping
Get-SmbShare
net use
net share
tcpdump -i any tcp port 445

18. Безопасность SMB

18.1. Основные рекомендации

1. Отключить SMB1

SMB1 имеет известные уязвимости и должен быть запрещён.

2. Использовать SMB 3.x

Желательно SMB 3.1.1, если поддерживается клиентами и серверами.

3. Включать подпись сообщений

Если совместимость позволяет, лучше требовать подпись.

4. Использовать шифрование там, где нужно

Например: - для чувствительных шар; - в недоверенных сетях; - при доступе через Интернет с SMB over QUIC.

5. Ограничить доступ по сети

Порты 139/445 не должны быть открыты в Интернет.

6. Не использовать гостевой и анонимный доступ без необходимости

Особенно важно запретить небезопасные гостевые входы.

7. Использовать Kerberos вместо NTLM там, где возможно

Это снижает риски передачи слабых хэшей и relay-атак.

8. Обновлять системы

Многие SMB-уязвимости закрыты патчами.

9. Аудитировать доступ к файлам и шарам

Полезно включать аудит и мониторинг подозрительных сессий.

10. Проверять старые клиенты

Иногда старый сканер, принтер или сетевое устройство тянет сеть вниз, требуя SMB1 или слабый NTLM.


18.2. Пример отключения SMB1 в Windows

Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Set-SmbClientConfiguration -EnableSMB1Protocol $false -Force

Проверка:

Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol
Get-SmbClientConfiguration | Select-Object EnableSMB1Protocol

18.3. Пример усиления конфигурации

Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
Set-SmbServerConfiguration -EnableSecuritySignature $true -Force
Set-SmbServerConfiguration -EncryptData $true -Force
Set-SmbServerConfiguration -RejectInsecureGuestLogons $true -Force

18.4. Samba: минимальный протокол

В smb.conf обычно задают:

[global]
server min protocol = SMB2_02
client min protocol = SMB2_02

Или выше, в зависимости от требований.


19. Частые ошибки администрирования

Проблема Причина Решение
Клиент подключается, но не видит файлы Недостаточно прав на шаре или файловой системе Проверить права шары и NTFS/файловой системы
STATUS_BAD_NETWORK_NAME Шара не существует или недоступна Проверить имя сервера, имя шары, доступность
STATUS_ACCESS_DENIED Нет прав Проверить аутентификацию, группы, ACL
STATUS_LOGON_FAILURE Неверный логин/пароль Проверить учётные данные
Старое устройство требует SMB1 Устройство не поддерживает SMB2/3 Обновить прошивку или изолировать устройство
Медленная работа Сеть, подписи без offload, старые версии Использовать SMB 3.x, SMB Direct при возможности
Не работает шифрование Клиент/сервер не согласовали диалект или политики Проверить версии, политики, Get-SmbConnection
Гостевой доступ не работает Современные ОС запрещают небезопасные гостевые входы Использовать нормальную аутентификацию



20. Шпаргалка: что смотреть в первую очередь

Если нужно быстро разобраться с SMB:

1. Какой диалект используется?

Смотреть NEGOTIATE и ответ сервера.

2. Успешна ли аутентификация?

Смотреть SESSION_SETUP и статусы.

3. Подключается ли шара?

Смотреть TREE_CONNECT.

4. Открывается ли файл?

Смотреть CREATE, DesiredAccess, CreateDisposition.

5. Есть ли чтение/запись?

Смотреть READ, WRITE.

6. Есть ли отказы в доступе?

Искать STATUS_ACCESS_DENIED.

7. Используется ли SMB1?

В современных сетях это уже повод для исправления.

8. Есть ли шифрование/подпись?

Проверять конфигурацию сервера/клиента и согласование.


21. Итоговая таблица самых важных команд

21.1. Главные команды SMB1

Команда Зачем нужна
SMB_COM_NEGOTIATE Выбор диалекта
SMB_COM_SESSION_SETUP_ANDX Аутентификация
SMB_COM_TREE_CONNECT_ANDX Подключение к шаре
SMB_COM_NT_CREATE_ANDX Открытие/создание файла
SMB_COM_READ_ANDX Чтение
SMB_COM_WRITE_ANDX Запись
SMB_COM_CLOSE Закрытие
SMB_COM_TRANSACTION2 Расширенные файловые операции
SMB_COM_NT_TRANSACT Безопасность, уведомления и др.
SMB_COM_TREE_DISCONNECT Отключение от шары
SMB_COM_LOGOFF_ANDX Выход из сессии

21.2. Главные команды SMB2/SMB3

Команда Зачем нужна
SMB2 NEGOTIATE Согласование версии и возможностей
SMB2 SESSION_SETUP Аутентификация
SMB2 TREE_CONNECT Подключение к шаре
SMB2 CREATE Открытие/создание объекта
SMB2 READ Чтение
SMB2 WRITE Запись
SMB2 CLOSE Закрытие
SMB2 IOCTL Управляющие операции
SMB2 QUERY_INFO Запрос метаданных
SMB2 SET_INFO Изменение метаданных
SMB2 QUERY_DIRECTORY Список файлов
SMB2 CHANGE_NOTIFY Отслеживание изменений
SMB2 ECHO Проверка доступности
SMB2 LOGOFF Завершение сессии
SMB2 TREE_DISCONNECT Отключение от шары

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта