Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:05:51 +00:00
parent 06ae0ca85c
commit 652d8299d6
44 changed files with 2150 additions and 515 deletions

View File

@@ -4,7 +4,7 @@
## **CloudTrail**
AWS CloudTrail **は、AWS環境内の活動を記録および監視します**。それは、誰が何を、いつ、どこから行ったかを含む詳細な**イベントログ**をキャプチャします。これにより、変更やアクションの監査証跡が提供され、セキュリティ分析、コンプライアンス監査、およびリソース変更の追跡に役立ちます。CloudTrailは、ユーザーとリソースの動を理解し、セキュリティ姿勢を強化し、規制遵守を確保するために不可欠です。
AWS CloudTrail **は、AWS環境内の活動を記録および監視します**。それは、誰が何を、いつ、どこから行ったかを含む詳細な**イベントログ**をキャプチャします。これにより、変更やアクションの監査証跡が提供され、セキュリティ分析、コンプライアンス監査、およびリソース変更の追跡に役立ちます。CloudTrailは、ユーザーとリソースの動を理解し、セキュリティ姿勢を強化し、規制遵守を確保するために不可欠です。
各ログされたイベントには以下が含まれます:
@@ -21,7 +21,7 @@ AWS CloudTrail **は、AWS環境内の活動を記録および監視します**
イベントは**約5分ごとにJSONファイルに新しいログファイルとして書き込まれ**、CloudTrailによって保持され、最終的にログファイルは**約15分後にS3に配信されます**。\
CloudTrailのログは**アカウント間およびリージョン間で集約できます**。\
CloudTrailは**ログファイルの整合性を使用して、CloudTrailがあなたに配信して以来、ログファイルが変更されていないことを確認できるようにします**。れは、ダイジェストファイル内のログのSHA-256ハッシュを作成します。新しいログのsha-256ハッシュは毎時作成されます。\
CloudTrailは**ログファイルの整合性を使用して、CloudTrailが提供した後にログファイルが変更されていないことを確認できるようにします**。れは、ダイジェストファイル内のログのSHA-256ハッシュを作成します。新しいログのsha-256ハッシュは毎時作成されます。\
トレイルを作成する際、イベントセレクターを使用して、ログするトレイルを示すことができます:管理、データ、またはインサイトイベント。
ログはS3バケットに保存されます。デフォルトではサーバーサイド暗号化SSE-S3が使用されるため、AWSはアクセス権を持つ人々のためにコンテンツを復号化しますが、追加のセキュリティのためにSSEをKMSおよび独自のキーと共に使用することができます。
@@ -32,21 +32,21 @@ CloudTrailは**ログファイルの整合性を使用して、CloudTrailがあ
- バケット名は:**`aws-cloudtrail-logs-<accountid>-<random>`**
- 例:**`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
各フォルダ内の各ログは**この形式に従った名前を持ちます****`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
各フォルダ内の各ログは**この形式に従った名前を持ちます****`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
ログファイル命名規則
![](<../../../../images/image (122).png>)
さらに、**ファイル整合性を確認するためのダイジェストファイル**は**同じバケット内に**あります:
さらに、**ファイル整合性を確認するためのダイジェストファイル**は**同じバケット内にあります**
![](<../../../../images/image (195).png>)
### 複数アカウントからのログの集約
- ログファイルを配信するAWSアカウントトレイルを作成します
- ログファイルを配信するAWSアカウントトレイルを作成します
- CloudTrailのためにクロスアカウントアクセスを許可するように、宛先S3バケットに権限を適用し、アクセスが必要な各AWSアカウントを許可します
- 他のAWSアカウント新しいトレイルを作成し、ステップ1で作成したバケットを使用するように選択します
- 他のAWSアカウント新しいトレイルを作成し、ステップ1で作成したバケットを使用するように選択します
ただし、すべてのログを同じS3バケットに保存できるとしても、複数のアカウントからのCloudTrailログを単一のAWSアカウントに属するCloudWatch Logsに集約することはできません。
@@ -77,26 +77,26 @@ CloudTrailがCloudWatchにログを送信できるようにするには、その
### Event History
CloudTrail Event Historyでは、記録されたログをテーブルで検査できます:
CloudTrail Event Historyでは、記録されたログをテーブルで確認できます:
![](<../../../../images/image (89).png>)
### Insights
**CloudTrail Insights**は自動的に**管理イベントを分析**し、**異常な活動**を**警告**します。例えば、`TerminateInstance`イベントの増加が確立されたベースラインと異なる場合、それはInsightイベントとして表示されます。これらのイベントは、**異常なAPI活動を見つけて対応することをこれまで以上に容易にします**
**CloudTrail Insights**は自動的に**分析**し、CloudTrailトレイルからの書き込み管理イベントを**警告**し、**異常な活動**を通知します。例えば、`TerminateInstance`イベントの増加が確立されたベースラインと異なる場合、それはInsightイベントとして表示されます。これらのイベントは、**異常なAPI活動を見つけて対応することをこれまで以上に容易にします**
インサイトはCloudTrailログと同じバケットに保存されます`BucketName/AWSLogs/AccountID/CloudTrail-Insight`
### Security
| CloudTrail Log File Integrity | <ul><li>ログが改ざんされていないか検証する(変更または削除されたか</li><li><p>ダイジェストファイルを使用する(各ファイルのハッシュを作成)</p><ul><li>SHA-256ハッシュ</li><li>デジタル署名のためのSHA-256とRSA</li><li>Amazonが所有する秘密鍵</li></ul></li><li>ダイジェストファイル作成するのに1時間かかる毎時行われる</li></ul> |
| CloudTrail Log File Integrity | <ul><li>ログが改ざんされていないか(変更または削除)を検証</li><li><p>ダイジェストファイルを使用(各ファイルのハッシュを作成)</p><ul><li>SHA-256ハッシュ</li><li>デジタル署名のためのSHA-256とRSA</li><li>Amazonが所有する秘密鍵</li></ul></li><li>ダイジェストファイル作成に1時間かかる毎時行われる</li></ul> |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Stop unauthorized access | <ul><li><p>IAMポリシーとS3バケットポリシーを使用する</p><ul><li>セキュリティチーム —> 管理者アクセス</li><li>監査人 —> 読み取り専用アクセス</li></ul></li><li>ログを暗号化するためにSSE-S3/SSE-KMSを使用する</li></ul> |
| Prevent log files from being deleted | <ul><li>IAMバケットポリシーで削除アクセスを制限する</li><li>S3 MFA削除を構成する</li><li>ログファイル検証で検証する</li></ul> |
| Stop unauthorized access | <ul><li><p>IAMポリシーとS3バケットポリシーを使用</p><ul><li>セキュリティチーム —> 管理者アクセス</li><li>監査人 —> 読み取り専用アクセス</li></ul></li><li>SSE-S3/SSE-KMSを使用してログを暗号化</li></ul> |
| Prevent log files from being deleted | <ul><li>IAMおよびバケットポリシーで削除アクセスを制限</li><li>S3 MFA削除を構成</li><li>ログファイル検証で検証</li></ul> |
## Access Advisor
AWS Access Advisorは、最後の400日間のAWS **CloudTrailログを利用してインサイトを収集します**。CloudTrailは、AWSアカウント内で行われたAWS APIコールと関連イベントの履歴をキャプチャします。Access Advisorはこのデータを利用して**サービスが最後にアクセスされた時期を表示します**。CloudTrailログを分析することで、Access AdvisorはIAMユーザーまたはロールがどのAWSサービスにアクセスしたか、そしてそのアクセスがいつ行われたかを特定できます。これにより、AWS管理者は**権限の洗練**に関する情報に基づいた意思決定を行うことができ、長期間アクセスされていないサービスを特定し、実際の使用パターンに基づいて過度に広範な権限を削減することができます。
AWS Access Advisorは、過去400日間のAWS **CloudTrailログを利用してインサイトを収集します**。CloudTrailは、AWSアカウント内で行われたAWS APIコールと関連イベントの履歴をキャプチャします。Access Advisorはこのデータを利用して**サービスが最後にアクセスされた時期を表示します**。CloudTrailログを分析することで、Access AdvisorはIAMユーザーまたはロールがどのAWSサービスにアクセスしたか、そしてそのアクセスがいつ行われたかを特定できます。これにより、AWS管理者は**権限の精緻化**に関する情報に基づいた意思決定を行うことができ、長期間アクセスされていないサービスを特定し、実際の使用パターンに基づいて過度に広範な権限を削減することができます。
> [!TIP]
> したがって、Access Advisorは**ユーザーに与えられている不必要な権限について通知し**、管理者がそれらを削除できるようにします
@@ -125,7 +125,7 @@ aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id
### **CSVインジェクション**
CloudTrail内でCSVインジェクションを実行することが可能で、ログがCSV形式でエクスポートされ、Excelで開かれると任意のコードが実行されます。\
次のコードは、ペイロードを含む悪いトレイル名のログエントリを生成します
次のコードは、ペイロードを含む悪いトレイル名のログエントリを生成します:
```python
import boto3
payload = "=cmd|'/C calc'|''"
@@ -136,33 +136,33 @@ S3BucketName="random"
)
print(response)
```
CSVインジェクションに関する詳細は、次のページを確認してください:
より詳しい情報はCSVインジェクションについては、ページを確認してください:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/formula-injection
https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript-injection.html
{{#endref}}
この特定の技術に関する詳細は[https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)を確認してください。
この特定の技術についての詳細は[https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)を確認してください。
## **検出の回避**
### HoneyTokens **回避**
Honeytokensは**機密情報の流出を検出するために作成されます**。AWSの場合、これらは**使用が監視されるAWSキー**です。そのキーでアクションがトリガーされると、誰かがそのキーを盗んだことになります。
Honeytokensは**機密情報の流出を検出するために作成されます**。AWSの場合、これらは**使用が監視されるAWSキー**です。そのキーでアクションがトリガーされると、誰かがそのキーを盗んだことになります。
しかし、[**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)によって作成されたHoneytokensは、認識可能なアカウント名を使用するか、すべての顧客に対して同じAWSアカウントIDを使用しています。したがって、Cloudtrailにログを作成させることなくアカウント名やアカウントIDを取得できれば、**そのキーがHoneytokenかどうかを知ることができます**。
[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57)には、キーが[**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**に属するかどうかを検出するためのいくつかのルールがあります:**
- **`canarytokens.org`**がロール名に表示されるか、エラーメッセージにアカウントID **`534261010715`**が表示される場合。
- 最近テストしたところ、アカウント**`717712589309`**を使用しており、名前に**`canarytokens.com`**の文字列がまだ含まれています。
- **`canarytokens.org`**がロール名に表示されるか、アカウントID **`534261010715`**がエラーメッセージに表示される場合。
- 最近テストしたところ、彼らはアカウント**`717712589309`**を使用しており、名前に**`canarytokens.com`**の文字列がまだ含まれています。
- エラーメッセージのロール名に**`SpaceCrab`**が表示される場合。
- **SpaceSiren**はユーザー名を生成するために**uuids**を使用します:`[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
- **名前がランダムに生成されたように見える場合**、それHoneyTokenである可能性が高いです。
- **SpaceSiren**はユーザー名を生成するために**uuids**を使用します:`[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
- **名前がランダムに生成されたように見える場合**、それHoneyTokenである可能性が高いです。
#### キーIDからアカウントIDを取得する
**アクセスキー**内に**エンコードされた**アカウントIDを取得することができ、[**ここで説明されているように**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)Honeytokens AWSアカウントのリストとアカウントIDを確認してください:
**アクセスキー**内に**エンコードされた**アカウントIDを取得することができ、[**ここで説明されているように**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)そのアカウントIDをHoneytokens AWSアカウントのリストと照合してください:
```python
import base64
import binascii
@@ -181,34 +181,34 @@ return (e)
print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML")))
```
[**元の研究**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489)で詳細を確認してください。
Check more information in the [**orginal research**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489).
#### ログを生成しない
このための最も効果的な手法は実際にはシンプルです。見つけたキーを使用して、自分の攻撃者アカウント内のサービスにアクセスします。これにより、**CloudTrailはあなた自身のAWSアカウント内にログを生成し、被害者のアカウント内には生成しません**。
最も効果的な手法は実際にはシンプルなものです。見つけたキーを使用して、自分の攻撃者アカウント内のサービスにアクセスします。これにより、**CloudTrailはあなた自身のAWSアカウント内にログを生成し、被害者のアカウント内には生成しません**。
問題は、出力にアカウントIDとアカウント名を示すエラーが表示されるため、**それがハニートークンであるかどうかを確認できることです**。
出力には、アカウントIDとアカウント名を示すエラーが表示されるため、**それがHoneytokenであるかどうかを確認できす**。
#### ログなしのAWSサービス
過去には、**CloudTrailにログを送信しないAWSサービスがいくつかありました**[ここにリストがあります](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。これらのサービスのいくつかは、無許可の者(ハニートークンキー)がアクセスしようとすると、**キー役割のARNを含むエラー**で**応答**します。
過去には、**CloudTrailにログを送信しないAWSサービスがいくつかありました**(ここに[リストを見つけてください](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。これらのサービスのいくつかは、無許可の者(ハニートークンキー)がアクセスしようとすると、**キー役割のARNを含む**エラーで**応答**します。
この方法で、**攻撃者はログをトリガーすることなくキーのARNを取得できます**。ARN内で攻撃者は**AWSアカウントIDと名前**を見ることができ、ハニートークンの企業アカウントIDと名前を知るのは簡単です。これにより、攻撃者はトークンがハニートークンであるかどうかを特定できます。
この方法で、**攻撃者はログをトリガーすることなくキーのARNを取得できます**。ARNは**AWSアカウントIDと名前**が表示されるため、ハニートークンの企業アカウントIDと名前を知るのは簡単で、攻撃者はトークンがハニートークンであるかどうかを特定できます。
![](<../../../../images/image (93).png>)
> [!CAUTION]
> CloudTrailログを生成しないことが発見されたすべての公開APIは現在修正されているため、自分で見つける必要があるかもしれません...
>
> 詳細については、[**元の研究**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)を確認してください。
> 詳細については、[**original research**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)を確認してください。
### 第三者インフラへのアクセス
特定のAWSサービスは、**データベース**や**Kubernetes**クラスターEKSなどの**インフラを生成します**。ユーザーがこれらのサービスKubernetes APIなど**直接話しかける**場合、**AWS APIを使用しないため**、CloudTrailはこの通信を確認できません。
特定のAWSサービスは、**データベース**や**Kubernetes**クラスターEKSなどの**インフラを生成します**。ユーザーがこれらのサービスKubernetes APIなどに直接話しかける場合、**AWS APIを使用しないため**、CloudTrailはこの通信を確認できません。
したがって、EKSにアクセスできるユーザーがEKS APIのURLを発見した場合、ローカルでトークンを生成し、**CloudTrailに検出されることなくAPIサービスに直接話しかけることができます**。
詳細は以下にあります
詳細は以下に:
{{#ref}}
../../aws-post-exploitation/aws-eks-post-exploitation.md
@@ -251,11 +251,11 @@ aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration
- オブジェクトを削除するためにS3バケットにライフサイクルポリシーを追加する
- CloudTrailログを暗号化するために使用されるKMSキーを無効にする
### CloudTrailランサムウェア
### Cloudtrailランサムウェア
#### S3ランサムウェア
**非対称キーを生成**し、そのキーで**CloudTrailがデータを暗号化**し、**秘密鍵を削除**することでCloudTrailの内容を回復できなくすることができます。\
**非対称キーを生成**し、そのキーで**CloudTrailがデータを暗号化**し、**秘密鍵を削除**することでCloudTrailの内容を回復できなくすることができます。\
これは基本的に**S3-KMSランサムウェア**で、以下に説明されています:
{{#ref}}