GuardDutyが新しくIAMの権限昇格を検知できるようになったので試してみた

GuardDutyで新しくIAMの権限昇格を検知できるようになりました。まだGuardDutyを有効化していないアカウントは即刻有効化してください。早速検知出来ることを試してみました。
2019.05.19

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

こんにちは、臼田です。

皆さん、GuardDuty使ってますか?

AWS環境における最強の脅威検知サービスであるGuardDutyに新しく2つの検知タイプが追加されました。

Amazon GuardDuty Adds Two New Threat Detections

ちなみにGuardDuty自体について詳しく知りたい場合は下記を参照してください。

【初心者向け】AWSの脅威検知サービスAmazon GuardDutyのよく分かる解説と情報まとめ

新しく追加された内容について確認します。

  • Recon:EC2/PortProbeEMRUnprotectedPort
  • PrivilegeEscalation:IAMUser/AdministrativePermissions

前者は元々あるReconシリーズの追加で、EMR関連のポート(8088等)に対するプローブ(ポートが空いているかの調査)があった場合に検知され、重要度: 高で通知されます。

後者は新しいシリーズとして追加されたPrivilegeEscalationで、AdministrativePermissionsはIAM UserやRoleが自分自身にAdminのような特権を割り当てようとした/割り当てに成功した場合に検知されます。割り当てに失敗した場合は低、成功した場合は中の重要度で通知されます。

後者は新しいシリーズの検知タイプであるため、試してみました。

AdministrativePermissionsの検知やってみた

権限昇格に失敗した場合

まず、対象はIAM UserかRoleとのことで今回は新規にIAM Roleを作成しました。そしてIAMとEC2のReadOnly権限のみ割り当てて、念の為信頼元を自分のAWSアカウントのみにしました。

あんまり真似するのは良くないので細かい説明やスクリーンショットは省きます。十分に気をつけてやっていますが、良い子は真似しないでね★ミ

それではSwitch Roleした後、コンソールからAdministratorAccessポリシー等をアタッチしようとしてみます。

当然弾かれます。しばらく待ってみるとGuardDutyから通知が来ました。

期待と違ってPersistence:IAMUser/UserPermissionsが検知されました。こちらは該当のプリンシパル(ユーザ等)が通常Policy等を変更したことがなかったのに変更した(APIコールした)場合に検知される検知タイプです。こちらの重要度は中となっていて、期待していたPrivilegeEscalation:IAMUser/AdministrativePermissionsの重要度は失敗時は低であるため、こちらのほうが優先された可能性が考えられます。(単純な評価順序の影響かもしれませんが)

何れにせよ適切に検知できているのでよしとします。あんまり繰り返すとGuardDutyに学習されて検知できない可能性もあるので深くは追求しません。

権限昇格に成功した場合

今度はIAM RoleにIAMFullAccessのポリシーを追加して同様の操作をしてみます。しばらく待つと通知が来ました。

今度は期待通りPrivilegeEscalation:IAMUser/AdministrativePermissionsが検知されました。権限昇格に成功しているため、重要度も中(左側のアイコンの色が黄色)で検知されています。

まとめ

GuardDutyがIAMの権限昇格を検知できるようになりました。自分自身の権限を昇格する動作は、殆どの場合IAMでは許可すべきではない動作であるためGuardDutyで検知してくれると嬉しいですね。

しかしながら、この操作は上記でやっているようにIAMの変更権限がある場合に実行できてしまうので、そもそもそのような権限管理を行うことが問題であることはよく認識し、適切な権限管理を行いましょう。

もし万が一GuardDutyを有効化していないアカウントやリージョンが残っていたら即刻有効化してくださいね★ミ