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

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

VPC & Networking

Дізнайтеся, що таке VPC та про його компоненти в:

pageAWS - VPC & Networking Basic Information

EC2

Amazon EC2 використовується для запуску віртуальних серверів. Це дозволяє налаштовувати безпеку та мережу та керувати сховищем. Гнучкість Amazon EC2 проявляється у можливості масштабування ресурсів як вгору, так і вниз, ефективно адаптуючись до змін вимог або стрибків у популярності. Ця функція зменшує необхідність у точних прогнозах трафіку.

Цікаві речі для переліку в EC2:

  • Віртуальні машини

  • SSH-ключі

  • Користувацькі дані

  • Існуючі EC2/AMIs/Знімки

  • Мережа

  • Мережі

  • Підмережі

  • Публічні IP-адреси

  • Відкриті порти

  • Інтегровані з'єднання з іншими мережами поза AWS

Профілі екземплярів

Для надання дозволів додаткам, які працюють на екземплярах EC2, застосовуються ролі і потрібна додаткова конфігурація. Додаток, який працює на екземплярі EC2, абстрагований від AWS віртуалізованою операційною системою. Через це додаткове розділення потрібен додатковий крок для призначення ролі AWS та пов'язаних з нею дозволів екземпляру EC2 та їх доступності для його додатків.

Цей додатковий крок - створення профілю екземпляра, прикріпленого до екземпляра. Профіль екземпляра містить роль і може надавати тимчасові облікові дані ролі додатку, який працює на екземплярі. Ці тимчасові облікові дані можна використовувати в API-викликах додатку для доступу до ресурсів та обмеження доступу лише до тих ресурсів, які вказує роль. Зверніть увагу, що лише одну роль можна призначити екземпляру EC2 одночасно, і всі додатки на екземплярі мають спільну роль та дозволи.

Кінцева точка метаданих

Метадані AWS EC2 - це інформація про екземпляр Amazon Elastic Compute Cloud (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

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами EC2 для підвищення привілеїв:

pageAWS - EC2 Privesc

Післяексплуатаційна діяльність

pageAWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots - це в основному статичні резервні копії томів AWS EBS. Іншими словами, це копії дисків, приєднаних до екземпляра EC2 в певний момент часу. Знімки EBS можуть бути скопійовані між регіонами та обліковими записами, або навіть завантажені та запущені локально.

Знімки можуть містити чутливу інформацію, таку як вихідний код або ключі API, тому, якщо у вас є можливість, рекомендується перевірити це.

Відмінність AMI та EBS

AMI використовується для запуску екземпляра EC2, тоді як знімок EC2 використовується для резервного копіювання та відновлення даних, збережених на томі EBS. Хоча знімок EC2 може бути використаний для створення нового AMI, це не те саме, що AMI, і він не містить інформацію про операційну систему, сервер додатків або інший програмний засіб, необхідний для запуску додатка.

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами EBS для підвищення привілеїв:

pageAWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) дозволяє віддалено керувати плаваючими екземплярами EC2, щоб спростити їх адміністрування. Кожен з цих екземплярів повинен працювати зі службою SSM Agent, оскільки саме вона буде отримувати дії та виконувати їх з AWS API.

SSM Agent дозволяє Systems Manager оновлювати, керувати та налаштовувати ці ресурси. Агент обробляє запити від служби Systems Manager в хмарі AWS, а потім виконує їх, як вказано в запиті.

SSM Agent поставляється заздалегідь в деяких AMI, або його потрібно встановлювати вручну на екземплярах. Крім того, роль 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>

Ви можете перевірити, чи працює Systems Manager на екземплярі EC2, просто виконавши:

ps aux | grep amazon-ssm

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами SSM для підвищення привілеїв:

pageAWS - SSM Privesc

Наполегливість

ELB

Elastic Load Balancing (ELB) - це сервіс балансування навантаження для розгортань Amazon Web Services (AWS). ELB автоматично розподіляє вхідний трафік додатків та масштабує ресурси для задоволення вимог трафіку.

Енумерація

# 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

VPN

VPN дозволяє підключати вашу локальну мережу (VPN між сайтами) або ноутбуки працівників (клієнтський VPN) до AWS VPC, щоб сервіси можна було отримати без необхідності викладати їх в Інтернет.

Основні компоненти AWS VPN

  1. Шлюз клієнта:

  • Шлюз клієнта - це ресурс, який ви створюєте в AWS для представлення вашої сторони VPN-з'єднання.

  • Це, по суті, фізичний пристрій або програмне забезпечення на вашому боці з'єднання між сайтами.

  • Ви надаєте інформацію про маршрутизацію та публічну IP-адресу вашого мережевого пристрою (такого як маршрутизатор або брандмауер) AWS для створення Шлюза клієнта.

  • Він служить в якості точки посилання для налаштування VPN-з'єднання і не вимагає додаткових оплат.

  1. Віртуальний приватний шлюз:

  • Віртуальний приватний шлюз (VPG) - це концентратор VPN на стороні Amazon з'єднання між сайтами.

  • Він приєднаний до вашого VPC і служить ціллю для вашого VPN-з'єднання.

  • VPG - це кінцева точка AWS для VPN-з'єднання.

  • Він обробляє безпечний обмін даними між вашим VPC та вашою локальною мережею.

  1. З'єднання між сайтами через VPN:

  • З'єднання між сайтами через VPN з'єднує вашу локальну мережу з VPC через безпечний тунель IPsec VPN.

  • Цей тип з'єднання потребує Шлюза клієнта та Віртуального приватного шлюзу.

  • Воно використовується для безпечного, стабільного та послідовного зв'язку між вашим центром обробки даних або мережею та вашим AWS середовищем.

  • Зазвичай використовується для регулярних, довгострокових з'єднань і тарифікується на основі обсягу переданих даних по з'єднанню.

  1. Кінцева точка клієнтського VPN:

  • Кінцева точка клієнтського VPN - це ресурс, який ви створюєте в AWS для активації та управління сеансами клієнтського VPN.

  • Вона використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі.

  • Вона відрізняється від VPN між сайтами тим, що призначена для окремих клієнтів, а не для підключення цілих мереж.

  • З Клієнтським VPN кожен клієнтський пристрій використовує програмне забезпечення клієнта VPN для встановлення безпечного з'єднання.

Ви можете знайти більше інформації про переваги та компоненти AWS VPN тут.

Перелік

# 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 для підключення до VPN, зазвичай він увійде в систему AWS, щоб отримати доступ до VPN. Потім деякі облікові дані AWS створюються та зберігаються локально для встановлення VPN-з'єднання. Ці облікові дані зберігаються в $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

References

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated