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. Новые возможности [support.microsoft.com/en-us/kb/2709568 изложены на сайте разработчиков].

В 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
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:
   • 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) поддерживаются протоколом. Оба метода шифрования используют аутентификацию типа отклик-отзыв, в которой сервер посылает клиенту случайную сгенерированную строку, а клиент возвращает в качестве отзыва обработанную строку, которая доказывает, что клиент имеет достаточный мандат для доступа к данным.

Методы взлома SMB

Большинство методов взлома основано на том, что злоумышленник получает доступ к SAM — базе данных, в которой операционная система хранит хэши паролей пользователей. Если SAM получена, то далее остается только воспользоваться одной из многих утилит, которые помогают дешифровать пароли пользователей.

Одной из известных программ подобного рода является L0phtCrack. Принцип её действия прост. Похищенная база данных сначала импортируется в программу. Далее выбирается нужная учётная запись и запускается процесс дешифровки, который может занять много времени. Среди способов расшифровки имеется возможность проведения «атаки по словарю», т.е. попытка угадать пароль по уже заложенному в программу списку распространенных паролей, на тот случай, если пароль короткий и незамысловатый. Также злоумышленник может задумать использовать L0phtCrack в режиме «SMB Packet Capture» в локальной сети, если он обладает необходимыми правами для установки и запуска программ на компьютере. В этом случае хеши паролей пользователей можно будет перехватить с помощью утилиты. Запустив программу, сразу же можно, перехватывая пакеты, получить хеши паролей пользователей, которые аутентифицируются на сервере в данный момент, так как довольно часто при работе в локальной сети пользователи с разных компьютеров повторно аутентифицируются на главном сервере. Затем злоумышленнику остается только сохранить все перехваченные хэши паролей и начать дешифрацию аналогично тому, как это происходило с дешифровкой SAM-файла. Как правило, у большинства пользователей простые пароли, поэтому программа способна взломать их всего за несколько минут своей работы с помощью встроенного списка паролей.

Остальные утилиты основаны на подобном же принципе.

См. также

Напишите отзыв о статье "Server Message Block"

Примечания

  1. Christopher R. Hertel. [tools.ietf.org/html/draft-crhertel-smb-url-04 SMB Filesharing URL Scheme] (англ.) (8 января 2003). Проверено 21 октября 2009. [www.webcitation.org/688rfL7XY Архивировано из первоисточника 3 июня 2012].
  2. 1 2 Andrew Tridgell. [samba.org/samba/docs/myths_about_samba.html Myths About Samba] (англ.). Проверено 2 июня 2011. [www.webcitation.org/688rft3cU Архивировано из первоисточника 3 июня 2012].
  3. Dan Shearer. [www.samba.org/cifs/docs/smb-history.html History of SMB] (англ.) (16 ноября 1996). Проверено 21 октября 2009. [www.webcitation.org/688rgKw16 Архивировано из первоисточника 3 июня 2012].
  4. Joseph Barreto. [blogs.technet.com/josebda/archive/2008/12/05/smb2-a-complete-redesign-of-the-main-remote-file-protocol-for-windows.aspx SMB2, a complete redesign of the main remote file protocol for Windows] (англ.) (9 декабря 2008). Проверено 22 октября 2009. [www.webcitation.org/688rgkgbL Архивировано из первоисточника 3 июня 2012].
  5. [wiki.wireshark.org/SMB2 SMB2]. Wireshark. Проверено 22 октября 2009. [www.webcitation.org/688rhjxXZ Архивировано из первоисточника 3 июня 2012].
  6. [msdn.microsoft.com/en-us/library/ee442092.aspx [MS-CIFS]: Common Internet File System (CIFS) Protocol] (англ.). Проверено 11 августа 2015.

