Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-p

This commit is contained in:
Translator
2025-07-24 06:57:14 +00:00
parent 8839730891
commit db5d5166d0
5 changed files with 71 additions and 50 deletions
+1 -1
View File
@@ -230,7 +230,7 @@
- [AWS - SNS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md)
- [AWS - Secrets Manager Persistence](pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md)
- [AWS - SQS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md)
- [AWS - SSM Perssitence](pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md)
- [AWS - SSM Perssitence](pentesting-cloud/aws-security/aws-persistence/aws-ssm-persistence.md)
- [AWS - Step Functions Persistence](pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md)
- [AWS - STS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md)
- [AWS - Post Exploitation](pentesting-cloud/aws-security/aws-post-exploitation/README.md)
@@ -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
@@ -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