¿Cuál es la forma correcta de detectar el sistema operativo mediante SMB?

por | Oct 1, 2021 | Consejos técnicos para la prueba de penetración

Después de estudiar los enfoques de diferentes proveedores, aquí está nuestro resumen de cómo hacer la detección del sistema operativo SMB correctamente.

  1. Tanto con SMBv1 como con SMBv2, se deben enviar tanto la «Session Setup Request «como las «NTLMSSP_NEGOTIATE requests»;
  2. Especialmente para SMB v1, si sólo se envía «Session Setup AndX Request», pero no una solicitud «NTLMSSP_NEGOTIATE», alguna versión superior de Windows Server (muy probablemente superior a 2012) no responderá con información sobre el sistema operativo.
  3. Con SMB v1, se puede obtener una respuesta de texto claro con información del SO tanto de NativeOS como de NativeLanMan. Sin embargo, recomendamos utilizar el resultado del campo NativeLanMan en lugar de NativeOS para determinar su sistema operativo; de lo contrario, existe la posibilidad de que reconozca falsamente a Linux como Windows.
  4. Con SMB v2, no hay un texto claro de la versión del sistema operativo en la respuesta, puede obtener la versión de construcción del kernel de NT de «ntlmssp.verion».
    • No uses ntlmssp.verion para determinar que el servidor es windows;
    • Los siguientes campos (Wireshark) en la respuesta v2 suelen contener el nombre del servidor y del NetBIOS. Cuando su valor es WIN-218****LQHR,DESKTOP-L3***F, es muy probable que el objetivo sea Windows.
    • Si es capaz de utilizar la información del banner de otros puertos para determinar que el objetivo es Windows, debería poder utilizar ntlmssp.version (versión de compilación del Kernel) para derivar la versión de Windows Edition.
  5. Intente siempre utilizar la petición SMB v1 tanto si el lado del servidor la soporta como si no; a partir de la respuesta de v1, puede obtener la información del sistema operativo en texto claro directamente; si SMB v1 falla, entonces intente enviar peticiones v2;
  6. No importa si es SMBv1 o SMBv2, siempre debes analizar las respuestas y obtener los valores de los campos clave.

El reconocimiento del sistema operativo es un primer paso muy importante en un pentest o escaneo de vulnerabilidades. Esperamos que compartir esta información pueda facilitar tu trabajo de desarrollo y ayudarte a reducir los falsos positivos.