[アップデート]Amazon GuardDutyが漏洩したAmazon ECS認証情報の不正利用を検出できるようになりました
こんにちは、臼田です。
みなさん、AWSで脅威検出してますか?(挨拶
今回はAmazon GuardDutyのFindingsであるUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSおよびUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.InsideAWSがECSにも対応したのでこれを検証していきます。
概要
いつものようにGuardDutyの新しいFindingsアップデートとして下記が届きました。
{
"version": "1",
"type": "NEW_FINDINGS",
"findingDetails": [
{
"findingType": "UnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWS",
"link": "https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-resourcecredentialexfiltrationoutsideaws",
"findingDescription": "This finding informs you that a host outside of AWS has attempted to run AWS API operations using temporary AWS credentials that were created on an ECS resource in your AWS environment."
},
{
"findingType": "UnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.InsideAWS",
"link": "https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-resourcecredentialexfiltrationinsideaws",
"findingDescription": "This finding informs you that a host within AWS has attempted to run AWS API operations using temporary AWS credentials that were created on an ECS resource in your AWS environment."
}
]
}
NEW_FINDINGSと書いてあるのですが、じつはアップデートなんです。(なんでや
前回この検出タイプはAWS Lambdaの認証情報が漏洩して外部から利用された際に検出するものとして実装されました。
これでEC2とLambdaの認証情報に加えて、ECSの認証情報が漏洩しても検出できるようになりました。
OutsideAWSがAWS外から実行された場合の検出で、InsideAWSが別のAWSアカウントで実行された場合の検出です。
やってみた
今回はUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSをECS on Fargateで検出させます。おそらくECS on EC2では問題なく検出できるでしょうから、Fargateで検出できれば御の字というわけです。
まずは適当にFargateでタスクを実行し、ECS Execでアクセスして適当にクレデンシャルを取得します。そしてどこかAWS外の環境からこれを使ってみます。詳細は省略。
少し待つとAmazon GuardDutyが検出します。やったね。

ちゃんとUnauthorizedAccess:IAMUser/ResourceCredentialExfiltration.OutsideAWSとして検出されました。外部IPから実行されたことも概要から確認できますね。
詳細を見ていくと、影響を受けるリソースとしてECSタスクロールの情報があります。そしてLaunch typeFARGATEとあり、ちゃんとFargate環境で検出できることが確認できました!

他にも、外部から実行されたAPIとしてListUsersがあげられたり、実行元の詳細情報がでてきます。

これを軸に、さらにAWS CloudTrailログなどを辿ってどのような活動をされたか調査していけばよいですね。
追加調査
と、いつもならここで終わりなのですが、つい最近Amazon GuardDutyではプレビュー機能ですがAmazon GuardDuty Investigation機能が追加されました!
この機能は見つけたFindingsをAIで追加調査できる機能です!今ならプレビューなので無料で使えます!
というわけで、どこまで調査できるのか試してみました。
まずはInvestigationの機能からFinding IDを指定して実行します。しばらくすると(今回は6分)調査が完了するので見ていきましょう。
まず、リスクレベルはHighとして検出されました。実際に認証情報が漏洩していますから、わからなくないですね。

サマリーのテキストは少し長いテキストですが、調査結果が要約されています。その中では
- CloudTrailのログから2つのIPでの実行結果があること
- 1つは東京リージョンからで、もう1つは外から実行されUAがmacOSであること
- 外部からは
iam:ListUsersとs3:ListBucketsが実行されたがいずれも失敗していること - AWS内での実行から3-4分後に外部から実行されていること
- 関連するアクセスキー、クラスター、ロール、セッション、攻撃者のIPアドレスで発生から前後7日の活動を調査したがほかに関連する事象はないこと
などが説明されています。
読みづらいですが結構ちゃんと調べてくれているのがわかりますね。起きた事象の詳細や、関連する攻撃者の行動がすでに調査済みです。素晴らしい!
その下にはMITRE ATT&CKへのマッピングした情報があり、

どのように対処していくかのレコメンデーションがあります。

調査と対応が捗りますね。
まとめ
Amazon GuardDutyでECSでの認証情報漏洩の検出に対応しました。
特にFargateに対応してくれたのが嬉しいですね!
さらに、Investigation機能が強力であることも確認できました。今後も積極的に活用したいですね。









