AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

Tip

सीखें और अभ्यास करें AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
सीखें और अभ्यास करें GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
सीखें और अभ्यास करें Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

VPC & Networking

जानें कि VPC क्या है और इसके घटकों के बारे में:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 का उपयोग वर्चुअल सर्वर आरंभ करने के लिए किया जाता है। यह सुरक्षा और नेटवर्किंग की कॉन्फ़िगरेशन और स्टोरेज के प्रबंधन की सुविधा प्रदान करता है। Amazon EC2 की लचीलापन इसके संसाधनों को ऊपर और नीचे दोनों तरह से स्केल करने की क्षमता में दिखाई देती है, जिससे यह बदलती आवश्यकताओं या लोकप्रियता में वृद्धि के साथ प्रभावी रूप से अनुकूल हो जाता है। यह सुविधा सटीक ट्रैफिक पूर्वानुमान की आवश्यकता को कम कर देती है।

EC2 में enumerate करने योग्य दिलचस्प चीज़ें:

  • वर्चुअल मशीनें
  • SSH Keys
  • User Data
  • Existing EC2s/AMIs/Snapshots
  • नेटवर्किंग
  • नेटवर्क्स
  • सबनेटवर्क्स
  • Public IPs
  • Open ports
  • AWS के बाहर अन्य नेटवर्क्स के साथ एकीकृत कनेक्शन

Instance Profiles

EC2 instances पर चलने वाले applications को permissions देने के लिए roles का उपयोग करने में थोड़ी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है। EC2 instance पर चल रहा कोई application virtualized operating system के कारण AWS से अलग होता है। इस अतिरिक्त पृथक्करण के कारण, आपको किसी EC2 instance को एक AWS role और उसके संबंधित permissions असाइन करने और उन्हें उसके applications के लिए उपलब्ध कराने के लिए एक अतिरिक्त कदम उठाना पड़ता है।

यह अतिरिक्त कदम instance से जुड़े एक instance profile का निर्माण है। The instance profile contains the role and एप्लिकेशन को instance पर चलने वाले उन रोल्स के अस्थायी क्रेडेंशियल प्रदान कर सकता है। ये अस्थायी क्रेडेंशियल फिर application’s API कॉल्स में उपयोग करके resources तक पहुँचने और रोल द्वारा निर्दिष्ट केवल उन्हीं resources तक पहुँच को सीमित करने के लिए उपयोग किए जा सकते हैं। ध्यान दें कि only one role can be assigned to an EC2 instance एक समय में, और instance पर सभी applications एक ही role और permissions साझा करते हैं।

Metadata Endpoint

AWS EC2 metadata वह जानकारी है जो किसी Amazon Elastic Compute Cloud (EC2) instance के बारे में runtime पर instance के लिए उपलब्ध होती है। यह metadata instance के बारे में जानकारी प्रदान करने के लिए उपयोग की जाती है, जैसे उसका instance ID, वह availability zone जिसमें यह चल रहा है, instance से जुड़ा हुआ IAM role, और instance का hostname।

Cloud SSRF - HackTricks

Enumeration

# Get EC2 instances
aws ec2 describe-instances
aws ec2 describe-instance-status #Get status from running instances

# Get user data from each ec2 instance
for instanceid in $(aws ec2 describe-instances --profile <profile> --region us-west-2 | grep -Eo '"i-[a-zA-Z0-9]+' | tr -d '"'); do
echo "Instance ID: $instanceid"
aws ec2 describe-instance-attribute --profile <profile> --region us-west-2 --instance-id "$instanceid" --attribute userData | jq ".UserData.Value" | tr -d '"' | base64 -d
echo ""
echo "-------------------"
done

# Instance profiles
aws iam list-instance-profiles
aws iam list-instance-profiles-for-role --role-name <name>

# Get tags
aws ec2 describe-tags

# Get volumes
aws ec2 describe-volume-status
aws ec2 describe-volumes

