SMB

Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску

SMB (сокр. отангл. Server Message Block) —сетевой протоколприкладного уровня для удалённого доступа кфайлам,принтерам и другим сетевым ресурсам, а также длямежпроцессного взаимодействия. Первая версия протокола, также известная как Common Internet File System (CIFS) (Единая файловая система Интернета), была разработана компаниямиIBM,Microsoft,Intel и3Com в 1980-х годах; вторая (SMB 2.0) была создана Microsoft и появилась вWindows Vista. В настоящее время SMB используется в качестве основного протокола для удаленного доступа к файлам как для операционных системMicrosoft Windows, так и дляmacOS[1].

Содержание

История

[править |править код]

Первая версия протокола была разработана сотрудникомIBM Бэрри Файгенбаумом (англ. Barry Feigenbaum) в1983 году[2][3]. Изначально SMB был реализован черезNetBIOS (поверхNBF,IPX/SPX илиNetBIOS over TCP/IP) и использовался в сетяхMS-NET иLAN Manager дляDOS, а также вWindows for Workgroups. Microsoft регулярно дополняла протокол новыми возможностями; так, вторая версия Microsoft Networks SMB File Sharing Protocol Extensions появилась в1988 году, 3-я версия — в1989 году, версия 3.4 — в 1992[4].

В1992 году появиласьSamba —свободная реализация протокола SMB дляUNIX-подобных операционных систем (изначально дляSunOS). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провестиобратную разработку протокола.

В1996 году Microsoft стала использовать новое название для дополненной версии протокола, которая использовалась вWindows NT 4.0 —CIFS (англ. Common Internet File System); новое имя прижилось, SMB и CIFS фактически стали синонимами[3]. Microsoft некоторое время пыталась превратить CIFS в международный стандарт черезIETF, но после2000 года прекратила работу по стандартизации.

ВWindows 2000 впервые появился SMB непосредственно поверхTCP (без NetBIOS); для этого используетсяпорт 445 (SMB черезNBT использовал порт 139).

