Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • Samba
  • Configuración predeterminada
  • Configuración predeterminada
  • Configuraciones peligrosas
  • Reiniciar Samba
  • SMBclient - Conexión al recurso compartido
  • Descargar archivos desde SMB
  • Estado de Samba
  • Footprinting del servicio
  • Nmap
  • RPCclient
  • RPCclient - Enumeration
  • Rpcclient - Enumeración de usuarios
  • Rpcclient - Información del grupo
  • Fuerza bruta de los RID de usuario
  • Impacket - Samrdump.py
  • Smbmap
  • CrackMapExec
  • Enum4Linux-ng - Instalación
  • Enum4Linux-ng - Enumeration
  1. Hacking Notes (Learning Path)
  2. (HTB) Penetration Tester
  3. Footprinting
  4. Host Based Enumeration

SMB

PreviousFTPNextNFS

Last updated 2 months ago

Server Message Block( SMB) es un protocolo cliente-servidor que regula el acceso a archivos, directorios completos y otros recursos de red, como impresoras, enrutadores o interfaces disponibles para la red. El intercambio de información entre diferentes procesos del sistema también se puede gestionar mediante el protocolo SMB. se puso a disposición del público en general, por ejemplo, como parte del sistema operativo de red OS/2, LAN Manager y LAN Server. Desde entonces, el principal ámbito de aplicación del protocolo ha sido, en particular, la serie de sistemas operativos Windows, cuyos servicios de red admiten SMB con compatibilidad descendente, lo que significa que los dispositivos con ediciones más recientes pueden comunicarse fácilmente con dispositivos que tengan instalado un sistema operativo Microsoft anterior. Con el proyecto de software libre Samba, también existe una solución que permite el uso de SMB en distribuciones Linux y Unix y, por lo tanto, la comunicación entre plataformas a través de SMB.

El protocolo SMB permite al cliente comunicarse con otros participantes de la misma red para acceder a archivos o servicios compartidos. El otro sistema también debe haber implementado el protocolo de red y haber recibido y procesado la solicitud del cliente mediante una aplicación de servidor SMB. Sin embargo, antes de eso, ambas partes deben establecer una conexión, por lo que primero intercambian los mensajes correspondientes.

En redes IP, SMB utiliza el protocolo TCP para este propósito, que permite un protocolo de enlace de tres vías entre el cliente y el servidor antes de que se establezca la conexión. Las especificaciones del protocolo TCP también rigen el transporte posterior de datos. Podemos ver algunos ejemplos .

Un servidor SMB puede proporcionar partes arbitrarias de su sistema de archivos local como recursos compartidos. Por lo tanto, la jerarquía visible para un cliente es parcialmente independiente de la estructura del servidor. Los derechos de acceso se definen mediante Access Control Lists( ACL). Pueden controlarse de forma detallada según atributos como execute, ready full accesspara usuarios individuales o grupos de usuarios. Las ACL se definen en función de los recursos compartidos y, por lo tanto, no corresponden a los derechos asignados localmente en el servidor.

Samba

Como se mencionó anteriormente, existe una implementación alternativa del servidor SMB llamada Samba, desarrollada para sistemas operativos Unix. Samba implementa el CIFSprotocolo de red Common Internet File System (CIFS). es un dialecto de SMB, es decir, una implementación específica del protocolo SMB creado originalmente por Microsoft. Esto permite a Samba comunicarse eficazmente con los sistemas Windows más recientes. Por lo tanto, a menudo se le conoce como SMB/CIFS.

Sin embargo, CIFSse considera una versión específica del protocolo SMB, que se alinea principalmente con [nombre del protocolo SMB version 1]. Cuando los comandos SMB se transmiten por Samba a un servicio NetBIOS antiguo, las conexiones suelen realizarse a través de los puertos TCP 137[ nombre del 138protocolo] 139. En cambio, CIFS opera 445exclusivamente a través del puerto TCP. Existen varias versiones de SMB, incluyendo versiones más recientes como [nombre del protocolo ] SMB 2y [ nombre del protocolo] SMB 3, que ofrecen mejoras y son las preferidas en infraestructuras modernas, mientras que versiones anteriores como SMB 1[ CIFSnombre del protocolo] se consideran obsoletas, pero aún pueden utilizarse en entornos específicos.

