139,445 - Pentesting SMB
Puerto 139
El Sistema Básico de Entrada/Salida de Red** (NetBIOS)** es un protocolo de software diseñado para permitir que aplicaciones, PC y escritorios dentro de una red de área local (LAN) interactúen con el hardware de red y faciliten la transmisión de datos a través de la red. La identificación y ubicación de aplicaciones de software que operan en una red NetBIOS se logran a través de sus nombres NetBIOS, que pueden tener hasta 16 caracteres de longitud y a menudo son distintos del nombre de la computadora. Una sesión NetBIOS entre dos aplicaciones se inicia cuando una aplicación (actuando como cliente) emite un comando para "llamar" a otra aplicación (actuando como servidor) utilizando el Puerto TCP 139.
Puerto 445
Técnicamente, el Puerto 139 se conoce como 'NBT sobre IP', mientras que el Puerto 445 se identifica como 'SMB sobre IP'. El acrónimo SMB significa 'Server Message Blocks', que también es conocido modernamente como el Common Internet File System (CIFS). Como protocolo de red de capa de aplicación, SMB/CIFS se utiliza principalmente para permitir el acceso compartido a archivos, impresoras, puertos serie y facilitar diversas formas de comunicación entre nodos en una red.
Por ejemplo, en el contexto de Windows, se destaca que SMB puede operar directamente sobre TCP/IP, eliminando la necesidad de NetBIOS sobre TCP/IP, a través del uso del puerto 445. Por el contrario, en diferentes sistemas, se observa el uso del puerto 139, lo que indica que SMB se está ejecutando en conjunto con NetBIOS sobre TCP/IP.
SMB
El protocolo Server Message Block (SMB), que opera en un modelo cliente-servidor, está diseñado para regular el acceso a archivos, directorios y otros recursos de red como impresoras y enrutadores. Utilizado principalmente en la serie de sistemas operativos Windows, SMB garantiza la compatibilidad hacia atrás, permitiendo que los dispositivos con versiones más nuevas del sistema operativo de Microsoft interactúen sin problemas con aquellos que ejecutan versiones más antiguas. Además, el proyecto Samba ofrece una solución de software libre que permite la implementación de SMB en sistemas Linux y Unix, facilitando así la comunicación entre plataformas a través de SMB.
Los recursos compartidos, que representan partes arbitrarias del sistema de archivos local, pueden ser proporcionados por un servidor SMB, lo que hace que la jerarquía sea visible para un cliente en parte independiente de la estructura real del servidor. Las Listas de Control de Acceso (ACLs), que definen los derechos de acceso, permiten un control detallado sobre los permisos de usuario, incluidos atributos como ejecutar
, leer
y acceso completo
. Estos permisos pueden asignarse a usuarios individuales o grupos, basados en los recursos compartidos, y son distintos de los permisos locales establecidos en el servidor.
Recurso IPC$
El acceso al recurso IPC$ se puede obtener a través de una sesión nula anónima, lo que permite la interacción con servicios expuestos a través de tuberías con nombre. La utilidad enum4linux
es útil para este propósito. Utilizado correctamente, permite la adquisición de:
Información sobre el sistema operativo
Detalles sobre el dominio principal
Una recopilación de usuarios y grupos locales
Información sobre los recursos compartidos SMB disponibles
La política de seguridad del sistema efectiva
Esta funcionalidad es fundamental para los administradores de red y profesionales de seguridad para evaluar la postura de seguridad de los servicios SMB (Server Message Block) en una red. enum4linux
proporciona una vista completa del entorno SMB del sistema objetivo, lo cual es esencial para identificar posibles vulnerabilidades y garantizar que los servicios SMB estén adecuadamente seguros.
El comando anterior es un ejemplo de cómo enum4linux
podría ser utilizado para realizar una enumeración completa contra un objetivo especificado por target_ip
.
¿Qué es NTLM?
Si no sabes qué es NTLM o quieres saber cómo funciona y cómo abusar de él, encontrarás muy interesante esta página sobre NTLM donde se explica cómo funciona este protocolo y cómo puedes aprovecharlo:
Enumeración del servidor
Escanear una red en busca de hosts:
Versión del servidor SMB
Para buscar posibles exploits para la versión de SMB, es importante saber qué versión se está utilizando. Si esta información no aparece en otras herramientas utilizadas, puedes:
Utilizar el módulo auxiliar MSF _auxiliary/scanner/smb/smb_version
O este script:
Buscar exploit
Posibles Credenciales
Fuerza Bruta
Información del Entorno SMB
Obtener Información
Enumerar Usuarios, Grupos y Usuarios Conectados
Esta información ya debería haber sido recopilada con enum4linux y enum4linux-ng
Enumerar usuarios locales
Una línea
Metasploit - Enumerar usuarios locales
Enumerando LSARPC y SAMR rpcclient
Conexión GUI desde Linux
En la terminal:
xdg-open smb://cascade.htb/
En la ventana del explorador de archivos (nautilus, thunar, etc)
smb://friendzone.htb/general/
Enumeración de Carpetas Compartidas
Listar carpetas compartidas
Siempre es recomendable verificar si se puede acceder a algo, si no se tienen credenciales, intente usar credenciales nulas/usuario invitado.
Conectar/Listar una carpeta compartida
Enumerar manualmente los recursos compartidos de Windows y conectarse a ellos
Puede ser posible que estés restringido para mostrar cualquier recurso compartido de la máquina host y cuando intentas listarlos parece que no hay recursos compartidos a los que conectarse. Por lo tanto, podría valer la pena intentar conectarse manualmente a un recurso compartido. Para enumerar los recursos compartidos manualmente, es posible que desees buscar respuestas como NT_STATUS_ACCESS_DENIED y NT_STATUS_BAD_NETWORK_NAME, al usar una sesión válida (por ejemplo, una sesión nula o credenciales válidas). Estas respuestas pueden indicar si el recurso compartido existe y no tienes acceso a él o si el recurso compartido no existe en absoluto.
Los nombres comunes de recursos compartidos para objetivos de Windows son
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Nombres comunes de recursos compartidos de Evaluación de Seguridad de Red 3ra edición)
Puedes intentar conectarte a ellos usando el siguiente comando
o este script (usando una sesión nula)
Ejemplos
Enumerar recursos compartidos desde Windows / sin herramientas de terceros
PowerShell
Consola CMD
MMC Snap-in (gráfico)
explorer.exe (gráfico), ingrese \\<ip>\
para ver las comparticiones no ocultas disponibles.
Montar una carpeta compartida
Descargar archivos
Lea las secciones anteriores para aprender cómo conectarse con credenciales/Pass-the-Hash.
Búsqueda de Carpetas Compartidas de Dominio
Snaffler****
Comandos:
mask: especifica la máscara que se utiliza para filtrar los archivos dentro del directorio (por ejemplo, "" para todos los archivos)
recurse: activa la recursión (por defecto: desactivado)
prompt: desactiva la solicitud de nombres de archivo (por defecto: activado)
mget: copia todos los archivos que coinciden con la máscara desde el host a la máquina cliente
(Información de la página de manual de smbclient)
CrackMapExec araña.
-M spider_plus [--share <nombre_compartido>]
--patrón txt
Especialmente interesantes de las comparticiones son los archivos llamados Registry.xml
ya que pueden contener contraseñas de usuarios configurados con autologon a través de la Directiva de Grupo. O archivos web.config
ya que contienen credenciales.
La compartición SYSVOL es legible por todos los usuarios autenticados en el dominio. Allí puedes encontrar muchos scripts diferentes de lotes, VBScript y PowerShell. Deberías verificar los scripts dentro de ella ya que podrías encontrar información sensible como contraseñas.
Leer Registro
Puedes ser capaz de leer el registro usando algunas credenciales descubiertas. Impacket reg.py
te permite intentarlo:
Post Explotación
La configuración predeterminada de un servidor Samba generalmente se encuentra en /etc/samba/smb.conf
y podría tener algunas configuraciones peligrosas:
El comando smbstatus
proporciona información sobre el servidor y sobre quién está conectado.
Autenticación usando Kerberos
Puedes autenticarte en kerberos utilizando las herramientas smbclient y rpcclient:
Ejecutar Comandos
crackmapexec
crackmapexec puede ejecutar comandos abusando de cualquiera de mmcexec, smbexec, atexec, wmiexec siendo wmiexec el método predeterminado. Puedes indicar qué opción prefieres usar con el parámetro --exec-method
:
Ambas opciones crearán un nuevo servicio (usando \pipe\svcctl a través de SMB) en la máquina víctima y lo utilizarán para ejecutar algo (psexec subirá un archivo ejecutable al recurso ADMIN$ y smbexec apuntará a cmd.exe/powershell.exe y pondrá en los argumentos el payload --técnica sin archivo--). Más información sobre psexec y smbexec. En kali se encuentra en /usr/share/doc/python3-impacket/examples/
Usando el parámetro -k
puedes autenticarte contra kerberos en lugar de NTLM
wmiexec/dcomexec
Ejecuta sigilosamente una shell de comandos sin tocar el disco o ejecutar un nuevo servicio utilizando DCOM a través del puerto 135. En kali se encuentra en /usr/share/doc/python3-impacket/examples/
Usando el parámetro -k
puedes autenticarte contra kerberos en lugar de NTLM.
Ejecutar comandos a través del Programador de tareas (usando \pipe\atsvc a través de SMB). En kali se encuentra en /usr/share/doc/python3-impacket/examples/
Referencia de Impacket
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Fuerza bruta en credenciales de usuarios
Esto no es recomendado, podrías bloquear una cuenta si excedes el número máximo de intentos permitidos
Ataque de relevo SMB
Este ataque utiliza la herramienta Responder para capturar sesiones de autenticación SMB en una red interna y relevarlas a una máquina objetivo. Si la sesión de autenticación es exitosa, automáticamente te llevará a una shell del sistema. Más información sobre este ataque aquí.
SMB-Trap
La biblioteca de Windows URLMon.dll intenta autenticarse automáticamente en el host cuando una página intenta acceder a algún contenido a través de SMB, por ejemplo: img src="\\10.10.10.10\path\image.jpg"
Esto sucede con las funciones:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Que son utilizadas por algunos navegadores y herramientas (como Skype)
SMBTrap usando MitMf
Robo de NTLM
Similar al Trapping SMB, al colocar archivos maliciosos en un sistema objetivo (a través de SMB, por ejemplo) se puede provocar un intento de autenticación SMB, lo que permite interceptar el hash NetNTLMv2 con una herramienta como Responder. Luego, el hash se puede descifrar sin conexión o utilizar en un ataque de relevo SMB.
Comandos Automáticos de HackTricks
Última actualización