AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Reading time: 11 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
VPC & Networking
Дізнайтеся, що таке VPC та про його компоненти в:
AWS - VPC & Networking Basic Information
EC2
Amazon EC2 використовується для ініціювання віртуальних серверів. Він дозволяє налаштовувати безпеку та мережі і управляти зберіганням. Гнучкість Amazon EC2 очевидна в його здатності масштабувати ресурси як вгору, так і вниз, ефективно адаптуючись до змін вимог або сплесків популярності. Ця функція зменшує необхідність у точних прогнозах трафіку.
Цікаві речі для перерахунку в EC2:
- Віртуальні машини
- SSH ключі
- Дані користувача
- Існуючі EC2/AMIs/Снімки
- Мережі
- Мережі
- Підмережі
- Публічні IP-адреси
- Відкриті порти
- Інтегровані з'єднання з іншими мережами поза AWS
Instance Profiles
Використання ролей для надання дозволів додаткам, які працюють на EC2 інстансах, вимагає деякої додаткової конфігурації. Додаток, що працює на EC2 інстансі, абстрагується від AWS віртуалізованою операційною системою. Через це додаткове розділення вам потрібно виконати додатковий крок, щоб призначити роль AWS та її пов'язані дозволи EC2 інстансу та зробити їх доступними для його додатків.
Цей додатковий крок - це створення профілю інстансу, прикріпленого до інстансу. Профіль інстансу містить роль і може надати тимчасові облікові дані ролі додатку, що працює на інстансі. Ці тимчасові облікові дані можуть бути використані в API викликах додатку для доступу до ресурсів і для обмеження доступу лише до тих ресурсів, які вказує роль. Зверніть увагу, що лише одна роль може бути призначена EC2 інстансу одночасно, і всі додатки на інстансі ділять одну й ту ж роль і дозволи.
Metadata Endpoint
AWS EC2 метадані - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, такої як його ID інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу.
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
Неавтентифікований доступ
AWS - EC2 Unauthenticated Enum
Підвищення привілеїв
На наступній сторінці ви можете перевірити, як зловживати дозволами EC2 для підвищення привілеїв:
Пост-експлуатація
AWS - EC2, EBS, SSM & VPC Post Exploitation
EBS
Amazon EBS (Elastic Block Store) знімки в основному є статичними резервними копіями обсягів AWS EBS. Іншими словами, це копії дисків, підключених до EC2 екземпляра в певний момент часу. Знімки EBS можуть бути скопійовані між регіонами та обліковими записами або навіть завантажені та запущені локально.
Знімки можуть містити чутливу інформацію, таку як джерельний код або ключі API, тому, якщо у вас є можливість, рекомендується перевірити їх.
Різниця AMI та EBS
AMI використовується для запуску EC2 екземпляра, тоді як знімок EC2 використовується для резервного копіювання та відновлення даних, збережених на обсязі EBS. Хоча знімок EC2 може бути використаний для створення нового AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми.
Підвищення привілеїв
На наступній сторінці ви можете перевірити, як зловживати дозволами EBS для підвищення привілеїв:
SSM
Amazon Simple Systems Manager (SSM) дозволяє віддалено керувати групами EC2 екземплярів, щоб спростити їх адміністрування. Кожен з цих екземплярів повинен виконувати службу SSM Agent, оскільки саме ця служба отримуватиме дії та виконуватиме їх з AWS API.
SSM Agent дозволяє Systems Manager оновлювати, керувати та налаштовувати ці ресурси. Агент обробляє запити від служби Systems Manager в AWS Cloud і потім виконує їх відповідно до запиту.
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
Privesc
На наступній сторінці ви можете перевірити, як зловживати дозволами SSM для ескалації привілеїв:
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
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 інстансам забезпечувати практично продуктивність bare-metal, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує безпеку апаратного забезпечення та прошивки, ще більше зміцнюючи його надійну архітектуру.
Отримайте більше інформації та дізнайтеся, як його перерахувати з:
VPN
VPN дозволяє підключити вашу локальну мережу (site-to-site VPN) або ноутбуки працівників (Client VPN) до AWS VPC, щоб сервіси могли бути доступні без необхідності їх відкриття в Інтернеті.
Основні компоненти AWS VPN
- Customer Gateway:
- Customer Gateway - це ресурс, який ви створюєте в AWS, щоб представити вашу сторону VPN-з'єднання.
- Це, по суті, фізичний пристрій або програмний додаток на вашій стороні з'єднання Site-to-Site VPN.
- Ви надаєте інформацію про маршрутизацію та публічну IP-адресу вашого мережевого пристрою (такого як маршрутизатор або брандмауер) AWS для створення Customer Gateway.
- Він слугує точкою посилання для налаштування VPN-з'єднання і не несе додаткових витрат.
- Virtual Private Gateway:
- Virtual Private Gateway (VPG) - це VPN-концентратор на стороні Amazon з'єднання Site-to-Site VPN.
- Він підключений до вашого VPC і слугує ціллю для вашого VPN-з'єднання.
- VPG - це кінцева точка AWS для VPN-з'єднання.
- Він обробляє безпечну комунікацію між вашим VPC та вашою локальною мережею.
- Site-to-Site VPN Connection:
- З'єднання Site-to-Site VPN з'єднує вашу локальну мережу з VPC через безпечний IPsec VPN тунель.
- Цей тип з'єднання вимагає Customer Gateway та Virtual Private Gateway.
- Використовується для безпечної, стабільної та послідовної комунікації між вашим дата-центром або мережею та вашим AWS середовищем.
- Зазвичай використовується для регулярних, довгострокових з'єднань і оплачується на основі обсягу даних, переданих через з'єднання.
- Client VPN Endpoint:
- Кінцева точка Client VPN - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN.
- Використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі.
- Вона відрізняється від Site-to-Site VPN тим, що призначена для окремих клієнтів, а не для підключення цілих мереж.
- З Client VPN кожен клієнтський пристрій використовує програмне забезпечення VPN-клієнта для встановлення безпечного з'єднання.
Ви можете знайти більше інформації про переваги та компоненти AWS VPN тут.
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
Локальна Перевірка
Локальні Тимчасові Облікові Дані
Коли AWS VPN Client використовується для підключення до 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
Постексплуатація
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.