ВWindows Vista появилась новая версия протокола —SMB 2.0. Протокол был значительно упрощён (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования возможно совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера[5]. SMB 2 использует тот же порт (445) как и SMB, но другой заголовокпакетов (0xFF 'S' 'M' 'B' в SMB,0xFE 'S' 'M' 'B' в SMB 2)[6].

ВWindows 8 появилась новая версия протокола —SMB 3.0. Новые возможностиизложены на сайте разработчиков.

В 2008 году под давлениемЕврокомиссии Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайтеMSDN[7].

Принцип работы

[править |править код]

SMB — это протокол, основанный на технологииклиент-сервер, который предоставляет клиентским приложениям простой способ для чтения и записи файлов, а также запроса служб у серверных программ в различных типах сетевого окружения. Серверы предоставляют файловые системы и другие ресурсы (принтеры, почтовые сегменты, именованные каналы и т. д.) для общего доступа в сети. Клиентские компьютеры могут иметь у себя свои носители информации, но также имеют доступ к ресурсам, предоставленным сервером для общего пользования.

Клиенты соединяются с сервером, используя протоколыTCP/IP (а, точнее,NetBIOS черезTCP/IP),NetBEUI илиIPX/SPX. После того, как соединение установлено, клиенты могут посылать команды серверу (эти команды называются SMB-команды или SMBs), который даёт им доступ к ресурсам, позволяет открывать, читать файлы, писать в файлы и вообще выполнять весь перечень действий, которые можно выполнять с файловой системой. Однако в случае использования SMB эти действия совершаются через сеть.

Как было сказано выше, SMB работает, используя различныепротоколы. Всетевой модели OSI протокол SMB используется как протокол Application/Presentation уровня и зависит от низкоуровневых транспортных протоколов. SMB может использоваться черезTCP/IP,NetBEUI иIPX/SPX. ЕслиTCP/IP илиNetBEUI будут заняты, то будет использоваться NetBIOS API. SMB также может посылаться через протоколDECnet. Digital (нынеCompaq) сделала это специально для своего продукта PATHWORKS. NetBIOS в случае использования через TCP/IP имеет различные названия.Microsoft называет его в некоторых случаяхNBT, а в некоторыхNetBT. Также встречается названиеRFCNB.

С начала существования SMB было разработано множество различных вариантов протокола для обработки всё возрастающей сложности компьютерной среды, в которой он использовался. Договорились, что реальный вариант протокола, который будет использоваться клиентом и сервером, будет определяться командой negprot (negotiate protocol). Этот SMB обязан посылаться первым до установления соединения. Первым вариантом протокола был Core Protocol, известный как SMB-реализация PC NETWORK PROGRAM 1.0. Он должным образом поддерживает весь набор основных операций, который включает в себя:

  • присоединение к файловым и принтерным ресурсам и отсоединение от них;
  • открытие и закрытие файлов;
  • открытие и закрытие принтерных файлов;
  • чтение и запись файлов;
  • создание и удаление файлов и каталогов;
  • поиск каталогов;
  • получение и установление атрибутов файла;
  • блокировка и разблокировка файлов.

Формат заголовка SMB

[править |править код]
8162432 bits
IDF
CommandRCLSReservedERR
ERR (cont)REB/FLGReserved
Reserved
Reserved
Reserved
Tree IDProcess ID
User IDMultiplex ID
WCTVWV
BCCBUF
SMB header structure

Основные элементы структуры заголовка SMB:
   •IDF (Identifier) — Идентификатор протокола: 0xff, 0x53('S'), 0x4d('M'), 0x42('B').
   •Command — команда протокола.
   •RCLS — код класса ошибки.
   •ERR — код ошибки.
   •Tree ID (TID) — идентификатор соединения с сетевым ресурсом.
   •Process ID (PID) — идентификатор клиентского процесса фактического соединения.
   •User ID (UID) — идентификатор пользователя; используется сервером для проверки прав доступа пользователя.
   •Multiplex ID (MID) — идентификатор группы пользователя; используется сервером для проверки прав доступа группы пользователя.
   •WCT — количество параметров, следующих за заголовком.
   •BCC — количество байт данных, следующих за параметрами.

Аутентификация Microsoft SMB Protocol

[править |править код]

Модель механизма защиты, которая используется в Microsoft SMB Protocol, в основном идентична модели любого другого варианта SMB-протокола. Она состоит из двух уровней защиты: user-level (пользовательский уровень) и share-level (уровень совместно используемого ресурса). Под share (опубликованный ресурс) понимается файл, каталог, принтер, любая услуга, которая может быть доступна клиентам по сети.

Аутентификация на уровне user-level означает, что клиент, который пытается получить доступ к ресурсу на сервере, должен иметь username (имя пользователя) и password (пароль). Если данная аутентификация прошла успешно, клиент имеет доступ ко всем доступным ресурсам сервера, кроме тех, что с share-level-защитой. Этот уровень защиты даёт возможность системным администраторам конкретно указывать, какие пользователи и группы пользователей имеют доступ к определённым данным. Он используется вWindows NT,Windows 2000,Windows XP.

Аутентификация на уровне share-level означает, что доступ к ресурсу контролируется паролем, установленным конкретно на этот ресурс. В отличие от user-level, этот уровень защиты не требует имя пользователя для аутентификации и не устанавливается никакая уникальность текущего пользователя. Этот уровень используется в Windows NT, Windows 2000 и Windows XP для обеспечения дополнительного уровня контроля защиты сверх user-level. Операционные системыWindows 95,Windows 98 иWindows ME реализуют защиту только этого уровня.

В обоих этих уровнях защиты используется шифрование. Пароль зашифровывается, прежде чем отправляется на сервер. Типы шифрованияNTLM,NTLMv2 и старые версииLAN Manager (LM) поддерживаются протоколом. Оба метода шифрования используют аутентификацию типа отклик-отзыв, в которой сервер посылает клиенту случайную сгенерированную строку, а клиент возвращает в качестве отзыва обработанную строку, которая доказывает, что клиент имеет достаточный мандат для доступа к данным.

Безопасность

[править |править код]

На протяжении всего срока эксплуатации эталонной реализации протокола от Microsoft специалистами по информационной безопасности выявлялись уязвимости, позволяющие успешно провести сетевую атаку на удалённый узел.[8][9][10] Организация атаки на незащищённые серверы SMB является одной из наиболее привлекательных среди злоумышленников[11]. Так, например, с помощью использования уязвимостей протокола SMB были осуществленывзлом серверов Sony Pictures Entertainment[12] и распространение вредоносного ПОDoublePulsar,WannaCry[13] (уязвимостьEternalBlue) иPetya[14].

См. также

[править |править код]

Примечания

[править |править код]
  1. New OS X uses Windows file sharing by default. AFP is out, SMB2 is in—but whose version of SMB2? And what about Time Machine?Архивная копия от 20 декабря 2016 наWayback Machine
  2. Christopher R. Hertel. SMB Filesharing URL Scheme (англ.) (8 января 2003). Дата обращения: 21 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  3. 12Andrew Tridgell. Myths About Samba (англ.). Дата обращения: 2 июня 2011. Архивировано изоригинала 3 июня 2012 года.
  4. Dan Shearer. History of SMB (англ.) (16 ноября 1996). Дата обращения: 21 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  5. Joseph Barreto. SMB2, a complete redesign of the main remote file protocol for Windows (англ.) (9 декабря 2008). Дата обращения: 22 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  6. SMB2 . Wireshark. Дата обращения: 22 октября 2009. Архивировано изоригинала 3 июня 2012 года.
  7. [MS-CIFS]: Common Internet File System (CIFS) Protocol (англ.). Дата обращения: 11 августа 2015. Архивировано 5 ноября 2015 года.
  8. MS02-070: Flaw in SMB Signing May Permit Group Policy to Be Modified . Microsoft (1 декабря 2007). Дата обращения: 1 ноября 2009. Архивировано 25 июля 2017 года.
  9. MS09-001: Vulnerabilities in SMB could allow remote code execution . Microsoft (13 января 2009). Дата обращения: 1 ноября 2009. Архивировано 5 октября 2009 года.
  10. Microsoft Security Bulletin MS17-010 – Critical . technet.microsoft.com. Дата обращения: 13 мая 2017. Архивировано 21 мая 2017 года.
  11. Alert (TA14-353A) Targeted Destructive Malware . US-CERT. Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
  12. Sony Hackers Used Server Message Block (SMB) Worm Tool . Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
  13. WannaCry Ransomware Attack Hits Victims With Microsoft SMB Exploit.eWeek. Дата обращения: 13 мая 2017.
  14. Petya ransomware virus is back amid cyber attack: Swiss agency.Reuters. Tue Jun 27 14:50:10 UTC 2017.Архивировано 2017-06-27. Дата обращения:2017-06-27.{{cite news}}:Проверьте значение даты:|date= (справка)

Ссылки

[править |править код]
Перейти к шаблону «Компоненты Microsoft Windows»
Основные
Службы
управления
Приложения
Win32
UWP/WASDK[англ.]
Исторические
Игры
Ядро ОС
Службы
Файловые
системы
Серверы
Архитектура
Безопасность
Совместимость
Перейти к шаблону «Схемы URI»
СхемыURI
Официальные
Неофициальные
Перейти к шаблону «Файловые системы»
Дисковые
Оптические диски
Флеш-память/SSD
Кластерные
Распределённые
(сетевые)
Специальные
Псевдо- и виртуальные
Шифрованные
Источник —https://ru.wikipedia.org/w/index.php?title=SMB&oldid=149825586
Категории:
Скрытые категории: