結果 - Amazon GuardDuty

結果

AWS 環境で、潜在的に悪意のある予期しないアクティビティを検出すると、GuardDuty によって結果が生成されます。GuardDuty の結果は、GuardDuty コンソールの [Findings] ページ、GuardDuty の CLI や API オペレーションを使用して表示および管理できます。GuardDuty の結果は、Amazon CloudWatch イベントを使用して表示することもできます。詳細については、「Amazon CloudWatch Events を使用した GuardDuty 結果のモニタリング」を参照してください。

このトピックには次の情報を説明しています。

GuardDuty 結果の検索と分析

GuardDuty の結果を表示および分析するには、次の手順を使用します。

  1. GuardDuty コンソール (https://console.aws.amazon.com/guardduty/) を開きます。

  2. [Findings (結果)] を選択し、特定の結果を選択して詳細を表示します。

    詳細ペインが表示され、次の情報を確認できます。

    • 結果の概要セクション。次の情報が含まれます。

      • 検索タイプ – セキュリティ上の潜在的な問題の簡潔で読みやすい説明。詳細については、「GuardDuty 結果形式」を参照してください。

      • 重大度 – 結果には重大度 (高、中、低) が割り当てられています。詳細については、「GuardDuty 結果の重要度」を参照してください。

      • リージョン – 結果が作成された AWS リージョン。

        注記

        サポートされるリージョンについては、「リージョンとエンドポイント」を参照してください。

      • カウント – AWS アカウントで GuardDuty を有効にした後で GuardDuty で結果が生成された回数。

      • アカウント ID – この結果の生成を GuardDuty に求めるアクティビティを実行した AWS アカウントの ID。

      • リソース ID – この結果の生成を GuardDuty に求めるアクティビティを実行した AWS リソースの ID。

      • 脅威リスト名 - この結果の生成を GuardDuty に求めるアクティビティに関する IP アドレスまたはドメイン名が含まれている脅威リストの名前。

      • 最終アクセス – この結果の生成を GuardDuty に求めるアクティビティが発生した時間。

        注記

        GuardDuty コンソールの結果のタイムスタンプはローカルタイムゾーンで表示されます。一方、JSON エクスポートおよび CLI 出力では UTC でタイムスタンプが表示されます。

    • 結果の [Resource affected] セクション。次の情報が含まれます。

      • リソースロール – 該当のリソースは攻撃対象となる可能性があるため、この値は通常 Target に設定されます。

      • リソースタイプ – 該当するリソースのタイプ。この値は、AccessKey または Instance のいずれかです。現在、サポートされている結果タイプは EC2 インスタンスまたは AWS 認証情報のいずれかに対する悪意のあるアクティビティの可能性を示します。詳細については、「GuardDuty によって検出されたセキュリティ問題の修復」を参照してください。

      • インスタンス ID – 結果の生成を GuardDuty に求めるアクティビティを行った EC2 インスタンスの ID。

      • Outpost ARN– AWS Outpost の Amazon リソースネーム (ARN)。AWS Outposts インスタンスにのみ適用されます。詳細については、「AWS Outposts とは」を参照してください。

      • ポート – GuardDuty に結果の生成を求めるアクティビティ中に使用された接続のポート番号。

      • アクセスキー ID 結果の生成を GuardDuty に求めるアクティビティを行ったユーザーの – アクセスキー ID。

      • プリンシパル ID – 結果の生成を GuardDuty に求めるアクティビティを行ったユーザーのプリンシパル ID。

      • ユーザー型 – 結果の生成を GuardDuty に求めるアクティビティを行ったユーザーのタイプ。詳細については、「CloudTrail userIdentity 要素」を参照してください。

      • ユーザー名 – 結果の生成を GuardDuty に求めるアクティビティを行ったユーザーの名前。

    • 結果の [Action] セクション。次のような情報が含まれます。

      • アクションタイプ – 結果アクティビティのタイプ。次のいずれかの値を指定できます: NETWORK_CONNECTION、AWS_API_CALL、PORT_PROBE、または DNS_REQUEST。NETWORK_CONNECTION は、トラフィックが識別済み EC2 インスタンスとリモートホスト間で交わされたことを示します。AWS_API_CALL は AWS API が呼び出されたことを示します。DNS_REQUEST は、識別済みの EC2 インスタンスがドメイン名を照会したことを示します。PORT_PROBE は、リモートホストが複数の開かれているポートで識別済みの EC2 インスタンスを調査したことを示します。

      • API – 呼び出されたため、GuardDuty にこの結果の生成を求める API オペレーションの名前。

        注記

        これらのオペレーションは、CloudTrail によってキャプチャした API 以外のイベントを含めることもできます。詳細については、CloudTrail によってキャプチャされる API 以外のイベントを参照してください。

      • サービス名 – この結果を生成した AWS のサービス (GuardDuty) の名前。

      • 接続方向 – 結果の生成を GuardDuty に求めるアクティビティで確認されたネットワーク接続方向。値は INBOUND、OUTBOUND、および UNKNOWN です。INBOUND は、リモートホストがお客様のアカウントの識別済み EC2 インスタンスのローカルポートへの接続を開始したことを示します。OUTBOUND は、識別済み EC2 インスタンスがリモートホストへの接続を開始したことを示します。UNKNOWN は、GuardDuty が接続の方向を判別できなかったことを示します。

      • プロトコル – 結果の生成を GuardDuty に求めるアクティビティで確認されたネットワーク接続プロトコル。

      • ローカル IP – 検出をトリガーしたトラフィックの元の送信元 IP。この情報を使用して、トラフィックが通過する中間レイヤーの IP アドレスと、結果をトリガーしたトラフィックの元の送信元 IP アドレスを区別します。たとえば、EKS ポッドが実行されているインスタンスの IP アドレスではなく、EKS ポッドの IP アドレスです。

    • 結果の [Actor] セクション。次のような情報が含まれます。

      • 場所 – 結果の生成を GuardDuty に求めるアクティビティが行われた IP アドレスの位置情報。

      • 組織名 – 結果の生成を GuardDuty に求めるアクティビティが行われた IP アドレスの ISP 組織情報。

      • IP アドレス – 結果の生成を GuardDuty に求めるアクティビティが行われた IP アドレス。

      • ポート – 結果の生成を GuardDuty に求めるアクティビティが行われたポート番号。

      • ドメイン – 結果の生成を GuardDuty に求めるアクティビティが行われたドメイン。

    • 結果の [Additional information] セクション。次のような情報が含まれます。

      • 脅威リスト名 – この結果の生成を GuardDuty に求めるアクティビティに関する IP アドレスまたはドメイン名が含まれている脅威リストの名前。

      • サンプル – 結果サンプルかどうかを示します。

      • 異常 – 履歴で確認されていないアクティビティの詳細。これらには、通常とは異なる (以前に確認されていない) ユーザー、場所、時間などが含まれます。

      • 異常プロトコル – GuardDuty に結果の生成を求めるアクティビティが行われたネットワーク接続プロトコル。

GuardDuty 結果のアーカイブ、ダウンロード、フィードバックの提供

以下の手順で、結果をアーカイブするか最新のものとしてマークし、GuardDuty の結果にフィードバックを提供します

  1. 検索結果をアーカイブまたはダウンロードするには、検索結果のリストから検索結果を選択し、[アクション] メニューを選択します。次に、[Archive] (アーカイブ) または [エクスポート] をクリックします。結果をエクスポートすると、完全な JSON ドキュメントが表示されます。

    注記

    現時点の GuardDuty では、GuardDuty メンバーアカウントのユーザーが結果をアーカイブすることはできません。

    注記

    GuardDuty 結果の信頼度が 0 に設定されている場合のみ、[信頼度] フィールドが完全な結果の JSON に表示されます。0 に設定された [信頼度] フィールドがあることは、この GuardDuty 結果が誤検出であることを示します。

  2. 結果を有用または無用とマークしてフィードバックを提供するには、結果のなかから選んで、その後上向きの親指ボタンまたは下向きの親指ボタンを選択します。

  3. アーカイブされたまたは現在の結果を表示するには、結果のリストの上にあるフィルタアイコンを選択し、[Archived (アーカイブ)] または [Current (現在)] チェックボックスをオンにします。

重要

上記の手順を使用して検索結果を手動でアーカイブする場合は、この検索後に発生した結果 (アーカイブ完了後に生成された結果) はすべて、現在の検索結果のリストに追加されます。現在のリストにこの結果を表示しない場合は、自動アーカイブすることができます。詳細については、「結果のフィルタリング」を参照してください。

結果のフィルタリング

以下の手順を使用して、GuardDuty 結果の日付フィールドのフィルタを作成します。

結果をフィルタリングするには

  1. GuardDuty 結果の [Add filter criteria (フィルタ条件の追加)] バーを選択します。

  2. 展開された属性のリストで、フィルタの条件として指定する属性を選択します。たとえば、アカウント ID または アクションの種類です。特定のフィルタの条件として、1 つの属性または最大 50 の属性を指定できます。

    フィルター条件として指定できる属性の詳細なリストについては、CreateFilter オペレーションの findingCriteria パラメータの詳細を参照してください。

  3. 表示されたテキストフィールドで選択された各属性の値を指定し、[適用] を選択します。

    注記

    「等しい」または「等しくない」条件を使用して、アカウント ID などの属性値をフィルタリングする場合、最大 50 個の値を指定できます。フィルターを適用したら、フィルター名の左側にある黒いドットを選択して、フィルターに一致する結果を除外するようにフィルタを変換できます。これにより、選択した属性に対して「等しくない」フィルターが実質的に作成されます。

  4. 指定された属性とその値 (フィルタ条件) をフィルタとして保存するには、[保存] の順に選択します。フィルタ名と説明を入力し、[完了] を選択します。

サプレッションルール

サプレッションルールは、新しい結果を自動的にアーカイブするために使用されるフィルタです。サプレッションルールを作成すると、ルールで定義された条件に一致する新しい結果が自動的にアーカイブされます。既存のフィルタを使用してサプレッションルールを作成したり、サプレッションルールの作成時に、その新しいフィルタを定義したりできます。

サプレッションルールを作成するには

  1. GuardDuty の [結果] ページで、[Suppress findings (結果を表示しない)] を選択します。

  2. 次のいずれかを行ってください。

    • ルールに既存のフィルタを使用するには、[Saved rules (保存されたルール)] ドロップダウンリストからフィルタを選択します。

    • フィルタ条件を追加して、サプレッションルールのフィルタを作成します。後で使用するためにフィルタを保存するには、フィルタ条件フィールドの最後にある [保存] を選択します。

  3. サプレッションルールの名前と説明を入力します。

  4. [Save] を選択します。

サプレッションルールの一般的ユースケースとベストプラクティス

GuardDuty のセットアップにおける最も重要なステップの 1 つは、特定の AWS 環境に合わせてサービスを微調整することです。これは、GuardDuty 結果のサプレッションルールを使用することで行えます。サプレッションルールにより、生成される結果のノイズレベルが減り、セキュリティの脅威を示す可能性のある結果に集中できます。ノイズの多い結果は、お客様の AWS 環境で予期されるアクティビティか、対応が必要となる脅威ではないアクティビティのいずれかを表します。結果がサプレッションルールに一致しても、90 日間は生成され、GuardDuty に保存されます。ただし、自動的に「アーカイブ済み」としてマークされます。したがって、コンソールの [current findings (現在の結果)] セクションには表示されません。このため、ノイズは除去され、セキュリティ上より重要で、お客様の AWS 環境にとって予期しない動作を示す結果に集中できます。

除外された結果は、結果テーブルのアーカイブ済みセクションで確認できます。これらの結果が AWS Security Hub、Amazon S3、CloudWatch イベント に送信されることはありません。これにより、セキュリティハブ またはサードパーティーの SIEM、アラートアプリケーション、チケットアプリケーションを使用して GuardDuty の結果を利用すれば、ノイズレベルを下げることができます。結果はまだ生成されるため、アーカイブされた結果を定期的に確認して、抑制する必要がある結果のみに一致するよう、ルールが適切に設定されていることを検証することをお勧めします。結果タイプ全体を抑制するようサプレッションルールを設定したり、特定の結果タイプの特定のインスタンスのみを抑制する、よりきめ細かいフィルタ条件を定義したりできます。サプレッションルールを適用する一般的ユースケースを次に示します。

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration– VPC インターネットゲートウェイからではなく、オンプレミスゲートウェイからエグレスされるという方法で、インターネットトラフィックがルーティングされるように、VPC ネットワークが設定されている場合に、生成された結果を自動的にアーカイブするためにサプレッションルールを使用

インスタンス認証情報の不正引き出しの結果では、AWS アカウントの EC2 インスタンスで作成された一時的な AWS 認証情報を使用して、EC2 外のホストから AWS API オペレーションを実行しようとしている試行について知らせます。この結果は、EC2 インスタンスが侵害されていて、このインスタンスの一時的な認証情報が密かに AWS 外のリモートホストに抽出されていることを示している可能性があります。この動作が予期しないものである場合、重大度の高いセキュリティインシデントを示している可能性があるため、直ちに対処する必要があります。ただし、この結果が生成されるのは、VPC インターネットゲートウェイ (IGW) からではなく、オンプレミスゲートウェイからエグレスされるという方法で、インターネットトラフィックがルーティングされるように、VPC ネットワークが設定されている場合です。このような結果が生じる一般的な設定としては、AWS Direct Connect、AWS Outposts、VPC VPN 接続などがあります。この予想される動作を抑制するには、調査結果が AWS Outpost のものである場合は、Outpost Arn 属性を使用して抑制ルールを作成することをお勧めします。他の設定では、2 つの条件に基づいてフィルタを作成します。最初の条件では、UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration という値を持つ [Finding type] 属性を使用する必要があります。2 番目のフィルタ条件では、オンプレミスのインターネットゲートウェイの IP アドレスまたは ASN のいずれかを使用します。IP ベースのフィルタの場合は、API caller IPv4 address (API 呼び出し元の IPv4 アドレス)] 属性を使用します。ASN ベースのフィルタの場合は、[API caller ASN name (API 呼び出し元の ASN 名)] 属性または [API caller ASN ID (API 呼び出し元の ASN ID)] 属性のいずれかを使用します。

Recon:EC2/Portscan – 脆弱性評価アプリケーションを使用する際に、結果を自動的にアーカイブするためにサプレッションルールを使用

Portscan 結果では、AWS 環境の EC2 インスタンスが短時間内に複数のポートに接続しようとしており、ポートスキャン攻撃を行っている可能性があることを知らせます。ポートスキャン攻撃の目的は、開いているポートを見つけ、マシンで実行されているサービスを発見してそのオペレーティングシステムを特定することです。これは、EC2 インスタンスの侵害を示している可能性があります。ただし、脆弱性評価アプリケーションが環境内の EC2 インスタンスにデプロイされているときに、この結果が発生することがよくあります。これらのアプリケーションがポートスキャンを実行し、誤って設定されたオープンポートについて警告するためです。AWS 環境でこのような状況が発生した場合は、この結果に対するサプレッションルールを設定することをお勧めします。サプレッションルールは、2 つのフィルタ条件で構成する必要があります。最初の条件では、[Finding type (結果タイプ)] 属性と、Recon:EC2/Portscan という値を使用します。2 番目のフィルタ条件は、これらの脆弱性評価ツールをホストする 1 つ以上のインスタンスと一致する必要があります。これらのツールをホストするインスタンスで識別可能な条件に応じて、[Instance image ID (インスタンスイメージ ID)] 属性または [Tag value (タグ値)] 属性のいずれかを使用できます。

UnauthorizedAccess:EC2/SSHBruteForce – 踏み台インスタンスをターゲットとする場合に、結果を自動的にアーカイブするためにサプレッションルールを使用

SSH Brute Force 結果では、AWS 環境の EC2 インスタンスが、Linux ベースのシステムで SSH サービスへのパスワードを取得することを目的とした SSH ブルートフォース試行に関与していることを知らせます。これは、AWS リソースへの未承認のアクセスを示している可能性があります。ただし、ブルートフォース試行のターゲットが踏み台ホストである場合、これは AWS 環境で予期される動作を表している可能性があります。このような状況が発生した場合は、この結果に対するサプレッションルールを設定することをお勧めします。サプレッションルールは、2 つのフィルタ条件で構成する必要があります。最初の条件では、UnauthorizedAccess:EC2/SSHBruteForce という値を持つ [Finding type (結果タイプ)] 属性を使用する必要があります。2 番目のフィルタ条件は、踏み台ホストとして機能する 1 つ以上のインスタンスと一致する必要があります。これらのツールをホストするインスタンスで識別可能な条件に応じて、[Instance image ID (インスタンスイメージ ID)] 属性または [Tag value (タグ値)] 属性のいずれかを使用できます。

Recon:EC2/PortProbeUnprotectedPort – 意図的に公開されたインスタンスをターゲットとする場合に、結果を自動的にアーカイブするためにサプレッションルールを使用

Port Probe 結果では、AWS 環境の EC2 インスタンスに、セキュリティグループ、アクセスコントロールリスト (ACL)、またはホストのファイアウォール (Linux IPTables など) でブロックされていないポートがあり、これをインターネットの既知のスキャナーが巧みに見つけようとしていることを知らせます。ただし、インスタンスがウェブサーバーをホストしている場合など、インスタンスが意図的に公開されている場合があります。AWS 環境でこのような状況が発生した場合は、この結果に対するサプレッションルールを設定することをお勧めします。サプレッションルールは、2 つのフィルタ条件で構成する必要があります。最初の条件では、[Finding type (結果タイプ)] 属性と、Recon:EC2/PortProbeUnprotectedPort という値を使用します。2 番目のフィルタ条件は、踏み台ホストとして機能する 1 つ以上のインスタンスと一致する必要があります。これらのツールをホストするインスタンスで識別可能な条件に応じて、[Instance image ID (インスタンスイメージ ID)] 属性または [Tag value (タグ値)] 属性のいずれかを使用できます。

GuardDuty 結果の重要度

GuardDuty の結果ごとに重要度レベルと値が割り当てられます。これにより、結果相互を優先順位付けする必要性が減り、結果が示すセキュリティ問題の可能性に対するレスポンスを決定できます。重大度の値は 0.1 ~ 8.9 の範囲内のいずれかです。

注記

値 0 と 9.0 から 10.0 が将来使用するために現在予約されています。

GuardDuty の結果で現在定義されている重要度レベルと値を次に示します。

  • (GetFindings レスポンスの severity パラメータの値は 7.0〜8.9 の範囲になります) – 該当するリソース (EC2 インスタンス、または IAM ユーザー認証情報のセット) は侵害されており、承認されていない目的に活発に使用されています。このセキュリティ問題は優先事項として対応し、直ちに修正措置を講じることをお勧めします。たとえば、EC2 インスタンスをクリーンアップまたは終了するか、IAM 認証情報を更新します。

  • (GetFindings レスポンスの severity パラメータの値は 4.0〜6.9 の範囲になります) – 不審なアクティビティを示します。たとえば、大量のトラフィックが返されている先のリモートホストが Tor ネットワークの背後に隠れていたり、アクティビティが通常確認されている動作から逸脱していたりします。できるだけ早く、関連するリソースを調査することをお勧めします。いくつかの修正手順を次に示します。

    • 未承認のユーザーがインストールした新しいソフトウェアでリソースの動作が変更されていないか確認してください。たとえば、通常より高いトラフィックが許可されている場合や、新しいポートの通信が有効化されている場合などがあります。

    • 承認済ユーザーによって、コントロールパネル設定が変更されていないか (例: セキュリティグループ設定の変更) を確認します。

    • 該当するリソースでアンチウィルススキャンを実行し、未承認のソフトウェアを検出します。

    • 該当する IAM ロール、ユーザー、グループ、または認証情報セットにアタッチされているアクセス許可を検証します。以下のアクセス許可を変更または更新する必要がある場合があります。

  • (GetFindings レスポンスの severity パラメータの値が 0.1 ~ 3.9) - ネットワークを侵害しなかった不審なアクティビティの試行 (ポートスキャンや失敗した侵入試行など) を示します。すぐに推奨されるアクションはありませんが、この情報は、だれかがネットワークの弱点を探していることを示している可能性があるので、念のためメモしてください。

GuardDuty 結果サンプルの生成

結果サンプルを使用して、GuardDuty が生成するさまざまな検索タイプを視覚化し、分析することができます。結果のサンプルを生成すると、GuardDuty によって最新の結果リストにデータが入力され、サポートされている検索タイプごとに 1 つの結果サンプルが強調表示されます。GuardDuty の結果タイプの詳細については、「アクティブな結果タイプ」を参照してください。

サンプル結果を生成するには、次の手順を使用します。

  1. GuardDuty コンソール (https://console.aws.amazon.com/guardduty/) を開きます。

  2. ナビゲーションペインで [Settings] の [General] を選択します。

  3. [Settings] ページで、[Sample findings] の [Generate sample findings] を選択します。

  4. ナビゲーションペインで [Findings] の [Current] を選択します。サンプル結果が [Current findings] ページに表示されます。結果サンプルのタイトルは必ず [SAMPLE] から始まります。特定のサンプル結果を選択して、詳細を表示します。

PoC (実証支援) - 複数の一般的な結果と GuardDuty 結果の自動生成

次の スクリプト を使用して、いくつかの一般的な GuardDuty 結果を自動的に生成することができます。guardduty-tester.template では、AWS CloudFormation を使用して、踏み台ホスト、ssh 接続できるテスター EC2 インスタンス、2 つのターゲット EC2 インスタンスを持つ独立した環境を作成します。次に、テスター EC2 インスタンス、ターゲット Windows EC2 インスタンス、ターゲット Linux EC2 インスタンス間のインタラクションを開始する guardduty_tester.sh を実行して、GuardDuty が生成した結果を検出し通知する一般的な攻撃タイプの 5 つをシミュレートします。

  1. 前提条件として、guardduty-tester.templateguardduty_tester.sh を実行する同じアカウントとリージョンで GuardDuty を有効にする必要があります。GuardDuty の有効化の詳細については「GuardDuty のセットアップ」をご覧ください。

    スクリプトを実行する各リージョンで、新規に生成するか既存の EC2 キーペアを使用する必要があります。この EC2 キーペアは新しい CloudFormation スタックの作成時に、guardduty-tester.template スクリプトでパラメータとして使用されます。キーペアの生成の詳細については、「Amazon EC2 キーペア」を参照してください。

  2. guardduty-tester.template を使用して新しい CloudFormation スタックを作成します。スタックの作成の詳細については、「スタックの作成」を参照してください。guardduty-tester.template を実行する前に、新しいスタックを識別するためのスタックの名前、スタックを実行するアベイラビリティーゾーン、EC2 インスタンスの起動に使用するキーペアのパラメータ値を変更します。次に、対応するプライベートキーを使用して、EC2 インスタンスで SSH 接続を行います。

    guardduty-tester.template の実行と完了の所要時間は約 10 分です。環境を作成しテスター EC2 インスタンスに guardduty_tester.sh をコピーします。

  3. AWS CloudFormation コンソールで、新しく実行している AWS CloudFormation スタックの横にあるチェックボックスを選択します。表示されている一連のタブで [出力] タブを選択します。踏み台ホストとテスター EC2 インスタンスに割り当てられている IP アドレスに注意します。テスター EC2 インスタンスで SSH 接続を行うには、両方の IP アドレスが必要になります。

  4. 踏み台ホストからインスタンスにログインするため、~/.ssh/config ファイルで次のエントリを作成します。

    Host bastion HostName {Elastic IP Address of Bastion} User ec2-user IdentityFile ~/.ssh/{your-ssh-key.pem} Host tester ForwardAgent yes HostName {Local IP Address of RedTeam Instance} User ec2-user IdentityFile ~/.ssh/{your-ssh-key.pem} ProxyCommand ssh bastion nc %h %p ServerAliveInterval 240

    これで、$ ssh テスターを呼び出しターゲット EC2 インスタンスにログインできます。踏み台ホストを介して EC2 インスタンスの設定や接続を行う場合の詳細情報については、「https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/」を参照してください。

  5. テスター EC2 インスタンスに接続したら guardduty_tester.sh を実行して、テスターとターゲット EC2 インスタンス間のインタラクションの開始、攻撃のシミュレート、GuardDuty の結果を生成します。