> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/networking-for-juniors/puertos-y-servicios/puerto-139-y-445-smb-cifs.md).

# Puerto 139 y 445:  SMB - CIFS

**SMB (Server Message Block)** y **CIFS (Common Internet File System)** son protocolos de red utilizados principalmente para compartir archivos, impresoras y otros recursos en una red. SMB se ejecuta sobre los puertos 139 y 445, y es fundamental para la comunicación en redes Windows.

## <mark style="color:green;">Descripción de SMB/CIFS</mark>

* <mark style="color:green;">**Puerto 139 (NetBIOS Session Service)**</mark><mark style="color:green;">:</mark>
  * Utiliza NetBIOS (Network Basic Input/Output System) para compartir archivos e impresoras en redes locales.
  * Generalmente se utiliza en versiones más antiguas de Windows y sistemas que dependen de NetBIOS.
* <mark style="color:green;">**Puerto 445 (Direct Hosting of SMB)**</mark><mark style="color:green;">:</mark>
  * Permite que SMB se ejecute directamente sobre TCP/IP sin la necesidad de NetBIOS.
  * Utilizado en versiones modernas de Windows para compartir archivos y recursos de red de manera más eficiente.

## <mark style="color:green;">Relevancia en Pentesting</mark>

### <mark style="color:green;">**Importancia de SMB/CIFS en Pentesting**</mark><mark style="color:green;">:</mark>

* <mark style="color:green;">**Vulnerabilidades**</mark><mark style="color:green;">:</mark> SMB ha sido históricamente vulnerable a varios tipos de ataques, como la ejecución remota de código y la escalación de privilegios.
  * <mark style="color:green;">**EternalBlue (MS17-010)**</mark><mark style="color:green;">:</mark> Una de las vulnerabilidades más famosas que afecta SMBv1, explotada por el ransomware WannaCry.
  * <mark style="color:green;">**Null Sessions**</mark><mark style="color:green;">:</mark> Conexiones anónimas que permiten a un atacante enumerar recursos compartidos y usuarios en un sistema.
* <mark style="color:green;">**Enumeración de Recursos**</mark><mark style="color:green;">:</mark> Los pentesters utilizan SMB para enumerar usuarios, grupos, recursos compartidos y otras configuraciones de red.
* <mark style="color:green;">**Transferencia de Archivos**</mark><mark style="color:green;">:</mark> SMB puede ser utilizado para transferir archivos entre sistemas comprometidos y estaciones de trabajo de pentesting.

## <mark style="color:green;">Ejemplo de Escaneo de SMB con Nmap</mark>

Para identificar servidores SMB activos y recopilar información adicional sobre los servicios SMB/CIFS, se puede utilizar Nmap con scripts NSE específicos.

### <mark style="color:green;">**Comando Nmap**</mark>

```bash
nmap -p 139,445 --script smb-enum-shares,smb-enum-users,smb-os-discovery,smb-vuln-ms17-010 target-ip
```

### <mark style="color:green;">**Explicación del Comando**</mark>

* `nmap`: Ejecuta el comando Nmap.
* `-p 139,445`: Especifica que Nmap debe escanear los puertos 139 y 445, los puertos utilizados por SMB.
* `--script smb-enum-shares,smb-enum-users,smb-os-discovery,smb-vuln-ms17-010`: Utiliza scripts NSE para detectar configuraciones y vulnerabilidades en los servicios SMB.
  * `smb-enum-shares`: Enumera los recursos compartidos en el servidor SMB.
  * `smb-enum-users`: Enumera los usuarios en el servidor SMB.
  * `smb-os-discovery`: Detecta la versión del sistema operativo a través del servicio SMB.
  * `smb-vuln-ms17-010`: Detecta la vulnerabilidad EternalBlue (MS17-010).

### <mark style="color:green;">**Ejemplo de Salida de Nmap**</mark>

