Anhang B: Beispiel-Code - Leitfaden zur Reaktion auf Sicherheitsvorfälle in AWS

Anhang B: Beispiel-Code

Beispielereignis AWS CloudTrail

Das folgende Beispiel zeigt, dass ein IAM-Benutzer mit dem Namen Alice die AWS CLI verwendet hat, um Amazon EC2 StopInstancesaction mithilfe von ec2-stop-instances aufzurufen.

{"Records": [{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-03-06T21:01:59Z", "eventSource": "ec2.amazonaws.com", "eventName": "StopInstances", "awsRegion": "us-east-2", "sourceIPAddress": "205.251.233.176", "userAgent": "ec2-api-tools 1.6.12.2", "requestParameters": { "instancesSet": {"items": [{"instanceId": "i-ebeaf9e2"}]}, "force": false }, "responseElements": {"instancesSet": {"items": [{ "instanceId": "i-ebeaf9e2", "currentState": { "code": 64, "name": "stopping" }, "previousState": { "code": 16, "name": "running" } }]}} }]}

Beispiel eines AWS CloudWatch Event

Das folgende Beispiel für ein Amazon CloudWatch Event zeigt, dass ein AWS IAM-Benutzer mit dem Namen jane-roe-test auf www.github.com veröffentlicht wurde und von nicht autorisierten Benutzern missbraucht werden könnte.

{ "check-name": "Exposed Access Keys", "check-item-detail": { "Case ID": "02648f3b-e18f-4019-8d68-ce25efe080ff", "Usage (USD per Day)": "0", "User Name (IAM or Root)": "jane-roe-test", "Deadline": "1440453299248", "Access Key ID": "AKIAIOSFODNN7EXAMPLE", "Time Updated": "1440021299248", "Fraud Type": "Exposed", "Location": "www.github.com" }, "status": "ERROR", "resource_id": "", "uuid": "cce6d28f-e44b-4e61-aba1-5b4af96a0f59" }

Beispiel für CLI-Aktivitäten von Infrastrukturdomänen

Die folgenden AWS CLI-Befehle zeigen ein Beispiel für die Reaktion auf ein Ereignis innerhalb der Infrastrukturdomäne. In diesem Beispiel werden die AWS-APIs verwendet, um viele der in diesem Dokument beschriebenen anfänglichen Vorfallreaktionsaktivitäten durchzuführen.

# Anomaly detected on IP X.X.X.X. Capture that instance's metadata > aws ec2 describe-instances --filters "Name=ip-address,Values=X.X.X.X"
# Protect that instance from accidental termination > aws ec2 modify-instance-attribute --instance-id i-abcd1234 --attribute disableApiTermination --value true
# Switch the EC2 instance's Security Group to a restricted Security Group > aws ec2 modify-instance-attribute --instance-id i-abcd1234 --groups sg-a1b2c3d4
# Detach from the Auto Scaling Group > aws autoscaling detach-instances --instance-ids i-abcd1234 --auto-scaling-group-name web-asg
# Deregister the instance from the Elastic Load Balancer > aws elb deregister-instances-from-load-balancer --instances i-abcd1234 --load-balancer-name web-load-balancer
# Create an EBS snapshot > aws ec2 create-snapshot --volume vol-12xxxx78 --description "ResponderName-Date-REFERENCE-ID"
# Create a new EC2 instance from the Forensic Workstation AMI > aws ec2 run-instances --image-id ami-4n6x4n6x --count 1 --instance-type c4.8xlarge --key-name forensicPublicKey --security-group-ids sg-1a2b3c4d --subnet-id subnet-6e7f819e
# Create a new EBS volume copy from the EBS snapshot > aws ec2 create-volume --region us-east-1 --availability-zone us-east-1a --snapshot-id snap-abcd1234 --volume-type io1 --iops 10000
# Attach the volume to the forensic workstation > aws ec2 attach-volume --volume-id vol-1234abcd --instance-id i-new4n6x --device /dev/sdf
# Create a security group rule to allow the new Forensic Workstation to communicate to the contaminated instance. > aws ec2 authorize-security-group-ingress --group-id sg-a1b2c3d4 --protocol tcp --port 0-65535 --source-group sg-1a2b3c4d
# Tag the contaminated instance with the ticket or reference ID > aws ec2 create-tags -resources i-abcd1234 -tags Key=Environment,Value=Quarantine:REFERENCE-ID