# AWS - Services de Répertoire / Enumération WorkDocs

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

## Services de Répertoire

AWS Directory Service for Microsoft Active Directory est un service géré qui facilite la **configuration, l'exploitation et la mise à l'échelle d'un annuaire** dans le Cloud AWS. Il est construit sur un véritable **Microsoft Active Directory** et s'intègre étroitement avec d'autres services AWS, facilitant la gestion de vos charges de travail et ressources AWS conscientes de l'annuaire. Avec AWS Managed Microsoft AD, vous pouvez **utiliser vos utilisateurs, groupes et politiques** Active Directory existants pour gérer l'accès à vos ressources AWS. Cela peut aider à simplifier votre gestion des identités et réduire le besoin de solutions d'identité supplémentaires. AWS Managed Microsoft AD fournit également des sauvegardes automatiques et des capacités de récupération après sinistre, aidant à garantir la disponibilité et la durabilité de votre annuaire. Dans l'ensemble, AWS Directory Service for Microsoft Active Directory peut vous faire gagner du temps et des ressources en fournissant un service Active Directory géré, hautement disponible et évolutif dans le Cloud AWS.

### Options

Les Services de Répertoire permettent de créer 5 types d'annuaires :

- **AWS Managed Microsoft AD** : Qui exécutera un nouveau **Microsoft AD dans AWS**. Vous pourrez définir le mot de passe administrateur et accéder aux DC dans un VPC.
- **Simple AD** : Qui sera un serveur compatible Active Directory **Linux-Samba**. Vous pourrez définir le mot de passe administrateur et accéder aux DC dans un VPC.
- **AD Connector** : Un proxy pour **rediriger les demandes d'annuaire vers votre Microsoft Active Directory existant** sans mettre en cache d'informations dans le cloud. Il écoutera dans un **VPC** et vous devez fournir **des identifiants pour accéder à l'AD existant**.
- **Amazon Cognito User Pools** : C'est la même chose que les Cognito User Pools.
- **Cloud Directory** : C'est le **plus simple**. Un annuaire **sans serveur** où vous indiquez le **schéma** à utiliser et êtes **facturé en fonction de l'utilisation**.

Les services de répertoire AWS permettent de **synchroniser** avec votre **Microsoft AD sur site** existant, **d'exécuter le vôtre** dans AWS ou de synchroniser avec **d'autres types d'annuaires**.

### Lab

Ici, vous pouvez trouver un joli tutoriel pour créer votre propre Microsoft AD dans AWS : [https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_test_lab_base.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_test_lab_base.html)

### Énumération
```bash
# Get directories and DCs
aws ds describe-directories
aws ds describe-domain-controllers --directory-id <id>
# Get directory settings
aws ds describe-trusts
aws ds describe-ldaps-settings --directory-id <id>
aws ds describe-shared-directories --owner-directory-id <id>
aws ds get-directory-limits
aws ds list-certificates --directory-id <id>
aws ds describe-certificate --directory-id <id> --certificate-id <id>
```
### Connexion

Notez que si la **description** du répertoire contenait un **domaine** dans le champ **`AccessUrl`**, c'est parce qu'un **utilisateur** peut probablement **se connecter** avec ses **identifiants AD** dans certains **services AWS :**

- `<name>.awsapps.com/connect` (Amazon Connect)
- `<name>.awsapps.com/workdocs` (Amazon WorkDocs)
- `<name>.awsapps.com/workmail` (Amazon WorkMail)
- `<name>.awsapps.com/console` (Amazon Management Console)
- `<name>.awsapps.com/start` (IAM Identity Center)

### Escalade de privilèges

{{#ref}}
../aws-privilege-escalation/aws-directory-services-privesc.md
{{#endref}}

## Persistance

### Utilisation d'un utilisateur AD

Un **utilisateur AD** peut se voir accorder **l'accès à la console de gestion AWS** via un rôle à assumer. Le **nom d'utilisateur par défaut est Admin** et il est possible de **changer son mot de passe** depuis la console AWS.

Par conséquent, il est possible de **changer le mot de passe d'Admin**, **de créer un nouvel utilisateur** ou **de changer le mot de passe** d'un utilisateur et d'accorder à cet utilisateur un rôle pour maintenir l'accès.\
Il est également possible **d'ajouter un utilisateur à un groupe dans AD** et **de donner à ce groupe AD accès à un rôle** (pour rendre cette persistance plus discrète).

### Partage d'AD (de la victime à l'attaquant)

Il est possible de partager un environnement AD d'une victime à un attaquant. De cette manière, l'attaquant pourra continuer à accéder à l'environnement AD.\
Cependant, cela implique de partager l'AD géré et également de créer une connexion de peering VPC.

Vous pouvez trouver un guide ici : [https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html)

### ~~Partage d'AD (de l'attaquant à la victime)~~

Il ne semble pas possible d'accorder l'accès AWS à des utilisateurs d'un environnement AD différent à un compte AWS.

## WorkDocs

Amazon Web Services (AWS) WorkDocs est un service de **stockage et de partage de fichiers** basé sur le cloud. Il fait partie de la suite de services de cloud computing AWS et est conçu pour fournir une solution sécurisée et évolutive pour les organisations afin de stocker, partager et collaborer sur des fichiers et des documents.

AWS WorkDocs fournit une interface web pour que les utilisateurs puissent télécharger, accéder et gérer leurs fichiers et documents. Il offre également des fonctionnalités telles que le contrôle de version, la collaboration en temps réel et l'intégration avec d'autres services AWS et des outils tiers.

### Énumération
```bash
# Get AD users (Admin not included)
aws workdocs describe-users --organization-id <directory-id>
# Get AD groups (containing "a")
aws workdocs describe-groups --organization-id d-9067a0285c --search-query a

# Create user (created inside the AD)
aws workdocs create-user --username testingasd --given-name testingasd --surname testingasd --password <password> --email-address name@directory.domain --organization-id <directory-id>

# Get what each user has created
aws workdocs describe-activities --user-id "S-1-5-21-377..."

# Get what was created in the directory
aws workdocs describe-activities --organization-id <directory-id>

# Get folder content
aws workdocs describe-folder-contents --folder-id <fold-id>

# Get file (a url to access with the content will be retreived)
aws workdocs get-document --document-id <doc-id>

# Get resource permissions if any
aws workdocs describe-resource-permissions --resource-id <value>

# Add permission so anyway can see the file
aws workdocs add-resource-permissions --resource-id <id> --principals Id=anonymous,Type=ANONYMOUS,Role=VIEWER
## This will give an id, the file will be acesible in: https://<name>.awsapps.com/workdocs/index.html#/share/document/<id>
```
### Privesc

{{#ref}}
../aws-privilege-escalation/aws-workdocs-privesc.md
{{#endref}}

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