こんにちは。AWS CLIが好きな福島です。
- はじめに
- 参考
- GuardDutyとは
- IAMの検出タイプについて
- 概要
- 全体
- 1. AnomalousBehavior(検出識別子)
- 1.1. Exfiltration:IAMUser/AnomalousBehavior
- 1.2. Impact:IAMUser/AnomalousBehavior
- 1.3. CredentialAccess:IAMUser/AnomalousBehavior
- 1.4. DefenseEvasion:IAMUser/AnomalousBehavior
- 1.5. InitialAccess:IAMUser/AnomalousBehavior
- 1.6. Persistence:IAMUser/AnomalousBehavior
- 1.7. PrivilegeEscalation:IAMUser/AnomalousBehavior
- 1.8. Discovery:IAMUser/AnomalousBehavior
- 2. PenTest(種類)
- 3. Recon(種類)
- 4. UnauthorizedAccess(種類)
- 5. その他
- アラートの対応方法
- 終わりに
はじめに
今回は、以下のブログに続きGuardDutyのIAMの検出タイプについて、調査したため、ブログに記載いたします。
参考
GuardDuty IAM 検出結果タイプ - Amazon GuardDuty
GuardDutyとは
GuardDutyとは、脅威検出サービスと呼ばれており、以下のリソースに対する脅威を検出してくれます。
- EC2
- IAM
- S3
- Kubernetes
また、脅威を検出するために以下のログを用います。
- AWS CloudTrail イベントログ
- AWS CloudTrail 管理イベント
- S3 の AWS CloudTrail データイベント
- Kubernetes 監査ログ
- VPC フローログ
- DNS ログ
IAMの検出タイプについて
概要
まず、GuardDutyの検出タイプは以下の通りの記載となります。
種類:サービス名/検出識別子
※上記はドキュメントに記載がある訳ではなく、私が勝手につけた名前となります。
以下の例の場合、種類がCredentialAccessでサービス名がIAMUser、検出識別子がAnomalousBehaviorとなります。
CredentialAccess:IAMUser/AnomalousBehavior
また、今回はIAMの検出タイプに関する内容をまとめるため、サービス名は全てIAMUserとなりますが、 サービス名がIAMUserの中でも、種類は以下の通り、複数存在いたします。
- CredentialAccess
- DefenseEvasion
- Discovery
- Exfiltration
- Impact
- InitialAccess
- PenTest
- Persistence
- Policy
- PrivilegeEscalation
- Recon
- Stealth
- UnauthorizedAccess
今回もEC2と同様に種類ごとに各検出タイプの詳細を記載しようと考えておりましたが、記載しづらかったため、以下の通り分類いたしました。
- AnomalousBehavior(検出識別子)
- PenTest(種類)
- Recon(種類)
- UnauthorizedAccess(種類)
- その他
全体
1. AnomalousBehavior(検出識別子)
AnomalousBehaviorは、GuardDuty の異常検出機械学習 (ML) モデルによって異常と判断されたAPIリクエストが検出されます。
検出タイプの概要は以下の通りとなりますが、APIによって検出タイプの種類が異なるため、以下に種類ごとに詳細を記載いたします。
※攻撃者の攻撃手法や戦術を分析して作成された「MITER ATT&CK(マイターアタック)」という概念が基になっているようです。
1.1. Exfiltration:IAMUser/AnomalousBehavior
攻撃者がデータを奪う際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。 また、管理イベントに分類されるAPIが対象で一般的にS3、スナップショット、データベースに関連しております。
- PutBucketReplication
- CreateSnapshot
- RestoreDBInstanceFromDBSnapshot
etc
1.2. Impact:IAMUser/AnomalousBehavior
攻撃者がユーザーのアカウント内のデータを操作、中断、破壊する際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。
- DeleteSecurityGroup
- UpdateUser
- PutBucketPolicy
etc
1.3. CredentialAccess:IAMUser/AnomalousBehavior
攻撃者がユーザー環境のパスワード、ユーザー名、およびアクセスキーを収集する際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。
- GetPasswordData
- GetSecretValue
- GenerateDbAuthToken
1.4. DefenseEvasion:IAMUser/AnomalousBehavior
攻撃者が攻撃の証跡を隠すために利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。 このカテゴリの API は削除、無効化、停止関連のオペレーションです 。
- DeleteFlowLogs
- DisableAlarmActions
- StopLogging
etc
1.5. InitialAccess:IAMUser/AnomalousBehavior
攻撃者が不正アクセスをする際に利用される際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。
- GetFederationToken
- StartSession
- GetAuthorizationToken
etc
1.6. Persistence:IAMUser/AnomalousBehavior
攻撃者がユーザーの環境へのアクセスを獲得し、そのアクセスを維持しようとする際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。
- CreateAccessKey
- ImportKeyPair
- ModifyInstanceAttribute
etc
1.7. PrivilegeEscalation:IAMUser/AnomalousBehavior
攻撃者が環境へのより高いレベルの許可を取得しようとする際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。
- AssociateIamInstanceProfile
- AddUserToGroup
- PutUserPolicy
etc
1.8. Discovery:IAMUser/AnomalousBehavior
攻撃者が攻撃対象を選定する際に利用される際に利用される以下のAPIがMLモデルにより異常と判断された場合に検出されます。
- DescribeInstances
- GetRolePolicy
- ListAccessKeys
etc
2. PenTest(種類)
EC2 インスタンスの脆弱性を特定してパッチを適用するために使う侵入テストツールが稼働するマシンからAPIコールがあったこと検出してくれます。
具体的には、Kali Linux、Parrot Security Linux 、Pentoo Linuxといった侵入テストツールとなり、 攻撃者がこれらのツールを利用して EC2 設定の脆弱性を探り出し攻撃するために利用するケースがあります。
- PenTest:IAMUser/KaliLinux
- PenTest:IAMUser/ParrotLinux
- PenTest:IAMUser/PentooLinux
3. Recon(種類)
悪意あるIPからリスト系などのAPIコールがあったことを検出してくれます。
後述するUnauthorizedAccessにもMaliciousIPCallerという検出識別子が存在しますが、 ReconのMaliciousIPCallerは、盗んだ認証情報を使い、より重要な認証情報を見つけたり、 入手した認証情報の機能を特定する際に利用されるリスト系などのAPI操作をした場合に検知されます。
- Recon:IAMUser/MaliciousIPCaller
- Recon:IAMUser/MaliciousIPCaller.Custom
- Recon:IAMUser/TorIPCaller
4. UnauthorizedAccess(種類)
EC2専用の認証情報が外部から利用されたや世界中でコンソールログインが複数確認されたおよび悪意あるIPからCREATE系などのAPIコールがあったことを検出してくれます。
- UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS
- UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS
- UnauthorizedAccess:IAMUser/ConsoleLoginSuccess.B
- UnauthorizedAccess:IAMUser/MaliciousIPCaller
- UnauthorizedAccess:IAMUser/MaliciousIPCaller.Custom
- UnauthorizedAccess:IAMUser/TorIPCaller
5. その他
ルートの認証情報が使われた、CloudTrailのログ記録がオフになったおよびアカウントのパスワードポリシーが弱化されたことを検出してくれます。
- Policy:IAMUser/RootCredentialUsage
- Stealth:IAMUser/CloudTrailLoggingDisabled
- Stealth:IAMUser/PasswordPolicyChange
アラートの対応方法
基本的にアラートを検出した場合は、クレデンシャルが漏洩している可能性があるため、検出したAPI操作が正当な操作であることを確認します。 正当でないことを確認した場合は、クレデンシャルの無効化を実施することになるかと存じます。
また、アラートが発生しない(クレデンシャルが不正利用されない)ように以下も大切です。
- クレデンシャルが漏洩した場合でも影響を抑えるためにMFAの設定を有効化しておく
- IAMの定期的な棚卸をする
- IAMの権限は最小権限にする
なお、EC2のIAMロールの一時キーが奪取され不正利用されるケースもあり得るかと存じますため、 EC2のIMDSv2のみを有効化するであったり、EC2を直接外部に公開するのではなく、WAFやELBを導入することも大切かと存じます。
終わりに
今回は、GuardDutyのIAMの検出タイプについてまとめてみました。
どなたかのお役に立てれば幸いです。