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

HackTricks को समर्थन दें

VPC & Networking

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

AWS - VPC & Networking Basic Information

EC2

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

EC2 में सूचीबद्ध करने के लिए दिलचस्प चीजें:

  • वर्चुअल मशीनें

  • SSH कुंजियाँ

  • उपयोगकर्ता डेटा

  • मौजूदा EC2s/AMIs/Snapshots

  • नेटवर्किंग

  • नेटवर्क्स

  • सबनेटवर्क्स

  • सार्वजनिक IPs

  • खुले पोर्ट्स

  • AWS के बाहर अन्य नेटवर्क्स के साथ एकीकृत कनेक्शन

Instance Profiles

EC2 instances पर चलने वाले अनुप्रयोगों को अनुमतियाँ देने के लिए roles का उपयोग करना अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है। एक EC2 instance पर चलने वाला अनुप्रयोग वर्चुअलाइज्ड ऑपरेटिंग सिस्टम द्वारा AWS से अलग होता है। इस अतिरिक्त पृथक्करण के कारण, आपको एक AWS role और इसकी संबंधित अनुमतियों को एक EC2 instance को असाइन करने और उन्हें इसके अनुप्रयोगों के लिए उपलब्ध कराने के लिए एक अतिरिक्त कदम की आवश्यकता होती है।

यह अतिरिक्त कदम है instance profile का निर्माण instance profile जो instance से जुड़ा होता है। instance profile में role होता है और यह instance पर चलने वाले अनुप्रयोग को role की अस्थायी क्रेडेंशियल्स प्रदान कर सकता है। उन अस्थायी क्रेडेंशियल्स का उपयोग तब अनुप्रयोग की API कॉल्स में संसाधनों तक पहुँचने और केवल उन संसाधनों तक पहुँच को सीमित करने के लिए किया जा सकता है जो role निर्दिष्ट करता है। ध्यान दें कि एक समय में केवल एक role को एक EC2 instance को असाइन किया जा सकता है, और instance पर सभी अनुप्रयोग एक ही role और अनुमतियों को साझा करते हैं।

Metadata Endpoint

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

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 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

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि EC2 अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

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

Snapshots में संवेदनशील जानकारी जैसे source code या API keys हो सकती है, इसलिए, यदि आपके पास मौका है, तो इसे जांचने की सिफारिश की जाती है।

Difference AMI & EBS

एक AMI का उपयोग EC2 instance लॉन्च करने के लिए किया जाता है, जबकि एक EC2 Snapshot का उपयोग EBS वॉल्यूम पर संग्रहीत डेटा का बैकअप और पुनर्प्राप्ति के लिए किया जाता है। जबकि एक EC2 Snapshot का उपयोग एक नया AMI बनाने के लिए किया जा सकता है, यह AMI के समान नहीं है, और इसमें ऑपरेटिंग सिस्टम, एप्लिकेशन सर्वर, या किसी एप्लिकेशन को चलाने के लिए आवश्यक अन्य सॉफ़्टवेयर के बारे में जानकारी शामिल नहीं होती है।

Privesc

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि EBS अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) EC2 instances के समूहों को दूरस्थ रूप से प्रबंधित करने की अनुमति देता है ताकि उनका प्रशासन बहुत आसान हो सके। इनमें से प्रत्येक instance को SSM Agent सेवा चलानी होगी क्योंकि सेवा ही AWS API से क्रियाओं को प्राप्त करेगी और उन्हें निष्पादित करेगी

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

SSM Agent कुछ AMIs में पूर्व-स्थापित आता है या आपको उन्हें मैन्युअल रूप से इंस्टॉल करना होगा instances पर। इसके अलावा, instance के अंदर उपयोग की जाने वाली IAM Role में नीति AmazonEC2RoleforSSM संलग्न होनी चाहिए ताकि संचार कर सके।

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

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि SSM अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं:

AWS - SSM Privesc

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

Enumeration

# 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 इंस्टेंस के लिए आधारभूत प्लेटफॉर्म बनाता है। Amazon द्वारा सुरक्षा, प्रदर्शन, और विश्वसनीयता बढ़ाने के लिए पेश किया गया, Nitro कस्टम हार्डवेयर घटकों और एक हल्के हाइपरवाइजर का उपयोग करता है। यह पारंपरिक वर्चुअलाइजेशन कार्यक्षमता को समर्पित हार्डवेयर और सॉफ़्टवेयर में सारगर्भित करता है, हमले की सतह को कम करता है और संसाधन दक्षता में सुधार करता है। वर्चुअलाइजेशन कार्यों को ऑफलोड करके, Nitro EC2 इंस्टेंस को लगभग बरे-मेटल प्रदर्शन देने की अनुमति देता है, जो विशेष रूप से संसाधन-गहन अनुप्रयोगों के लिए लाभकारी है। इसके अतिरिक्त, Nitro Security Chip विशेष रूप से हार्डवेयर और फर्मवेयर की सुरक्षा सुनिश्चित करता है, जिससे इसकी मजबूत संरचना और भी मजबूत हो जाती है।

इसकी अधिक जानकारी और इसे एन्यूमरेट करने के तरीके के लिए देखें:

AWS - Nitro Enum

VPN

एक VPN आपके ऑन-प्रिमाइसेस नेटवर्क (साइट-टू-साइट VPN) या वर्कर्स लैपटॉप्स (क्लाइंट VPN) को एक AWS VPC के साथ कनेक्ट करने की अनुमति देता है ताकि सेवाओं को इंटरनेट पर उजागर किए बिना एक्सेस किया जा सके।

बेसिक AWS VPN घटक

  1. Customer Gateway:

  • एक Customer Gateway एक संसाधन है जिसे आप AWS में एक VPN कनेक्शन के अपने पक्ष का प्रतिनिधित्व करने के लिए बनाते हैं।

  • यह मूल रूप से साइट-टू-साइट VPN कनेक्शन पर आपके पक्ष में एक भौतिक डिवाइस या सॉफ़्टवेयर एप्लिकेशन है।

  • आप रूटिंग जानकारी और अपने नेटवर्क डिवाइस (जैसे राउटर या फ़ायरवॉल) का सार्वजनिक IP पता AWS को प्रदान करते हैं ताकि एक Customer Gateway बनाया जा सके।

  • यह VPN कनेक्शन सेटअप के लिए एक संदर्भ बिंदु के रूप में कार्य करता है और अतिरिक्त शुल्क नहीं लगता।

  1. Virtual Private Gateway:

  • एक Virtual Private Gateway (VPG) साइट-टू-साइट VPN कनेक्शन के Amazon पक्ष पर VPN कंसंट्रेटर है।

  • यह आपके VPC से जुड़ा होता है और आपके VPN कनेक्शन के लिए लक्ष्य के रूप में कार्य करता है।

  • VPG VPN कनेक्शन के लिए AWS पक्ष का एंडपॉइंट है।

  • यह आपके VPC और आपके ऑन-प्रिमाइसेस नेटवर्क के बीच सुरक्षित संचार को संभालता है।

  1. Site-to-Site VPN Connection:

  • एक Site-to-Site VPN कनेक्शन आपके ऑन-प्रिमाइसेस नेटवर्क को एक VPC से एक सुरक्षित, IPsec VPN टनल के माध्यम से जोड़ता है।

  • इस प्रकार के कनेक्शन के लिए एक Customer Gateway और एक Virtual Private Gateway की आवश्यकता होती है।

  • यह आपके डेटा सेंटर या नेटवर्क और आपके AWS वातावरण के बीच सुरक्षित, स्थिर, और सुसंगत संचार के लिए उपयोग किया जाता है।

  • आमतौर पर नियमित, दीर्घकालिक कनेक्शनों के लिए उपयोग किया जाता है और कनेक्शन पर स्थानांतरित किए गए डेटा की मात्रा के आधार पर बिल किया जाता है।

  1. Client VPN Endpoint:

  • एक Client VPN endpoint एक संसाधन है जिसे आप AWS में क्लाइंट VPN सत्रों को सक्षम और प्रबंधित करने के लिए बनाते हैं।

  • यह व्यक्तिगत उपकरणों (जैसे लैपटॉप, स्मार्टफोन, आदि) को AWS संसाधनों या आपके ऑन-प्रिमाइसेस नेटवर्क से सुरक्षित रूप से कनेक्ट करने की अनुमति देने के लिए उपयोग किया जाता है।

  • यह Site-to-Site VPN से भिन्न है क्योंकि यह संपूर्ण नेटवर्क को जोड़ने के बजाय व्यक्तिगत क्लाइंट्स के लिए डिज़ाइन किया गया है।

  • Client VPN के साथ, प्रत्येक क्लाइंट डिवाइस एक VPN क्लाइंट सॉफ़्टवेयर का उपयोग करके एक सुरक्षित कनेक्शन स्थापित करता है।

आप 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 से कनेक्ट करने के लिए किया जाता है, तो उपयोगकर्ता आमतौर पर AWS में लॉगिन करेगा ताकि VPN तक पहुंच प्राप्त कर सके। फिर, कुछ AWS credentials बनाए और संग्रहीत किए जाते हैं ताकि VPN कनेक्शन स्थापित किया जा सके। ये credentials स्थानीय रूप से संग्रहीत होते हैं $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt में और इसमें एक AccessKey, एक SecretKey और एक Token होता है।

ये credentials उपयोगकर्ता arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials के होते हैं (TODO: इन credentials के permissions के बारे में और शोध करें)।

opvn config files

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

Post Exploitaiton

AWS - VPN Post Exploitation

References

Support HackTricks

Last updated