# Get snapshots
aws ec2 describe-snapshots --owner-ids self

# Scheduled instances
aws ec2 describe-scheduled-instances

# Get custom images
aws ec2 describe-images --owners self

# Get Elastic IPs
aws ec2 describe-addresses

# Get current output
aws ec2 get-console-output --instance-id [id]

# Get a JPG-format screenshot of a running instance
aws ec2 get-console-screenshot --instance [id]

# Get VPN customer gateways
aws ec2 describe-customer-gateways
aws ec2 describe-vpn-gateways
aws ec2 describe-vpn-connections

# List conversion tasks to upload/download VMs
aws ec2 describe-conversion-tasks
aws ec2 describe-import-image-tasks

# Get Bundle Tasks
aws ec2 describe-bundle-tasks

# Get Classic Instances
aws ec2 describe-classic-link-instances

# Get Dedicated Hosts
aws ec2 describe-hosts

# Get SSH Key Pairs
aws ec2 describe-key-pairs

# Get Internet Gateways
aws ec2 describe-internet-gateways

# Get NAT Gateways
aws ec2 describe-nat-gateways

# Get subnetworks
aws ec2 describe-subnets

# Get FW rules
aws ec2 describe-network-acls

# Get security groups
aws ec2 describe-security-groups

# Get interfaces
aws ec2 describe-network-interfaces

# Get routes table
aws ec2 describe-route-tables

# Get VPCs
aws ec2 describe-vpcs
aws ec2 describe-vpc-peering-connections

Unauthenticated Access

AWS - EC2 Unauthenticated Enum

Privesc

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि कैसे abuse EC2 permissions to escalate privileges:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) की snapshots मूलतः AWS EBS volumes के स्थिर backups हैं। दूसरे शब्दों में, वे एक विशिष्ट समय पर किसी EC2 Instance से जुड़े disks की copies होती हैं। EBS snapshots को क्षेत्रीय (regions) और खातों (accounts) में कॉपी किया जा सकता है, या यहां तक कि डाउनलोड करके स्थानीय रूप से चलाया भी जा सकता है।

Snapshots में sensitive information जैसे कि source code or APi keys शामिल हो सकती है, इसलिए यदि आपके पास मौका हो तो इन्हें जांचना सुझाया जाता है।

Difference AMI & EBS

An AMI is used to launch an EC2 instance, while an EC2 Snapshot is used to backup and recover data stored on an EBS volume. While an EC2 Snapshot can be used to create a new AMI, it is not the same thing as an AMI, and it does not include information about the operating system, application server, or other software required to run an application.

Privesc

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि कैसे abuse EBS permissions to escalate privileges:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) EC2 instances के बेड़े को दूरस्थ रूप से प्रबंधित करने की अनुमति देता है ताकि उनका प्रशासन काफी आसान हो सके। इन प्रत्येक instances पर SSM Agent service as the service will be the one getting the actions and performing them चल रही होनी चाहिए क्योंकि यही सेवा AWS API से कार्रवाइयाँ प्राप्त करके उन्हें निष्पादित करेगी।

SSM Agent Systems Manager को इन संसाधनों को अपडेट, प्रबंधित, और कॉन्फ़िगर करने में सक्षम बनाता है। एजेंट processes requests from the Systems Manager service in the AWS Cloud, और फिर उन अनुरोधों को अनुरोध में निर्दिष्ट अनुसार चलाता है।

The SSM Agent comes preinstalled in some AMIs or you need to manually install them on the instances. Also, the IAM Role used inside the instance needs to have the policy AmazonEC2RoleforSSM attached to be able to communicate.

Enumeration

aws ssm describe-instance-information
aws ssm describe-parameters
aws ssm describe-sessions --state [Active|History]
aws ssm describe-instance-patches --instance-id <id>
aws ssm describe-instance-patch-states --instance-ids <id>
aws ssm describe-instance-associations-status --instance-id <id>

आप EC2 instance में यह जांच सकते हैं कि Systems Manager चल रहा है या नहीं, बस निम्नलिखित को चलाकर:

ps aux | grep amazon-ssm

Privesc

निम्नलिखित पृष्ठ पर आप यह देख सकते हैं कि कैसे abuse SSM permissions to escalate privileges:

AWS - SSM Privesc

Perssistence

निम्नलिखित पृष्ठ पर आप यह देख सकते हैं कि कैसे abuse SSM permissions to achieve persistence:

AWS - SSM Perssitence

ELB

Elastic Load Balancing (ELB) Amazon Web Services (AWS) परिनियोजनों के लिए एक लोड-बैलेंसिंग सेवा है। ELB स्वचालित रूप से आने वाले एप्लिकेशन ट्रैफ़िक का वितरण करता है और ट्रैफ़िक की मांगों को पूरा करने के लिए संसाधनों का स्केल करता है।

Enumeration

# List internet-facing ELBs
aws elb describe-load-balancers
aws elb describe-load-balancers | jq '.LoadBalancerDescriptions[]| select( .Scheme | contains("internet-facing"))|.DNSName'

# DONT FORGET TO CHECK VERSION 2
aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>

Launch Templates & Autoscaling Groups

एन्यूमरेशन

# Launch templates
aws ec2 describe-launch-templates
aws ec2 describe-launch-templates --launch-template-id <launch_template_id>
## Get details, like user data
aws ec2 describe-launch-template-versions --launch-template-id <launch_template_id>

# Autoscaling
aws autoscaling describe-auto-scaling-groups
aws autoscaling describe-auto-scaling-instances
aws autoscaling describe-launch-configurations
aws autoscaling describe-load-balancer-target-groups
aws autoscaling describe-load-balancers

Nitro

AWS Nitro एक नवोन्मेषी तकनीकों का सेट है जो AWS EC2 instances के लिए आधारभूत प्लेटफ़ॉर्म बनता है। Amazon द्वारा पेश किया गया ताकि सुरक्षा, प्रदर्शन, और विश्वसनीयता में सुधार किया जा सके, Nitro कस्टम hardware components और एक lightweight hypervisor का उपयोग करता है। यह पारंपरिक virtualization कार्यक्षमता का अधिकांश भाग समर्पित हार्डवेयर और सॉफ़्टवेयर में abstract कर देता है, जिससे attack surface को कम किया जाता है और resource efficiency में सुधार होता है। virtualization फ़ंक्शन्स को ऑफलोड करके, Nitro EC2 instances को near bare-metal performance प्रदान करने में सक्षम बनाता है, जो resource-intensive applications के लिए विशेष रूप से फायदेमंद है। अतिरिक्त रूप से, Nitro Security Chip विशेष रूप से hardware और firmware की security सुनिश्चित करता है, जिससे इसकी मजबूत वास्तुकला और भी दृढ़ होती है।

Get more information and how to enumerate it from:

AWS - Nitro Enum

VPN

A VPN आपको अपने on-premise network (site-to-site VPN) या workers laptops (Client VPN) को AWS VPC से जोड़ने की अनुमति देता है ताकि सेवाओं को इंटरनेट पर एक्सपोज़ किए बिना एक्सेस किया जा सके।

