AWS - Lambda Persistence
Last updated
Last updated
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)
Pour plus d'informations, consultez :
Il est possible d'introduire/installer une porte dérobée dans une couche pour exécuter du code arbitraire lorsque la lambda est exécutée de manière discrète :
En abusant des couches Lambda, il est également possible d'abuser des extensions et de persister dans la lambda mais aussi de voler et modifier des requêtes.
Il est possible d'accorder l'accès à différentes actions lambda (comme invoquer ou mettre à jour le code) à des comptes externes :
Une Lambda peut avoir différentes versions (avec un code différent pour chaque version). Ensuite, vous pouvez créer différents alias avec différentes versions de la lambda et définir des poids différents pour chacun. De cette façon, un attaquant pourrait créer une version 1 avec porte dérobée et une version 2 avec uniquement le code légitime et n'exécuter que la version 1 dans 1% des requêtes pour rester discret.
Copiez le code original de la Lambda
Créez une nouvelle version en installant une porte dérobée dans le code original (ou juste avec du code malveillant). Publiez et déployez cette version sur $LATEST
Appelez la passerelle API liée à la lambda pour exécuter le code
Créez une nouvelle version avec le code original, Publiez et déployez cette version sur $LATEST.
Cela cachera le code avec porte dérobée dans une version précédente
Allez à la passerelle API et créez une nouvelle méthode POST (ou choisissez toute autre méthode) qui exécutera la version avec porte dérobée de la lambda : arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1
Notez le final :1 de l'arn indiquant la version de la fonction (la version 1 sera celle avec porte dérobée dans ce scénario).
Sélectionnez la méthode POST créée et dans Actions sélectionnez Déployer l'API
Maintenant, lorsque vous appelez la fonction via POST, votre porte dérobée sera invoquée
Le fait que vous puissiez faire exécuter des fonctions lambda lorsque quelque chose se produit ou lorsque du temps passe rend lambda un moyen agréable et courant d'obtenir une persistance et d'éviter la détection. Voici quelques idées pour rendre votre présence dans AWS plus discrète en créant des lambdas.
Chaque fois qu'un nouvel utilisateur est créé, lambda génère une nouvelle clé utilisateur et l'envoie à l'attaquant.
Chaque fois qu'un nouveau rôle est créé, lambda accorde des permissions d'assumer le rôle aux utilisateurs compromis.
Chaque fois que de nouveaux journaux cloudtrail sont générés, les supprimer/les modifier.
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)