カスタム脅威リストを作成してAmazon GuardDutyのS3 Protectionを検知させてみた – Discovery:S3/MaliciousIPCaller.Custom編
こんにちは!AWS事業本部カスタマーソリューション部のこーへいです。
今回は自分のパソコンIPアドレスを含めたカスタム脅威リストを作成し、S3のAPI操作をすることでAmazon GuardDuty(以下GuardDuty)のS3 Protectionの「Discovery:S3/MaliciousIPCaller.Custom」を検知してみました。
詳細なS3 Protectionについての説明や、S3バケットをパブリック公開して検知を上げる手順については上記記事をご参照ください。
S3 Protectionとは
GuardDuty は AWS CloudTrail 管理イベントと CloudTrail S3 データイベントを分析して Amazon S3 リソースに対する脅威をモニタリングします
Amazon GuardDuty における Amazon S3 Protectionより引用です。
保護プラン(GuradDutyのオプション機能)のS3 Protectionを有効化することにより、以下のような場合に検知できるようになります。
- 特定の場所(IP、マシン)からAPIを叩かれた場合(S3データイベント)
- データの削除や書き込みといったデータを操作する危険なAPIを叩かれた場合(S3データイベント)
- パブリック公開など危険なS3の設定が行われた場合(管理イベント)
2023年8月現在ではS3 Protectionにて20種類の検出結果タイプが存在しますが、個人的見解でグルーピングするとこのようになりました(一覧はこちら)。
- 特定の場所(IP、マシン)からAPIを叩かれた場合の検出結果
- Discovery:S3/MaliciousIPCaller
- Discovery:S3/MaliciousIPCaller.Custom
- Discovery:S3/TorIPCaller
- Exfiltration:S3/MaliciousIPCaller
- Impact:S3/MaliciousIPCaller
- PenTest:S3/KaliLinux
- PenTest:S3/ParrotLinux
- PenTest:S3/PentooLinux
- UnauthorizedAccess:S3/MaliciousIPCaller.Custom
- UnauthorizedAccess:S3/TorIPCaller
- 危険なAPIを叩かれた場合の検出結果
- Discovery:S3/AnomalousBehavior
- Exfiltration:S3/AnomalousBehavior
- Impact:S3/AnomalousBehavior.Delete
- Impact:S3/AnomalousBehavior.Permission
- Impact:S3/AnomalousBehavior.Write
- S3が危ない設定に変更された場合の検出結果
- Policy:S3/AccountBlockPublicAccessDisabled
- Policy:S3/BucketAnonymousAccessGranted
- Policy:S3/BucketBlockPublicAccessDisabled
- Policy:S3/BucketPublicAccessGranted
- Stealth:S3/ServerAccessLoggingDisabled
ちなみに有効化はGuardDutyから可能です。
カスタム脅威リスト作成
上記記事の「脅威リストの登録」を参照し、作成することができます。
作成手順は下記の通りです。
- CMANにて自分のIPアドレスを確認する
- IPアドレスを記載した「UntrustIP.txt」を作成する
- 適当なS3バケット(なければ作成)に「UntrustIP.txt」をアップロードする
- GuardDutyからカスタム脅威リストの設定を行う
設定が完了すれば下記の通りに設定されます、忘れず脅威リストの有効化を行っておきましょう。
検知させましょう
脅威リストの作成・有効化を行った後は、そのままS3を開いて適当なバケットをクリックしてみましょう
しばらく待っているとGuardDutyで検知が上がりました。
検知内容の詳細を確認すると、先ほど作成したカスタム脅威リストに引っかかって、検知されたことがわかります。
修復手順を把握する
侵害された S3 バケットの修復を参照にして、GuardDutyの脅威対応を実施してください。
基本的には以下の流れとなります。
- 検知内容を確認し、対象のS3リソース・APIコール・APIコール実行者(IAMプリンシパル)を特定する
- 認証情報の侵害(不正アクセス)されていないか確認、されている場合は侵害された AWS 認証情報の修復を確認する
- IAMプリンシパルやS3リソースのアクセス権限を確認し、必要性を吟味する。不必要にアクセス権限が大きい場合は必ず最小権限に変更しましょう。
まとめ
GuardDutyはAWSアカウントの保護に大変役に立つAWSマネージドサービスですが検知内容を事前に把握していなければ、実際に検知が上がった際も適切に素早く対応できないかもしれません。
そういった事態を防ぐためには、実際に触ってみることでGuardDutyの勘所を養っておきましょう。