githubEditar

SMB

Explicación sobre los métodos de enumeración de SMB

Fuentes

Server Message Block

Resumen

SMB es un protocolo que permite el acceso compartido a recursos como archivos, directorios o impresoras (entre otros). También sirve como túnel para comunicación entre procesos (IPC).

Los puertos sobre los que se expone dependen del protocolo sobre el que se ejecuta, pueden aparecer ambos activos a la vez:

  • TCP/139 -> SMB ejecutado sobre NetBIOS sobre TCP/IP. Obsoleto pero se suele mantener abierto para tener retrocompatibilidad con sistemas legacy.

  • TCP/445 -> SMB ejecutado sobre TCP/IP directamente. El método "moderno".

Enumeración

Linux

Para listar los shares disponibles en una determinada IP:

smbclient -N -L //10.10.11.87
# -N indica login sin proporcionar credenciales. Puede (y es probable) que se dé el caso en que esto no esté permitido.
# -L sirve para listar los shares.

#Output:
    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      
    Documentos      Disk      Documentos Secretos
    IPC$            IPC       

Otros programas para enumerar que pueden ser útiles:

  • SMBMap

  • enum4linux

    • Usa varias herramientas manuales (rpcclient, smbclient, etc.) para automatizar la enumeración del servidor SMB.

Para enumerar SMB mediante MSRPC, podemos acceder a RPC a través de SMB usando rpcclient:

RPCClient usa MSRPC sobre SMB, la comunicación se establece mediante los named pipes (IPC$) de SMB, no sobre el puerto 135 del endpoint mapper. Para más info mirar rpc.md.

Si se permite la conexión, podremos consultar más información.

Para determinados queries necesitaremos los RID del usuario específico, podemos sacarlos por fuerza bruta con samrdump:

Windows

Para listar archivos en un share desde cmd/powershell:

Conexión y montaje

Linux

Para conectarse a determinado share (desde Linux):

Para montar un share como partición:

Windows

Para conectarse a determinado share (desde Windows, GUI):

Pulsar [WIN]+[R], en la ventana "ejecutar" que se abra:

Bruteforcing

Si no podemos enumerar archivos sin autenticarnos y necesitamos unas credenciales de las que no disponemos, podemos usar netexec para hacer bruteforce o password spraying:

Es necesario poner --local-auth si quieremos autenticarnos con el SAM del servidor si no hay AD DC disponible, netexec no recurre a la autenticación contra el SAM automáticamente si no se detecta un Domain Controller.

Pass-the-Hash (PtH)

Mirar Pass-the-Hash

Movimiento lateral

SMB se usa como canal de comunicación para la subida de archivos y la recepción y envío de comandos y respuestas al usar PsExec. Más info en movimiento lateral

Última actualización