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


11

На моїй локальній машині працює ОС Windows 7, яка підтримує останню випущену версію протоколу SMB (SMB 2.1). У мене також є віддалений хост, і я не знаю, яка операційна система або програмне забезпечення підтримки SMB встановлена ​​на цьому віддаленому хості; Я знаю лише, що віддалений хост підтримує деяку версію протоколу SMB.

Як я можу в командному рядку (або PowerShell) моєї машини Windows 7 дізнатися, яку версію SMB підтримує цей віддалений хост?

Редагувати: хоча я згадую Windows 7 вище, я впевнений, що це питання стосується багатьох системних / мережевих адміністраторів або персоналу підтримки робочого столу, отже чому я розміщую це питання замість сайту superuser.com.


1
гарне запитання не має великої відповіді, можливо, вам доведеться нюхати пакети, і так, це можна зробити з командного рядка. Сподіваємось, є кращий спосіб, ніж це.
тоні рот

Відповіді:


3

Найпростіший спосіб - встановити WireShark і захопити пакети, він розшифрує їх і повинен показати вам версію протоколу. У їхній вікі є запис SMBv2 , тому остання версія WireShark повинна розшифрувати його для захоплення пакету.


1
У цьому випадку я використовую netmon 3.4, якщо ви не хочете його встановлювати, вам не доведеться просто запускати "netsh trace start capture = так", а потім підключитися до спільного доступу, а потім запустити "netsh trace stop" в результаті * Файл .cab читається через netmon 3.4, що не повинно бути на робочій станції / сервері, на якому ви захоплюєте.
тоні рот

3

У Windows 8 та новіших версіях ви можете скористатися командою powerhsell, Get-SmbConnectionщоб перевірити, яка версія SMB використовується для кожного з'єднання.


Незважаючи на те, що моє оригінальне запитання стосується Windows 7, чудово знати, що в Windows 8 і пізніше все простіше!
Кал

1

Існує лише два можливі способи визначення версії SMB віддаленого хоста.

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

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


чи nmap виявляє версію cifs? не використовували його деякий час.
тоні рот

1
@tonyroth Можливо, це будуть додатки Nmap Scripting Engine. Я знаю одну перевірку вразливості smb - але ви не хочете користуватися цим вольовим неволею, оскільки він буде шлангувати сервер. =)
Веслі

1
Вам потрібно використовувати nmap із прапорами "-sV -p 139", щоб отримати детальну інформацію про демон. напр. Samba smbd 3.X (робоча група: XXXX)
Soviero

0

Ось що потрібно зробити, щоб витягнути версію SMB:

  1. Відкрийте Powershell як адміністратор. Клацніть правою кнопкою миші на значку та скажіть «відкрити як адміністратор».
  2. Перейдіть до c: \ за допомогою "cd \", а потім "c:"
  3. Тепер ви збираєтеся виконати 2 команди протягом 10 секунд після того, як інший Windows закриває порти як невикористані.

    3а. Запустіть "dir \ SERVERNAME \ C $"

    3б. Запустіть "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-smb-2-1-smb-3-0-або-smb-3-02-are-you-use /

Матриця стеків SMB

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.