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

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

VPC & नेटवर्किंग

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

pageAWS - VPC & Networking Basic Information

EC2

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

EC2 में जांचने के लिए दिलचस्प चीजें:

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

  • SSH कुंजियाँ

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

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

  • नेटवर्किंग

  • नेटवर्क

  • सबनेटवर्क

  • सार्वजनिक IPs

  • खुले द्वार

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

इंस्टेंस प्रोफाइल

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

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

मेटाडेटा एंडपॉइंट

AWS EC2 मेटाडेटा एक अमेज़न एलास्टिक कंप्यूट क्लाउड (EC2) इंस्टेंस के बारे में जानकारी है जो इंस्टेंस को रनटाइम पर उपलब्ध है। इस मेटाडेटा का उपयोग इंस्टेंस के बारे में जानकारी प्रदान करने के लिए किया जाता है, जैसे कि इसका इंस्टेंस आईडी, यह किस उपलब्धता क्षेत्र में चल रहा है, इंस्टेंस के साथ संबंधित IAM रोल, और इंस्टेंस का होस्टनेम।

जांचना

# 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

अप्रमाणिक पहुंच

pageAWS - EC2 Unauthenticated Enum

Privesc

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

pageAWS - EC2 Privesc

पोस्ट-एक्सप्लोइटेशन

pageAWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

अमेज़न EBS (इलास्टिक ब्लॉक स्टोर) स्नैपशॉट्स मुख्य रूप से AWS EBS वॉल्यूम के स्थायी बैकअप हैं। दूसरे शब्दों में, ये किसी विशेष समय पर एक EC2 इंस्टेंस के संलग्न डिस्क की कॉपी होते हैं। EBS स्नैपशॉट्स को क्षेत्रों और खातों के बीच कॉपी किया जा सकता है, या यहाँ तक कि उन्हें डाउनलोड करके स्थानिक रूप से चलाया जा सकता है।

स्नैपशॉट्स में संवेदनशील जानकारी शामिल हो सकती है जैसे स्रोत कोड या एपीआई कुंजी, इसलिए, अगर आपको मौका मिले तो इसे जांचना सिफारिश किया जाता है।

AMI और EBS का अंतर

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

Privesc

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

pageAWS - EBS Privesc

SSM

अमेज़न सिम्पल सिस्टम्स मैनेजर (SSM) दूरस्थ EC2 इंस्टेंस के प्रबंधन को सरल बनाने के लिए अनुमति देता है। इन सभी इंस्टेंस को SSM एजेंट सेवा के रूप में चलाना चाहिए क्योंकि सेवा एक्शन प्राप्त करेगी और उन्हें क्रियान्वित करेगी AWS API से।

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

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

जांचन

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 इंस्टेंस में चेक कर सकते हैं कि Systems Manager काम कर रहा है या नहीं, बस निम्नलिखित को एक्सीक्यूट करके:

ps aux | grep amazon-ssm

Privesc

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

pageAWS - SSM Privesc

ELB

Elastic Load Balancing (ELB) एक अमेज़न वेब सेवाओं (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
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

नाइट्रो

AWS नाइट्रो एक सुधारक प्रदान करने वाली प्रौद्योगिकियों का एक सुइट है जो AWS EC2 इंस्टेंस के लिए नीचे की प्लेटफ़ॉर्म बनाती है। अमेज़न द्वारा पेश किया गया, नाइट्रो सुरक्षा, प्रदर्शन, और विश्वसनीयता को बढ़ाने के लिए अनुकूलित है, नाइट्रो विशेष रूप से हार्डवेयर घटकों और एक हल्के hypervisor का उपयोग करता है। यह रसायनिक बहुलकरण कार्यक्षमता का बहुत सारा भाग समर्पित हार्डवेयर और सॉफ़्टवेयर को, हमले के सतह को कम करता है और संसाधन क्षमता में सुधार करता है। वर्चुअलाइज़ेशन कार्यों को अन्यायपूर्ण हार्डवेयर और सॉफ़्टवेयर पर ले जाने से, नाइट्रो EC2 इंस्टेंस को निकट बेयर-मेटल प्रदर्शन प्रदान करने की अनुमति देता है, जिसे संसाधन-अधिक मांग वाले एप्लिकेशनों के लिए विशेष रूप से लाभकारी माना जाता है। इसके अतिरिक्त, नाइट्रो सुरक्षा चिप विशेष रूप से हार्डवेयर और फर्मवेयर की सुरक्षा को सुनिश्चित करता है, जो इसकी मजबूत वास्तुकला को और भी मजबूत बनाता है।

इससे अधिक जानकारी प्राप्त करें और इसे जांचने के लिए:

pageAWS - Nitro Enum

VPN

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

मूल AWS VPN घटक

  1. ग्राहक गेटवे:

  • ग्राहक गेटवे एक संसाधन है जिसे आप AWS में बनाते हैं ताकि यह आपके VPN कनेक्शन की ओर से आपका पक्ष दर्शाए।

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

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

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

  1. वर्चुअल प्राइवेट गेटवे:

  • वर्चुअल प्राइवेट गेटवे (VPG) साइट-साइट VPN कनेक्शन के अमेज़न पक्ष पर VPN कंसेंट्रेटर है।

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

  • VPG VPN कनेक्शन के लिए AWS पक्ष अंत बिंदु है।

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

  1. साइट-साइट VPN कनेक्शन:

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

  • इस प्रकार का कनेक्शन एक ग्राहक गेटवे और एक वर्चुअल प्राइवेट गेटवे की आवश्यकता होती है।

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

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

  1. क्लाइंट VPN एंडपॉइंट:

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

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

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

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

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

जांचना

# 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

स्थानीय जाँच

स्थानिक अस्थायी प्रमाणपत्र

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

ये प्रमाणपत्र उपयोगकर्ता arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials के लिए हैं (TODO: इन प्रमाणपत्रों की अनुमतियों के बारे में अधिक अनुसंधान करें)।

opvn कॉन्फ़िग फ़ाइलें

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

पोस्ट एक्सप्लॉइटेशन

pageAWS - VPN Post Exploitation

संदर्भ

शून्य से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated