¿Cómo puedo saber qué versión de SMB está habilitada en un host remoto?

11

Mi máquina local ejecuta Windows 7, que admite la última versión lanzada del protocolo SMB (SMB 2.1). También tengo un host remoto y no sé qué sistema operativo o software de soporte SMB está instalado en ese host remoto; Solo sé que el host remoto admite alguna versión del protocolo SMB.

¿Cómo puedo averiguar, desde el símbolo del sistema (o PowerShell) de mi máquina con Windows 7, qué versión de SMB es compatible con ese host remoto?

Editar: aunque menciono Windows 7 anteriormente, estoy seguro de que esta pregunta es relevante para muchos administradores de sistemas / redes o personal de soporte de escritorio, por lo tanto, estoy publicando la pregunta aquí en lugar de en superuser.com.

Kal
fuente
1
buena pregunta no tiene una gran respuesta, es posible que necesite oler los paquetes, y sí, esto se puede hacer desde la línea de comandos. Esperemos que haya una mejor manera que esto.
Tony Roth

Respuestas:

3

La forma más fácil es instalar WireShark y capturar los paquetes, los decodificará y debería mostrarle una versión de protocolo. Tienen una entrada SMBv2 en su wiki , por lo que la última versión de WireShark debería decodificarla en la captura de paquetes.

rmalayter
fuente
1
En este caso, usaría netmon 3.4, si no desea instalarlo, no tiene que ejecutar "netsh trace start capture = yes", luego conectarse al recurso compartido y luego ejecutar "netsh trace stop" el resultante * Netmon 3.4 puede leer el archivo .cab, que no tiene que estar en la estación de trabajo / servidor en el que está capturando.
Tony Roth
3

En Windows 8 y versiones posteriores, puede usar el comando powerhsell Get-SmbConnectionpara verificar qué versión de SMB se usa por conexión.

jortiexx
fuente
Aunque mi pregunta original es para Windows 7, ¡es genial saber que las cosas son más fáciles en Windows 8 y posteriores!
Kal
1

Solo hay dos formas posibles de determinar la versión SMB de un host remoto.

El primero es tomar el banner usando telnet. Incluso entonces, no tienes la garantía de que algo de uso volverá. Puedo conectarme con éxito a uno de mis servidores SMB, pero no obtengo ninguna información de banner útil.

El segundo es tomar huellas digitales del sistema a través de la red utilizando un escáner de seguridad de red. Tendrá que buscar una buena herramienta pensada, porque todavía no se le garantiza ningún éxito al determinar qué versión de SMB se está ejecutando. Por ejemplo, acabo de usar un escaneo rápido con nmap en mi red (que sé que está ejecutando microsoft SMB en varios puntos finales) y no obtengo información pertinente sobre qué versión de SMB está ejecutando.

Wesley
fuente
Cómo detecta nmap la versión cifs? No lo he usado en mucho tiempo.
Tony Roth
1
@tonyroth Puede haber complementos de Nmap Scripting Engine que lo hagan. Sé de una comprobación de vulnerabilidad de smb, pero no querrás usar eso de ninguna manera, ya que manguera el servidor. =)
Wesley
1
Tienes que usar nmap con las banderas "-sV -p 139" para obtener detalles del demonio. p.ej. Samba smbd 3.X (grupo de trabajo: XXXX)
Soviero
0

Esto es lo que debe hacer para obtener la versión SMB:

  1. Abra Powershell como administrador. Haga clic derecho en el icono y diga "abrir como administrador".
  2. Navegue a c: \ con un "cd \" y luego "c:"
  3. Ahora, ejecutará 2 comandos dentro de los 10 segundos entre sí o Windows cerrará los puertos como no utilizados.

    3a. Ejecute "dir \ SERVERNAME \ C $"

    3b. Ejecute "Get-SmbConnection" y su columna "Dialecto" es la versión de su SMB.

  4. Verifique la matriz en este enlace para asegurarse de que el sistema operativo corresponde a la versión correcta del sistema operativo o deberá actualizar su 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-or-smb-3-02-are-you-using /

SMB Stack Matrix

Steve C
fuente