AWS - ECS Post Exploitation
ECS
詳細については以下をチェックしてください:
pageAWS - ECS EnumHost IAM Roles
ECSでは、コンテナ内で実行されているタスクにIAMロールを割り当てることができます。タスクがEC2インスタンス内で実行されている場合、EC2インスタンスには別のIAMロールが添付されています。 つまり、ECSインスタンスを侵害することができれば、ECRとEC2インスタンスに関連付けられたIAMロールを取得する可能性があります。これらの資格情報を取得する方法についての詳細は以下をチェックしてください:
IMDSv2を強制しているEC2インスタンスの場合、ドキュメントによると、PUTリクエストのレスポンスにはホップリミットが1になるため、EC2インスタンス内のコンテナからEC2メタデータにアクセスすることは不可能です。
ノードへのPrivescで他のコンテナのcreds & secretsを盗む
さらに、EC2はECsタスクを実行するためにdockerを使用しているため、ノードにエスケープするかdockerソケットにアクセスすることができれば、実行されている他のコンテナをチェックし、それらの中に入り込んで、添付されているIAMロールを盗むことができます。
現在のホストでコンテナを実行する
さらに、EC2インスタンスロールは通常、クラスタ内のノードとして使用されているEC2インスタンスのコンテナインスタンス状態を更新するのに十分な権限を持っています。攻撃者はインスタンスの状態をDRAININGに変更することができ、その後ECSはそのインスタンスからすべてのタスクを削除し、REPLICAとして実行されているタスクは別のインスタンスで実行されます。これにより、攻撃者は自分のインスタンス内でそれらを実行し、IAMロールを盗むことができ、コンテナ内の機密情報を盗む可能性があります。
同じテクニックは、クラスターからEC2インスタンスを登録解除することによっても実行できます。これは潜在的に目立つ可能性がありますが、タスクが他のインスタンスで実行されるように強制します:
最終的なタスクの再実行を強制する手法は、ECSにタスクまたはコンテナが停止したことを示すことです。これを行うための3つの潜在的なAPIがあります:
ECRコンテナから機密情報を盗む
EC2インスタンスには、おそらく ecr:GetAuthorizationToken
の権限があり、イメージをダウンロードすることができます(それらの中に機密情報があるかもしれません)。
最終更新