Pentest SMB - puerto 139, 445

services

SMB (Server Message Block) es un protocolo de red cliente-servidor que permite el intercambio de archivos e impresoras y otros recursos en una red. Permite que un cliente (como una computadora) acceda a recursos en un servidor (otra computadora) de manera similar a como accedería a un disco local. También se conoce como CIFS (Common Internet File System) y es un componente clave en los sistemas de archivos de red, popularizado por Microsoft Windows pero también utilizado en Linux y macOS.

  • SMB suele trabajar por el puerto 139 o 445 de una máquina

Reconocimiento

Enumerar versión de SMB

desde Metasploit podemos utilizar el módulo auxiliary/scanner/smb/smb_version para enumerar la versión del SMB

modulo de metasploit: auxiliary/scanner/smb/smb_version

Enumeración de recursos compartidos SMB

Encontrar recursos compartidos abiertos es útil para un evaluador de penetración, ya que puede haber archivos privados compartidos o, si se permite la escritura, podría ser un buen lugar para instalar un troyano o infectar un archivo existente. Saber dónde se encuentra el recurso compartido podría hacer que este tipo de pruebas sean más útiles, salvo que para determinarlo se requieren privilegios administrativos.

el script de nmap smb-enum-shares.nse lista recursos compartidos mediante la función MSRPC srvsvc.NetShareEnumAll y obtener más información sobre ellos mediante srvsvc.NetShareGetInfo. Si se deniega el acceso a estas funciones, se comprueba una lista de nombres de recursos compartidos comunes.

nmap -p 445 --script=smb-enum-shares.nse <IP_AQUI>

el siguiente comando intenta comunicarse con el servidor para listar los recursos compartidos y se intenta conectar con el usuario anonymous, el cual puede pedir contraseña pero en la mayoría de casos esta Vacio (osea que solo es cuestión de presionar enter).

  • anonymous es un usuario “genérico” con el que algunos servidores SMB permiten conectarse sin credenciales reales.

  • Podemos agregar el parámetro -N para crear una sesión nula (null session), si es que el servidor lo acepta

smbclient -L //IP_AQUI -U anonymous
smbclient -L //IP_AQUI -U anonymous -N # null session


SMB null session attack

  • Un SMB (bloque de mensajes del servidor) de sesión nula permite conectarse a un sistema Windows remoto sin credenciales, lo que permite el acceso anónimo a ciertos recursos y canales compartidos, como el recurso compartido IPC$. Si bien está diseñado para llamadas a procedimientos remotos discretos, esta vulnerabilidad puede ser explotada por atacantes para realizar enumeraciones de información y recopilar información confidencial, como nombres de usuario, nombres de recursos compartidos y políticas de seguridad, para facilitar ataques más sofisticados. La protección contra ataques de sesión nula implica deshabilitar la clave de registro "RestrictAnonymous", restringir el acceso anónimo a los canales con nombre y asegurar que la cuenta de invitado esté deshabilitada.

En muchos servidores Windows antiguos, esto daba acceso a información sensible como shares, usuarios del dominio, políticas, etc.

conexion null session mediante smbclient:

smbclient -L //IP_AQUI -U "" -N

Usuarios y credenciales comunes de SMB

(Vacio)

(Vacio)

guest

(Vacio)

Administrator / admin

(blank), password, administrator, admin

arcserve

arcserve, backup

tivoli, tmersrvd

tivoli, tmersrvd, admin

backupexec, backup

backupexec, backup, arcada

test, lab, demo

password, test, lab, demo

418B
Open

(Vacio): significa que no necesitas proporcionar el dato que se pide

Enumeración de usuarios SMB (Metasploit)

en Metasploit hay un modulo auxiliar que nos permite enumerar los usuarios de SMB

use auxiliary/scanner/smb/smb_lookupsid
set rhosts hostname.local
run

Enumeración de usuarios SMB por nmap

el script smb-enum-users.nse Intenta enumerar a los usuarios de un sistema Windows remoto, con la mayor cantidad de información posible, mediante dos técnicas diferentes (ambas mediante MSRPC, que utiliza el puerto 445 o 139). El objetivo de este script es descubrir todas las cuentas de usuario existentes en un sistema remoto. Esto puede ser útil para la administración, al ver quién tiene una cuenta en un servidor, o para pruebas de penetración o análisis de red, al determinar qué cuentas existen en un sistema.

nmap -p 445 --script=smb-enum-users.nse <IP_AQUI>

Fuerza Bruta de SMB por nmap

el script intenta adivinar combinaciones de nombre de usuario y contraseña mediante SMB, almacenando las combinaciones descubiertas para usarlas en otros scripts. Se hará todo lo posible para obtener una lista válida de usuarios y verificar cada nombre de usuario antes de usarlo.

nmap --script smb-brute -p 445 <IP_AQUI>
# mas informacion de smb-brute: https://nmap.org/nsedoc/scripts/smb-brute.html

Fuerza Bruta de SMB por hydra

hydra -l Administrator -P passwords.txt <IP_AQUI> smb -t 1
                |
el usuario al que le hacemos fuerza bruta
# debes proporcionar un diccionario valido de passwords

Last updated