Как узнать, какая версия SMB включена на удаленном хосте?

11

Мой локальный компьютер работает под управлением Windows 7, которая поддерживает последнюю выпущенную версию протокола SMB (SMB 2.1). У меня также есть удаленный хост, и я не знаю, какая операционная система или программное обеспечение поддержки SMB установлено на этом удаленном хосте; Я только знаю, что удаленный хост поддерживает некоторую версию протокола SMB.

Как узнать из командной строки (или PowerShell) моего компьютера с Windows 7, какая версия SMB поддерживается этим удаленным хостом?

Изменить: хотя я упоминал Windows 7 выше, я уверен, что этот вопрос относится ко многим системным / сетевым администраторам или персоналу службы поддержки настольных компьютеров, поэтому я пишу вопрос здесь, а не на superuser.com.

Кал
источник
1
Хороший вопрос не имеет хорошего ответа, вам может понадобиться перехватить пакеты, и да, это можно сделать из командной строки. Надеюсь, есть лучший способ, чем этот.
Тони Рот

Ответы:

3

Самый простой способ - установить WireShark и перехватить пакеты, он декодирует их и должен показать вам версию протокола. У них есть запись SMBv2 в их вики , поэтому последняя версия WireShark должна декодировать ее во время захвата пакета.

rmalayter
источник
1
В этом случае я бы использовал netmon 3.4, если вы не хотите его устанавливать, вам не нужно просто запускать «netsh trace start capture = yes», затем подключаться к общему ресурсу, а затем запускать «netsh trace stop», полученный в результате * .cab файл доступен для чтения с помощью netmon 3.4, который не обязательно должен находиться на рабочей станции / сервере, на котором вы записываете.
Тони Рот
3

В Windows 8 и выше вы можете использовать команду powerhsell, Get-SmbConnectionчтобы проверить, какая версия SMB используется для каждого соединения.

jortiexx
источник
Хотя мой оригинальный вопрос касается Windows 7, приятно знать, что в Windows 8 и более поздних версиях все проще!
Кал
1

Существует только два возможных способа определения версии SMB удаленного хоста.

Во-первых , захват баннера с помощью telnet. Даже тогда вы не гарантированы, что что-то полезное вернется. Я могу успешно подключиться к одному из моих SMB-серверов, но не получаю никакой полезной информации о баннере.

Во-вторых , для идентификации системы по сети с помощью сканера сетевой безопасности. Вам придется искать хорошую инструментальную мысль, потому что вам все еще не гарантирован успех в определении, какая версия SMB работает. Например, я только что использовал быстрое сканирование с помощью nmap в своей сети (я знаю, что он работает под управлением Microsoft SMB на нескольких конечных точках), и я не получаю соответствующей информации о том, какую версию SMB он использует.

Wesley
источник
nmap определяет версию cifs? не использовал это в течение долгого времени.
Тони Рот
1
@tonyroth Это могут быть дополнения Nmap Scripting Engine, которые это делают. Я знаю об одной проверке уязвимости smb - но вы не хотите использовать эту волю, потому что она будет использовать сервер. =)
Уэсли
1
Вы должны использовать nmap с флагами "-sV -p 139", чтобы получить подробную информацию о демоне. например. Samba smbd 3.X (рабочая группа: XXXX)
Совьеро
0

Вот что вы делаете, чтобы вытащить версию SMB:

  1. Откройте Powershell от имени администратора. Щелкните правой кнопкой мыши значок и скажите «открыть как администратор».
  2. Перейдите к c: \ с помощью «cd \», а затем «c:»
  3. Теперь вы собираетесь запустить 2 команды в течение 10 секунд, иначе Windows закроет порты как неиспользуемые.

    3a. Запустите "dir \ SERVERNAME \ C $"

    3b. Запустите «Get-SmbConnection», и вы увидите, что столбец «Диалект» является версией вашего SMB.

  4. Проверьте матрицу по этой ссылке, чтобы убедиться, что ОС соответствует правильной версии ОС, иначе вам потребуется обновить SMB.

https://blogs.technet.microsoft.com/josebda/2013/10/02/windows-server-2012-r2-which-version-of-the-smb-protocol-smb-1-0-smb-2- 0-СМБ-2-1-СМБ-3-0 или-СМБ-3-02-в-вы-с помощью кнопок /

SMB Stack Matrix

Стив С
источник