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

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

VPC & mise en réseau

Learn what a VPC is and about its components in:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 is utilized for initiating serveurs virtuels. It permet la configuration de la sĂ©curitĂ© et du rĂ©seau ainsi que la gestion du stockage. La flexibilitĂ© d’Amazon EC2 se manifeste par sa capacitĂ© Ă  faire Ă©voluer les ressources vers le haut ou vers le bas, s’adaptant efficacement aux variations de besoins ou aux pics de trafic. Cette fonctionnalitĂ© rĂ©duit la nĂ©cessitĂ© de prĂ©voir prĂ©cisĂ©ment le trafic.

Choses intéressantes à énumérer dans EC2 :

  • Machines virtuelles
  • ClĂ©s SSH
  • User Data
  • EC2s/AMIs/Snapshots existants
  • mise en rĂ©seau
  • RĂ©seaux
  • Sous-rĂ©seaux
  • IP publiques
  • Ports ouverts
  • Connexions intĂ©grĂ©es avec d’autres rĂ©seaux en dehors d’AWS

Instance Profiles

L’utilisation de roles pour accorder des permissions aux applications qui s’exĂ©cutent sur des EC2 instances nĂ©cessite une configuration supplĂ©mentaire. Une application exĂ©cutĂ©e sur une instance EC2 est abstraite d’AWS par le systĂšme d’exploitation virtualisĂ©. En raison de cette sĂ©paration supplĂ©mentaire, il est nĂ©cessaire d’effectuer une Ă©tape additionnelle pour attribuer un rĂŽle AWS et ses permissions associĂ©es Ă  une instance EC2 et les rendre disponibles pour ses applications.

Cette Ă©tape supplĂ©mentaire est la crĂ©ation d’un instance profile attachĂ© Ă  l’instance. L’instance profile contient le role et peut fournir les credentials temporaires du role Ă  une application qui s’exĂ©cute sur l’instance. Ces credentials temporaires peuvent ensuite ĂȘtre utilisĂ©s dans les appels API de l’application pour accĂ©der aux ressources et limiter l’accĂšs uniquement aux ressources spĂ©cifiĂ©es par le role. Notez que un seul role peut ĂȘtre assignĂ© Ă  une EC2 instance Ă  la fois, et toutes les applications sur l’instance partagent le mĂȘme role et les mĂȘmes permissions.

Metadata Endpoint

Les metadata AWS EC2 sont des informations sur une instance Amazon Elastic Compute Cloud (EC2) qui sont disponibles pour l’instance Ă  l’exĂ©cution. Ces metadata servent Ă  fournir des informations sur l’instance, telles que son instance ID, la zone de disponibilitĂ© dans laquelle elle s’exĂ©cute, le IAM role associĂ© Ă  l’instance, et le hostname de l’instance.

Cloud SSRF - HackTricks

ÉnumĂ©ration

# 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

In the following page you can check how to abuse EC2 permissions to escalate privileges:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) instantanĂ©s sont essentiellement des sauvegardes statiques des volumes AWS EBS. En d’autres termes, ce sont des copies des disques attachĂ©s Ă  une EC2 Instance Ă  un moment donnĂ©. Les snapshots EBS peuvent ĂȘtre copiĂ©s entre rĂ©gions et comptes, ou mĂȘme tĂ©lĂ©chargĂ©s et exĂ©cutĂ©s localement.

Les snapshots peuvent contenir des informations sensibles telles que du code source ou des clés API, donc, si vous en avez la possibilité, il est recommandé de les vérifier.

Difference AMI & EBS

Un AMI est utilisĂ© pour lancer une EC2 instance, tandis qu’un EC2 Snapshot est utilisĂ© pour sauvegarder et rĂ©cupĂ©rer les donnĂ©es stockĂ©es sur un volume EBS. Bien qu’un EC2 Snapshot puisse ĂȘtre utilisĂ© pour crĂ©er un nouvel AMI, ce n’est pas la mĂȘme chose qu’un AMI, et il n’inclut pas d’informations sur le systĂšme d’exploitation, le serveur d’applications ou les autres logiciels nĂ©cessaires pour exĂ©cuter une application.

Privesc

In the following page you can check how to abuse EBS permissions to escalate privileges:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) permet de gĂ©rer Ă  distance des flottes d’EC2 instances pour faciliter leur administration. Chacune de ces instances doit exĂ©cuter le service SSM Agent car c’est ce service qui recevra les actions et les exĂ©cutera depuis l’AWS API.

Le SSM Agent permet Ă  Systems Manager de mettre Ă  jour, gĂ©rer et configurer ces ressources. L’agent traite les requĂȘtes du service Systems Manager dans l’AWS Cloud, puis les exĂ©cute comme spĂ©cifiĂ© dans la requĂȘte.

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.

ÉnumĂ©ration

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>

Vous pouvez vĂ©rifier sur une instance EC2 si Systems Manager est en cours d’exĂ©cution simplement en exĂ©cutant :

ps aux | grep amazon-ssm

Privesc

Sur la page suivante vous pouvez vérifier comment abuser des permissions SSM pour escalader les privilÚges:

AWS - SSM Privesc

Perssistence

Sur la page suivante vous pouvez vérifier comment abuser des permissions SSM pour obtenir une persistance:

AWS - SSM Perssitence

ELB

