Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ec2-

This commit is contained in:
Translator
2026-02-23 10:56:13 +00:00
parent 049508ccc5
commit 616e7af5d4
@@ -2,9 +2,9 @@
{{#include ../../../../banners/hacktricks-training.md}}
## VPC & Networking
## VPC & ネットワーキング
VPCとは何か、その構成要素について学ぶには:
Learn what a VPC is and about its components in:
{{#ref}}
aws-vpc-and-networking-basic-information.md
@@ -12,36 +12,36 @@ aws-vpc-and-networking-basic-information.md
## EC2
Amazon EC2は**仮想サーバー**を起動するために利用されます。**セキュリティ**や**ネットワーキング**の設定、**ストレージ**の管理が可能です。Amazon EC2の柔軟性は、リソースを上方および下方にスケールさせる能力に明らかであり、要求の変化や人気の急増に効果的に適応します。この機能により、正確なトラフィック予測の必要性が減少します。
Amazon EC2 is utilized for initiating **virtual servers**. It allows for the configuration of **security** and **networking** and the management of **storage**. The flexibility of Amazon EC2 is evident in its ability to scale resources both upwards and downwards, effectively adapting to varying requirement changes or surges in popularity. This feature diminishes the necessity for precise traffic predictions.
EC2で列挙するのに興味深い項目:
Interesting things to enumerate in EC2:
- 仮想マシン
- SSHキー
- ユーザーデータ
- 既存のEC2/AMI/スナップショット
- 既存の EC2/AMIs/Snapshots
- ネットワーキング
- ネットワーク
- サブネットワーク
- サブネット
- パブリックIP
- 開いているポート
- AWS外の他のネットワークとの統合接続
- AWS外のネットワークとの接続
### インスタンスプロファイル
### Instance Profiles
**EC2インスタンス**上で実行されるアプリケーションに権限を付与するために**ロール**を使用するには、少し追加の設定が必要です。EC2インスタンス上で実行されるアプリケーションは、仮想化されたオペレーティングシステムによってAWSから抽象化されています。この追加の分離のため、AWSロールとその関連する権限をEC2インスタンスに割り当て、それをアプリケーション利用可能にするため追加のステップが必要です。
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つのロールしか割り当てられず**、インスタンス上のすべてのアプリケーションは同じロールと権限を共有します。
この追加手順は、インスタンスにアタッチされた[_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)の作成です。**インスタンスプロファイルはロールを含み**、そのロールの一時的な認証情報をインスタンス上で実行されるアプリケーションに提供できます。れらの一時認証情報はアプリケーションのAPIコールでリソースにアクセスするために使用でき、ロールが指定するリソースのみにアクセスを限定することができます。**1つのEC2インスタンスに割り当てられるロールは同時に1つだけ**であり、インスタンス上のすべてのアプリケーションは同じロールと権限を共有する点に注意してください
### メタデータエンドポイント
### Metadata Endpoint
AWS EC2メタデータは、Amazon Elastic Compute Cloud (EC2)インスタンスに関する情報で、インスタンスが実行時に利用可能です。このメタデータは、インスタンスID、実行中のアベイラビリティゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など、インスタンスに関する情報を提供するために使用されます。
AWS EC2 metadataは、ランタイム時にインスタンスから利用可能なAmazon Elastic Compute Cloud (EC2) インスタンスに関する情報です。このメタデータは、インスタンスID、稼働しているアベイラビリティゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など、インスタンスに関する情報を提供するために使用されます。
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
### 列挙
### Enumeration
```bash
# Get EC2 instances
aws ec2 describe-instances
@@ -81,6 +81,9 @@ aws ec2 describe-addresses
# Get current output
aws ec2 get-console-output --instance-id [id]
# Get a JPG-format screenshot of a running instance
aws ec2 get-console-screenshot --instance [id]
# Get VPN customer gateways
aws ec2 describe-customer-gateways
aws ec2 describe-vpn-gateways
@@ -127,21 +130,21 @@ aws ec2 describe-route-tables
aws ec2 describe-vpcs
aws ec2 describe-vpc-peering-connections
```
### 認証されていないアクセス
### Unauthenticated Access
{{#ref}}
../../aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum/README.md
{{#endref}}
### 特権昇格
### Privesc
次のページでは、**EC2の権限を悪用して特権を昇格させる方法**を確認できます:
In the following page you can check how to **abuse EC2 permissions to escalate privileges**:
{{#ref}}
../../aws-privilege-escalation/aws-ec2-privesc/README.md
{{#endref}}
### ポストエクスプロイト
### Post-Exploitation
{{#ref}}
../../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/
@@ -149,17 +152,17 @@ 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キー**などの**機密情報**が含まれている可能性があるため、機会があれば確認することをお勧めします。
スナップショットには **機密情報****ソースコードやAPIキー** などが含まれている場合があるため、機会があれば確認することをお勧めします。
### AMIとEBSの違い
### Difference AMI & EBS
**AMI**は**EC2インスタンスを起動するために使用され**、EC2 **スナップショット**は**EBSボリュームに保存されたデータのバックアップと復元に使用されます**。EC2スナップショットは新しいAMIを作成するために使用できますが、AMIとは異なり、アプリケーションを実行するために必要なオペレーティングシステム、アプリケーションサーバー、またはその他のソフトウェアに関する情報は含まれていません。
An **AMI** is used to **launch an EC2 instance**, while an EC2 **Snapshot** is used to **backup and recover data stored on an EBS volume**. While an EC2 Snapshot can be used to create a new AMI, it is not the same thing as an AMI, and it does not include information about the operating system, application server, or other software required to run an application.
### 特権昇格
### Privesc
次のページでは、**EBSの権限を悪用して特権を昇格させる方法**を確認できます:
In the following page you can check how to **abuse EBS permissions to escalate privileges**:
{{#ref}}
../../aws-privilege-escalation/aws-ebs-privesc/README.md
@@ -167,13 +170,13 @@ Amazon **EBS** (Elastic Block Store) **スナップショット**は、基本的
## SSM
**Amazon Simple Systems Manager (SSM)**は、EC2インスタンスのフートをリモートで管理し、その管理をはるかに簡単にします。これらのインスタンスの各々は、**SSMエージェントサービスを実行している必要があり、サービスがAWS APIからアクションを受け取りそれを実行します**
Amazon Simple Systems Manager (SSM) は、EC2 インスタンスのフートをリモートで管理し、運用を容易にします。これらのインスタンスは、AWS API からの操作を受け取りそれを実行するために、**SSM Agent service as the service will be the one getting the actions and performing them** を実行している必要があります
**SSMエージェント**は、システムマネージャーがこれらのリソースを更新、管理、構成することを可能にします。エージェントは、**AWSクラウド内のシステムマネージャーサービスからのリクエストを処理し**リクエストに指定されたりに実行します。
**SSM Agent** により、Systems Manager はこれらのリソースを更新、管理、構成できるようになります。エージェントは **processes requests from the Systems Manager service in the AWS Cloud**, そしてリクエストに指定されたとおりに実行します。
**SSMエージェントは**[ **一部のAMIにプリインストールされています**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html)が、インスタンスに[**手動でインストールする必要があります**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html)また、インスタンス内で使用されるIAMロールには通信を行うために**AmazonEC2RoleforSSM**ポリシーがアタッチされている必要があります。
**SSM Agent comes**[ **preinstalled in some AMIs**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) or you need to [**manually install them**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) on the instances. また、インスタンス内で使用される IAM Role には通信を行うために **AmazonEC2RoleforSSM** ポリシーがアタッチされている必要があります。
### 列挙
### Enumeration
```bash
aws ssm describe-instance-information
aws ssm describe-parameters
@@ -182,21 +185,21 @@ aws ssm describe-instance-patches --instance-id <id>
aws ssm describe-instance-patch-states --instance-ids <id>
aws ssm describe-instance-associations-status --instance-id <id>
```
EC2インスタンスでSystems Managerが実行されているかどうかを確認するには、次のコマンドを実行するだけです:
EC2 インスタンスで Systems Manager が実行されているかどうかは、次のコマンドを実行するだけで確認できます:
```bash
ps aux | grep amazon-ssm
```
### プリベス
### Privesc
次のページでは、**SSMの権限を悪用して特権を昇格させる方法**を確認できます
次のページでは、**abuse SSM permissions to escalate privileges** の方法を確認できます:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc/README.md
{{#endref}}
### 永続性
### Perssistence
次のページでは、**SSMの権限を悪用して永続性を達成する方法**を確認できます
次のページでは、**abuse SSM permissions to achieve persistence** の方法を確認できます:
{{#ref}}
../../aws-persistence/aws-ssm-persistence/README.md
@@ -204,9 +207,9 @@ ps aux | grep amazon-ssm
## ELB
**Elastic Load Balancing** (ELB) は、**Amazon Web Services** (AWS) デプロイメントのための**負荷分散サービス**です。ELBは自動的に**受信アプリケーショントラフィックを分散**、トラフィックの需要に応じてリソースをスケールします。
**Elastic Load Balancing** (ELB) は、**load-balancing service for Amazon Web Services** (AWS) デプロイで使用されるサービスです。ELB は自動的に**受信するアプリケーショントラフィックを配分し**、トラフィックの需要に応じてリソースをスケールします。
### 列挙
### Enumeration
```bash
# List internet-facing ELBs
aws elb describe-load-balancers
@@ -217,7 +220,7 @@ aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
```
## ランチテンプレートとオートスケーリンググループ
## Launch Templates & Autoscaling Groups
### 列挙
```bash
@@ -236,9 +239,9 @@ aws autoscaling describe-load-balancers
```
## Nitro
AWS Nitroは、AWS EC2インスタンスの基盤となる**革新的な技術**のスイートです。Amazonによって**セキュリティ、パフォーマンス、信頼性を向上させる**ために導入され、Nitroはカスタム**ハードウェアコンポーネントと軽量ハイパーバイザー**を活用しています。従来の仮想化機能の多くを専用ハードウェアとソフトウェア抽象化し、**攻撃面を最小限に抑え**、リソース効率を改善します。仮想化機能をオフロードすることで、NitroEC2インスタンスに**ほぼベアメタルパフォーマンス**を提供し、リソース集約型アプリケーションに特に有益です。さらに、Nitro Security Chipは**ハードウェアとファームウェアのセキュリティ**を特に確保し、その堅牢なアーキテクチャをさらに強化します。
AWS Nitro は、AWS EC2 インスタンスの基盤を成す**革新的なテクノロジー**群です。Amazon によって導入され、**セキュリティ、パフォーマンス、信頼性を向上させる**ために、Nitro はカスタム**ハードウェアコンポーネントと軽量ハイパーバイザー**を活用します。従来の仮想化機能の多くを専用ハードウェアとソフトウェア抽象化し、**攻撃対象領域を最小化**するとともにリソース効率を改善します。仮想化機能をオフロードすることで、NitroEC2 インスタンスに**ほぼベアメタルに近いパフォーマンス**を提供し、リソース集約型アプリケーションに特に有利になります。さらに、Nitro Security Chip は**ハードウェアとファームウェアのセキュリティ**を特に確保し、その堅牢なアーキテクチャをさらに強化します。
詳細情報と列挙方法については、以下を参照してください:
Get more information and how to enumerate it from:
{{#ref}}
aws-nitro-enum.md
@@ -246,34 +249,34 @@ aws-nitro-enum.md
## VPN
VPNは、**オンプレミスネットワーク(サイト間VPN**または**作業者のラップトップ(クライアントVPN)**を**AWS VPC**に接続し、サービスをインターネットに公開することなくアクセスできるようにします。
VPN は、**on-premise network (site-to-site VPN)****workers laptops (Client VPN)****AWS VPC** に接続し、サービスをインターネットに公開することなくアクセスできるようにします。
#### 基本的なAWS VPNコンポーネント
#### Basic AWS VPN Components
1. **カスタマーゲートウェイ**:
- カスタマーゲートウェイは、VPN接続のあなた側を表すためにAWS作成するリソースです。
- これは、サイト間VPN接続のあなた側にある物理デバイスまたはソフトウェアアプリケーションです。
- ルーティング情報とネットワークデバイス(ルーターやファイアウォールなど)のパブリックIPアドレスをAWSに提供してカスタマーゲートウェイを作成します。
- VPN接続設定するための参照ポイントとして機能し、追加料金は発生しません。
2. **仮想プライベートゲートウェイ**:
- 仮想プライベートゲートウェイ(VPG)は、サイト間VPN接続のAmazon側のVPN集中装置です。
- あなたのVPCに接続され、VPN接続のターゲットとして機能します。
- VPGVPN接続のAWS側エンドポイントです。
- あなたのVPCとオンプレミスネットワーク間の安全な通信を処理します。
3. **サイト間VPN接続**:
- サイト間VPN接続は、オンプレミスネットワークを安全なIPsec VPNトンネルを介してVPCに接続します。
- このタイプの接続にはカスタマーゲートウェイと仮想プライベートゲートウェイが必要です。
- データセンターやネットワークとAWS環境間の安全で安定した一貫した通信に使用されます。
- 通常定期的長期的な接続に使用され、接続を介して転送されたデータ量に基づいて請求されます。
4. **クライアントVPNエンドポイント**:
- クライアントVPNエンドポイントは、クライアントVPNセッションを有効にし管理するためにAWS作成するリソースです。
- 個々のデバイス(ラップトップ、スマートフォンなど)がAWSリソースまたはオンプレミスネットワークに安全に接続できるようにするために使用されます。
- サイト間VPNとは異なり、全体のネットワークを接続するのではなく個々のクライアント向けに設計されています。
- クライアントVPNでは、各クライアントデバイスがVPNクライアントソフトウェアを使用して安全な接続を確立します。
1. **Customer Gateway**:
- A Customer Gateway は、VPN 接続のあなた側を表すために AWS作成するリソースです。
- これは実質的に、Site-to-Site VPN 接続のあなた側にある物理デバイスまたはソフトウェアアプリケーションです。
- Customer Gateway を作成する際に、ルーティング情報とネットワーク機器(例: router や firewall)のパブリック IP アドレスを AWS に提供します。
- VPN 接続設定の参照点として機能し、追加料金は発生しません。
2. **Virtual Private Gateway**:
- A Virtual Private Gateway (VPG) は、Site-to-Site VPN 接続の Amazon 側の VPN コンセントレーターです。
- VPC にアタッチされ、VPN 接続のターゲットとして機能します。
- VPGVPN 接続の AWS 側エンドポイントです。
- VPC とオンプレミスネットワーク間のセキュアな通信を処理します。
3. **Site-to-Site VPN Connection**:
- Site-to-Site VPN 接続は、IPsec VPN トンネルを通じてオンプレミスネットワークを VPC に接続します。
- このタイプの接続には Customer Gateway と Virtual Private Gateway が必要です。
- データセンターやネットワークと AWS 環境間のセキュアで安定した一貫した通信に使用されます。
- 通常定期的かつ長期的な接続に使用され、接続を通じて転送されたデータ量に基づいて課金されます。
4. **Client VPN Endpoint**:
- Client VPN endpoint は、クライアント VPN セッションを有効化および管理するために AWS作成するリソースです。
- 個々のデバイス(laptops、smartphones など)が AWS リソースオンプレミスネットワークにセキュアに接続するために使用されます。
- Site-to-Site VPN とは異なり、ネットワーク全体を接続するのではなく個々のクライアント向けに設計されています。
- Client VPN では、各クライアントデバイスが VPN クライアントソフトウェアを使用してセキュアな接続を確立します。
[**AWS VPNの利点とコンポーネントについての詳細情報はこちらで見つけることができます**](aws-vpc-and-networking-basic-information.md#vpn)
You can [**find more information about the benefits and components of AWS VPNs here**](aws-vpc-and-networking-basic-information.md#vpn).
### 列挙
### Enumeration
```bash
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
@@ -299,23 +302,23 @@ aws ec2 describe-vpn-connections
```
### ローカル列挙
**ローカル一時資格情報**
**ローカル一時認証情報**
AWS VPN Clientを使用してVPNに接続する際、ユーザーは通常**AWSにログイン**してVPNにアクセスします。その後、VPN接続を確立するために**AWS資格情報が作成され、ローカルに保存されます**。これらの資格情報は**$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt**に保存され、**AccessKey**、**SecretKey**、および**Token**が含まれています。
When AWS VPN Client is used to connect to a VPN, the user will usually **login in AWS** to get access to the VPN. Then, some **AWS credentials are created and stored** locally to establish the VPN connection. These credentials are **stored in** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` and contains an **AccessKey**, a **SecretKey** and a **Token**.
資格情報はユーザー`arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials`に属します(TODO: この資格情報の権限についてさらに調査する)。
これらの資格情報はユーザー `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` に属します(TODO: これらの資格情報の権限についてさらに調査する)。
**opvn設定ファイル**
**opvn 設定ファイル**
**VPN接続が確立された場合**、システム内で**`.opvn`**設定ファイルを検索する必要があります。さらに、**$HOME/.config/AWSVPNClient/OpenVpnConfigs**に**設定**が見つかる場所の1つです。
もし **VPN 接続が確立されている** 場合、システム上で **`.opvn`** 設定ファイルを検索すべきです。さらに、設定が見つかる場所のひとつは **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`** です。
#### **ポストエクスプロイト**
#### **Post Exploitaiton**
{{#ref}}
../../aws-post-exploitation/aws-vpn-post-exploitation/README.md
{{#endref}}
## 参考文献
## 参考
- [https://docs.aws.amazon.com/batch/latest/userguide/getting-started-ec2.html](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-ec2.html)