```plaintext
Starting Nmap 7.80 ( https://nmap.org ) at 2024-05-18 21:15 UTC
Nmap scan report for 192.168.1.100
Host is up (0.0015s latency).

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
| smb-os-discovery:
|   OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3)
|   Computer name: server
|   NetBIOS computer name: SERVER\x00
|   Domain name: example
|   FQDN: server.example.local
|_  System time: 2024-05-18T21:14:00+00:00
| smb-enum-shares:
|   account_used: guest
|   \\server\IPC$:
|     Type: STYPE_IPC_HIDDEN
|     Comment: Remote IPC
|     Anonymous access: READ/WRITE
|   \\server\Public:
|     Type: STYPE_DISKTREE
|     Comment: 
|     Anonymous access: READ/WRITE
| smb-enum-users:
|   guest:
|     User Comment: Built-in account for guest access to the computer/domain
|     Full Name: 
|   administrator:
|     User Comment: Built-in account for administering the computer/domain
|     Full Name: 
|_  john:
|     User Comment: 
|     Full Name: John Doe
| smb-vuln-ms17-010:
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0144
|     Risk factor: HIGH
|       A critical remote code execution vulnerability exists in Microsoft SMBv1
|       servers (ms17-010). The vulnerability is due to an error when the vulnerable
|       software handles a maliciously crafted SMB packet. A remote attacker could
|       exploit this vulnerability to execute arbitrary code on the target machine.
|
|     Disclosure date: 2017-03-14
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0144
|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_      https://blogs.technet.microsoft.com/msrc/2017/04/14/security-update-ms17-010-released/

Nmap done: 1 IP address (1 host up) scanned in 8.53 seconds
```

## <mark style="color:green;">Interpretación de la Salida</mark>

* <mark style="color:green;">**Host is up**</mark><mark style="color:green;">:</mark> Indica que el sistema objetivo está en línea y responde.
* <mark style="color:green;">**139/tcp open netbios-ssn**</mark><mark style="color:green;">:</mark> El puerto 139 está abierto y el servicio NetBIOS-SSN (NetBIOS Session Service) está activo.
* <mark style="color:green;">**445/tcp open microsoft-ds**</mark><mark style="color:green;">:</mark> El puerto 445 está abierto y el servicio Microsoft-DS (SMB Direct Hosting) está activo.
* <mark style="color:green;">**smb-os-discovery**</mark><mark style="color:green;">:</mark> Proporciona información sobre el sistema operativo y el dominio del servidor.
  * <mark style="color:green;">**OS**</mark><mark style="color:green;">:</mark> Versión del sistema operativo (Windows Server 2016 Standard 14393).
  * <mark style="color:green;">**Computer name**</mark><mark style="color:green;">:</mark> Nombre del equipo.
  * <mark style="color:green;">**Domain name**</mark><mark style="color:green;">:</mark> Nombre del dominio.
  * <mark style="color:green;">**FQDN**</mark><mark style="color:green;">:</mark> Nombre de dominio completo.
  * <mark style="color:green;">**System time**</mark><mark style="color:green;">:</mark> Hora del sistema.
* <mark style="color:green;">**smb-enum-shares**</mark><mark style="color:green;">:</mark> Enumera los recursos compartidos en el servidor SMB.
  * <mark style="color:green;">**\server\IPC$**</mark><mark style="color:green;">:</mark> Recurso compartido IPC$ con acceso anónimo de lectura/escritura.
  * <mark style="color:green;">**\server\Public**</mark><mark style="color:green;">:</mark> Recurso compartido Public con acceso anónimo de lectura/escritura.
* <mark style="color:green;">**smb-enum-users**</mark><mark style="color:green;">:</mark> Enumera los usuarios en el servidor SMB.
  * <mark style="color:green;">**guest**</mark><mark style="color:green;">:</mark> Cuenta de invitado.
  * <mark style="color:green;">**administrator**</mark><mark style="color:green;">:</mark> Cuenta de administrador.
  * <mark style="color:green;">**john**</mark><mark style="color:green;">:</mark> Usuario normal (John Doe).
* <mark style="color:green;">**smb-vuln-ms17-010**</mark><mark style="color:green;">:</mark> Detecta la vulnerabilidad EternalBlue (MS17-010), indicando que el servidor es vulnerable a la ejecución remota de código a través de SMBv1.