Elastic Load Balancing (ELB) est un service d’équilibrage de charge pour les dĂ©ploiements Amazon Web Services (AWS). ELB distribue automatiquement le trafic applicatif entrant et ajuste les ressources pour rĂ©pondre Ă  la demande.

Enumération

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

ModĂšles de lancement & groupes Auto Scaling

ÉnumĂ©ration

# 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 est une suite de technologies innovantes qui constituent la plateforme sous-jacente pour les instances AWS EC2. Introduit par Amazon pour amĂ©liorer la sĂ©curitĂ©, les performances et la fiabilitĂ©, Nitro s’appuie sur des composants matĂ©riels personnalisĂ©s et un hyperviseur lĂ©ger. Il dĂ©place une grande partie des fonctions de virtualisation traditionnelles vers du matĂ©riel et des logiciels dĂ©diĂ©s, minimisant la surface d’attaque et amĂ©liorant l’efficacitĂ© des ressources. En dĂ©chargeant les fonctions de virtualisation, Nitro permet aux instances EC2 d’offrir des performances proches du bare-metal, ce qui est particuliĂšrement avantageux pour les applications gourmandes en ressources. De plus, le Nitro Security Chip garantit spĂ©cifiquement la sĂ©curitĂ© du matĂ©riel et du firmware, renforçant encore son architecture robuste.

Get more information and how to enumerate it from:

AWS - Nitro Enum

VPN

Un VPN permet de connecter votre rĂ©seau sur site (site-to-site VPN) ou les ordinateurs portables des collaborateurs (Client VPN) Ă  un AWS VPC, afin que les services puissent ĂȘtre accessibles sans avoir Ă  les exposer sur Internet.

Basic AWS VPN Components

  1. Customer Gateway:
  • Un Customer Gateway est une ressource que vous crĂ©ez dans AWS pour reprĂ©senter votre cĂŽtĂ© d’une connexion VPN.
  • Il s’agit essentiellement d’un pĂ©riphĂ©rique physique ou d’une application logicielle de votre cĂŽtĂ© de la connexion Site-to-Site VPN.
  • Vous fournissez les informations de routage et l’adresse IP publique de votre pĂ©riphĂ©rique rĂ©seau (comme un router ou un firewall) Ă  AWS pour crĂ©er un Customer Gateway.
  • Il sert de point de rĂ©fĂ©rence pour la configuration de la connexion VPN et n’entraĂźne pas de frais supplĂ©mentaires.
  1. Virtual Private Gateway:
  • Un Virtual Private Gateway (VPG) est le concentrateur VPN du cĂŽtĂ© Amazon de la connexion Site-to-Site VPN.
  • Il est attachĂ© Ă  votre VPC et sert de cible pour votre connexion VPN.
  • Le VPG est le point de terminaison cĂŽtĂ© AWS pour la connexion VPN.
  • Il gĂšre la communication sĂ©curisĂ©e entre votre VPC et votre rĂ©seau sur site.
  1. Site-to-Site VPN Connection:
  • Une connexion Site-to-Site VPN relie votre rĂ©seau sur site Ă  un VPC via un tunnel VPN sĂ©curisĂ© IPsec.
  • Ce type de connexion nĂ©cessite un Customer Gateway et un Virtual Private Gateway.
  • Elle est utilisĂ©e pour une communication sĂ©curisĂ©e, stable et cohĂ©rente entre votre centre de donnĂ©es ou rĂ©seau et votre environnement AWS.
  • Typiquement utilisĂ©e pour des connexions rĂ©guliĂšres et Ă  long terme et facturĂ©e en fonction du volume de donnĂ©es transfĂ©rĂ©es via la connexion.
  1. Client VPN Endpoint:
  • Un Client VPN endpoint est une ressource que vous crĂ©ez dans AWS pour activer et gĂ©rer des sessions VPN client.
  • Il est utilisĂ© pour permettre Ă  des dispositifs individuels (comme des ordinateurs portables, smartphones, etc.) de se connecter de maniĂšre sĂ©curisĂ©e aux ressources AWS ou Ă  votre rĂ©seau sur site.
  • Il diffĂšre du Site-to-Site VPN en ce qu’il est conçu pour des clients individuels plutĂŽt que pour connecter des rĂ©seaux entiers.
  • Avec Client VPN, chaque appareil client utilise un logiciel client VPN pour Ă©tablir une connexion sĂ©curisĂ©e.

You can find more information about the benefits and components of AWS VPNs here.

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

ÉnumĂ©ration locale

Identifiants temporaires locaux

Lorsque AWS VPN Client est utilisĂ© pour se connecter Ă  un VPN, l’utilisateur va gĂ©nĂ©ralement se connecter Ă  AWS pour obtenir l’accĂšs au VPN. Ensuite, des identifiants AWS sont créés et stockĂ©s localement pour Ă©tablir la connexion VPN. Ces identifiants sont stockĂ©s dans $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt et contiennent un AccessKey, un SecretKey et un Token.

Les identifiants appartiennent à l’utilisateur arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: rechercher plus d’informations sur les permissions de ces identifiants).

opvn config files

Si une connexion VPN a Ă©tĂ© Ă©tablie vous devriez rechercher des fichiers de config .opvn sur le systĂšme. De plus, un endroit oĂč vous pourriez trouver les configurations est $HOME/.config/AWSVPNClient/OpenVpnConfigs

Post Exploitaiton

AWS - VPN Post Exploitation

Références

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks