# AWS - ディレクトリサービス / WorkDocs Enum

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

## ディレクトリサービス

AWS Directory Service for Microsoft Active Directoryは、AWS Cloudでディレクトリを**設定、運用、スケール**するのを簡単にするマネージドサービスです。これは実際の**Microsoft Active Directory**に基づいており、他のAWSサービスと密接に統合されているため、ディレクトリ対応のワークロードやAWSリソースを簡単に管理できます。AWS Managed Microsoft ADを使用すると、既存のActive Directoryユーザー、グループ、およびポリシーを使用してAWSリソースへのアクセスを管理できます。これにより、アイデンティティ管理が簡素化され、追加のアイデンティティソリューションの必要性が減少します。AWS Managed Microsoft ADは、自動バックアップと災害復旧機能も提供し、ディレクトリの可用性と耐久性を確保します。全体として、AWS Directory Service for Microsoft Active Directoryは、AWS Cloudでマネージドで高可用性かつスケーラブルなActive Directoryサービスを提供することで、時間とリソースを節約するのに役立ちます。

### オプション

ディレクトリサービスでは、5種類のディレクトリを作成できます：

- **AWS Managed Microsoft AD**: 新しい**Microsoft ADをAWSで実行**します。管理者パスワードを設定し、VPC内のDCにアクセスできます。
- **Simple AD**: **Linux-Samba** Active Directory互換サーバーです。管理者パスワードを設定し、VPC内のDCにアクセスできます。
- **AD Connector**: **既存のMicrosoft Active Directory**へのディレクトリリクエストをリダイレクトするためのプロキシで、クラウドに情報をキャッシュしません。**VPC**でリスニングし、**既存のADにアクセスするための資格情報を提供する必要があります**。
- **Amazon Cognito User Pools**: これはCognito User Poolsと同じです。
- **Cloud Directory**: これは**最もシンプル**なものです。**サーバーレス**ディレクトリで、使用する**スキーマ**を指定し、**使用量に応じて請求されます**。

AWSディレクトリサービスは、既存の**オンプレミス** Microsoft ADと**同期**したり、AWSで独自のものを**実行**したり、**他のディレクトリタイプ**と同期したりできます。

### ラボ

ここでは、AWSで独自のMicrosoft ADを作成するための素晴らしいチュートリアルを見つけることができます: [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)

### 列挙
```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>
```
### ログイン

ディレクトリの**説明**に**`AccessUrl`**フィールドに**ドメイン**が含まれている場合、それは**ユーザー**がいくつかの**AWSサービス**で**AD資格情報**を使用して**ログイン**できる可能性があるためです：

- `<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)

### 権限昇格

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

## 永続性

### ADユーザーを使用する

**ADユーザー**は、引き受けるロールを介して**AWS管理コンソールへのアクセス**を与えられることがあります。**デフォルトのユーザー名はAdmin**で、AWSコンソールから**パスワードを変更する**ことが可能です。

したがって、**Adminのパスワードを変更**したり、**新しいユーザーを作成**したり、**ユーザーのパスワードを変更**して、そのユーザーにロールを付与してアクセスを維持することが可能です。\
また、**AD内のグループにユーザーを追加**し、その**ADグループにロールへのアクセスを与える**ことも可能です（この永続性をよりステルスにするために）。

### ADの共有（被害者から攻撃者へ）

被害者から攻撃者にAD環境を共有することが可能です。この方法で、攻撃者はAD環境へのアクセスを継続できるようになります。\
ただし、これは管理されたADを共有し、VPCピアリング接続を作成することを意味します。

ガイドはこちらにあります: [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)

### ~~ADの共有（攻撃者から被害者へ）~~

異なるAD環境のユーザーにAWSアクセスを付与することは不可能なようです。

## WorkDocs

Amazon Web Services (AWS) WorkDocsは、クラウドベースの**ファイルストレージおよび共有サービス**です。AWSのクラウドコンピューティングサービスの一部であり、組織がファイルや文書を安全に保存、共有、共同作業するためのスケーラブルなソリューションを提供するように設計されています。

AWS WorkDocsは、ユーザーがファイルや文書をアップロード、アクセス、管理するためのウェブベースのインターフェースを提供します。また、バージョン管理、リアルタイムコラボレーション、他のAWSサービスやサードパーティツールとの統合などの機能も提供しています。

### 列挙
```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>
```
### プライベートエスカレーション

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

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