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

This commit is contained in:
Translator
2025-07-24 06:56:35 +00:00
parent e1264b81ec
commit 8fc69b76a3
4 changed files with 43 additions and 21 deletions

View File

@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### Verwendung von ssm:CreateAssociation für Persistenz
Ein Angreifer mit der Berechtigung ssm:CreateAssociation kann eine State Manager Association erstellen, um automatisch Befehle auf EC2-Instanzen auszuführen, die von SSM verwaltet werden. Diese Assoziationen können so konfiguriert werden, dass sie in festen Intervallen ausgeführt werden, was sie für eine backdoor-ähnliche Persistenz ohne interaktive Sitzungen geeignet macht.
Ein Angreifer mit der Berechtigung **`ssm:CreateAssociation`** kann eine State Manager Association erstellen, um automatisch Befehle auf EC2-Instanzen auszuführen, die von SSM verwaltet werden. Diese Assoziationen können so konfiguriert werden, dass sie in festen Intervallen ausgeführt werden, was sie für eine backdoorartige Persistenz ohne interaktive Sitzungen geeignet macht.
```bash
aws ssm create-association \
--name SSM-Document-Name \
@@ -22,6 +22,6 @@ aws ssm create-association \
--association-name association-name
```
> [!NOTE]
> Diese Persistenzmethode funktioniert, solange die EC2-Instanz von Systems Manager verwaltet wird, der SSM-Agent läuft und der Angreifer die Berechtigung hat, Assoziationen zu erstellen. Es sind keine interaktiven Sitzungen oder expliziten ssm:SendCommand-Berechtigungen erforderlich. **Wichtig:** Der Parameter `--schedule-expression` (z. B. `rate(30 minutes)`) muss das Mindestintervall von 30 Minuten von AWS einhalten. Für sofortige oder einmalige Ausführung den Parameter `--schedule-expression` vollständig weglassen — die Assoziation wird einmal nach der Erstellung ausgeführt.
> Diese Persistenzmethode funktioniert, solange die EC2-Instanz von Systems Manager verwaltet wird, der SSM-Agent läuft und der Angreifer die Berechtigung hat, Assoziationen zu erstellen. Es sind keine interaktiven Sitzungen oder expliziten ssm:SendCommand-Berechtigungen erforderlich. **Wichtig:** Der Parameter `--schedule-expression` (z. B. `rate(30 minutes)`) muss das Mindestintervall von 30 Minuten von AWS einhalten. Für sofortige oder einmalige Ausführung den `--schedule-expression`-Parameter vollständig weglassen — die Assoziation wird einmal nach der Erstellung ausgeführt.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -35,7 +35,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
### `ssm:StartSession`
Ein Angreifer mit der Berechtigung **`ssm:StartSession`** kann **eine SSH-ähnliche Sitzung in Instanzen** starten, die den Amazon SSM-Agenten ausführen, und **die IAM-Rolle** kompromittieren, die darin ausgeführt wird.
Ein Angreifer mit der Berechtigung **`ssm:StartSession`** kann **eine SSH-ähnliche Sitzung in Instanzen** starten, die den Amazon SSM-Agenten ausführen, und **die IAM-Rolle** kompromittieren, die darin läuft.
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -52,7 +52,7 @@ aws ssm start-session --target "$INSTANCE_ID"
#### Privilegieneskalation zu ECS
Wenn **ECS-Aufgaben** mit **`ExecuteCommand` aktiviert** ausgeführt werden, können Benutzer mit ausreichenden Berechtigungen `ecs execute-command` verwenden, um **einen Befehl** innerhalb des Containers auszuführen.\
Laut [**der Dokumentation**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) geschieht dies durch die Erstellung eines sicheren Kanals zwischen dem Gerät, das Sie verwenden, um den _exec_“ Befehl zu initiieren, und dem Zielcontainer mit SSM Session Manager. (SSM Session Manager Plugin ist notwendig, damit dies funktioniert)\
Laut [**der Dokumentation**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) geschieht dies durch die Erstellung eines sicheren Kanals zwischen dem Gerät, das Sie verwenden, um den _exec_“-Befehl zu initiieren, und dem Zielcontainer mit SSM Session Manager. (SSM Session Manager Plugin ist notwendig, damit dies funktioniert)\
Daher werden Benutzer mit `ssm:StartSession` in der Lage sein, **eine Shell innerhalb von ECS-Aufgaben** mit dieser Option aktiviert zu erhalten, indem sie einfach Folgendes ausführen:
```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`
Ein Angreifer mit der Berechtigung **`ssm:ResumeSession`** kann eine SSH-ähnliche Sitzung in Instanzen, die den Amazon SSM-Agenten ausführen, mit einem **getrennten** SSM-Sitzungsstatus **neu starten** und die IAM-Rolle, die darin ausgeführt wird, **kompromittieren**.
Ein Angreifer mit der Berechtigung **`ssm:ResumeSession`** kann eine **SSH-ähnliche Sitzung in Instanzen** neu-**starten**, die den Amazon SSM-Agenten mit einem **getrennten** SSM-Sitzungsstatus ausführen und die **IAM-Rolle** kompromittieren, die darin läuft.
```bash
# Check for configured instances
aws ssm describe-sessions
@@ -83,7 +83,7 @@ aws ssm describe-parameters
aws ssm get-parameters --names id_rsa --with-decryption
aws ssm get-parameter --name id_rsa --with-decryption
```
**Potenzielle Auswirkungen:** Sensible Informationen innerhalb der Parameter finden.
**Potenzielle Auswirkungen:** Sensible Informationen in den Parametern finden.
### `ssm:ListCommands`
@@ -95,7 +95,7 @@ aws ssm list-commands
### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`)
Ein Angreifer mit diesen Berechtigungen kann alle **Befehle** auflisten, die gesendet wurden, und **die Ausgabe** lesen, in der Hoffnung, **sensible Informationen** darin zu finden.
Ein Angreifer mit diesen Berechtigungen kann alle **Befehle** auflisten und die **Ausgabe** lesen, in der Hoffnung, **sensible Informationen** darin zu finden.
```bash
# You can use any of both options to get the command-id and instance id
aws ssm list-commands
@@ -103,11 +103,25 @@ aws ssm list-command-invocations
aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
```
**Potenzielle Auswirkungen:** Sensible Informationen in der Ausgabe der Befehlszeilen finden.
**Potenzielle Auswirkungen:** Sensible Informationen im Output der Befehlszeilen finden.
### Verwendung von ssm:CreateAssociation
Ein Angreifer mit der Berechtigung **`ssm:CreateAssociation`** kann eine State Manager Association erstellen, um automatisch Befehle auf EC2-Instanzen auszuführen, die von SSM verwaltet werden. Diese Assoziationen können so konfiguriert werden, dass sie in festen Intervallen ausgeführt werden, was sie für eine Art von Hintertür-Persistenz ohne interaktive Sitzungen geeignet macht.
```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]
> Diese Persistenzmethode funktioniert, solange die EC2-Instanz von Systems Manager verwaltet wird, der SSM-Agent läuft und der Angreifer die Berechtigung hat, Assoziationen zu erstellen. Es sind keine interaktiven Sitzungen oder expliziten ssm:SendCommand-Berechtigungen erforderlich. **Wichtig:** Der Parameter `--schedule-expression` (z. B. `rate(30 minutes)`) muss das minimale Intervall von 30 Minuten von AWS einhalten. Für sofortige oder einmalige Ausführung den Parameter `--schedule-expression` vollständig weglassen — die Assoziation wird einmal nach der Erstellung ausgeführt.
### Codebuild
Sie können SSM auch verwenden, um in ein Codebuild-Projekt, das gerade erstellt wird, einzutreten:
Sie können SSM auch verwenden, um in ein Codebuild-Projekt einzudringen, das gerade erstellt wird:
{{#ref}}
aws-codebuild-privesc.md

View File

@@ -4,7 +4,7 @@
## VPC & Networking
Erfahren Sie, was eine VPC ist und welche Komponenten sie hat in:
Erfahren Sie, was ein VPC ist und welche Komponenten es hat in:
{{#ref}}
aws-vpc-and-networking-basic-information.md
@@ -31,7 +31,7 @@ Interessante Dinge, die in EC2 aufgezählt werden können:
Die Verwendung von **Rollen**, um Berechtigungen für Anwendungen zu gewähren, die auf **EC2-Instanzen** ausgeführt werden, erfordert eine zusätzliche Konfiguration. Eine Anwendung, die auf einer EC2-Instanz läuft, ist durch das virtualisierte Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung ist ein zusätzlicher Schritt erforderlich, um eine AWS-Rolle und die zugehörigen Berechtigungen einer EC2-Instanz zuzuweisen und sie ihren Anwendungen zur Verfügung zu stellen.
Dieser zusätzliche Schritt ist die **Erstellung eines** [_**Instance Profiles**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), das an die Instanz angehängt ist. Das **Instance Profile enthält die Rolle und** kann die temporären Anmeldeinformationen der Rolle einer Anwendung, die auf der Instanz läuft, zur Verfügung stellen. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle angibt. Beachten Sie, dass **nur eine Rolle gleichzeitig einer EC2-Instanz zugewiesen werden kann**, und alle Anwendungen auf der Instanz teilen sich dieselbe Rolle und Berechtigungen.
Dieser zusätzliche Schritt ist die **Erstellung eines** [_**Instance Profiles**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html), das an die Instanz angehängt ist. Das **Instance Profile enthält die Rolle und** kann die temporären Anmeldeinformationen der Rolle einer Anwendung, die auf der Instanz läuft, bereitstellen. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle angibt. Beachten Sie, dass **nur eine Rolle gleichzeitig einer EC2-Instanz zugewiesen werden kann**, und alle Anwendungen auf der Instanz teilen sich dieselbe Rolle und Berechtigungen.
### Metadata Endpoint
@@ -149,13 +149,13 @@ Auf der folgenden Seite können Sie überprüfen, wie man **EC2-Berechtigungen m
## EBS
Amazon **EBS** (Elastic Block Store) **Snapshots** sind im Grunde statische **Backups** von AWS EBS-Volumes. Mit anderen Worten, sie sind **Kopien** der **Festplatten**, die zu einem bestimmten Zeitpunkt an einer **EC2**-Instanz angeschlossen sind. EBS-Snapshots können über Regionen und Konten hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
Amazon **EBS** (Elastic Block Store) **Snapshots** sind im Grunde statische **Backups** von AWS EBS-Volumes. Mit anderen Worten, sie sind **Kopien** der **Festplatten**, die zu einem bestimmten Zeitpunkt an einer **EC2**-Instanz angehängt sind. EBS-Snapshots können über Regionen und Konten hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
Snapshots können **sensible Informationen** wie **Quellcode oder API-Schlüssel** enthalten, daher wird empfohlen, sie zu überprüfen, wenn Sie die Möglichkeit dazu haben.
### Unterschied AMI & EBS
Eine **AMI** wird verwendet, um eine **EC2-Instanz zu starten**, während ein EC2 **Snapshot** verwendet wird, um **Daten, die auf einem EBS-Volume gespeichert sind, zu sichern und wiederherzustellen**. Während ein EC2-Snapshot verwendet werden kann, um eine neue AMI zu erstellen, ist es nicht dasselbe wie eine AMI, und es enthält keine Informationen über das Betriebssystem, den Anwendungsserver oder andere Software, die zum Ausführen einer Anwendung erforderlich ist.
Eine **AMI** wird verwendet, um **eine EC2-Instanz zu starten**, während ein EC2 **Snapshot** verwendet wird, um **Daten, die auf einem EBS-Volume gespeichert sind, zu sichern und wiederherzustellen**. Während ein EC2-Snapshot verwendet werden kann, um eine neue AMI zu erstellen, ist es nicht dasselbe wie eine AMI, und es enthält keine Informationen über das Betriebssystem, den Anwendungsserver oder andere Software, die zum Ausführen einer Anwendung erforderlich ist.
### Privesc
@@ -188,15 +188,23 @@ ps aux | grep amazon-ssm
```
### Privesc
Auf der folgenden Seite können Sie überprüfen, wie man **SSM-Berechtigungen missbraucht, um Privilegien zu eskalieren**:
Auf der folgenden Seite können Sie überprüfen, wie Sie **SSM-Berechtigungen missbrauchen, um Privilegien zu eskalieren**:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc.md
{{#endref}}
### Persistenz
Auf der folgenden Seite können Sie überprüfen, wie Sie **SSM-Berechtigungen missbrauchen, um Persistenz zu erreichen**:
{{#ref}}
../../aws-persistence/aws-ssm-persistence.md
{{#endref}}
## ELB
**Elastic Load Balancing** (ELB) ist ein **Lastverteilungsdienst für Amazon Web Services** (AWS) Bereitstellungen. ELB verteilt automatisch **eingehenden Anwendungsverkehr** und skaliert Ressourcen, um den Verkehrsanforderungen gerecht zu werden.
**Elastic Load Balancing** (ELB) ist ein **Lastverteilungsdienst für Amazon Web Services** (AWS) Bereitstellungen. ELB **verteilt automatisch den eingehenden Anwendungsverkehr** und skaliert Ressourcen, um den Verkehrsanforderungen gerecht zu werden.
### Enumeration
```bash
@@ -238,7 +246,7 @@ aws-nitro-enum.md
## VPN
Ein VPN ermöglicht es, Ihr **lokales Netzwerk (Site-to-Site VPN)** oder die **Laptop der Mitarbeiter (Client VPN)** mit einer **AWS VPC** zu verbinden, sodass Dienste ohne Notwendigkeit, sie dem Internet auszusetzen, zugegriffen werden kann.
Ein VPN ermöglicht es, Ihr **lokales Netzwerk (Site-to-Site VPN)** oder die **Laptops der Mitarbeiter (Client VPN)** mit einer **AWS VPC** zu verbinden, sodass Dienste ohne Exposition gegenüber dem Internet genutzt werden können.
#### Grundlegende AWS VPN-Komponenten
@@ -253,14 +261,14 @@ Ein VPN ermöglicht es, Ihr **lokales Netzwerk (Site-to-Site VPN)** oder die **L
- VPG ist der AWS-Seitenendpunkt für die VPN-Verbindung.
- Es verwaltet die sichere Kommunikation zwischen Ihrer VPC und Ihrem lokalen Netzwerk.
3. **Site-to-Site VPN-Verbindung**:
- Eine Site-to-Site VPN-Verbindung verbindet Ihr lokales Netzwerk über einen sicheren IPsec VPN-Tunnel mit einer VPC.
- Eine Site-to-Site VPN-Verbindung verbindet Ihr lokales Netzwerk mit einer VPC über einen sicheren IPsec VPN-Tunnel.
- Diese Art von Verbindung erfordert ein Customer Gateway und ein Virtual Private Gateway.
- Es wird für sichere, stabile und konsistente Kommunikation zwischen Ihrem Rechenzentrum oder Netzwerk und Ihrer AWS-Umgebung verwendet.
- Sie wird für sichere, stabile und konsistente Kommunikation zwischen Ihrem Rechenzentrum oder Netzwerk und Ihrer AWS-Umgebung verwendet.
- Typischerweise für regelmäßige, langfristige Verbindungen genutzt und wird basierend auf der Menge der über die Verbindung übertragenen Daten abgerechnet.
4. **Client VPN-Endpunkt**:
- Ein Client VPN-Endpunkt ist eine Ressource, die Sie in AWS erstellen, um Client-VPN-Sitzungen zu aktivieren und zu verwalten.
- Es wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder Ihrem lokalen Netzwerk zu ermöglichen.
- Es unterscheidet sich vom Site-to-Site VPN, da es für einzelne Clients und nicht für die Verbindung ganzer Netzwerke konzipiert ist.
- Er wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder Ihrem lokalen Netzwerk zu ermöglichen.
- Er unterscheidet sich vom Site-to-Site VPN, da er für einzelne Clients konzipiert ist und nicht ganze Netzwerke verbindet.
- Mit Client VPN verwendet jedes Client-Gerät eine VPN-Client-Software, um eine sichere Verbindung herzustellen.
Sie können [**hier mehr Informationen über die Vorteile und Komponenten von AWS VPNs finden**](aws-vpc-and-networking-basic-information.md#vpn).