Reconocimiento
Primero agregaremos nuestra ip al archivo /etc/hosts con el dominio return.htb
nmap
Como siempre comenzaremos con un escaneo a los 65535 puertos TCP/IP para verificar cuales se encuentran abiertos, para esto ejecutaremos el siguiente comando:
nmap -n -p- -T4 –min-rate 10000 return.htb –open -oA alltcp
Como observamos en la siguiente imagen encontramos con los siguientes puertos abiertos:
- 53 (domain)
- 80 (http)
- 135 (msrpc)
- 139 (netbios-ssn)
- 445 (microsfot-ds)
- 464 (kpasswd5)
- 593 (http-rpc-epmap)
- 3269 (globalcatLDAPssl)
- 49675 (unknown)
Una vez identificados los puertos abiertos, procederemos a identificar las versiones y servicios de cada uno, y de igual manera arrojaremos los script por defecto de nmap:
Cabe mencionar que el argumento -sCV es una union de usar -sV y -sC
nmap -sCV -n -p 53,80,135,139,445,464,593,3269,49675 -T4 return.htb -oA tcp-scripts
Al identificar una máquinas Windows con varios puertos abiertos, podemos hacer uso de la herramienta Crackmapexec, para confirmar el hostname.
Haciendo una búsqueda por internet encontré una guía para recopilar información utilizando Python3: Hacktricks (https://book.hacktricks.xyz/network-services-pentesting/pentesting-ldap).
Agregamos el host en nuestro etc/hosts
Printer Admin
Observando los puertos abiertos que encontramos en la fase de reconocimiento nos percatamos que teniamos el puerto 80 abierto, lo cual visitamos en el navegador y nos aparece un panel de administración de impresion.
Navegamos sobre la web y encontramos información relevante en la configuración
Observando la contraseña se encuentra cifrada, por lo cual buscando en la red nos encontramos con este artículo (https://www.ceos3c.com/security/obtaining-domain-credentials-printer-netcat/) lo cual podemos interceptar la contraseña en texto plano con netcat.
Crackmapexec
Ahora que tenemos las credenciales, trataremos de obtener más información con Crackmapexec.
SMBMap
De igual forma podemos conectarnos ahora que ya tenemos credenciales.
smbmap -H return.local -u «svc-printer» -p «1edFg43012\!\!»
Observamos que tenemos permisos de (Lectura y Escritura) sobre el disco C.
smbmap -H return.local -u «svc-printer» -p «1edFg43012\!\!» -r C$
Nos vamos a la carpeta Usuarios para darle un vistazo.
smbmap -H return.local -u «svc-printer» -p «1edFg43012\!\!» -r C$/Users/
Nos dirigos a el usuario con el cual iniciamos sesión.
smbmap -H return.local -u «svc-printer» -p «1edFg43012\!\!» -r C$/Users/svc-printer
Hechamos un vistazo a las carpetas y nos vamos sobre Desktop
smbmap -H return.local -u «svc-printer» -p «1edFg43012\!\!» -r C$/Users/svc-printer/Desktop
Tenemos la primer bandera de user.txt, ahora la descargamos sobre nuestra máquina.
smbmap -H return.local -u «svc-printer» -p «1edFg43012\!\!» -r C$/Users/svc-printer/Desktop -A «user.txt»
Evil-WinRM
Con las credenciales que obtuvimos anteriormente de igual forma podremos obtener una shell interactiva usando Evil-WinRM
Recopilación de Información del Usuario
Ahora que tenemos una shell interactiva podemos investigar, usuarios, grupos y permisos.
- whoami
- whoami /groups
- net users
- net groups
- net usr svc-printer
Arriba hemos recopilado mucha información útil, lo más interesante que vemos es que nuestro usuario está en los grupos de Operadores del servidor. Detallado aquí (https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/active-directory-security-groups#bkmk-serveroperators) vemos que esto nos da:
Configuración de Servicios
El enfoque de nuestro próximo paso es interactuar con los servicios. Podemos ver desde dentro de Evil-WinRM a qué tenemos acceso:
Primero tendremos que subir a Windows la versión de netcat.
Después de subirlo trataremos de crear nuestro propio servicio:
Luego intenté cambiar la configuración de un servidor existente para que use mi netcat en su lugar para su binario:
Finalmente, obtenemos el servicio VSS y anclamos nuestro binario a este:
Verificamos que este servicio exista:
Antes de iniciarlo tendremos que poner a la escuche netcat en lel puerto especificado:
nc -nvlp 4444
Iniciamos el servicio:
Obtenemos Shell de Administrador
Una vez comenzado el servicio nos arrojará una shell en netcat.
Ahora unicamente tendremos que encontrar nuestra bandera de root:
Cabe mencionar que las acciones las tendremos que hacer rápido ya que en cierto tiempo de termina el servicio y tendremos que volver iniciar netcat junto con el servicio: