Amazon GuardDuty RDS Protection の具体的な検出タイプを調査しました

Amazon GuardDuty RDS Protection でどんなアクティビティが検出されるのか、検出タイプを読み解きます
2023.04.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コーヒーが好きな emi です。

2023 年 3 月 16 日、Amazon GuardDuty の新たな検出機能として、GuardDuty RDS Protection が一般公開されました。
Amazon Aurora のログインアクティビティをモニタリングし異常なアクティビティを検出する機能ですが、具体的にどのような検出タイプが存在するのか調査しました。

Amazon GuardDuty とは(おさらい)

Amazon GuardDuty は、AWS アカウント内の異常なアクティビティを自動的に検出するマネージドなセキュリティモニタリングサービスです。
様々なログを GuardDuty 側で自動収集し、セキュリティインシデントの迅速な検知と対応を支援します。
利用者側でログを別途有効化する必要はなく、GuardDuty を有効化するのと同時に自動で GuardDuty 側で独立してログが収集されます。

悪意のある IP アドレスやドメインのリストなどの脅威インテリジェンスフィードおよび機械学習を使用して、AWS 環境内での予期しない、未許可で悪意のあるアクティビティを識別します。

脅威インテリジェンスフィードというのはインターネット上で収集された脅威に関する情報を集めたデータベースやサービスのことで、新しい脅威や攻撃方法、マルウェアの詳細、攻撃者の振る舞いなどの情報が含まれています。

GuardDuty RDS Protection とは

GuardDuty RDS Protection は、Aurora MySQL と Aurora PostgreSQL に対するログインアクティビティを監視し、不審なログイン試行を検知する機能です。

GuardDuty RDS Protection を有効化するだけで利用開始でき、追加のリソースの作成等は不要です。
データベースのパフォーマンスに影響を与えません。30 日間は無料で試用することができます。

以下の場合、通常のログイン動作のベースラインを設定するため GuardDuty 側の学習期間が最大 2 週間必要です。最大 2 週間は異常なログインの結果が検出されない場合があります。

  • 初めて GuardDuty RDS Protection を有効にする場合
  • 新しく作成されたデータベース インスタンスがある場合

補足

  • 現時点で Aurora MySQL と Aurora PostgreSQL のみの対応となっており、他の RDS DB エンジンは未対応
  • クエリ発行そのもの(不審なクエリ発行など)を検知する機能ではない

GuardDuty RDS Protection のドキュメント

ドキュメントはこちらです。日本語だと 2023/4/25 時点でプレビュー版の記載になっておりますので、英語でご参照ください。

サポートされているデータベース

2023/4/25 時点で Aurora のみ サポートされており、RDS の他のエンジンバージョンは未サポートです。
DB エンジンバージョンがサポート対象であれば、Aurora クラスターも Aurora Serverless も GuardDuty RDS Protection で検知できます。

Amazon Aurora DB エンジン サポートされているエンジンのバージョン
※ 2023/4/25 時点
Aurora MySQL 2.10.2 以降
3.2.1以降
Aurora PostgreSQL 10.17以降
11.12以降
12.7以降
13.3以降
14.3以降

未サポートリージョン

以下のリージョンは 2023/4/25 時点で未対応です。

  • Asia Pacific (Hyderabad)
  • Europe (Spain)
  • Europe (Zurich)
  • Middle East (UAE)
  • Europe (Milan)

GuardDuty RDS Protection の検出タイプ(Finding types)

実際の検知結果をお伝えできるとよいのですが、なかなか検知させるのが難しいため、ドキュメントを読み解いてみます。

検出タイプ 概要
1 CredentialAccess:RDS/AnomalousBehavior.SuccessfulLogin クレデンシャルアクセス 異常動作 ログイン成功
2 CredentialAccess:RDS/AnomalousBehavior.FailedLogin クレデンシャルアクセス 異常動作 ログイン失敗
3 CredentialAccess:RDS/AnomalousBehavior.SuccessfulBruteForce クレデンシャルアクセス 異常動作 ブルートフォース成功
4 CredentialAccess:RDS/MaliciousIPCaller.SuccessfulLogin クレデンシャルアクセス 悪意のある IP 発信者 ログイン成功
5 CredentialAccess:RDS/MaliciousIPCaller.FailedLogin クレデンシャルアクセス 悪意のある IP 発信者 ログイン失敗
6 Discovery:RDS/MaliciousIPCaller 検出 悪意のある IP 発信者
7 CredentialAccess:RDS/TorIPCaller.SuccessfulLogin クレデンシャルアクセス Tor IP 発信者 ログイン成功
8 CredentialAccess:RDS/TorIPCaller.FailedLogin クレデンシャルアクセス Tor IP 発信者 ログイン失敗
9 Discovery:RDS/TorIPCaller 検出 Tor IP 発信者

1. CredentialAccess:RDS/AnomalousBehavior.SuccessfulLogin(クレデンシャルアクセス 異常動作 ログイン成功)

ユーザーが異常な方法で RDS データベースに正常にログインしました。

デフォルトの重大度: 変数

検出結果に関連する異常な動作に応じて、デフォルトの重大度は低、中、高のいずれかになります。

  • 低– この検出結果に関連付けられたユーザーがプライベート IP アドレスからログインした場合。
  • 中– この検出結果に関連付けられたユーザーがパブリック IP アドレスからログインした場合。
  • 高– パブリック IP アドレスからログイン試行失敗の一貫したパターンの後ログインが成功しており、過度に寛容なアクセスポリシーが示唆される場合。

概要

CredentialAccess とは、コンピューターシステム内の資格情報(IDとパスワードなど)に不正にアクセスすることを指します。

この検出結果は、Aurora データベースで今までログインしたことのないユーザーが初めてデータベースにログイン成功した可能性を示唆しています。
一般的なシナリオは、通常アプリケーションプログラムによってアクセスされるデータベースに、内部のユーザーがログインしている状態です。
Aurora データベースのロールが侵害され、悪意のあるアクターによってアクセスされた可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースユーザーのパスワードを変更する
  • 異常なユーザーによって実行されたアクティビティの利用可能な監査ログを確認する

重大度が中および高の場合、データベースへのアクセス許可が過度に寛容である可能性があります。
以下の対応を実施してください。

  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

2. CredentialAccess:RDS/AnomalousBehavior.FailedLogin(クレデンシャルアクセス 異常動作 ログイン失敗)

RDS データベースで、異常なログイン試行の失敗が 1 回以上観察されました。

デフォルトの重大度: 低

概要

この検出結果は、Aurora データベースで異常なログイン試行が行われ、失敗した可能性を示唆しています。
パブリック IP アドレスからログイン試行が行われている場合、Aurora データベースが悪意のあるアクターによるブルートフォース攻撃の対象になっている可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

3. CredentialAccess:RDS/AnomalousBehavior.SuccessfulBruteForce(クレデンシャルアクセス 異常動作 ブルートフォース成功)

ユーザーは、異常なログイン試行の失敗の一貫したパターンの後、異常な方法でパブリック IP アドレスから RDS データベースに正常にログインしました。

デフォルトの重大度: 高

概要

この検出結果は、Aurora データベースでブルートフォース攻撃の成功を示す異常なログイン成功が観察されたことを通知しています。

ブルートフォース攻撃(総当たり攻撃)とは、考えうるパスワードのパターン全てを入力するという、単純な攻撃です。

この検出結果では、異常なログイン成功の前に、異常なログイン試行の失敗の一貫したパターンが観察されました。
これは、Aurora データベースに関連付けられているユーザーとパスワードが侵害され、悪意のあるアクターによってアクセスされた可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースユーザーのパスワードを変更する
  • 異常なユーザーによって実行されたアクティビティの利用可能な監査ログを確認する
  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

4. CredentialAccess:RDS/MaliciousIPCaller.SuccessfulLogin(クレデンシャルアクセス 悪意のある IP 発信者 ログイン成功)

ユーザーが既知の悪意のある IP アドレスから RDS データベースに正常にログインしました。

デフォルトの重大度: 高

概要

この検出結果は、既知の悪意のあるアクティビティに関連付けられている IP アドレスから Aurora データベースへのログインが成功したことを通知します。
Aurora データベースに関連付けられているユーザーとパスワードが侵害され、悪意のあるアクターによってアクセスされた可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースユーザーのパスワードを変更する
  • 異常なユーザーによって実行されたアクティビティの利用可能な監査ログを確認する
  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

5. CredentialAccess:RDS/MaliciousIPCaller.FailedLogin(クレデンシャルアクセス 悪意のある IP 発信者 ログイン失敗)

悪意のある IP アドレスから RDS データベースへのログインに失敗しました。

デフォルトの重大度: 中

概要

この検出結果は、既知の悪意のあるアクティビティに関連付けられている IP アドレスから Aurora データベースへのログイン試行が行われましたが、正しいユーザー名またはパスワードが入力されなかったことを通知します。
悪意のあるアクターが Aurora データベースを侵害しようとしている可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

6. Discovery:RDS/MaliciousIPCaller(検出 悪意のある IP 発信者)

悪意のある IP アドレスが RDS データベースを探査しましたが、認証は試みられませんでした。

デフォルトの重大度: 中

概要

この検出結果は、既知の悪意のあるアクティビティに関連付けられた IP アドレスが Aurora データベースをプローブ(探査)したことを通知しますが、ログイン試行は行われませんでした。
悪意のあるアクターが、パブリックにアクセス可能なインフラストラクチャをスキャンしようとしていることを示しています。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

7. CredentialAccess:RDS/TorIPCaller.SuccessfulLogin(クレデンシャルアクセス Tor IP 発信者 ログイン成功)

ユーザーが、Tor 出口ノードの IP アドレスから RDS データベースに正常にログインしました。

デフォルトの重大度: 高

概要

この検出結果は、Tor 出口ノードの IP アドレスから、ユーザーが Aurora データベースに正常にログインしたことを示しています。

Tor(トア、The Onion Router)は、匿名通信を可能にするソフトウェアです。トラフィックを複数の中間ノードを経由してルーティングすることで、通信元を特定することを困難にします。
Tor 出口ノードの IP アドレスとは、Tor ネットワークを経由して最終的に通信相手となる Web サーバーや他のインターネットサービスの IP アドレスを指します。

Tor の危険性や仕組みついてはパロアルトネットワークス様の記事が大変参考になります。

Tor 出口ノード IP アドレスは以下のサイトで確認できます。

悪意のあるユーザーが本当の IP アドレスを隠す目的で Tor を使用し、Aurora データベースへ不正にアクセスしている可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースユーザーのパスワードを変更する
  • 異常なユーザーによって実行されたアクティビティの利用可能な監査ログを確認する
  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

8. CredentialAccess:RDS/TorIPCaller.FailedLogin(クレデンシャルアクセス Tor IP 発信者 ログイン失敗)

Tor IP アドレスが RDS データベースへのログインに失敗しました。

デフォルトの重大度: 中

概要

この検出結果は、Tor 出口ノード IP アドレスから Aurora データベースへのログイン試行が行われましたが、正しいユーザー名またはパスワードが入力されなかったことを通知します。
悪意のあるユーザーが本当の IP アドレスを隠す目的で Tor を使用し、Aurora データベースへ不正にアクセスしようとしている可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

9. Discovery:RDS/TorIPCaller(検出 Tor IP 発信者)

Tor 出口ノードの IP アドレスがアカウントの RDS データベースをプローブしましたが、認証の試行は行われませんでした。

デフォルトの重大度: 中

概要

この検出結果は、Tor 出口ノードの IP アドレスが Aurora データベースをプローブ(探査)したことを通知しますが、ログイン試行は行われませんでした。 悪意のあるアクターが、パブリックにアクセス可能なインフラストラクチャをスキャンしようとしていることを示しています。

悪意のあるユーザーが本当の IP アドレスを隠す目的で Tor を使用し、Aurora データベースへ不正にアクセスしようとしている可能性があります。

修復方法

このアクティビティが予期しないものである場合は以下の対応を実施してください。

  • データベースを VPC 内のプライベートサブネットに配置する
  • 必要なソースからのトラフィックのみを許可するようにセキュリティグループルールを制限する

侵害されたデータベースの修復

各検出結果に修復方法を記載していますが、修復方法の詳細は以下のドキュメントに記載されていますので参照してください。

検出結果の詳細について GuardDuty RDS Protection に関わる部分

検出結果の詳細について、GuardDuty RDS Protection に関する部分を確認します。

リソース

  • Resource affected(影響を受けるリソース)
    • GuardDuty で通知の対象となった AWS リソースに関する詳細を示します。利用できる情報は、リソースタイプとアクションタイプによって異なります。
  • Resource role(リソースロール)
    • GuardDuty で通知の対象となった AWS リソースが「TARGET(疑わしいアクティビティをされた)」もしくは「ACTOR(疑わしいアクティビティをした)」のどちらであったか示します。
  • リソースタイプ
    • GuardDuty RDS Protection で検出するリソースタイプは RDSDBInstance です。

RDSDBInstance の詳細

項目 説明
インスタンス ID GuardDuty の結果に関与した DB インスタンス識別子
Engine データベースエンジン名。Aurora MySQL-Compatible もしくは Aurora PostgreSQL-Compatible
Engine version データベースエンジンのバージョン
Database cluster ID データベースインスタンス ID を含むデータベースクラスターの識別子
Database instance ARN データベースインスタンスの ARN

参考:リソース

RDS データベース (DB) ユーザーの詳細

GuardDuty RDS Protection では、侵害された可能性のあるデータベースのユーザーと認証の詳細を以下のように提供します。

項目 説明
User 異常なログイン試行に使用されたユーザー名
Application 異常なログイン試行に使用されたアプリケーション名
Database 異常なログイン試行に関与したデータベースインスタンスの名前
SSL ネットワークに使用された Secure Socket Layer (SSL) のバージョン
Auth method 検出に関与したユーザーが使用した認証方法

参考:RDS データベース (DB) ユーザーの詳細

アクション

GuardDuty RDS Protection では以下のアクションが通知されます。

  • RDS_LOGIN_ATTEMPT:侵害された可能性のあるデータベースに、リモート IP アドレスからログインが試行されたことを示します。
    • IP アドレス:疑わしい可能性のあるログイン試行に使用されたリモート IP アドレス

参考:アクション

異常な行動

AnomalousBehavior 検出タイプは、その結果が GuardDuty 異常検出機械学習 (ML) モデルによって生成されたことを示します。

RDS ログインアクティビティベースの異常

このセクションでは、通常とは異なるアクターによって実行されたログイン試行回数の詳細が示され、ログイン試行の結果によってグループ化されます。
GuardDuty RDS Protection での検出タイプは以下の 3 種類です。

ログイン試行の結果 説明
successLoginCount 異常なアクターによって DB インスタンスに対して確立された成功した接続 (ログイン属性の正しい組み合わせ) の合計を表します。ログイン属性には、「ユーザー名」「パスワード」「データベース名」が含まれます。
failedLoginCount DB インスタンスへの接続を確立するために行われた失敗した (失敗した) ログイン試行の合計を表します。これは「ユーザー名」「パスワード」「データベース名」など、ログインに必要な情報の 1 つ以上の属性が正しくなかったことを示しています。
incompleteConnectionCount このカウンターは、成功または失敗として分類できない接続試行の数を表します。これらの接続は、データベースが応答を返す前に閉じられます。たとえば、データベース ポートが接続されているが情報がデータベースに送信されない場合のポート スキャン、または成功または失敗した試行でログインが完了する前に接続が中止された場合などです。

参考:RDS ログインアクティビティベースの異常

おわりに

Amazon GuardDuty RDS Protection の検出タイプについて詳細を読み解いてきました。
検証で検知できましたら続報をお知らせします。

参考