AWS - Lambda Persistence

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Lambda

Pour plus d'informations, consultez :

pageAWS - Lambda Enum

Persistance de la couche Lambda

Il est possible d'introduire/un backdoor dans une couche pour exécuter du code arbitraire lorsque la lambda est exécutée de manière furtive :

pageAWS - Lambda Layers Persistence

Persistance de l'extension Lambda

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.

pageAWS - Abusing Lambda Extensions

Via les politiques de ressources

Il est possible d'accorder l'accès à différentes actions lambda (telles que invoquer ou mettre à jour le code) à des comptes externes :

Versions, Alias & Poids

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. Ainsi, un attaquant pourrait créer une version 1 avec backdoor et une version 2 avec uniquement le code légitime et exécuter uniquement la version 1 dans 1 % des requêtes pour rester furtif.

Backdoor de version + Passerelle API

  1. Copiez le code original de la Lambda

  2. Créez une nouvelle version en introduisant un backdoor dans le code original (ou simplement avec du code malveillant). Publiez et déployez cette version sur $LATEST

  3. Appelez la passerelle API liée à la lambda pour exécuter le code

  4. Créez une nouvelle version avec le code original, publiez et déployez cette version sur $LATEST.

  5. Cela cachera le code backdoor dans une version précédente

  6. Allez dans la passerelle API et créez une nouvelle méthode POST (ou choisissez une autre méthode) qui exécutera la version backdoor de la lambda : arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1

  7. Notez le :1 final de l'arn indiquant la version de la fonction (la version 1 sera celle avec backdoor dans ce scénario).

  8. Sélectionnez la méthode POST créée et dans Actions sélectionnez Déployer l'API

  9. Maintenant, lorsque vous appelez la fonction via POST, votre backdoor sera invoqué

Actuateur Cron/Événement

Le fait que vous puissiez faire fonctionner des fonctions lambda lorsque quelque chose se produit ou lorsque du temps s'écoule rend lambda un moyen agréable et courant d'obtenir de la persistance et d'éviter la détection. Voici quelques idées pour rendre votre présence dans AWS plus furtive en créant des lambdas.

  • Chaque fois qu'un nouvel utilisateur est créé, la lambda génère une nouvelle clé utilisateur et l'envoie à l'attaquant.

  • Chaque fois qu'un nouveau rôle est créé, la lambda donne des autorisations de rôle d'assumer aux utilisateurs compromis.

  • Chaque fois que de nouveaux journaux cloudtrail sont générés, les supprimer/modifier

Dernière mise à jour