Ссылки

  • [www.microsoft.com/about/legal/protocols/BSTD/CIFS/draft-leach-cifs-v1-spec-02.txt A Common Internet File System (CIFS/1.0) Protocol — Preliminary Draft]  (англ.)
  • [msdn.microsoft.com/en-us/library/cc212363%28PROT.10%29.aspx [MS-SMB]: Server Message Block (SMB) Protocol Specification]  (англ.)
  • [msdn.microsoft.com/en-us/library/cc212614%28PROT.10%29.aspx [MS-SMB2]: Server Message Block (SMB) Version 2.0 Protocol Specification]  (англ.)
  • [samba.anu.edu.au/cifs/docs/what-is-smb.html Just what is SMB?]  (англ.)
  • [www.protocols.com/pbook/ibm.htm#SMB IBM Protocols: SMB]  (англ.)
  • [www.javvin.com/protocolSMB.html IBM SMB: Server Message Block protocol]  (англ.)

Отрывок, характеризующий Server Message Block

– Аль не вкусна каша? Ах, вороны, заколянились! – кричали на ополченцев, замявшихся перед солдатом с оторванной ногой.
– Тое кое, малый, – передразнивали мужиков. – Страсть не любят.
Пьер замечал, как после каждого попавшего ядра, после каждой потери все более и более разгоралось общее оживление.
Как из придвигающейся грозовой тучи, чаще и чаще, светлее и светлее вспыхивали на лицах всех этих людей (как бы в отпор совершающегося) молнии скрытого, разгорающегося огня.
Пьер не смотрел вперед на поле сражения и не интересовался знать о том, что там делалось: он весь был поглощен в созерцание этого, все более и более разгорающегося огня, который точно так же (он чувствовал) разгорался и в его душе.
В десять часов пехотные солдаты, бывшие впереди батареи в кустах и по речке Каменке, отступили. С батареи видно было, как они пробегали назад мимо нее, неся на ружьях раненых. Какой то генерал со свитой вошел на курган и, поговорив с полковником, сердито посмотрев на Пьера, сошел опять вниз, приказав прикрытию пехоты, стоявшему позади батареи, лечь, чтобы менее подвергаться выстрелам. Вслед за этим в рядах пехоты, правее батареи, послышался барабан, командные крики, и с батареи видно было, как ряды пехоты двинулись вперед.
Пьер смотрел через вал. Одно лицо особенно бросилось ему в глаза. Это был офицер, который с бледным молодым лицом шел задом, неся опущенную шпагу, и беспокойно оглядывался.
Ряды пехотных солдат скрылись в дыму, послышался их протяжный крик и частая стрельба ружей. Через несколько минут толпы раненых и носилок прошли оттуда. На батарею еще чаще стали попадать снаряды. Несколько человек лежали неубранные. Около пушек хлопотливее и оживленнее двигались солдаты. Никто уже не обращал внимания на Пьера. Раза два на него сердито крикнули за то, что он был на дороге. Старший офицер, с нахмуренным лицом, большими, быстрыми шагами переходил от одного орудия к другому. Молоденький офицерик, еще больше разрумянившись, еще старательнее командовал солдатами. Солдаты подавали заряды, поворачивались, заряжали и делали свое дело с напряженным щегольством. Они на ходу подпрыгивали, как на пружинах.
Грозовая туча надвинулась, и ярко во всех лицах горел тот огонь, за разгоранием которого следил Пьер. Он стоял подле старшего офицера. Молоденький офицерик подбежал, с рукой к киверу, к старшему.
– Имею честь доложить, господин полковник, зарядов имеется только восемь, прикажете ли продолжать огонь? – спросил он.
– Картечь! – не отвечая, крикнул старший офицер, смотревший через вал.
Вдруг что то случилось; офицерик ахнул и, свернувшись, сел на землю, как на лету подстреленная птица. Все сделалось странно, неясно и пасмурно в глазах Пьера.
Одно за другим свистели ядра и бились в бруствер, в солдат, в пушки. Пьер, прежде не слыхавший этих звуков, теперь только слышал одни эти звуки. Сбоку батареи, справа, с криком «ура» бежали солдаты не вперед, а назад, как показалось Пьеру.
Ядро ударило в самый край вала, перед которым стоял Пьер, ссыпало землю, и в глазах его мелькнул черный мячик, и в то же мгновенье шлепнуло во что то. Ополченцы, вошедшие было на батарею, побежали назад.
– Все картечью! – кричал офицер.
Унтер офицер подбежал к старшему офицеру и испуганным шепотом (как за обедом докладывает дворецкий хозяину, что нет больше требуемого вина) сказал, что зарядов больше не было.
– Разбойники, что делают! – закричал офицер, оборачиваясь к Пьеру. Лицо старшего офицера было красно и потно, нахмуренные глаза блестели. – Беги к резервам, приводи ящики! – крикнул он, сердито обходя взглядом Пьера и обращаясь к своему солдату.
– Я пойду, – сказал Пьер. Офицер, не отвечая ему, большими шагами пошел в другую сторону.
– Не стрелять… Выжидай! – кричал он.
Солдат, которому приказано было идти за зарядами, столкнулся с Пьером.
– Эх, барин, не место тебе тут, – сказал он и побежал вниз. Пьер побежал за солдатом, обходя то место, на котором сидел молоденький офицерик.
Одно, другое, третье ядро пролетало над ним, ударялось впереди, с боков, сзади. Пьер сбежал вниз. «Куда я?» – вдруг вспомнил он, уже подбегая к зеленым ящикам. Он остановился в нерешительности, идти ему назад или вперед. Вдруг страшный толчок откинул его назад, на землю. В то же мгновенье блеск большого огня осветил его, и в то же мгновенье раздался оглушающий, зазвеневший в ушах гром, треск и свист.
Пьер, очнувшись, сидел на заду, опираясь руками о землю; ящика, около которого он был, не было; только валялись зеленые обожженные доски и тряпки на выжженной траве, и лошадь, трепля обломками оглобель, проскакала от него, а другая, так же как и сам Пьер, лежала на земле и пронзительно, протяжно визжала.


Пьер, не помня себя от страха, вскочил и побежал назад на батарею, как на единственное убежище от всех ужасов, окружавших его.
В то время как Пьер входил в окоп, он заметил, что на батарее выстрелов не слышно было, но какие то люди что то делали там. Пьер не успел понять того, какие это были люди. Он увидел старшего полковника, задом к нему лежащего на валу, как будто рассматривающего что то внизу, и видел одного, замеченного им, солдата, который, прорываясь вперед от людей, державших его за руку, кричал: «Братцы!» – и видел еще что то странное.
Но он не успел еще сообразить того, что полковник был убит, что кричавший «братцы!» был пленный, что в глазах его был заколон штыком в спину другой солдат. Едва он вбежал в окоп, как худощавый, желтый, с потным лицом человек в синем мундире, со шпагой в руке, набежал на него, крича что то. Пьер, инстинктивно обороняясь от толчка, так как они, не видав, разбежались друг против друга, выставил руки и схватил этого человека (это был французский офицер) одной рукой за плечо, другой за гордо. Офицер, выпустив шпагу, схватил Пьера за шиворот.
Несколько секунд они оба испуганными глазами смотрели на чуждые друг другу лица, и оба были в недоумении о том, что они сделали и что им делать. «Я ли взят в плен или он взят в плен мною? – думал каждый из них. Но, очевидно, французский офицер более склонялся к мысли, что в плен взят он, потому что сильная рука Пьера, движимая невольным страхом, все крепче и крепче сжимала его горло. Француз что то хотел сказать, как вдруг над самой головой их низко и страшно просвистело ядро, и Пьеру показалось, что голова французского офицера оторвана: так быстро он согнул ее.
Пьер тоже нагнул голову и отпустил руки. Не думая более о том, кто кого взял в плен, француз побежал назад на батарею, а Пьер под гору, спотыкаясь на убитых и раненых, которые, казалось ему, ловят его за ноги. Но не успел он сойти вниз, как навстречу ему показались плотные толпы бегущих русских солдат, которые, падая, спотыкаясь и крича, весело и бурно бежали на батарею. (Это была та атака, которую себе приписывал Ермолов, говоря, что только его храбрости и счастью возможно было сделать этот подвиг, и та атака, в которой он будто бы кидал на курган Георгиевские кресты, бывшие у него в кармане.)
Французы, занявшие батарею, побежали. Наши войска с криками «ура» так далеко за батарею прогнали французов, что трудно было остановить их.
С батареи свезли пленных, в том числе раненого французского генерала, которого окружили офицеры. Толпы раненых, знакомых и незнакомых Пьеру, русских и французов, с изуродованными страданием лицами, шли, ползли и на носилках неслись с батареи. Пьер вошел на курган, где он провел более часа времени, и из того семейного кружка, который принял его к себе, он не нашел никого. Много было тут мертвых, незнакомых ему. Но некоторых он узнал. Молоденький офицерик сидел, все так же свернувшись, у края вала, в луже крови. Краснорожий солдат еще дергался, но его не убирали.
Пьер побежал вниз.
«Нет, теперь они оставят это, теперь они ужаснутся того, что они сделали!» – думал Пьер, бесцельно направляясь за толпами носилок, двигавшихся с поля сражения.
Но солнце, застилаемое дымом, стояло еще высоко, и впереди, и в особенности налево у Семеновского, кипело что то в дыму, и гул выстрелов, стрельба и канонада не только не ослабевали, но усиливались до отчаянности, как человек, который, надрываясь, кричит из последних сил.


Главное действие Бородинского сражения произошло на пространстве тысячи сажен между Бородиным и флешами Багратиона. (Вне этого пространства с одной стороны была сделана русскими в половине дня демонстрация кавалерией Уварова, с другой стороны, за Утицей, было столкновение Понятовского с Тучковым; но это были два отдельные и слабые действия в сравнении с тем, что происходило в середине поля сражения.) На поле между Бородиным и флешами, у леса, на открытом и видном с обеих сторон протяжении, произошло главное действие сражения, самым простым, бесхитростным образом.
Сражение началось канонадой с обеих сторон из нескольких сотен орудий.
Потом, когда дым застлал все поле, в этом дыму двинулись (со стороны французов) справа две дивизии, Дессе и Компана, на флеши, и слева полки вице короля на Бородино.
От Шевардинского редута, на котором стоял Наполеон, флеши находились на расстоянии версты, а Бородино более чем в двух верстах расстояния по прямой линии, и поэтому Наполеон не мог видеть того, что происходило там, тем более что дым, сливаясь с туманом, скрывал всю местность. Солдаты дивизии Дессе, направленные на флеши, были видны только до тех пор, пока они не спустились под овраг, отделявший их от флеш. Как скоро они спустились в овраг, дым выстрелов орудийных и ружейных на флешах стал так густ, что застлал весь подъем той стороны оврага. Сквозь дым мелькало там что то черное – вероятно, люди, и иногда блеск штыков. Но двигались ли они или стояли, были ли это французы или русские, нельзя было видеть с Шевардинского редута.
Солнце взошло светло и било косыми лучами прямо в лицо Наполеона, смотревшего из под руки на флеши. Дым стлался перед флешами, и то казалось, что дым двигался, то казалось, что войска двигались. Слышны были иногда из за выстрелов крики людей, но нельзя было знать, что они там делали.
Наполеон, стоя на кургане, смотрел в трубу, и в маленький круг трубы он видел дым и людей, иногда своих, иногда русских; но где было то, что он видел, он не знал, когда смотрел опять простым глазом.
Он сошел с кургана и стал взад и вперед ходить перед ним.
Изредка он останавливался, прислушивался к выстрелам и вглядывался в поле сражения.
Не только с того места внизу, где он стоял, не только с кургана, на котором стояли теперь некоторые его генералы, но и с самых флешей, на которых находились теперь вместе и попеременно то русские, то французские, мертвые, раненые и живые, испуганные или обезумевшие солдаты, нельзя было понять того, что делалось на этом месте. В продолжение нескольких часов на этом месте, среди неумолкаемой стрельбы, ружейной и пушечной, то появлялись одни русские, то одни французские, то пехотные, то кавалерийские солдаты; появлялись, падали, стреляли, сталкивались, не зная, что делать друг с другом, кричали и бежали назад.
С поля сражения беспрестанно прискакивали к Наполеону его посланные адъютанты и ординарцы его маршалов с докладами о ходе дела; но все эти доклады были ложны: и потому, что в жару сражения невозможно сказать, что происходит в данную минуту, и потому, что многие адъютапты не доезжали до настоящего места сражения, а передавали то, что они слышали от других; и еще потому, что пока проезжал адъютант те две три версты, которые отделяли его от Наполеона, обстоятельства изменялись и известие, которое он вез, уже становилось неверно. Так от вице короля прискакал адъютант с известием, что Бородино занято и мост на Колоче в руках французов. Адъютант спрашивал у Наполеона, прикажет ли он пореходить войскам? Наполеон приказал выстроиться на той стороне и ждать; но не только в то время как Наполеон отдавал это приказание, но даже когда адъютант только что отъехал от Бородина, мост уже был отбит и сожжен русскими, в той самой схватке, в которой участвовал Пьер в самом начале сраженья.