mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-p
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# AWS - SSM Perssitence
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## SSM
|
||||
|
||||
Для отримання додаткової інформації перегляньте:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Використання ssm:CreateAssociation для збереження
|
||||
|
||||
Зловмисник з дозволом **`ssm:CreateAssociation`** може створити асоціацію State Manager для автоматичного виконання команд на EC2-екземплярах, керованих SSM. Ці асоціації можна налаштувати на виконання через фіксовані інтервали, що робить їх придатними для збереження, схожого на бекдор, без інтерактивних сесій.
|
||||
```bash
|
||||
aws ssm create-association \
|
||||
--name SSM-Document-Name \
|
||||
--targets Key=InstanceIds,Values=target-instance-id \
|
||||
--parameters commands=["malicious-command"] \
|
||||
--schedule-expression "rate(30 minutes)" \
|
||||
--association-name association-name
|
||||
```
|
||||
> [!NOTE]
|
||||
> Цей метод збереження працює, поки EC2 екземпляр керується Systems Manager, агент SSM працює, і зловмисник має дозвіл на створення асоціацій. Це не вимагає інтерактивних сесій або явних дозволів ssm:SendCommand. **Важливо:** Параметр `--schedule-expression` (наприклад, `rate(30 minutes)`) повинен відповідати мінімальному інтервалу AWS у 30 хвилин. Для негайного або одноразового виконання повністю пропустіть `--schedule-expression` — асоціація буде виконана один раз після створення.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
@@ -1,27 +0,0 @@
|
||||
# AWS - SSM Perssitence
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## SSM
|
||||
|
||||
Для отримання додаткової інформації перегляньте:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Використання ssm:CreateAssociation для збереження доступу
|
||||
|
||||
Зловмисник з дозволом ssm:CreateAssociation може створити асоціацію State Manager для автоматичного виконання команд на EC2-екземплярах, керованих SSM. Ці асоціації можуть бути налаштовані на виконання через фіксовані інтервали, що робить їх придатними для збереження доступу, схожого на бекдор, без інтерактивних сесій.
|
||||
```bash
|
||||
aws ssm create-association \
|
||||
--name SSM-Document-Name \
|
||||
--targets Key=InstanceIds,Values=target-instance-id \
|
||||
--parameters commands=["malicious-command"] \
|
||||
--schedule-expression "rate(30 minutes)" \
|
||||
--association-name association-name
|
||||
```
|
||||
> [!NOTE]
|
||||
> Цей метод збереження працює, поки EC2 екземпляр керується Systems Manager, агент SSM працює, і зловмисник має дозвіл на створення асоціацій. Він не вимагає інтерактивних сесій або явних дозволів ssm:SendCommand. **Важливо:** Параметр `--schedule-expression` (наприклад, `rate(30 minutes)`) повинен відповідати мінімальному інтервалу AWS у 30 хвилин. Для негайного або одноразового виконання повністю пропустіть `--schedule-expression` — асоціація буде виконана один раз після створення.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
@@ -35,7 +35,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
|
||||
|
||||
### `ssm:StartSession`
|
||||
|
||||
Зловмисник з дозволом **`ssm:StartSession`** може **розпочати сесію, подібну до SSH, в екземплярах**, що працюють з Amazon SSM Agent, і **скомпрометувати IAM роль**, що працює всередині неї.
|
||||
Зловмисник з дозволом **`ssm:StartSession`** може **розпочати сесію, подібну до SSH, в екземплярах**, що працюють з Amazon SSM Agent, і **скомпрометувати IAM роль**, що працює всередині нього.
|
||||
```bash
|
||||
# Check for configured instances
|
||||
aws ssm describe-instance-information
|
||||
@@ -52,7 +52,7 @@ aws ssm start-session --target "$INSTANCE_ID"
|
||||
#### Підвищення привілеїв до ECS
|
||||
|
||||
Коли **ECS завдання** виконуються з **увімкненим `ExecuteCommand`**, користувачі з достатніми правами можуть використовувати `ecs execute-command`, щоб **виконати команду** всередині контейнера.\
|
||||
Згідно з [**документацією**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), це робиться шляхом створення безпечного каналу між пристроєм, який ви використовуєте для ініціювання команди “_exec_“, і цільовим контейнером з SSM Session Manager. (Плагін SSM Session Manager необхідний для цього)\
|
||||
Згідно з [**документацією**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), це робиться шляхом створення безпечного каналу між пристроєм, який ви використовуєте для ініціювання команди “_exec_“, і цільовим контейнером за допомогою SSM Session Manager. (Плагін SSM Session Manager необхідний для цього)\
|
||||
Отже, користувачі з `ssm:StartSession` зможуть **отримати оболонку всередині ECS завдань** з увімкненою цією опцією, просто виконавши:
|
||||
```bash
|
||||
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
|
||||
@@ -63,7 +63,7 @@ aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
|
||||
|
||||
### `ssm:ResumeSession`
|
||||
|
||||
Зловмисник з дозволом **`ssm:ResumeSession`** може повторно **розпочати сесію, схожу на SSH, в екземплярах**, що виконують Amazon SSM Agent з **відключеним** станом сесії SSM та **скомпрометувати IAM роль**, що виконується всередині неї.
|
||||
Зловмисник з дозволом **`ssm:ResumeSession`** може повторно **розпочати сесію, схожу на SSH, на екземплярах**, що виконують Amazon SSM Agent з **відключеним** станом сесії SSM та **компрометувати IAM роль**, що виконується всередині неї.
|
||||
```bash
|
||||
# Check for configured instances
|
||||
aws ssm describe-sessions
|
||||
@@ -95,7 +95,7 @@ aws ssm list-commands
|
||||
|
||||
### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`)
|
||||
|
||||
Зловмисник з цими дозволами може перерахувати всі **команди**, надіслані та **прочитати вихідні дані**, сподіваючись знайти **чутливу інформацію** в них.
|
||||
Зловмисник з цими дозволами може перерахувати всі **команди**, що були надіслані, та **прочитати вихідні дані**, сподіваючись знайти **чутливу інформацію** в них.
|
||||
```bash
|
||||
# You can use any of both options to get the command-id and instance id
|
||||
aws ssm list-commands
|
||||
@@ -105,9 +105,23 @@ aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
|
||||
```
|
||||
**Потенційний вплив:** Знайти чутливу інформацію виводу командних рядків.
|
||||
|
||||
### Використання ssm:CreateAssociation
|
||||
|
||||
Зловмисник з дозволом **`ssm:CreateAssociation`** може створити асоціацію State Manager для автоматичного виконання команд на EC2-екземплярах, керованих SSM. Ці асоціації можуть бути налаштовані на виконання з фіксованим інтервалом, що робить їх придатними для стійкості, схожої на бекдор, без інтерактивних сесій.
|
||||
```bash
|
||||
aws ssm create-association \
|
||||
--name SSM-Document-Name \
|
||||
--targets Key=InstanceIds,Values=target-instance-id \
|
||||
--parameters commands=["malicious-command"] \
|
||||
--schedule-expression "rate(30 minutes)" \
|
||||
--association-name association-name
|
||||
```
|
||||
> [!NOTE]
|
||||
> Цей метод збереження працює, поки EC2 екземпляр керується Systems Manager, агент SSM працює, і зловмисник має дозвіл на створення асоціацій. Це не вимагає інтерактивних сесій або явних дозволів ssm:SendCommand. **Важливо:** Параметр `--schedule-expression` (наприклад, `rate(30 minutes)`) повинен відповідати мінімальному інтервалу AWS у 30 хвилин. Для негайного або одноразового виконання повністю пропустіть `--schedule-expression` — асоціація буде виконана один раз після створення.
|
||||
|
||||
### Codebuild
|
||||
|
||||
Ви також можете використовувати SSM, щоб отримати доступ до проекту codebuild, що будується:
|
||||
Ви також можете використовувати SSM, щоб потрапити в проект codebuild, що будується:
|
||||
|
||||
{{#ref}}
|
||||
aws-codebuild-privesc.md
|
||||
|
||||
+24
-17
@@ -21,7 +21,6 @@ Amazon EC2 використовується для ініціювання **ві
|
||||
- Дані користувача
|
||||
- Існуючі EC2/AMIs/Снімки
|
||||
- Мережі
|
||||
- Мережі
|
||||
- Підмережі
|
||||
- Публічні IP-адреси
|
||||
- Відкриті порти
|
||||
@@ -35,7 +34,7 @@ Amazon EC2 використовується для ініціювання **ві
|
||||
|
||||
### Metadata Endpoint
|
||||
|
||||
AWS EC2 метадані - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, такої як його ID інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу.
|
||||
AWS EC2 метадані - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна для інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, таку як його ідентифікатор інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
|
||||
@@ -149,13 +148,13 @@ aws ec2 describe-vpc-peering-connections
|
||||
|
||||
## EBS
|
||||
|
||||
Amazon **EBS** (Elastic Block Store) **знімки** в основному є статичними **резервними копіями** обсягів AWS EBS. Іншими словами, це **копії** **дисків**, підключених до **EC2** екземпляра в певний момент часу. Знімки EBS можуть бути скопійовані між регіонами та обліковими записами або навіть завантажені та запущені локально.
|
||||
Amazon **EBS** (Elastic Block Store) **знімки** - це в основному статичні **резервні копії** обсягів AWS EBS. Іншими словами, це **копії** **дисків**, підключених до **EC2** екземпляра в певний момент часу. Знімки EBS можна копіювати між регіонами та обліковими записами або навіть завантажувати та запускати локально.
|
||||
|
||||
Знімки можуть містити **чутливу інформацію**, таку як **джерельний код або ключі API**, тому, якщо у вас є можливість, рекомендується перевірити їх.
|
||||
Знімки можуть містити **чутливу інформацію**, таку як **джерельний код або ключі API**, тому, якщо у вас є можливість, рекомендується перевірити це.
|
||||
|
||||
### Різниця AMI та EBS
|
||||
|
||||
**AMI** використовується для **запуску EC2 екземпляра**, тоді як **знімок EC2** використовується для **резервного копіювання та відновлення даних, збережених на обсязі EBS**. Хоча знімок EC2 може бути використаний для створення нового AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми.
|
||||
**AMI** використовується для **запуску EC2 екземпляра**, тоді як **знімок EC2** використовується для **резервного копіювання та відновлення даних, збережених на обсязі EBS**. Хоча знімок EC2 можна використовувати для створення нової AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми.
|
||||
|
||||
### Підвищення привілеїв
|
||||
|
||||
@@ -171,7 +170,7 @@ Amazon **EBS** (Elastic Block Store) **знімки** в основному є
|
||||
|
||||
**SSM Agent** дозволяє Systems Manager оновлювати, керувати та налаштовувати ці ресурси. Агент **обробляє запити від служби Systems Manager в AWS Cloud** і потім виконує їх відповідно до запиту.
|
||||
|
||||
**SSM Agent постачається**[ **попередньо встановленим у деяких AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) або вам потрібно [**встановити їх вручну**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) на екземплярах. Також IAM роль, що використовується всередині екземпляра, повинна мати політику **AmazonEC2RoleforSSM**, щоб мати можливість спілкуватися.
|
||||
**SSM Agent постачається**[ **попередньо встановленим у деяких AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) або вам потрібно [**встановити їх вручну**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) на екземплярах. Також роль IAM, що використовується всередині екземпляра, повинна мати політику **AmazonEC2RoleforSSM**, щоб мати можливість спілкуватися.
|
||||
|
||||
### Перерахування
|
||||
```bash
|
||||
@@ -182,7 +181,7 @@ 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 інстансі, просто виконавши:
|
||||
Ви можете перевірити, чи працює Systems Manager на EC2 інстансі, просто виконавши:
|
||||
```bash
|
||||
ps aux | grep amazon-ssm
|
||||
```
|
||||
@@ -194,6 +193,14 @@ ps aux | grep amazon-ssm
|
||||
../../aws-privilege-escalation/aws-ssm-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### Perssistence
|
||||
|
||||
На наступній сторінці ви можете перевірити, як **зловживати дозволами SSM для досягнення стійкості**:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-persistence/aws-ssm-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
## ELB
|
||||
|
||||
**Elastic Load Balancing** (ELB) є **сервісом балансування навантаження для Amazon Web Services** (AWS). ELB автоматично **розподіляє вхідний трафік додатків** і масштабує ресурси для задоволення вимог трафіку.
|
||||
@@ -228,7 +235,7 @@ aws autoscaling describe-load-balancers
|
||||
```
|
||||
## Nitro
|
||||
|
||||
AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Завдяки перенесенню функцій віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру.
|
||||
AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційної функціональності віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Відвантажуючи функції віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру.
|
||||
|
||||
Отримайте більше інформації та дізнайтеся, як його перерахувати з:
|
||||
|
||||
@@ -238,7 +245,7 @@ aws-nitro-enum.md
|
||||
|
||||
## VPN
|
||||
|
||||
VPN дозволяє підключити вашу **локальну мережу (site-to-site VPN)** або **ноутбуки працівників (Client VPN)** до **AWS VPC**, щоб сервіси могли бути доступні без необхідності їх відкриття в Інтернеті.
|
||||
VPN дозволяє підключити вашу **локальну мережу (site-to-site VPN)** або **ноутбуки працівників (Client VPN)** до **AWS VPC**, щоб сервіси могли бути доступні без необхідності їх відкриття в інтернеті.
|
||||
|
||||
#### Основні компоненти AWS VPN
|
||||
|
||||
@@ -253,15 +260,15 @@ VPN дозволяє підключити вашу **локальну мереж
|
||||
- VPG - це кінцева точка AWS для VPN-з'єднання.
|
||||
- Він обробляє безпечну комунікацію між вашим VPC та вашою локальною мережею.
|
||||
3. **Site-to-Site VPN Connection**:
|
||||
- З'єднання Site-to-Site VPN з'єднує вашу локальну мережу з VPC через безпечний IPsec VPN тунель.
|
||||
- Site-to-Site VPN з'єднання підключає вашу локальну мережу до VPC через безпечний IPsec VPN тунель.
|
||||
- Цей тип з'єднання вимагає Customer Gateway та Virtual Private Gateway.
|
||||
- Використовується для безпечної, стабільної та послідовної комунікації між вашим дата-центром або мережею та вашим AWS середовищем.
|
||||
- Він використовується для безпечної, стабільної та послідовної комунікації між вашим дата-центром або мережею та вашим AWS середовищем.
|
||||
- Зазвичай використовується для регулярних, довгострокових з'єднань і оплачується на основі обсягу даних, переданих через з'єднання.
|
||||
4. **Client VPN Endpoint**:
|
||||
- Кінцева точка Client VPN - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN.
|
||||
- Використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі.
|
||||
- Вона відрізняється від Site-to-Site VPN тим, що призначена для окремих клієнтів, а не для підключення цілих мереж.
|
||||
- З Client VPN кожен клієнтський пристрій використовує програмне забезпечення VPN-клієнта для встановлення безпечного з'єднання.
|
||||
- Client VPN endpoint - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN.
|
||||
- Він використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі.
|
||||
- Він відрізняється від Site-to-Site VPN тим, що призначений для окремих клієнтів, а не для підключення цілих мереж.
|
||||
- З Client VPN кожен клієнтський пристрій використовує програмне забезпечення клієнта VPN для встановлення безпечного з'єднання.
|
||||
|
||||
Ви можете [**знайти більше інформації про переваги та компоненти AWS VPN тут**](aws-vpc-and-networking-basic-information.md#vpn).
|
||||
|
||||
@@ -299,9 +306,9 @@ aws ec2 describe-vpn-connections
|
||||
|
||||
**opvn конфігураційні файли**
|
||||
|
||||
Якщо **VPN-з'єднання було встановлено**, вам слід шукати **`.opvn`** конфігураційні файли в системі. Більше того, одне з місць, де ви можете знайти **конфігурації**, це **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
|
||||
Якщо **VPN-з'єднання було встановлено**, вам слід шукати **`.opvn`** конфігураційні файли в системі. Більше того, одне місце, де ви можете знайти **конфігурації**, це **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
|
||||
|
||||
#### **Постексплуатація**
|
||||
#### **Пост Експлуатація**
|
||||
|
||||
{{#ref}}
|
||||
../../aws-post-exploitation/aws-vpn-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user