AWS - CloudTrail Enum
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ハッシュは1時間ごとに作成されます。 Trailを作成する際、イベントセレクターを使用して、ログを記録するトレイルを示すことができます:管理、データ、またはインサイトイベント。
ログはS3バケットに保存されます。デフォルトではServer Side Encryption(SSE-S3)が使用されるため、AWSはアクセス権を持つ人々のためにコンテンツを復号化しますが、追加のセキュリティとしてSSE with KMSと独自のキーを使用できます。
ログは次の名前形式の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アカウントでトライアルを作成します
CloudTrailのクロスアカウントアクセスを許可し、CloudTrailと必要な各AWSアカウントにアクセスを許可するための宛先S3バケットにアクセス許可を適用します
他のAWSアカウントで新しいトレイルを作成し、ステップ1で作成したバケットを使用するように選択します
ただし、すべてのログを同じS3バケットに保存できる場合でも、複数のアカウントからのCloudTrailログを1つのAWSアカウントに属するCloudWatch Logsに集約することはできません。
アカウントには、CloudTrailから有効になっているさまざまなトレイルがあり、同じ(または異なる)ログを異なるバケットに保存している可能性があることを覚えておいてください。
組織内のすべてのアカウントから1つにCloudtrailを作成
CloudTrailを作成する際、組織内のすべてのアカウントでCloudTrailをアクティブにし、ログを1つのバケットに集約することができます:
この方法で、すべてのリージョンのすべてのアカウントでCloudTrailを簡単に構成し、ログを1つのアカウントに集約できます(保護する必要があります)。
ログファイルの確認
ログが変更されていないことを確認するには、次のコマンドを実行できます
CloudWatchへのログ
CloudTrailは自動的にログをCloudWatchに送信できるため、不審なアクティビティが行われた際に警告を設定できます。 CloudTrailがログをCloudWatchに送信するためには、そのアクションを許可するロールを作成する必要があります。可能であれば、これらのアクションを実行するためにAWSデフォルトのロールを使用することが推奨されています。このロールにより、CloudTrailが以下のアクションを実行できます:
CreateLogStream: CloudWatch Logsログストリームを作成できる
PutLogEvents: CloudTrailログをCloudWatch Logsログストリームに配信できる
イベント履歴
CloudTrailイベント履歴を使用すると、記録されたログをテーブルで確認できます:
インサイト
CloudTrail Insightsは、CloudTrailトレイルからの書き込み管理イベントを自動的に分析し、異常なアクティビティに警告します。たとえば、確立されたベースラインと異なるTerminateInstance
イベントの増加がある場合、それをInsightイベントとして表示します。これらのイベントにより、異常なAPIアクティビティの検出と対応がこれまで以上に容易になります。
これらのインサイトは、CloudTrailログと同じバケットに保存されます: BucketName/AWSLogs/AccountID/CloudTrail-Insight
セキュリティ
CloudTrailログファイルの整合性 |
|
不正なアクセスを停止する |
|
ログファイルの削除を防止する |
|
アクセスアドバイザー
AWSアクセスアドバイザーは、最後の400日間のAWS CloudTrailログを収集して洞察を得ます。 CloudTrailは、AWSアカウントで行われたAWS API呼び出しと関連イベントの履歴をキャプチャします。アクセスアドバイザーはこのデータを利用して、サービスが最後にアクセスされた時期を表示します。 CloudTrailログを分析することで、アクセスアドバイザーはIAMユーザーやロールがアクセスしたAWSサービスとそのアクセス時期を特定できます。これにより、AWS管理者は、アクセスされていないサービスを特定し、実際の使用パターンに基づいて過剰な権限を削減する可能性があるため、権限を洗練させるための情報を得ることができます。
したがって、アクセスアドバイザーは、ユーザーに与えられている不要な権限について通知し、管理者がそれらを削除できるようにします
アクション
列挙
CSV Injection
CloudTrail内でCSVインジェクションを実行することが可能で、ログがCSV形式でエクスポートされ、Excelで開かれた場合に任意のコードが実行される可能性があります。 次のコードは、ペイロードを含む悪意のあるTrail名を持つログエントリを生成します:
CSVインジェクションに関する詳細は、以下のページを参照してください:
この特定のテクニックに関する詳細については、https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/をご覧ください。
検出のバイパス
HoneyTokens バイパス
HoneyTokensは、機密情報の持ち出しを検出するために作成されます。AWSの場合、監視されているAWSキーがあり、そのキーで何かがトリガーされると、誰かがそのキーを盗んだということになります。
ただし、この監視はCloudTrailを介して行われ、一部のAWSサービスはCloudTrailにログを送信しない場合があります(こちらのリストを参照)。これらのサービスのいくつかは、認可されていない人物(HoneyTokenキー)がアクセスしようとすると、エラーが返され、そのキーロールのARNが含まれます。
これにより、攻撃者はログをトリガーせずにキーのARNを取得できます。ARNにはAWSアカウントIDと名前が含まれており、HoneyTokenの企業アカウントIDと名前を簡単に特定できるため、攻撃者はトークンがHoneyTokenであるかどうかを特定できます。
HoneyTokensの検出
Pacu は、Canarytokens、SpaceCrab、SpaceSiren**** のキーを検出します:
キーのロール名またはアカウントIDに
canarytokens.org
が表示される場合、またはエラーメッセージに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である可能性が高いです。
CloudTrailログを作成しないと判明したすべてのパブリックAPIが修正されたため、独自のものを見つける必要があるかもしれません...
または、アクセスキー内にエンコードされた アカウントIDを取得して、Honeytokens AWSアカウントのリストとアカウントIDを確認できます:こちらで説明されている通り。
詳細については、元のリサーチをチェックしてください。
サードインフラストラクチャへのアクセス
特定のAWSサービスは、データベースやKubernetesクラスタ(EKSなど)などのインフラストラクチャを生成することがあります。ユーザーがこれらのサービス(例:Kubernetes API)に直接アクセスする場合、AWS APIを使用しないため、CloudTrailはこの通信を見ることができません。
したがって、EKSへのアクセス権を持つユーザーがEKS APIのURLを発見した場合、ローカルでトークンを生成し、CloudTrailに検出されることなくAPIサービスと直接通信することができます。
詳細は次の場所にあります:
pageAWS - EKS Post ExploitationCloudTrailの構成の変更
トレイルの削除
トレイルの停止
マルチリージョンのロギングを無効にする
バケット構成の変更
S3バケットを削除する
バケットポリシーを変更して、CloudTrailサービスからの書き込みを拒否する
S3バケットにライフサイクルポリシーを追加してオブジェクトを削除する
CloudTrailログを暗号化するために使用されているkmsキーを無効にする
Cloudtrailランサムウェア
S3ランサムウェア
非対称キーを生成し、そのキーでCloudTrailがデータを暗号化し、プライベートキーを削除して、CloudTrailの内容を回復できないようにします。 これは基本的に、以下で説明されているS3-KMSランサムウェアです:
pageAWS - S3 Post ExploitationKMSランサムウェア
これは、異なる権限要件で前述の攻撃を実行する最も簡単な方法です:
pageAWS - KMS Post Exploitation参考文献
最終更新