Server Message Block: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Спасено источников — 7, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.7
 
(не показаны 2 промежуточные версии 2 участников)
Строка 3: Строка 3:
== История ==
== История ==


Первая версия протокола была разработана сотрудником [[IBM]] Бэрри Файгенбаумом ({{lang-en|Barry Feigenbaum}}) в [[1983 год]]у<ref>{{cite web|url=http://tools.ietf.org/html/draft-crhertel-smb-url-04|title=SMB Filesharing URL Scheme|lang=en|author=Christopher R. Hertel|date=8 января 2003|accessdate=2009-10-21|archiveurl=https://www.webcitation.org/688rfL7XY?url=http://tools.ietf.org/html/draft-crhertel-smb-url-04|archivedate=2012-06-03|deadurl=yes}}</ref><ref name="myths">{{cite web|url=http://samba.org/samba/docs/myths_about_samba.html|title=Myths About Samba|author=Andrew Tridgell|lang=en|accessdate=2011-06-02|archiveurl=https://www.webcitation.org/688rft3cU?url=http://www.samba.org/samba/docs/myths_about_samba.html|archivedate=2012-06-03|deadurl=yes}}</ref>. Изначально SMB был реализован через [[NetBIOS]] (поверх [[NBF]], [[IPX/SPX]] или [[NetBIOS over TCP/IP]]) и использовался в сетях [[MS-NET]] и [[LAN Manager]] для [[DOS]], а также в [[Windows 3.x|Windows for Workgroups]]. Microsoft регулярно дополняла протокол новыми возможностями; так, вторая версия Microsoft Networks SMB File Sharing Protocol Extensions появилась в [[1988 год]]у, 3-я версия — в [[1989 год]]у, версия 3.4 — в 1992<ref>{{cite web|url=http://www.samba.org/cifs/docs/smb-history.html|title=History of SMB|lang=en|author=Dan Shearer|date=16 ноября 1996|accessdate=2009-10-21|archiveurl=https://www.webcitation.org/688rgKw16?url=http://www.samba.org/cifs/docs/smb-history.html|archivedate=2012-06-03|deadurl=yes}}</ref>.
Первая версия протокола была разработана сотрудником [[IBM]] Бэрри Файгенбаумом ({{lang-en|Barry Feigenbaum}}) в [[1983 год]]у<ref>{{cite web|url=http://tools.ietf.org/html/draft-crhertel-smb-url-04|title=SMB Filesharing URL Scheme|lang=en|author=Christopher R. Hertel|date=2003|accessdate=2009-10-21|archiveurl=https://www.webcitation.org/688rfL7XY?url=http://tools.ietf.org/html/draft-crhertel-smb-url-04|archivedate=2012-06-03|=}}</ref><ref name="myths">{{cite web|url=http://samba.org/samba/docs/myths_about_samba.html|title=Myths About Samba|author=Andrew Tridgell|lang=en|accessdate=2011-06-02|archiveurl=https://www.webcitation.org/688rft3cU?url=http://www.samba.org/samba/docs/myths_about_samba.html|archivedate=2012-06-03|=}}</ref>. Изначально SMB был реализован через [[NetBIOS]] (поверх [[NBF]], [[IPX/SPX]] или [[NetBIOS over TCP/IP]]) и использовался в сетях [[MS-NET]] и [[LAN Manager]] для [[DOS]], а также в [[Windows 3.x|Windows for Workgroups]]. Microsoft регулярно дополняла протокол новыми возможностями; так, вторая версия Microsoft Networks SMB File Sharing Protocol Extensions появилась в [[1988 год]]у, 3-я версия — в [[1989 год]]у, версия 3.4 — в 1992<ref>{{cite web|url=http://www.samba.org/cifs/docs/smb-history.html|title=History of SMB|lang=en|author=Dan Shearer|date=1996|accessdate=2009-10-21|archiveurl=https://www.webcitation.org/688rgKw16?url=http://www.samba.org/cifs/docs/smb-history.html|archivedate=2012-06-03|=}}</ref>.


В [[1992 год]]у появилась [[Samba]] — [[свободное программное обеспечение|свободная реализация]] протокола SMB для [[UNIX]]-подобных операционных систем (изначально для [[SunOS]]). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провести [[обратная разработка|обратную разработку]] протокола.
В [[1992 год]]у появилась [[Samba]] — [[свободное программное обеспечение|свободная реализация]] протокола SMB для [[UNIX]]-подобных операционных систем (изначально для [[SunOS]]). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провести [[обратная разработка|обратную разработку]] протокола.
Строка 11: Строка 11:
В [[Windows 2000]] впервые появился SMB непосредственно поверх [[TCP]] (без NetBIOS); для этого используется [[порт (TCP/IP)|порт]] 445 (SMB через [[NetBIOS over TCP/IP|NBT]] использовал порт 139).
В [[Windows 2000]] впервые появился SMB непосредственно поверх [[TCP]] (без NetBIOS); для этого используется [[порт (TCP/IP)|порт]] 445 (SMB через [[NetBIOS over TCP/IP|NBT]] использовал порт 139).


В [[Windows Vista]] появилась новая версия протокола — '''SMB 2.0'''. Протокол был значительно упрощён (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования возможно совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера<ref>{{cite web|url=http://blogs.technet.com/josebda/archive/2008/12/05/smb2-a-complete-redesign-of-the-main-remote-file-protocol-for-windows.aspx|title=SMB2, a complete redesign of the main remote file protocol for Windows|author=Joseph Barreto|lang=en|date=9 декабря 2008|accessdate=2009-10-22|archiveurl=https://www.webcitation.org/688rgkgbL?url=http://blogs.technet.com/b/josebda/archive/2008/12/05/smb2-a-complete-redesign-of-the-main-remote-file-protocol-for-windows.aspx|archivedate=2012-06-03|deadurl=yes}}</ref>. SMB 2 использует тот же порт (445) как и SMB, но другой заголовок [[IP-пакет|пакетов]] (<code>0xFF 'S' 'M' 'B'</code> в SMB, <code>0xFE 'S' 'M' 'B'</code> в SMB 2)<ref>{{cite web|url=http://wiki.wireshark.org/SMB2|title=SMB2|publisher=Wireshark|accessdate=2009-10-22|archiveurl=https://www.webcitation.org/688rhjxXZ?url=http://wiki.wireshark.org/SMB2|archivedate=2012-06-03|deadurl=yes}}</ref>.
В [[Windows Vista]] появилась новая версия протокола — '''SMB 2.0'''. Протокол был значительно упрощён (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования возможно совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера<ref>{{cite web|url=http://blogs.technet.com/josebda/archive/2008/12/05/smb2-a-complete-redesign-of-the-main-remote-file-protocol-for-windows.aspx|title=SMB2, a complete redesign of the main remote file protocol for Windows|author=Joseph Barreto|lang=en|date=2008|accessdate=2009-10-22|archiveurl=https://www.webcitation.org/688rgkgbL?url=http://blogs.technet.com/b/josebda/archive/2008/12/05/smb2-a-complete-redesign-of-the-main-remote-file-protocol-for-windows.aspx|archivedate=2012-06-03|=}}</ref>. SMB 2 использует тот же порт (445) как и SMB, но другой заголовок [[IP-пакет|пакетов]] (<code>0xFF 'S' 'M' 'B'</code> в SMB, <code>0xFE 'S' 'M' 'B'</code> в SMB 2)<ref>{{cite web|url=http://wiki.wireshark.org/SMB2|title=SMB2|publisher=Wireshark|accessdate=2009-10-22|archiveurl=https://www.webcitation.org/688rhjxXZ?url=http://wiki.wireshark.org/SMB2|archivedate=2012-06-03|=}}</ref>.


В [[Windows 8]] появилась новая версия протокола — '''SMB 3.0'''. Новые возможности [http://support.microsoft.com/en-us/kb/2709568 изложены на сайте разработчиков].
В [[Windows 8]] появилась новая версия протокола — '''SMB 3.0'''. Новые возможности [http://support.microsoft.com/en-us/kb/2709568 изложены на сайте разработчиков].


В 2008 году под давлением [[Еврокомиссия|Еврокомиссии]] Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайте [[MSDN]]<ref>{{cite web|url = https://msdn.microsoft.com/en-us/library/ee442092.aspx|title = [MS-CIFS]: Common Internet File System (CIFS) Protocol|lang = en|accessdate = 2015-08-11|archive-date = 2015-11-05|archive-url = https://web.archive.org/web/20151105225011/https://msdn.microsoft.com/en-us/library/ee442092.aspx|deadlink = no}}</ref>.
В 2008 году под давлением [[Еврокомиссия|Еврокомиссии]] Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайте [[MSDN]]<ref>{{cite web|url = https://msdn.microsoft.com/en-us/library/ee442092.aspx|title = [MS-CIFS]: Common Internet File System (CIFS) Protocol|lang = en|accessdate = 2015-08-11|archive-date = 2015-11-05|archive-url = https://web.archive.org/web/20151105225011/https://msdn.microsoft.com/en-us/library/ee442092.aspx| = }}</ref>.


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


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


Как было сказано выше, SMB работает, используя различные [[Протокол передачи данных|протоколы]]. В [[Сетевая модель OSI|сетевой модели 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 работает, используя различные [[Протокол передачи данных|протоколы]]. В [[Сетевая модель OSI|сетевой модели 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]].
Строка 41: Строка 41:
|colspan=1 |24
|colspan=1 |24
|colspan=1 |32 bits
|colspan=1 |32 bits
|- align=center
!colspan=4|IDF
|- align=center
|- align=center
!colspan=1|Command
!colspan=1|Command
Строка 73: Строка 75:


'''Основные элементы структуры заголовка SMB: ''' <br />
'''Основные элементы структуры заголовка SMB: ''' <br />
&nbsp;&nbsp;&nbsp;• '''IDF (Identifier)''' — Идентификатор протокола: 0xff, 0x53('S'), 0x4d('M'), 0x42('B'). <br />
&nbsp;&nbsp;&nbsp;• '''Command''' — команда протокола. <br />
&nbsp;&nbsp;&nbsp;• '''Command''' — команда протокола. <br />
&nbsp;&nbsp;&nbsp;• '''RCLS''' — код класса ошибки. <br />
&nbsp;&nbsp;&nbsp;• '''RCLS''' — код класса ошибки. <br />
Строка 81: Строка 84:
&nbsp;&nbsp;&nbsp;• '''Multiplex ID (MID)''' — идентификатор группы пользователя; используется сервером для проверки прав доступа группы пользователя.<br />
&nbsp;&nbsp;&nbsp;• '''Multiplex ID (MID)''' — идентификатор группы пользователя; используется сервером для проверки прав ��оступа группы пользователя.<br />
&nbsp;&nbsp;&nbsp;• '''WCT''' — количество параметров, следующих за заголовком.<br />
&nbsp;&nbsp;&nbsp;• '''WCT''' — количество параметров, следующих за заголовком.<br />
&nbsp;&nbsp;&nbsp;• '''BCC''' — количество байт данных, следующих за параметрами.
&nbsp;&nbsp;&nbsp;• '''BCC''' — количество байт данных, следующих за параметрами.


== Аутентификация Microsoft SMB Protocol ==
== Аутентификация Microsoft SMB Protocol ==
Строка 93: Строка 96:


== Безопасность ==
== Безопасность ==
На протяжении всего срока эксплуатации эталонной реализации протокола от Microsoft специалистами по информационной безопасности выявлялись уязвимости, позволяющие успешно провести сетевую атаку на удалённый узел.<ref>{{cite web|url=https://technet.microsoft.com/en-us/library/security/ms02-070.aspx|title=MS02-070: Flaw in SMB Signing May Permit Group Policy to Be Modified|publisher=[[Microsoft]]|accessdate=November 1, 2009|date=December 1, 2007|archive-date=2017-07-25|archive-url=https://web.archive.org/web/20170725131418/https://technet.microsoft.com/en-us/library/security/ms02-070.aspx|deadlink=no}}</ref><ref>{{cite web|url=http://support.microsoft.com/kb/958687|title=MS09-001: Vulnerabilities in SMB could allow remote code execution|publisher=[[Microsoft]]|accessdate=November 1, 2009|date=January 13, 2009|archive-date=2009-10-05|archive-url=https://web.archive.org/web/20091005062727/http://support.microsoft.com/kb/958687|deadlink=no}}</ref><ref>{{cite web|url=https://technet.microsoft.com/en-us/library/security/ms17-010.aspx|title=Microsoft Security Bulletin MS17-010 – Critical|website=technet.microsoft.com|accessdate=13 May 2017|archive-date=2017-05-21|archive-url=https://web.archive.org/web/20170521032215/https://technet.microsoft.com/en-us/library/security/ms17-010.aspx|deadlink=no}}</ref> Организация атаки на незащищённые серверы SMB является одной из наиболее привлекательных среди злоумышленников<ref>{{cite web|url=https://www.us-cert.gov/ncas/alerts/TA14-353A|title=Alert (TA14-353A) Targeted Destructive Malware|publisher=[[US-CERT]]|access-date=2017-05-16|archive-date=2014-12-20|archive-url=https://web.archive.org/web/20141220134115/https://www.us-cert.gov/ncas/alerts/TA14-353A|deadlink=no}}</ref>. Так, например, с помощью использования уязвимостей протокола SMB были осуществлены [[взлом серверов Sony Pictures Entertainment]]<ref>{{cite web|url=http://www.securityweek.com/hackers-used-sophisticated-smb-worm-tool-attack-sony|title=Sony Hackers Used Server Message Block (SMB) Worm Tool|access-date=2017-05-16|archive-date=2014-12-20|archive-url=https://web.archive.org/web/20141220134150/http://www.securityweek.com/hackers-used-sophisticated-smb-worm-tool-attack-sony|deadlink=no}}</ref> и распространение вредоносного ПО [[DoublePulsar]], [[WannaCry]]<ref>{{cite news|url=http://www.eweek.com/security/wannacry-ransomware-attack-hits-victims-with-microsoft-smb-exploit|title=WannaCry Ransomware Attack Hits Victims With Microsoft SMB Exploit|work=[[eWeek]]|accessdate=13 May 2017}}</ref> (уязвимость [[EternalBlue]]) и [[Petya]]<ref>{{Cite news|title=Petya ransomware virus is back amid cyber attack: Swiss agency|url=http://www.reuters.com/article/us-cyber-attack-swiss-idUSKBN19I1ZX|work=Reuters|date=Tue Jun 27 14:50:10 UTC 2017|accessdate=2017-06-27|archivedate=2017-06-27|archiveurl=https://web.archive.org/web/20170627161459/http://www.reuters.com/article/us-cyber-attack-swiss-idUSKBN19I1ZX}}</ref>.
На протяжении всего срока эксплуатации эталонной реализации протокола от Microsoft специалистами по информационной безопасности выявлялись уязвимости, позволяющие успешно провести сетевую атаку на удалённый узел.<ref>{{cite web|url=https://technet.microsoft.com/en-us/library/security/ms02-070.aspx|title=MS02-070: Flaw in SMB Signing May Permit Group Policy to Be Modified|publisher=[[Microsoft]]|accessdate=2009|date=2007|archive-date=2017-07-25|archive-url=https://web.archive.org/web/20170725131418/https://technet.microsoft.com/en-us/library/security/ms02-070.aspx|=}}</ref><ref>{{cite web|url=http://support.microsoft.com/kb/958687|title=MS09-001: Vulnerabilities in SMB could allow remote code execution|publisher=[[Microsoft]]|accessdate=2009|date=13|archive-date=2009-10-05|archive-url=https://web.archive.org/web/20091005062727/http://support.microsoft.com/kb/958687|=}}</ref><ref>{{cite web|url=https://technet.microsoft.com/en-us/library/security/ms17-010.aspx|title=Microsoft Security Bulletin MS17-010 – Critical|website=technet.microsoft.com|accessdate=2017|archive-date=2017-05-21|archive-url=https://web.archive.org/web/20170521032215/https://technet.microsoft.com/en-us/library/security/ms17-010.aspx|=}}</ref> Организация атаки на незащищённые серверы SMB является одной из наиболее привлекательных среди злоумышленников<ref>{{cite web|url=https://www.us-cert.gov/ncas/alerts/TA14-353A|title=Alert (TA14-353A) Targeted Destructive Malware|publisher=[[US-CERT]]|access-date=2017-05-16|archive-date=2014-12-20|archive-url=https://web.archive.org/web/20141220134115/https://www.us-cert.gov/ncas/alerts/TA14-353A|=}}</ref>. Так, например, с помощью использования уязвимостей протокола SMB были осуществлены [[взлом серверов Sony Pictures Entertainment]]<ref>{{cite web|url=http://www.securityweek.com/hackers-used-sophisticated-smb-worm-tool-attack-sony|title=Sony Hackers Used Server Message Block (SMB) Worm Tool|access-date=2017-05-16|archive-date=2014-12-20|archive-url=https://web.archive.org/web/20141220134150/http://www.securityweek.com/hackers-used-sophisticated-smb-worm-tool-attack-sony|=}}</ref> и распространение вредоносного ПО [[DoublePulsar]], [[WannaCry]]<ref>{{cite news|url=http://www.eweek.com/security/wannacry-ransomware-attack-hits-victims-with-microsoft-smb-exploit|title=WannaCry Ransomware Attack Hits Victims With Microsoft SMB Exploit|work=[[eWeek]]|accessdate=2017}}</ref> (уязвимость [[EternalBlue]]) и [[Petya]]<ref>{{Cite news|title=Petya ransomware virus is back amid cyber attack: Swiss agency|url=http://www.reuters.com/article/us-cyber-attack-swiss-idUSKBN19I1ZX|work=Reuters|date=Tue Jun 27 14:50:10 UTC 2017|accessdate=2017-06-27|archivedate=2017-06-27|archiveurl=https://web.archive.org/web/20170627161459/http://www.reuters.com/article/us-cyber-attack-swiss-idUSKBN19I1ZX}}</ref>.


== См. также ==
== См. также ==

Текущая версия от 12:18, 16 июля 2024

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].

Примечания

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