AWS - CloudTrail Enum
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
CloudTrail
AWS CloudTrail は、AWS環境内のアクティビティを記録および監視します。詳細なイベントログをキャプチャし、誰が何を、いつ、どこから行ったかを含む、AWSリソースとのすべてのやり取りを記録します。これにより、セキュリティ分析、コンプライアンス監査、およびリソース変更追跡に役立つ監査証跡が提供されます。CloudTrailは、ユーザーおよびリソースの行動を理解し、セキュリティ態勢を強化し、規制遵守を確保するために不可欠です。
各ログイベントには以下が含まれます:
呼び出されたAPIの名前:
eventName
呼び出されたサービス:
eventSource
時間:
eventTime
IPアドレス:
SourceIPAddress
エージェントメソッド:
userAgent
. 例:Signing.amazonaws.com - AWS Management Consoleから
console.amazonaws.com - アカウントのルートユーザー
lambda.amazonaws.com - AWS Lambda
リクエストパラメータ:
requestParameters
レスポンス要素:
responseElements
イベントは約5分ごとに新しいログファイルにJSON形式で書き込まれ、CloudTrailによって保持され、最終的にログファイルは約15分後にS3に配信されます。 CloudTrailのログはアカウント間およびリージョン間で集約できます。 CloudTrailはログファイルの整合性を使用して、CloudTrailが配信した後にログファイルが変更されていないことを確認できるようにします。ログのSHA-256ハッシュをダイジェストファイル内に作成します。新しいログのSHA-256ハッシュは毎時作成されます。 Trailを作成する際、イベントセレクターを使用して、管理、データ、またはインサイトイベントをログに記録するようにTrailを指定できます。
ログはS3バケットに保存されます。デフォルトではサーバーサイド暗号化(SSE-S3)が使用されるため、アクセス権を持つ人々のためにAWSがコンテンツを復号化しますが、追加のセキュリティのためにKMSと独自のキーを使用してSSEを使用できます。
ログは次の名前形式のS3バケットに保存されます:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
BucketNameは次のようになります:
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
ログファイルの命名規則
さらに、ファイルの整合性を確認するためのダイジェストファイルは同じバケット内にあります:
複数アカウントからのログの集約
ログファイルを配信するAWSアカウントでTrialを作成します
CloudTrailのクロスアカウントアクセスを許可し、アクセスが必要な各AWSアカウントを許可するために、宛先S3バケットに権限を適用します
他のAWSアカウントで新しいTrailを作成し、ステップ1で作成したバケットを使用するように選択します
ただし、同じS3バケットにすべてのログを保存できる場合でも、複数のアカウントからのCloudTrailログを単一のAWSアカウントに属するCloudWatch Logsに集約することはできません。
アカウントには異なるバケットに同じ(または異なる)ログを保存するCloudTrailの異なるTrailsが有効になっている可能性があることを忘れないでください。
すべての組織アカウントから1つのCloudtrailへ
CloudTrailを作成する際、組織内のすべてのアカウントに対してCloudTrailを有効にし、ログを1つのバケットに集約することが可能です:
この方法では、すべてのアカウントのすべてのリージョンでCloudTrailを簡単に構成し、1つのアカウントにログを集中させることができます(保護する必要があります)。
ログファイルの確認
ログが変更されていないことを確認するには、次のコマンドを実行します
Logs to CloudWatch
CloudTrailはログをCloudWatchに自動的に送信し、疑わしい活動が行われたときに警告を設定できます。 CloudTrailがログをCloudWatchに送信できるようにするためには、そのアクションを許可するロールを作成する必要があります。可能であれば、これらのアクションを実行するためにAWSのデフォルトロールを使用することをお勧めします。このロールはCloudTrailに以下を許可します:
CreateLogStream: CloudWatch Logsのログストリームを作成することを許可
PutLogEvents: CloudTrailログをCloudWatch Logsのログストリームに配信することを許可
Event History
CloudTrail Event Historyは、記録されたログをテーブルで検査することができます:
Insights
CloudTrail InsightsはCloudTrailトレイルからの書き込み管理イベントを自動的に分析し、異常な活動を警告します。例えば、TerminateInstance
イベントの増加が確立されたベースラインと異なる場合、それがInsightイベントとして表示されます。これらのイベントにより、異常なAPI活動の発見と対応がこれまで以上に容易になります。
インサイトはCloudTrailログと同じバケットに保存されます:BucketName/AWSLogs/AccountID/CloudTrail-Insight
Security
CloudTrail Log File Integrity |
|
Stop unauthorized access |
|
Prevent log files from being deleted |
|
Access Advisor
AWS Access Advisorは、過去400日間のAWS CloudTrailログに依存してインサイトを収集します。CloudTrailは、AWSアカウントで行われたAWS APIコールおよび関連イベントの履歴をキャプチャします。Access Advisorはこのデータを利用して、サービスが最後にアクセスされた時期を表示します。CloudTrailログを分析することで、Access AdvisorはIAMユーザーまたはロールがどのAWSサービスにアクセスしたか、およびそのアクセスがいつ行われたかを判断できます。これにより、AWS管理者は権限の精査に関する情報に基づいた決定を下すことができ、長期間アクセスされていないサービスを特定し、実際の使用パターンに基づいて過度に広範な権限を削減することができます。
したがって、Access Advisorはユーザーに与えられた不要な権限について通知し、管理者がそれらを削除できるようにします
Actions
Enumeration
CSV Injection
CloudTrail内でCSVインジェクションを実行することが可能であり、ログがCSV形式でエクスポートされ、Excelで開かれた場合に任意のコードが実行されます。 次のコードは、ペイロードを含む悪意のあるTrail名を持つログエントリを生成します:
CSVインジェクションの詳細については、以下のページを参照してください:
この特定の技術についての詳細は、https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/を参照してください。
検出回避
HoneyTokens 回避
Honeyokensは機密情報の流出を検出するために作成されます。AWSの場合、使用が監視されるAWSキーであり、そのキーで何かがトリガーされると、誰かがそのキーを盗んだことになります。
しかし、Canarytokens、 SpaceCrab、 SpaceSirenによって作成されたHoneytokensは、認識可能なアカウント名を使用しているか、すべての顧客に同じAWSアカウントIDを使用しています。したがって、Cloudtrailがログを作成しないようにアカウント名やアカウントIDを取得できれば、そのキーがHoneytokenかどうかを知ることができます。
Pacuには、キーがCanarytokens、 SpaceCrab、 SpaceSirenに属しているかどうかを検出するためのいくつかのルールがあります:
**
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である可能性が高いです。
キーIDからアカウントIDを取得する
アクセスキーにエンコードされたアカウントIDをここで説明されているように取得し、Honeytokens AWSアカウントのリストと照合することができます:
orginal researchで詳細情報を確認してください。
ログを生成しない
最も効果的な技術は実際にはシンプルなものです。見つけたキーを使って、自分の攻撃者アカウント内のサービスにアクセスするだけです。これにより、CloudTrailは被害者のAWSアカウント内ではなく、あなた自身のAWSアカウント内にログを生成します。
出力にはアカウントIDとアカウント名を示すエラーが表示されるため、それがHoneytokenかどうかを確認できます。
ログのないAWSサービス
過去には、CloudTrailにログを送信しないAWSサービスがいくつかありました(リストはこちら)。これらのサービスの一部は、未承認のユーザー(honeytokenキー)がアクセスしようとすると、キーのロールのARNを含むエラーで応答します。
この方法で、攻撃者はログをトリガーせずにキーのARNを取得できます。ARNにはAWSアカウントIDと名前が表示されるため、HoneyTokenの企業アカウントIDと名前を簡単に知ることができ、攻撃者はトークンがHoneyTokenかどうかを識別できます。
CloudTrailログを生成しないことが発見されたすべての公開APIは現在修正されているため、自分で見つける必要があるかもしれません...
詳細情報はoriginal researchを確認してください。
サードインフラストラクチャへのアクセス
特定のAWSサービスは、データベースやKubernetesクラスター(EKS)などのインフラストラクチャを生成します。ユーザーがこれらのサービスに直接話しかける(例えばKubernetes API)場合、AWS APIを使用しないため、CloudTrailはこの通信を検出できません。
したがって、EKSにアクセスできるユーザーがEKS APIのURLを発見した場合、ローカルでトークンを生成し、CloudTrailに検出されることなくAPIサービスに直接話しかけることができます。
詳細情報は以下に:
AWS - EKS Post ExploitationCloudTrail設定の変更
トレイルの削除
トレイルの停止
トレイルを停止するには、上記のコマンドを使用します。トレイルが停止されると、ログは収集されなくなります。
Delete trails
トレイルを削除するには、以下のコマンドを使用します。
トレイルが削除されると、そのトレイルに関連するすべてのログ情報が失われます。
マルチリージョンロギングを無効化する
イベントセレクタによるログの無効化
最初の例では、単一のイベントセレクタが単一のオブジェクトを持つJSON配列として提供されています。"ReadWriteType": "ReadOnly"
は、イベントセレクタが読み取り専用のイベントのみをキャプチャすることを示しています(例えば、CloudTrail insightsは書き込みイベントをチェックしません)。
特定の要件に基づいてイベントセレクタをカスタマイズできます。
S3ライフサイクルポリシーによるログ削除
バケット構成の変更
S3バケットを削除する
CloudTrailサービスからの書き込みを拒否するようにバケットポリシーを変更する
オブジェクトを削除するためのライフサイクルポリシーをS3バケットに追加する
CloudTrailログを暗号化するために使用されるkmsキーを無効にする
Cloudtrailランサムウェア
S3ランサムウェア
非対称キーを生成し、そのキーでCloudTrailがデータを暗号化するようにし、秘密鍵を削除することで、CloudTrailの内容を復元できないようにすることができます。 これは基本的に以下で説明されているS3-KMSランサムウェアです:
AWS - S3 Post ExploitationKMSランサムウェア
これは、異なる権限要件で前述の攻撃を実行する最も簡単な方法です:
AWS - KMS Post Exploitation参考文献
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する: HackTricks Training GCP Red Team Expert (GRTE)
Last updated