Con la versión 3, el servidor Samba pudo integrarse plenamente en un dominio de Active Directory. Con la versión 4, Samba incluso proporciona un controlador de dominio de Active Directory. Para ello, contiene varios daemons, que son programas Unix en segundo plano. El daemon del servidor SMB ( smbd) de Samba proporciona las dos primeras funcionalidades, mientras que el daemon del bloque de mensajes NetBIOS ( nmbd) implementa las dos últimas. El servicio SMB controla estos dos programas en segundo plano.

Sabemos que Samba es compatible con sistemas Linux y Windows. En una red, cada host participa en el mismo [nombre workgroupde host]. Un grupo de trabajo es un nombre de grupo que identifica un conjunto arbitrario de computadoras y sus recursos en una red SMB. Puede haber varios grupos de trabajo en la red simultáneamente. IBM desarrolló un application programming interface[ APInombre de host] para la conexión de computadoras en red llamado Network Basic Input/Output System[ nombre NetBIOSde host]. La API NetBIOS proporcionó un modelo para que una aplicación se conectara y compartiera datos con otras computadoras. En un entorno NetBIOS, cuando una máquina se conecta, necesita un nombre, lo cual se realiza mediante el name registrationprocedimiento [nombre de host]. Cada host reserva su nombre de host en la red o se utiliza el [ nombre de host NBNS] para este propósito. También se ha mejorado a [nombre de host] ( Windows Internet Name Service WINS).

Configuración predeterminada

Como podemos imaginar, Samba ofrece una amplia gama de de configuración. De nuevo, las definimos mediante un archivo de texto donde podemos obtener una visión general de algunas de ellas. Estas opciones se ven así una vez filtradas:

Configuración predeterminada

cat /etc/samba/smb.conf | grep -v "#\|\;" 

Configuración

Descripción

[sharename]

El nombre del recurso compartido de red.

workgroup = WORKGROUP/DOMAIN

Grupo de trabajo que aparecerá cuando los clientes realicen consultas.

path = /path/here/

El directorio al que se le dará acceso al usuario.

server string = STRING

La cadena que aparecerá cuando se inicie una conexión.

unix password sync = yes

¿Sincronizar la contraseña de UNIX con la contraseña de SMB?

usershare allow guests = yes

¿Permitir que usuarios no autenticados accedan al recurso compartido definido?

map to guest = bad user

¿Qué hacer cuando una solicitud de inicio de sesión de usuario no coincide con un usuario UNIX válido?

browseable = yes

¿Esta acción debería aparecer en la lista de acciones disponibles?

guest ok = yes

¿Permitir conectarse al servicio sin usar una contraseña?

read only = yes

¿Permitir a los usuarios leer sólo archivos?

create mask = 0700

¿Qué permisos deben configurarse para los archivos recién creados?

Configuraciones peligrosas

Algunas de las configuraciones anteriores ya incluyen opciones sensibles. Sin embargo, supongamos que cuestionamos las configuraciones que se enumeran a continuación y nos preguntamos qué podrían obtener de ellas tanto los empleados como los atacantes. En ese caso, veremos sus ventajas y desventajas. Tomemos esta configuración browseable = yescomo ejemplo. Si nosotros, como administradores, adoptamos esta configuración, los empleados de la empresa podrán consultar fácilmente cada carpeta con su contenido. Muchas carpetas se utilizan para una mejor organización y estructura. Si el empleado puede explorar los recursos compartidos, el atacante también podrá hacerlo tras acceder con éxito.

Configuración

Descripción

browseable = yes

¿Permitir listar acciones disponibles en el share actual?

read only = no

¿Prohibir la creación y modificación de archivos?

writable = yes

¿Permitir a los usuarios crear y modificar archivos?

guest ok = yes

¿Permitir conectarse al servicio sin usar una contraseña?

enable privileges = yes

¿Se asignan privilegios de honor a un SID específico?

create mask = 0777

¿Qué permisos se deben asignar a los archivos recién creados?

directory mask = 0777

¿Qué permisos se deben asignar a los directorios recién creados?

logon script = script.sh

¿Qué script debe ejecutarse al iniciar sesión el usuario?

magic script = script.sh

¿Qué script debe ejecutarse cuando se cierra el script?

magic output = script.out

¿Dónde debe almacenarse la salida del script mágico?

Reiniciar Samba

sudo systemctl restart smbd

Ahora podemos mostrar una lista ( -L) de los recursos compartidos del servidor con el smbclientcomando de nuestro host. Usamos el comando null session( -N), que permite anonymousacceder sin necesidad de introducir usuarios ni contraseñas válidas.

SMBclient - Conexión al recurso compartido

smbclient -N -L //<host>

Para iniciar sesión e inspeccionarlo con el mismo programa cliente. Si no estamos familiarizados con el programa cliente, podemos usar el helpcomando "al iniciar sesión correctamente", que lista todos los comandos posibles que podemos ejecutar.

smbclient //<hhost>/<recurso compartido>

Una vez que hayamos descubierto archivos o carpetas interesantes, podemos descargarlos mediante el getcomando. Smbclient también nos permite ejecutar comandos del sistema local usando un signo de exclamación al principio ( !<cmd>) sin interrumpir la conexión.

Descargar archivos desde SMB

get <archivo>

Desde el punto de vista administrativo, podemos comprobar estas conexiones usando smbstatus. Además de la versión de Samba, también podemos ver quién, desde qué host y a qué recurso compartido está conectado el cliente. Esto es especialmente importante una vez que hemos accedido a una subred (quizás incluso aislada) a la que los demás aún pueden acceder.

Por ejemplo, con seguridad a nivel de dominio, el servidor Samba actúa como miembro de un dominio de Windows. Cada dominio tiene al menos un controlador de dominio, generalmente un servidor Windows NT que proporciona autenticación de contraseñas. Este controlador de dominio proporciona al grupo de trabajo un servidor de contraseñas definitivo. Los controladores de dominio registran los usuarios y las contraseñas en sus propios [nombre del dominio] NTDS.dity [nombre del dominio] Security Authentication Module( SAM), y autentican a cada usuario cuando inicia sesión por primera vez y desea acceder al recurso compartido de otra máquina.

Estado de Samba

smbstatus

Footprinting del servicio

Volvamos a una de nuestras herramientas de enumeración. Nmap también cuenta con numerosas opciones y scripts NSE que nos permiten examinar el servicio SMB del destino con mayor detalle y obtener más información. Sin embargo, la desventaja es que estos análisis pueden tardar bastante. Por lo tanto, también se recomienda examinar el servicio manualmente, principalmente porque podemos encontrar muchos más detalles de los que Nmap podría mostrarnos. Sin embargo, primero veamos qué puede encontrar Nmap en nuestro servidor Samba de destino, donde creamos el [notes]recurso compartido para realizar pruebas.

Nmap

sudo nmap <host> -sV -sC -p139,445

Los resultados muestran que Nmap no nos proporcionó mucha información. Por lo tanto, debemos recurrir a otras herramientas que nos permitan interactuar manualmente con el SMB y enviar solicitudes específicas para obtener la información. Una herramienta útil para esto es [Nombre del servidor] rpcclient. Esta herramienta realiza funciones MS-RPC.

RPCclient

rpcclient -U "" <host>

Consulta

Descripción

srvinfo

Información del servidor.

enumdomains

Enumerar todos los dominios que están implementados en la red.

querydominfo

Proporciona información de dominio, servidor y usuario de los dominios implementados.

netshareenumall

Enumera todas las acciones disponibles.

netsharegetinfo <share>

Proporciona información sobre una acción específica.

enumdomusers

Enumera todos los usuarios del dominio.

queryuser <RID>

Proporciona información sobre un usuario específico.

RPCclient - Enumeration

servinfo
enumdomains
querydomainfo
netshareenumail
netsharegetinfo <recurso compartido>

Estos ejemplos nos muestran qué información puede filtrarse a usuarios anónimos. Una vez que un anonymoususuario accede a un servicio de red, basta con un error para otorgarle demasiados permisos o demasiada visibilidad y poner en riesgo significativamente toda la red.

Y lo que es más importante, el acceso anónimo a dichos servicios también puede permitir el descubrimiento de otros usuarios, quienes pueden ser atacados mediante fuerza bruta en el caso más agresivo. Los humanos son más propensos a errores que los procesos informáticos correctamente configurados, y la falta de concienciación sobre la seguridad y la pereza a menudo resultan en contraseñas débiles que se pueden descifrar fácilmente. Veamos cómo podemos enumerar usuarios usando el rpcclient.

Rpcclient - Enumeración de usuarios

enumdomusers
queryuser <RID number>

Luego podemos usar los resultados para identificar el RID del grupo, que luego podemos usar para recuperar información de todo el grupo.

Rpcclient - Información del grupo

querygroup <RID number>

Sin embargo, también puede ocurrir que no todos los comandos estén disponibles y que existan ciertas restricciones según el usuario. No obstante, la consulta queryuser <RID>se permite principalmente según el RID. Por lo tanto, podemos usar rpcclient para forzar los RID y obtener información. Dado que es posible que no sepamos a quién se le ha asignado cada RID, sabemos que obtendremos información al respecto en cuanto consultemos un RID asignado. Existen varias maneras y herramientas para esto. Para continuar con la herramienta, podemos crear un For-loopusing Bashdonde enviamos un comando al servicio usando rpcclient y filtramos los resultados.

Fuerza bruta de los RID de usuario

for i in $(seq 500 1100);do rpcclient -N -U "" <host> -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done

Impacket - Samrdump.py

samrdump.py <host>
Impacket-Samrdump <host>

Smbmap

smbmap -H <host>

CrackMapExec

crackmapexec smb <host> --shares -u 'guest' -p ''

Enum4Linux-ng - Instalación

git clone https://github.com/cddmp/enum4linux-ng.git
cd enum4linux-ng
pip3 install -r requirements.txt

Enum4Linux-ng - Enumeration

./enum4linux-ng.py <host> -A

La ( RPCRPC) es un concepto y, por lo tanto, una herramienta fundamental para implementar estructuras operativas y de trabajo compartido en redes y arquitecturas cliente-servidor. El proceso de comunicación mediante RPC incluye el paso de parámetros y la devolución de un valor de función.

Nos ofrece rpcclientdiversas solicitudes con las que podemos ejecutar funciones específicas en el servidor SMB para obtener información. Puede encontrar una lista completa de todas estas funciones en la de rpcclient.

Una alternativa a esto sería un script de Python de llamado .

La información que ya hemos obtenido rpcclienttambién puede obtenerse con otras herramientas. Por ejemplo, las herramientas y también son ampliamente utilizadas y útiles para la enumeración de servicios SMB.

Otra herramienta que vale la pena mencionar es , basada en una herramienta más antigua, enum4linux. Esta herramienta automatiza muchas de las consultas, pero no todas, y puede devolver una gran cantidad de información.

SMB
aquí
CIFS
Servidor de nombres NetBIOS
Servicio de nombres de Internet de Windows
opciones
Llamada a Procedimiento Remoto
página de manual
Impacket
samrdump.py
SMBMap
CrackMapExec
enum4linux-ng