AWSが不正利用された件に対する対応(その2・AWS対応編)

AWS logo
AWS対応編です。AWSのサポートはスピーディかつ丁寧でホント助かるんですが、終盤はテンプレ対応にうんざりもしました






問題発生を知らせるメール

最初に来るメールはこんなのです(抜粋)。寿命縮みますね。


Hello,

Your AWS Account may be compromised! Please review this notice and take immediate action to secure and restore your account.
This account compromise poses a security risk to your account (including other account users), could lead to excessive charges from unauthorized activity, and violates the AWS Customer Agreement or other agreement with us governing your use of our service.

To protect your account from excessive charges, we have temporarily limited your ability to use some AWS services. To remove the limits, follow the instructions below.

If you do not stop the unauthorized usage and contact AWS within five (5) days, your account may be suspended in order to protect you from unauthorized usage and charges. To further protect your account from excessive charges, we may terminate any suspected unauthorized resources on your account. Please note that some resources may not be recoverable once terminated.

FOLLOW THE INSTRUCTIONS BELOW TO SECURE AND RESTORE YOUR ACCOUNT.
More detailed instructions for each item can be found in the “What do I do if I notice unauthorized activity in my AWS account?” guide in AWS public documentation: https://aws.amazon.com/premiumsupport/knowledge-center/potential-account-compromise/

DeepL翻訳

こんにちは、

お客様の AWS アカウントが侵害された可能性があります!この通知を確認し、アカウントを保護および復元するために直ちに対処してください。
このアカウントの侵害は、お客様のアカウント(他のアカウントユーザーを含む)にセキュリティリスクをもたらし、不正な活動による過剰な請求につながる可能性があり、AWS顧客契約またはお客様のサービスの使用を規定する当社とのその他の契約に違反します。

過剰な請求からお客様のアカウントを保護するため、AWSでは一部のAWSサービスの利用を一時的に制限しています。制限を解除するには、以下の手順に従ってください。

5日以内に不正利用を停止し、AWSにご連絡いただけない場合、不正利用および不正請求からお客様を保護するため、お客様のアカウントが一時停止されることがあります。過剰な請求からお客様のアカウントをさらに保護するため、お客様のアカウント上の不正使用の疑いのあるリソースを停止する場合があります。一部のリソースは、一度停止されると回復できない場合がありますのでご注意ください。

アカウントを保護および復元するには、以下の手順に従ってください。
各項目のより詳細な手順は、AWS 公開ドキュメントの “What do I do if I notice unauthorized activity in my AWS account?” ガイドに記載されています: https://aws.amazon.com/premiumsupport/knowledge-center/potential-account-compromise/



【重要】急ぎの場合は英語で問い合わせを!

AWSのサポートには日本語窓口もあります。日本語が出来る方が対応してくれますが、対応時間が平日の9時から18時に限られている上に、日本語で受け付けてAWSチームに問い合わせ、返ってきたメッセージを転送してくれるという手順を踏むためにとても時間が掛かります。


一方で英語のサポートは24時間対応してくれます。返信もやたら早い。先方からのメッセージはAWSサポート上で翻訳することも出来ますし、こちらから送るメッセージはDeepLが何とかしてくれます。一刻を争うときは少し背伸びしてでも英語でやり取りした方が良いです。というか絶対そうしましょう。不正アクセスされてるかもしれないのに土日を挟んで対応を待つとか無理です。



対応を促すメッセージ抜粋

最初に送られてくるメールにあるのはこんなやつ。


Step 1: Change your AWS root account password

Visit the account password change guide here: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_change-root.html

As a further precaution, we recommend changing your email password and passwords for other websites to help protect your AWS account from being at risk.

We also recommend enabling multi-factor authentication (MFA) on your AWS account for increased security. You can find more information here: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable.html

Step 2: Check your CloudTrail log for unsanctioned activity

Check your account for any unsanctioned activity such as creation of unauthorized IAM users and/or associated passwords (login profile), access keys, policies, roles or temporary security credentials by checking your CloudTrail log, and immediately delete them.

NOTE: Deleting IAM users may impact production workloads and should be done carefully.

Step 3: Review your AWS account for any unauthorized AWS usage

Check your account for any unauthorized usage such as EC2 instances, Lambda functions or EC2 Spot bids by logging into your AWS Management Console and reviewing each service page. You can also do this by checking the “Bills” page in the Billing console by going here: https://console.aws.amazon.com/billing/home#/bill

Please keep in mind that unauthorized usage can occur in any region and that your console displays only one region at a time. To switch regions, use the drop-down menu in the top-right corner of the console.

Step 4: [IMPORTANT] You must respond to the existing Support Case or create a new one to confirm completion of the steps above in order to restore access to your account, prevent suspension, and apply for a billing adjustment, if applicable.

DeepL翻訳

ステップ 1: AWS root アカウントのパスワードを変更する

アカウントのパスワード変更ガイドはこちら: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_change-root.html

さらなる予防措置として、AWSアカウントを危険から保護するために、メールパスワードと他のウェブサイトのパスワードを変更することをお勧めします。

また、セキュリティを強化するために、AWSアカウントで多要素認証(MFA)を有効にすることをお勧めします。より詳細な情報はこちらをご覧ください: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable.html

ステップ2: CloudTrailのログを確認する

CloudTrailのログを確認することで、未承認のIAMユーザーや関連するパスワード(ログインプロファイル)、アクセスキー、ポリシー、ロール、一時的なセキュリティ認証情報の作成など、承認されていないアクティビティがアカウントにないか確認し、直ちに削除する。

注意: IAM ユーザーの削除は、本番ワークロードに影響を与える可能性があるため、慎重に行う必要がある。

ステップ 3: AWSアカウントに不正なAWS利用がないか確認する

AWSマネジメントコンソールにログインし、各サービスのページを確認することで、EC2インスタンス、Lambda機能、EC2 Spot入札など、不正な利用がないかアカウントをチェックする。また、課金コンソールの “Bills “ページ(https://console.aws.amazon.com/billing/home#/bill)から確認することもできます。

不正使用はどのリージョンでも発生する可能性があり、コンソールには一度に1つのリージョンしか表示されないことに留意してください。地域を切り替えるには、コンソールの右上隅にあるドロップダウンメニューを使用します。

ステップ 4: [重要] アカウントへのアクセスを回復し、利用停止を防ぎ、該当する場合は請求調整を申請するためには、既存のサポートケースに回答するか、新しいサポートケースを作成して、上記の手順が完了したことを確認する必要があります。


  1. AWSアカウント(rootアカウント)のパスワードを変更する
  2. CloudTrailのログを確認する
  3. AWSアカウントに不正なAWS利用がないか確認する


この3ステップは今後も繰り返し求められることになります。幸いrootアカウントはMFAで堅く守られていたので被害はありませんでした。不幸中の幸い。


注意点としては、次の3点。


  1. CloudTrailのログはリージョンごとに記録されます。全リージョンチェックしましょう。
  2. コンソールログインに関するログはバージニア北部リージョンのCloudTrailに記録されます。必ずチェックしましょう。
  3. AWSの全サービス、全リージョンについてチェックしましょう。超大変ですが仕方ないです。


全リージョンをチェックするのがとにかく大変です。CloudTrailに残らないものもあるし。CloudTrailのほか、IAMアクセスアドバイザーやBilling(請求情報)もチェックして、怪しそうなものを見落とさないことが肝要です。今回の場合、最初はECSの不正利用に気付いていなくて(警告が最初に出たのがSESだったのでSESだけの問題かと思ってた)、Billing見て青ざめました。


対応が終わったら、それぞれ終わったよというの返します。簡単な英語でOKです。これが終わると次の聞き取りに進みます。



聞き取り調査

Hello,

To review your AWS account and remove the restrictions on it, we need more information from you. Respond to this case with answers to the following:

1. Which location are you trying to access the account from (country/city)?

2. Does anyone other than you have access to the account (for example, an IT developer)?

3. If you answered yes to the previous question, where is that person accessing the account from?

4. What AWS services and resources are you using on your account currently? To view details about your charges, see your Bills page:

https://console.aws.amazon.com/billing/home#/bill

5. Are all active Identity and Access Management (IAM) users and roles authorized by you?

To check IAM users, open the console here: https://console.aws.amazon.com/iam/home#users

To check IAM roles, open the console here: https://console.aws.amazon.com/iam/home#/roles

To check IAM policies, open the console here: https://console.aws.amazon.com/iam/home#/policies

6. Confirm that you have reset your account password. This is required before we can continue with this process. For information on how to reset your password, see the following documentation:

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys_retrieve.html#reset-root-password

After you respond with the requested information, I’ll forward it to our service team. The service team will give us more information about the next steps.

DeepL翻訳

こんにちは、

お客様のAWSアカウントをレビューし、制限を解除するために、お客様からの詳細な情報が必要です。以下の項目に回答してください:

1. どの場所(国/都市)からアカウントにアクセスしようとしていますか?

2. あなた以外の誰かがアカウントにアクセスできますか(例えば、IT開発者)?

3. 前の質問に「はい」と答えた場合、その人はどこからアカウントにアクセスしていますか?

4. 現在、アカウントでどのようなAWSサービスやリソースを使用していますか?料金の詳細を表示するには、請求書ページをご覧ください:

https://console.aws.amazon.com/billing/home#/bill

5. アクティブな Identity and Access Management (IAM) ユーザーとロールはすべて認証されていますか?

IAM ユーザーを確認するには、こちらのコンソールを開きます: https://console.aws.amazon.com/iam/home#users

IAM ロールを確認するには、こちらのコンソールを開きます: https://console.aws.amazon.com/iam/home#/roles

IAM ポリシーを確認するには、こちらのコンソールを開きます: https://console.aws.amazon.com/iam/home#/policies

6. アカウントのパスワードをリセットしたことを確認します。これは、このプロセスを続行する前に必要です。パスワードをリセットする方法については、以下のドキュメントを参照してください:

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys_retrieve.html#reset-root-password

要求された情報をご返信いただいた後、サービスチームに転送します。サービスチームより、次のステップについての詳細情報が提供されます。


この確認は比較的簡単だと思うので、それぞれに的確に答えましょう。これが終わると今度は具体的にどこに問題があるのか調べてくれます。



サービスごとに対応を求められる例

超長いですが、要するに「この辺に怪しいアクションが見えるから調査してみて」という感じのアドバイスです。結果から言うとここで挙げられたサービスの中に被害を受けたものはありませんでした。ただこれをきっかけに全サービスを見直して問題点を洗い出せたので良かったと思います。


Hello,

Thank you for your patience.

My service team has confirmed that we have detected an abnormal pattern in your AWS account that matches unauthorized activity.

Please follow the below instructions to secure your account:

Step 1: Instructions to Terminate EC2 Resources
Instances:
To terminate the unauthorized EC2 instances you need to:
1. Sign in to the EC2 console directly here: https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Home:
2. Check both “Instances (running)” and “Instances” for any unauthorized instance.
3. To delete the unauthorized instances, select the instance, and choose Instance state, Terminate instance.
4. Choose Terminate when prompted for confirmation. Repeat for all unauthorized instances.
5. Make sure to check region by region and terminate all those unauthorized.

Volumes:
1. Access the EC2 volume console here: https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Volumes:
2. To delete the unauthorized volumes, select the volume to delete and choose Actions, Delete volume. In the confirmation dialog box, choose Delete. Repeat for all unauthorized volumes.
3. Make sure to check region by region and terminate all those unauthorized.

Snapshots:
1. Access the EC2 snapshot console here: https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Snapshots:
2. Select the snapshot to delete, and then choose Actions, Delete snapshot. Finally, choose Delete.
3. Make sure to check region by region and terminate all those unauthorized.

Security groups:
1. Access the EC2 security group console here: https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#SecurityGroups:
2. Select the security group to delete and choose Actions, Delete security group, Delete.
3. Make sure to check region by region and terminate all those unauthorized.
– Keep in mind “default” security groups cannot be deleted, only the non-default.

Key pairs:
1. Access the EC2 key pairs console here: https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#KeyPairs:
2. Select the key pair to delete and choose Delete.
3. In the confirmation field, enter Delete and then choose Delete. Repeat for all unauthorized keys.
4. Make sure to check region by region and terminate all those unauthorized.

Launch Templates:
1. Open the Amazon EC2 launch template console at https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#LaunchTemplates:
2. Select the launch template and choose Actions, Delete template.
3. Enter Delete to confirm deletion, and then choose Delete.
4. Make sure to check region by region and terminate all those unauthorized.

Elastic IPs
1. Open the EC2 Console at https://console.aws.amazon.com/ec2/
2. Under the Network & Security tab, choose Elastic IPs
3. Select the IP address you wish to remove
4. Click on actions and choose Release Address.
5. Make sure to check region by region and terminate all those unauthorized.

Step 2: Terminate Lambda Resources
Functions:
1. Access the Lambda function console here: https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions
2. Select the radio button for the unauthorized function you want to delete.
3. Then choose Actions, Delete. When prompted for confirmation, choose Yes, Delete. Repeat for all unauthorized functions.
4. Make sure to check region by region and terminate all those unauthorized.

Step 3: Terminate IAM Resources
Users:
1. Access the IAM console here: https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/users
2. Select the check box next to the user name that you want to delete.
3. At the top of the page, choose Delete.
4. In the confirmation dialog box, enter the username in the text input field to confirm the deletion of the user. Choose Delete. Repeat for all unauthorized users.

Roles:
1. Access the IAM roles console here: https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles
2. Select the check box next to the role name that you want to delete.
3. At the top of the page, choose Delete.
4. In the confirmation dialog box, review the last accessed information, which shows when each of the selected roles last accessed an AWS service. This to confirm if the role is currently active.
5. If you want to proceed, enter the name of the role in the text input field and choose Delete.

Service linked roles:
1. Access the IAM roles console here: https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles
2. Then choose the name (not the check box) of the service-linked role.
3. On the Summary page for the selected role, choose the Access Advisor tab.
4. On the Access Advisor tab, review recent activity for the service-linked role.
– If the deletion fails because the role is using the service’s resources, then the notification includes a list of resources, make sure to delete those resources before attempting to delete the role again.

Step 4: Terminate Cloudwatch Resources
Logs:
1. Access the Cloudwatch logs console here: https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups
2. Select the Log group, and then choose Actions, Delete.
3. When prompted for confirmation, choose Yes, Delete. Repeat for all unauthorized logs.
4. Make sure to check region by region and terminate all those unauthorized.

Step 5: Terminate SQS Resources
Queues:
1. Access the SQS queue console here: https://us-east-1.console.aws.amazon.com/sqs/v2/home?region=us-east-1#/queues
2. On the Queues page, choose the queue to delete. Then, choose Delete.
3. In the Delete queue dialog box, confirm the deletion by entering delete. Then, choose Delete. Repeat for all unauthorized queues.
4. Make sure to check region by region and terminate all those unauthorized.

Step 6: Terminate S3 Resources
1. Sign in to the AWS Management Console and open the Amazon S3 console at https://console.aws.amazon.com/s3/
2. In the Buckets list, select the option next to the name of the bucket that you want to delete, and then choose Delete at the top of the page.
3. On the Delete bucket page, confirm that you want to delete the bucket by entering the bucket name into the text field, and then choose Delete bucket.
Note:
If the bucket contains any objects, empty the bucket before deleting it by selecting the empty bucket configuration link in the This bucket is not empty error alert and following the instructions on the Empty bucket page. Then return to the Delete bucket page and delete the bucket.
4. To verify that you’ve deleted the bucket, open the Buckets list and enter the name of the bucket that you deleted. If the bucket can’t be found, your deletion was successful.

Let us know after you complete the steps to secure your account. Make sure to leave the support case open.

If you believe that your account is secure and there is no unauthorized access or usage, then confirm this in writing. If you need help with this process, let us know.


対応が終わるとこういう返事が返ってきます。


Hi there,

We’ve verified that you’ve taken the required remediation steps to have your AWS account reinstated. Under the Shared Responsibility Model, our customers are responsible for maintaining the security of their account. All restrictions on your account have been lifted.

DeepL翻訳

こんにちは、

お客様がAWSアカウントを復活させるために必要な修復手順を踏まれたことを確認しました。共有責任モデルの下では、お客様はアカウントのセキュリティを維持する責任があります。お客様のアカウントの制限はすべて解除されました。


が、問題は終わってないのでほどなくもう一回最初のメールが来ることになります。以後、問題が解決するまで繰り返し。



こちらからの報告メール例

最後にこちらから送ったメールの例を掲載しておきます。AWSからのメールは懇切丁寧でめっちゃ長いですがそれはテンプレートだからです。やり取り自体は簡素で大丈夫です。

これはメールに関して最後の最後に送った対応完了メッセージです。


Hello.

We have just deleted the IAM user “****” who was also the SMTP user for SES. We have stopped using access keys to use SES and have switched to using roles for all functions except for some functions required by third parties (Redmine). Therefore, from now on, no more unauthorized emails will be sent due to the leakage of access keys, we think.

Best regards
こんにちは。

さきほどSESのSMTPユーザーでもあったIAMユーザー「****」を削除しました。SESの利用にアクセスキーを使用するのは止め、一部サードパーティが要求する機能(Redmine)を除き、すべてロールでの利用に切り替えています。よって今後はアクセスキーの漏洩による不正なメール送信は起こりません。

よろしくお願いいたします。


行間に僕のやったった感が溢れていますが、先方からしたら「そんぐらい早めにやっとけよ」ということだろうなと思います。ただそういうことは言われないので、偉そうにするのはダメですけど、率直な英語で良いと思います。そんなことより正確に書くのが大事。どうせ僕らに英語で婉曲表現とか無理ですし、技術サポートでのやりとりにそういうのは無駄なので。


この後、対策が確認出来た旨と、ベストプラクティスの紹介があってSESの一時停止が解除されました。



まとめ

大事だなと思った点をまとめます。


  1. サポートへの報告は頑張って英語でやりましょう。解決に掛かる時間が全く違います。
  2. AWSからテンプレートでの通知がたくさん来ますが、たぶんこちらのアクションを見てるのでちゃんと対応しましょう。
  3. こちらからの報告は簡素な英語で大丈夫ですが、内容は正確に書きましょう。


参画中のプロジェクトでチームメンバーと日常的に英語でやり取りしてるのが役に立ちました。

まあぶっちゃけいうと、チームメンバーとのやり取りが英語になると面倒くさくて相談しないことも増えてくるのであんまり良いことでは無いなと思っているのですけど、英語でメッセージを送ることへのハードルが低くなったという点で、今回は経験が生きたかなと。



では次回、技術的な意味での対応編に続きます。