Acute
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Acute
es una máquina Windows que se inicia con un sitio web en el puerto 443
. El certificado del sitio web revela un nombre de dominio atsserver.acute.local
. Al mirar el sitio web, se mencionan varios empleados y con esta información es posible construir una lista de posibles usuarios en la máquina remota. Al enumerar el sitio web, se revela un formulario con procedimientos relacionados con los recién llegados a la empresa. El formulario revela la contraseña predeterminada con la que se configuran inicialmente todas las cuentas. También revela un enlace para una sesión de Windows PowerShell Web Access
(PSWA). Al combinar toda la información disponible del proceso de enumeración, un atacante puede ingresar a una sesión de PowerShell como el usuario edavies
en Acute-PC01
.
Luego, se descubre que el usuario edavies
también está conectado mediante una sesión interactiva. Al espiar las acciones de edavie
, se puede recuperar la contraseña de texto sin cifrar del usuario imonks
para ATSSERVER
. El usuario imonks
se ejecuta bajo Just Enough Administration
(JEA) en ATSSERVER
, pero incluso con el conjunto de comandos limitado, un atacante puede modificar un script en ATSSERVER
para convertir a edavies
en administrador local en Acute-PC01
. Ahora que edavies
es un administrador local, se pueden recuperar HKLM\sam
y HKLM\system
del sistema para extraer los hashes de contraseñas de todos los usuarios. El hash del administrador resulta ser descifrable y la contraseña de texto sin cifrar se reutiliza para awallace
en ATSSERVER
. El usuario awallace
puede crear scripts BAT
en un directorio donde el usuario Lois
los ejecutará. Lois
tiene los derechos para agregar a imonks
al grupo site_admin
, que a su vez tiene acceso correcto al grupo Domain Admins
. Entonces, después de que imonks
se agrega al grupo site_admin
, puede agregarse al grupo Administradores de dominio
y adquirir privilegios administrativos.
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Acute.
Lanzaremos scripts de reconocimiento sobre el puerto encontrado y lo exportaremos en formato oN y oX.
Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.
Procederemos a añadir la entrada en nuestro archivo /etc/hosts
Verificaremos las tecnologías y frameworks que utiliza la página web a través de la herramienta de whatweb.
Revisando el contenido de la página web, nos encontramos un apartado de "About" en el cual aparecen los nombres de los miembros de la empresa, esto nos puede servir útil para intentar generar nombres de usuarios a través de las combinaciones de nombres.
Al abrir el documento recién descargado, verificamos que aparece bastante información que puede llegar a comprometer la seguridad de la información.
En una sección del documento, verificamos que nos aparece una contraseña por defecto 'Password1!'.
También verificaremos que nos aparece un hipervínculo sobre un enlace llamado "Remote".
Al acceder al enlace del documento Word, verificamos que se trata de un acceso a un PowerShell a través de la Web, nos pide usuario, contraseña y el nombre del equipo (hostname) al cual queremos conectarnos.
Nos guardaremos los nombres de los empleados que encontramos en la página web, a través de la herramienta de username-anarchy procederemos a generar un listado de usuarios con el formato (flast) que es muy común en Active Directory.
Por otro lado, para sacar el tema del nombre de la máquina, lo que realizaremos es revisar los propios metadatos del document Word, esto debido que a veces se muestra dónde se ha creado el Word desde los mismos metadatos del archivo.
En este caso, verificamos que nos aparece 'Created on Acute-PC01'.
Probaremos de autenticarnos en la PowerShell Web Access a través del usuario edavies, con la contraseña por defecto que encontramos en el Word y el nombre de la máquina.
Verificamos que hemos podido ganar acceso con el usuario a la PowerShell Web Access.
Al verificar en el equipo que nos encontramos. nos damos cuenta que se trata de un equipo y no del Domain Controller.
Revisando los directorios de la máquina Acute-PC01, verificamos que hay una ruta (C:\Utils) la cual es un directorio que no tiene el Windows Defender activo.
Enumerando el equipo, verificamos que el usuario edavies tiene una consola activa en estos momentos, lo cual nos hace pensar que el usuario está con una consola CMD/PowerShell activa.
El objetivo será monitorear el equipo de la víctima a través de capturas de pantalla, una utilidad que nos ofrece msfconsole.
El primer paso será realizar un binario de una Reverse Shell de Meterpreter a través de la herramienta msfvenom.
Una vez generado el payload de la Reverse Shell, procederemos a acceder a la consola interactiva de Metasploit.
Configuraremos la sesión de Metasploit para recibir la Reverse Shell. Levantaremos un servidor web con Python para compartir el binario del payload y desde la consola de PowerShell Web Access procederemos a transferirnos el binario al equipo Acute-PC01.
Iniciaremos el Metasploit para recibir la Reverse Shell y desde la consola de PowerShell Web Access ejecutaremos el binario y comprobaremos que recibimos correctamente la Reverse Shell en Metasploit.
Al acceder a la máquina, verificamos que el usuario edavies tiene bastantes procesos abiertos, lo cual nos afirma la teoría que está utilizando una consola en el equipo en estos momentos.
A través de la utilidad screenshot de Metasploit, procederemos a realizar capturas de pantalla del equpo.
Al revisar las capturas que hemos ido realizando, verificamos que el usuario está tratando de realizar una conexión al equipo ATSSERVER con las credenciales del usuario 'imonks'.
Desde la consola de PowerShell Web Access, procederemos a configurarnos las credenciales del usuario 'imonks' a través de PSCredential.
Una vez configurada las credenciales, procederemos a intentar ejecutar el comando 'whoami' en la máquina ATSSERVER mediante la configuración que hemos podido capturar en el punto anterior.
Verificamos que el comando ha sido ejecutado correctamente en el servidor y nos ha devuelto correctamente el output. lo cual indica que las credenciales son válidas.
Al revisar el directorio de Desktop del usuario que disponemos, verificamos que hemos podido comprobar la flag de user.txt.
En la misma carpeta de Desktop del usuario que disponemos actualmente (imonks), verificamos que nos aparece un archivo llamado wm.ps1 que contenía el siguiente contenido.
Se trata de un Script en PowerShell que utiliza las credenciales del usuario jmorgan a través de un SecureString y lo que realzia es ejecutar el comando (Get-Volume) en el equipo que nos encontramos actualmente (Acute-PC01) haciendo uso de esas credenciales.
El objetivo será intentar modificar el script para que ejecute otra instrucción en vez de la indicada (Get-Volume), en este caso, haremos que ejecute un "nc" para entablarnos una Reverse Shell a nuestro equipo. Subiremos el binario de nc.exe en (C:\Utils).
Lo primero será reemplazar a través de la función -Replace el contenido y a través de Set-Content trataremos de sobreescribir el archivo existente por el contenido nuevo modificado.
Verificamos que se ha sobreescrito correctamente el script, y ahora mismo lo que realiza este script es ejecutar la el binario de nc.exe que hemos subido anteriormente en (C:\Utils\nc.exe).
Procederemos a ejecutar el script de PowerShell modificado y desde una consola de nuestra Kali nos pondremos en escucha por el puerto especificado para recibir la Reverse Shell.
Verificaremos que hemos logrado obtener la Reverse Shell y nos encontramos con el usuario jmorgan en el equipo Acute-PC01. Verificamos que el usuario es Administrador local del equipo.
Debido que disponemos de permisos de Administrador sobre el equipo, una de las diversas cosas que poemos realizar en la máquina es dumpear la SAM para obtener los hashes NTLM de los usuarios locales del equipo.
Para ello exportaremos los archivos SAM y SYSTEM a través de "reg save".
Una vez obtengamos la copia de los archivos SAM/SYSTEM procederemos a utilizar la herramienta de Mimikatz para extraer los hashes de la SAM desde la propia máquina víctima.
Para ello, procederemos a pasarnos el binario de Mimikatz desde nuestra Kali al equipo comprometido.
Al ejecutar el Mimikatz procederemos a hacer el DUMP de la SAM y verificaremos que hemos logrado obtener los hashes NTLM de los usuarios locales del equipo Acute-PC01.
Nos guardaremos en un achivo el hash NTLM del usuario 'Administrator'.
Procederemos a intentar crackear el hash NTLM obtenido del usuario 'Administrator' con el objetivo de obtener la contraseña en texto plano y posteriormente revisar si algún usuario reutiliza estas credenciales.
Para ello, a través de hashcat intentaremos crackear el hash. En este caso, logra crackearlo correctamente.
De la lista de usuarios que disponemos, solamente nos quedan 3 usuarios los cuales no disponemos de sus credenciales de acceso. Por lo tanto, deberemos intentar validar con alguno de esos tres usuarios si las credenciales que disponemos se reutilizan en alguno de ellos.
Desde la PowerShell Web Access crearemos un nuevo objeto con las credenciales del usuario que probaremos: awallace, verificaremos que son correctas debido que se logra ejecutar el comando 'whoami' en el equipo ATSSERVER. Por lo tanto, este usuario reutiliza las credenciales obtenidas anteriormente.
Dado que ya disponemos de unas nuevas credenciales del usuario awallace, procederemos a enumerar los programas que dispone el equipo ATSSERVER. Entre los cuales aparece una carpeta sospechosa llamada "keepmeon".
Revisando el directorio mencionado, verificamos que se encuentra un archivo (keepmeon.bat) que se trata de un script que se ejecuta cada 5 minutos sobre cualquier archivo que finalice por (.bat).
Este script es ejecutado solamente por el usuario Lois.
Si volvemos a revisar el documento Word que nos descargamos al principio, en una de las secciones indica que el único usuario autorizado para modificar la membresía de grupos sobre los usuarios.
Además, aparece un mensaje mencionando un grupo llamado "Site Admin", lo cual nos parece algo extraño ya que no es un grupo común de AD.
Verificaremos los grupos existentes en el dominio, para verificar que se encuentre el mencionado en el documento. Efectivamente existe un grupo llamado "Site_Admin".
Al verificar el grupo "Site_Admin", comprobamos que aparece un comentario sobre dicho grupo mencionando que este grupo solamente se utiliza en casos de emergencia y forma parte del grupo "Domain Admins".
Por lo tanto, nos encontramos con el siguiente escenario:
Lois, tiene permisos para modificar la membresía de grupos sobre usuarios.
El script 'keepmeon.bat' es ejecutado por el usuario Lois cada 5 minutos
Este script itera por cualquier archivo que acabe en extensión .bat en el directorio actual.
Disponemos de las credenciales del usuario 'Awallace'.
Con este escenario presente, la idea será crear un archivo .bat que trate de añadir al usuario awallace al grupo Site_Admin, este script .bat se ejecutará cada 5 minutos por el usuario Lois que tiene permisos para añadirnos a grupos.
Por lo tanto, si todo es correcto y funciona al ejecutarse ese script automatizado, Lois nos añadirá al grupo mencionado teniendo acceso completo al Domain Admins.
El primer paso será crear el archivo .bat que nos añada al grupo mencionado.
Verificamos que antes de que sea ejecutado el script, el usuario que disponemos awallace dispone de los siguientes grupos de acceso.
Al ejecutarse el script pasado los 5 minutos, comprobamos que hemos sido añadidos al grupo "Site_Admin", y como este grupo forma parte del grupo "Domain Admins", también disponemos de privilegios de Domain Admins.
Verificamos que tenemos acceso para comprobar el contenido de la flag de root.txt.
Para poder ganar acceso a la máquina para disponer de control remoto en una Shell y no a través de este método de PowerShell Web Acces mediante ScripBlock, lo que realizaremos es lo siguiente:
Nos compartiremos el binario de nc.exe desde nuestra Kali y lo descargaremos en ATSSERVER mediante "wget".
Una vez lo tengamos en el equipo víctima, procederemos a ejecutar para entablarnos una Reverse Shell a nuestra Kali.
Verificamos que estando nosotros en escucha por el puerto especificado, hemos ganado acceso al equipo ATSSERVER mediante la Reverse Shell con nc.exe.
Accederemos a y comprobaremos el resultado en un formato más cómodo para su análisis.
Procederemos a acceder a y y verificaremos que solamente nos muestra el contenido de la web a través del nombre DNS y no a través de la dirección IP.
También nos encontramos que en la página nos encontramos que hay un documento Word (.docx) nombrado 'New_Starter_CheckList_v7.docx'.