Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence

AWS - Persistencia de Lambda

{{#include ../../../../banners/hacktricks-training.md}}

Lambda

Para más información consulta:

{{#ref}} ../../aws-services/aws-lambda-enum.md {{#endref}}

Persistencia de Lambda Layer

Es posible introducir/puerta trasera una capa para ejecutar código arbitrario cuando la lambda se ejecuta de manera sigilosa:

{{#ref}} aws-lambda-layers-persistence.md {{#endref}}

Persistencia de Extensiones de Lambda

Abusando de las Lambda Layers también es posible abusar de las extensiones y persistir en la lambda, pero también robar y modificar solicitudes.

{{#ref}} aws-abusing-lambda-extensions.md {{#endref}}

A través de políticas de recursos

Es posible otorgar acceso a diferentes acciones de lambda (como invocar o actualizar código) a cuentas externas:

Versiones, Alias y Pesos

Una Lambda puede tener diferentes versiones (con código diferente en cada versión).
Luego, puedes crear diferentes alias con diferentes versiones de la lambda y establecer diferentes pesos para cada uno.
De esta manera, un atacante podría crear una versión 1 con puerta trasera y una versión 2 solo con el código legítimo y ejecutar solo la versión 1 en el 1% de las solicitudes para permanecer sigiloso.

Puerta trasera de versión + API Gateway

  1. Copia el código original de la Lambda
  2. Crea una nueva versión con puerta trasera del código original (o solo con código malicioso). Publica y despliega esa versión a $LATEST
  3. Llama al API gateway relacionado con la lambda para ejecutar el código
  4. Crea una nueva versión con el código original, publica y despliega esa versión a $LATEST.
  5. Esto ocultará el código con puerta trasera en una versión anterior
  6. Ve al API Gateway y crea un nuevo método POST (o elige cualquier otro método) que ejecutará la versión con puerta trasera de la lambda: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1
  7. Nota el final :1 del arn indicando la versión de la función (la versión 1 será la con puerta trasera en este escenario).
  8. Selecciona el método POST creado y en Acciones selecciona Deploy API
  9. Ahora, cuando llames a la función vía POST tu Puerta Trasera será invocada

Actuador Cron/Event

El hecho de que puedes hacer que las funciones lambda se ejecuten cuando algo sucede o cuando pasa el tiempo hace que lambda sea una forma agradable y común de obtener persistencia y evitar detección.
Aquí tienes algunas ideas para hacer tu presencia en AWS más sigilosa creando lambdas.

  • Cada vez que se crea un nuevo usuario, lambda genera una nueva clave de usuario y se la envía al atacante.
  • Cada vez que se crea un nuevo rol, lambda otorga permisos de asumir rol a usuarios comprometidos.
  • Cada vez que se generan nuevos registros de cloudtrail, elimínalos/modifícalos.

{{#include ../../../../banners/hacktricks-training.md}}