Server Message Block
SMB (сокр. отангл. Server Message Block) —сетевой протоколприкладного уровня для удалённого доступа кфайлам,принтерам и другим сетевым ресурсам, а также длямежпроцессного взаимодействия. Первая версия протокола, также известная как Common Internet File System (CIFS) (Единая файловая система Интернета), была разработана компаниямиIBM,Microsoft,Intel и3Com в 1980-х годах; вторая (SMB 2.0) была создана Microsoft и появилась вWindows Vista. В настоящее время SMB связан главным образом с операционными системамиMicrosoft Windows, где используется для реализации «Сети Microsoft Windows» (англ. Microsoft Windows Network) и «Совместного использования файлов и принтеров» (англ. File and Printer Sharing).
История
[править |править код]Первая версия протокола была разработана сотрудникомIBM Бэрри Файгенбаумом (англ. Barry Feigenbaum) в1983 году[1][2]. Изначально 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[3].
В1992 году появиласьSamba —свободная реализация протокола SMB дляUNIX-подобных операционных систем (изначально дляSunOS). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провестиобратную разработку протокола.
В1996 году Microsoft стала использовать новое название для дополненной версии протокола, которая использовалась вWindows NT 4.0 —CIFS (англ. Common Internet File System); новое имя прижилось, SMB и CIFS фактически стали синонимами[2]. 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 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера[4]. SMB 2 использует тот же порт (445) как и SMB, но другой заголовокпакетов (0xFF 'S' 'M' 'B'
в SMB,0xFE 'S' 'M' 'B'
в SMB 2)[5].
ВWindows 8 появилась новая версия протокола —SMB 3.0. Новые возможностиизложены на сайте разработчиков.
В 2008 году под давлениемЕврокомиссии Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайтеMSDN[6].
Принцип работы
[править |править код]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
[править |править код]8 | 16 | 24 | 32 bits |
IDF | |||
---|---|---|---|
Command | RCLS | Reserved | ERR |
ERR (cont) | REB/FLG | Reserved | |
Reserved | |||
Reserved | |||
Reserved | |||
Tree ID | Process ID | ||
User ID | Multiplex ID | ||
WCT | VWV | ||
BCC | BUF | ||
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 специалистами по информационной безопасности выявлялись уязвимости, позволяющие успешно провести сетевую атаку на удалённый узел.[7][8][9] Организация атаки на незащищённые серверы SMB является одной из наиболее привлекательных среди злоумышленников[10]. Так, например, с помощью использования уязвимостей протокола SMB были осуществленывзлом серверов Sony Pictures Entertainment[11] и распространение вредоносного ПОDoublePulsar,WannaCry[12] (уязвимостьEternalBlue) иPetya[13].
См. также
[править |править код]Примечания
[править |править код]- ↑Christopher R. Hertel. SMB Filesharing URL Scheme (англ.) (8 января 2003). Дата обращения: 21 октября 2009. Архивировано изоригинала 3 июня 2012 года.
- ↑12Andrew Tridgell. Myths About Samba (англ.). Дата обращения: 2 июня 2011. Архивировано изоригинала 3 июня 2012 года.
- ↑Dan Shearer. History of SMB (англ.) (16 ноября 1996). Дата обращения: 21 октября 2009. Архивировано изоригинала 3 июня 2012 года.
- ↑Joseph Barreto. SMB2, a complete redesign of the main remote file protocol for Windows (англ.) (9 декабря 2008). Дата обращения: 22 октября 2009. Архивировано изоригинала 3 июня 2012 года.
- ↑SMB2 (неопр.). Wireshark. Дата обращения: 22 октября 2009. Архивировано изоригинала 3 июня 2012 года.
- ↑[MS-CIFS]: Common Internet File System (CIFS) Protocol (англ.). Дата обращения: 11 августа 2015. Архивировано 5 ноября 2015 года.
- ↑MS02-070: Flaw in SMB Signing May Permit Group Policy to Be Modified (неопр.). Microsoft (1 декабря 2007). Дата обращения: 1 ноября 2009. Архивировано 25 июля 2017 года.
- ↑MS09-001: Vulnerabilities in SMB could allow remote code execution (неопр.). Microsoft (13 января 2009). Дата обращения: 1 ноября 2009. Архивировано 5 октября 2009 года.
- ↑Microsoft Security Bulletin MS17-010 – Critical (неопр.). technet.microsoft.com. Дата обращения: 13 мая 2017. Архивировано 21 мая 2017 года.
- ↑Alert (TA14-353A) Targeted Destructive Malware (неопр.). US-CERT. Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
- ↑Sony Hackers Used Server Message Block (SMB) Worm Tool (неопр.). Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
- ↑WannaCry Ransomware Attack Hits Victims With Microsoft SMB Exploit.eWeek. Дата обращения: 13 мая 2017.
- ↑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=
(справка)