Durante nuestras pruebas de penetración, cada red de computadoras que encontramos tendrá servicios instalados para gestionar, editar o crear contenido. Todos estos servicios se alojan utilizando permisos específicos y se asignan a usuarios específicos. Aparte de las aplicaciones web, estos servicios incluyen (pero no se limitan a):
FTP
SMB
NFS
IMAP/POP3
SSH
MySQL/MSSQL
RDP
WinRM
VNC
Telnet
SMTP
LDAP
Para una lectura más detallada sobre muchos de estos servicios, consulta el módulo de Footprinting en HTB Academy.
Imaginemos que queremos gestionar un servidor Windows a través de la red. Para ello, necesitamos un servicio que nos permita acceder al sistema, ejecutar comandos en él o acceder a su contenido mediante una GUI o la terminal. En este caso, los servicios más comunes adecuados para esto son RDP, WinRM y SSH. Aunque SSH es ahora mucho menos común en Windows, sigue siendo el servicio principal para sistemas basados en Linux.
Todos estos servicios tienen un mecanismo de autenticación que utiliza un nombre de usuario y una contraseña. Por supuesto, estos servicios pueden ser modificados y configurados para que solo se puedan usar claves predefinidas para iniciar sesión, pero a menudo están configurados con ajustes predeterminados en muchos casos.
WinRM
Windows Remote Management (WinRM) es la implementación de Microsoft del protocolo de red Web Services Management Protocol (WS-Management). Es un protocolo de red basado en servicios web XML que utiliza el Simple Object Access Protocol (SOAP) para la gestión remota de sistemas Windows. Se encarga de la comunicación entre el Web-Based Enterprise Management (WBEM) y el Windows Management Instrumentation (WMI), que puede llamar al Distributed Component Object Model (DCOM).
Sin embargo, por razones de seguridad, WinRM debe ser activado y configurado manualmente en Windows 10. Por lo tanto, depende en gran medida de la seguridad del entorno en un dominio o red local donde deseamos usar WinRM. En la mayoría de los casos, se utilizan certificados o solo mecanismos de autenticación específicos para aumentar su seguridad. WinRM utiliza los puertos TCP 5985 (HTTP) y 5986 (HTTPS).
Una herramienta útil que podemos utilizar para nuestros ataques de contraseña es CrackMapExec, que también se puede usar para otros protocolos como SMB, LDAP, MSSQL, entre otros. Se recomienda leer la documentación oficial de esta herramienta para familiarizarse con ella.
Instalación de CrackMapExec
Podemos instalar CrackMapExec a través de apt en un host Parrot o clonar el repositorio de GitHub y seguir los diversos métodos de instalación, como la instalación desde la fuente y evitando problemas de dependencias.
optional arguments:-h, --help show this help message and exit-t THREADS set how many concurrent threads touse (default: 100)--timeout TIMEOUT max timeout in seconds of each thread (default: None)--jitter INTERVAL sets a random delay between each connection (default: None)--darrell give Darrell a hand--verbose enable verbose output
protocols:
available protocols
{mssql,smb,ssh,winrm}
mssql own stuff using MSSQL
smb own stuff using SMB
ssh own stuff using SSH
winrm own stuff using WINRM
Ayuda Específica de Protocolos en CrackMapExec
Nota que podemos especificar un protocolo específico y recibir un menú de ayuda más detallado con todas las opciones disponibles para nosotros. CrackMapExec actualmente admite autenticación remota utilizando MSSQL, SMB, SSH y WinRM.
La aparición de (Pwn3d!) es la señal de que probablemente podemos ejecutar comandos del sistema si iniciamos sesión con el usuario obtenido mediante fuerza bruta. Otra herramienta útil que podemos utilizar para comunicarnos con el servicio WinRM es Evil-WinRM, que nos permite comunicarnos con el servicio WinRM de manera eficiente.
Si el inicio de sesión fue exitoso, se inicia una sesión de terminal utilizando el Protocolo de Comunicación Remota de Powershell (MS-PSRP), lo que simplifica la ejecución de comandos.
SSH
Secure Shell (SSH) es una forma más segura de conectarse a un host remoto para ejecutar comandos o transferir archivos. El servidor SSH opera en el puerto TCP 22 por defecto. Utiliza tres métodos criptográficos:
Cifrado Simétrico: Usa la misma clave para cifrar y descifrar. Ejemplos: AES, Blowfish, 3DES.
Cifrado Asimétrico: Utiliza una clave pública y una clave privada para el cifrado y descifrado.
Hashing: Convierte los datos transmitidos en un valor único para verificar autenticidad.
Hydra - SSH
Podemos utilizar Hydra para forzar ataques de fuerza bruta en SSH.
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak...[DATA] attacking ssh://10.129.42.197:22/[22][ssh] host: 10.129.42.197 login: user password: password
Para iniciar sesión a través de SSH, podemos usar el cliente OpenSSH:
sherlock28@htb[/htb]$sshuser@10.129.42.197
The authenticity of host '10.129.42.197' can't be established...user@WINSRV C:\Users\user>
Protocolo de Escritorio Remoto (RDP)
RDP permite el acceso remoto a sistemas Windows a través del puerto TCP 3389. Proporciona acceso completo al entorno gráfico, incluidos los dispositivos de entrada y salida del terminal remoto.
Hydra - RDP
También podemos usar Hydra para realizar ataques de fuerza bruta en RDP.
El Server Message Block (SMB) es un protocolo responsable de la transferencia de datos entre un cliente y un servidor en redes de área local (LAN). Se utiliza para implementar servicios de compartición de archivos y directorios, así como de impresión, en redes Windows. A menudo se le conoce como un sistema de archivos, aunque técnicamente no lo es. SMB puede compararse con NFS en sistemas Unix y Linux, ya que ambos permiten compartir unidades en redes locales.
SMB también es conocido como Common Internet File System (CIFS), que es parte del protocolo SMB y permite la conexión remota universal de múltiples plataformas, como Windows, Linux o macOS. Además, es común encontrar Samba, una implementación de código abierto de las funciones mencionadas. Para SMB, también podemos usar Hydra para probar diferentes combinaciones de nombres de usuario y contraseñas.
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Por favor, no lo use en organizaciones militares o de servicios secretos, ni para fines ilegales (esto es no vinculante, estas *** ignoran las leyes y la ética de todos modos).
Hydra (https://github.com/vanhauser-thc/thc-hydra) iniciando el 2022-01-06 19:37:31[INFO] Número de tareas reducido a 1 (smbnotoleramuchasconexionesparalelas)[DATA] Máx. 1 tarea por 1 servidor, en total 1 tarea, 25 intentos de inicio de sesión (l:5236/p:4987234), ~25 intentos por tarea
[DATA] Atacando smb://10.129.42.197:445/[445][smb] host: 10.129.42.197 login: user password: password1de1objetivocompletadoconéxito,seencontraron1contraseñasválidas
Sin embargo, también podemos obtener el siguiente error, que describe que el servidor ha enviado una respuesta no válida.
Hydra v9.1 (c) 2020 por van Hauser/THC & David Maciejak - Por favor, no lo use en organizaciones militares o de servicios secretos, ni para fines ilegales (esto es no vinculante, estas *** ignoran las leyes y la ética de todos modos).
Hydra (https://github.com/vanhauser-thc/thc-hydra) iniciando el 2022-01-06 19:38:13[INFO] Número de tareas reducido a 1 (smbnotoleramuchasconexionesparalelas)[DATA] Máx. 1 tarea por servidor, en total 1 tarea, 25 intentos de inicio de sesión (l:5236/p:4987234), ~25 intentos por tarea
[DATA] Atacando smb://10.129.42.197:445/[ERROR] Respuesta no válida del objetivo smb://10.129.42.197:445/
Esto ocurre porque probablemente tenemos una versión desactualizada de THC-Hydra que no puede manejar respuestas SMBv3. Para solucionar este problema, podemos actualizar manualmente y recompilar hydra, o utilizar otra herramienta muy potente, el framework Metasploit.
bashCopiarcódigoModuleoptions (auxiliary/scanner/smb/smb_login):NameCurrentSettingRequiredDescription--------------------------------------ABORT_ON_LOCKOUTfalseyesAborttherunwhenanaccountlockoutisdetectedBLANK_PASSWORDSfalsenoTryblankpasswordsforallusersBRUTEFORCE_SPEED5yesHowfasttobruteforce,from0to5DB_ALL_CREDSfalsenoTryeachuser/passwordcouplestoredinthecurrentdatabaseDB_ALL_PASSfalsenoAddallpasswordsinthecurrentdatabasetothelistDB_ALL_USERSfalsenoAddallusersinthecurrentdatabasetothelist DB_SKIP_EXISTING none no Skip existing credentials stored in the current database (Accepted: none, user, user&realm)
DETECT_ANY_AUTHfalsenoEnabledetectionofsystemsacceptinganyauthenticationDETECT_ANY_DOMAINfalsenoDetectifdomainisrequiredforthespecifieduserPASS_FILEnoFilecontainingpasswords,oneperlinePRESERVE_DOMAINStruenoRespectausernamethatcontainsadomainname.ProxiesnoAproxychainofformattype:host:port[,type:host:port][...]RECORD_GUESTfalsenoRecordguest-privilegedrandomloginstothedatabase RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
RPORT445yesTheSMBserviceport (TCP)SMBDomain.noTheWindowsdomaintouseforauthenticationSMBPassnoThepasswordforthespecifiedusernameSMBUsernoTheusernametoauthenticateasSTOP_ON_SUCCESSfalseyesStopguessingwhenacredentialworksforahostTHREADS1yesThenumberofconcurrentthreads (max oneperhost) USERPASS_FILE no File containing users and passwords separated by space, one pair per line
USER_AS_PASSfalsenoTrytheusernameasthepasswordforallusersUSER_FILEnoFilecontainingusernames,oneperlineVERBOSEtrueyesWhethertoprintoutputforallattempts
Para comunicarte con el servidor vía SMB, puedes usar, por ejemplo, la herramienta smbclient. Esta herramienta te permitirá ver el contenido de los recursos compartidos, subir o descargar archivos si tus privilegios lo permiten.
Nota: Para completar las preguntas del desafío, asegúrate de descargar las listas de palabras proporcionadas en la sección de Recursos al principio de la página.