【GuardDuty運用】Discovery:IAMUser/AnomalousBehavior の抑制を検討・適用するモデルケース
GuardDuty 抑制ルールは「条件に一致した新規 検出結果」を自動アーカイブする機能です。 GuardDutyの運用、特に過検知の抑制で役立ちます。
今回は抑制ルールの策定のモデルケースを1つ紹介します。
例として、私が「よく過検知としてあがってくるな」と感じている Discovery:IAMUser/AnomalousBehavior
検知を抑制していきます。
抑制に向けてのプロセスを記載します。
プロセス全体像
以下のようなプロセスを実施します。
- 抑制したい背景
- 抑制する検出結果タイプの把握
- リスクの把握
- 見逃しを減らす対策
- 抑制対応
1. 抑制したい背景
GuardDuty で Discovery:IAMUser/AnomalousBehavior
(重要度: 低) が よく検知、通知されている状況です。
(私の関わっている環境の話ですが) 本検知は過検知が多くなりがちです。 主に 「出張先など、いつもと違う場所(IP)からのAWSアクセス」 を理由に検知されています。
GuardDutyインシデント対応の日々の運用において、 ノイズになっているため抑制を検討したいです。
2. 抑制する検出結果タイプの把握
対象の検出結果タイプは、以下 公式ドキュメントに記載があります。
Discovery:IAMUser/AnomalousBehavior
検知は 簡単にいうと 「 攻撃者が情報収集している可能性があります 」という メッセージになります。 リクエストされたAPIや、リクエストを行ったユーザー・場所 などから、 GuardDutyの機械学習モデルが異常と判断したものが対象です。
3. リスクの把握
この検知が 過検知でない 場合は、 攻撃者は 「侵害できるEC2インスタンスが無いか」や 「IAM権限昇格できないか」などを調査していると予測できます。
そもそも、そのような調査ができている、ということで 既に認証情報が侵害されている 可能性もあるため、 早急に対応が必要です。
もし、この検出結果タイプを抑制した場合は、 上記に示したようなリスクを見逃す可能性が伴います。
4. 見逃しを減らす対策
攻撃者の動きを見逃すことは、なるべく減らしたいです。 考えられる対策を以下に記載します。
対策1: 他の AnomalousBehavior 検知でカバーできないか
他にも様々な AnomalousBehavior 検知が GuardDutyで対応しています。 簡単に表にまとめました。
検知タイプ | 重要度 | 観測する動き | APIの例 |
---|---|---|---|
CredentialAccess:IAMUser/AnomalousBehavior | 中 | 認証情報(パスワードやアクセスキー)収集する動き | GetPasswordData、GetSecretValue、GenerateDbAuthToken |
DefenseEvasion:IAMUser/AnomalousBehavior | 中 | 痕跡(ログ)を隠す動き | DeleteFlowLogs、DisableAlarmActions、StopLogging |
Exfiltration:IAMUser/AnomalousBehavior | 高 | データ漏えいに関連する動き | PutBucketReplication、CreateSnapshot、 RestoreDBInstanceFromDBSnapshot |
Impact:IAMUser/AnomalousBehavior | 高 | 運用を妨害するような動き | DeleteSecurityGroup、UpdateUser、PutBucketPolicy |
InitialAccess:IAMUser/AnomalousBehavior | 中 | 環境へのアクセスを確立しようとする動き | GetFederationToken、StartSession、GetAuthorizationToken |
Persistence:IAMUser/AnomalousBehavior | 中 | 環境へのアクセスを維持しようとする動き | CreateAccessKey、ImportKeyPair、ModifyInstanceAttribute |
PrivilegeEscalation:IAMUser/AnomalousBehavior | 中 | 権限昇格に関連する動き | AssociateIamInstanceProfile、AddUserToGroup、PutUserPolicy |
「攻撃されていること、攻撃しようと準備していること」の検知は、 Discovery 以外にも多く存在します。
今回は「それらで大体はカバーできるだろう」と判断して、 Discovery:IAMUser/AnomalousBehavior
を抑制していきます。
対策2: なるべく過検知のみに絞れないか
GuardDutyの抑制ルールは フィルターを多く組み合わせて、極力 過検知のみに絞ること意識して作りましょう 。
以下フィルター作成の例です。
- 検出結果タイプ(type):
Discovery:IAMUser/AnomalousBehavior
- 重要度(severity):
Low
- API発信国(API caller country):
Japan
環境次第では送信元IPアドレス(API caller IPv4 address) あたりも使えるでしょう。
[余談] 本当はユーザー名(Username)を IAM Identity Center のユーザー AWSReservedSSO_...
に絞りたかったです。 しかしワイルドカードはフィルタには使えないことが分かったので断念しました。
- Filters do not accept wild cards.
5. 抑制対応
1〜4 のステップをもって、 抑制の可否を判断します。
抑制すると決まれば、早速適用しましょう。
GuardDutyコンソールの検出結果一覧ページから [検出結果の抑制] を選択します。
名前と説明を入力して [保存] を選択します。
以上で設定は完了です。 今後はフィルターにマッチする Discovery:IAMUser/AnomalousBehavior
は検知・通知されないようになりました。
おわりに
以上、 GuardDuty抑制対応の 1モデルケースでした。 オオカミ少年になっているような検知があれば、 ぜひ抑制ルールを活用していきましょう。
また、クラスメソッドではGuardDuty運用に役立つサービスを クラスメソッドメンバーズ向けに展開しています。 ぜひ、以下ページから参照ください。