Basic AWS VPN Components

  1. Customer Gateway:
  • A Customer Gateway एक संसाधन है जिसे आप AWS में बनाते हैं ताकि यह आपके VPN connection की तरफ़ का प्रतिनिधित्व कर सके।
  • यह मूल रूप से आपके Site-to-Site VPN connection की ओर पर स्थित कोई भौतिक डिवाइस या सॉफ़्टवेयर एप्लिकेशन होता है।
  • Customer Gateway बनाने के लिए आप AWS को अपने नेटवर्क डिवाइस का routing information और public IP address (जैसे router या firewall) प्रदान करते हैं।
  • यह VPN connection सेटअप करने के लिए एक संदर्भ बिंदु के रूप में काम करता है और इसके लिए अतिरिक्त शुल्क नहीं लगता।
  1. Virtual Private Gateway:
  • A Virtual Private Gateway (VPG) Site-to-Site VPN connection के Amazon पक्ष पर स्थित VPN concentrator होता है।
  • यह आपके VPC से जुड़ा होता है और आपके VPN connection का लक्ष्य होता है।
  • VPG VPN connection के लिए AWS पक्ष का endpoint है।
  • यह आपके VPC और आपके on-premises network के बीच सुरक्षित संचार को संभालता है।
  1. Site-to-Site VPN Connection:
  • Site-to-Site VPN connection आपके on-premises network को एक secure, IPsec VPN tunnel के माध्यम से VPC से जोड़ता है।
  • इस प्रकार के connection के लिए एक Customer Gateway और एक Virtual Private Gateway की आवश्यकता होती है।
  • यह आपके डेटा सेंटर या नेटवर्क और आपके AWS परिवेश के बीच सुरक्षित, स्थिर और सुसंगत संचार के लिए उपयोग किया जाता है।
  • आम तौर पर इसे नियमित, दीर्घकालिक कनेक्शनों के लिए उपयोग किया जाता है और कनेक्शन के माध्यम से स्थानांतरित किए गए डेटा की मात्रा के आधार पर बिल किया जाता है।
  1. Client VPN Endpoint:
  • A Client VPN endpoint एक संसाधन है जिसे आप AWS में बनाते हैं ताकि client VPN sessions को सक्षम और प्रबंधित किया जा सके।
  • यह व्यक्तिगत उपकरणों (जैसे laptops, smartphones, आदि) को सुरक्षित रूप से AWS resources या आपके on-premises network से कनेक्ट करने की अनुमति देने के लिए उपयोग किया जाता है।
  • यह Site-to-Site VPN से अलग है क्योंकि यह पूरे नेटवर्क को जोड़ने के बजाय व्यक्तिगत क्लाइंट्स के लिए डिज़ाइन किया गया है।
  • Client VPN के साथ, प्रत्येक क्लाइंट डिवाइस एक VPN client software का उपयोग करके एक सुरक्षित कनेक्शन स्थापित करता है।

You can AWS VPNs के लाभों और घटकों के बारे में अधिक जानकारी यहाँ पा सकते हैं.

Enumeration

# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
aws ec2 describe-client-vpn-endpoints

## Get AWS network info related to the vpn endpoint
aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id <id>

## Get AWS subnet & ip range the VPN iconnected to
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id <id>

## Check authorization rules
aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id <id>

## Get current connections to the VPN endpoint
aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id <id>

# Get VPN gateways and check with which VPC each is connected
aws ec2 describe-vpn-gateways

# Get VPN site-to-site connections
aws ec2 describe-vpn-connections

Local Enumeration

Local Temporary Credentials

जब AWS VPN Client का उपयोग किसी VPN से कनेक्ट करने के लिए किया जाता है, तो उपयोगकर्ता आमतौर पर login in AWS करके VPN तक पहुँच प्राप्त करता है। उसके बाद, VPN कनेक्शन स्थापित करने के लिए कुछ AWS credentials are created and stored लोकली बनकर रखे जाते हैं। ये credentials stored in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt में रखे जाते हैं और इनमें एक AccessKey, एक SecretKey और एक Token होता है।

ये credentials user arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials के हैं (TODO: इस credentials के permissions के बारे में और रिसर्च करें)।

opvn config files

अगर एक VPN connection was stablished तो आपको सिस्टम में .opvn config files की तलाश करनी चाहिए। इसके अलावा, एक जगह जहाँ आप ये configurations पा सकते हैं वह है $HOME/.config/AWSVPNClient/OpenVpnConfigs

Post Exploitaiton

AWS - VPN Post Exploitation

References

Tip

सीखें और अभ्यास करें AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
सीखें और अभ्यास करें GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
सीखें और अभ्यास करें Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें