AWS - Lambda Persistence

Apoya a HackTricks

Lambda

Para más información revisa:

AWS - Lambda Enum

Lambda Layer Persistence

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

AWS - Lambda Layers Persistence

Lambda Extension Persistence

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

AWS - Abusing Lambda Extensions

Vía 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 diferente código cada versión). Luego, puedes crear diferentes alias con diferentes versiones de la lambda y asignar diferentes pesos a cada una. De esta manera, un atacante podría crear una versión 1 con backdoor 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.

Backdoor de Versión + API Gateway

  1. Copia el código original de la Lambda

  2. Crea una nueva versión con backdoor 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, Publícala y despliega esa versión a $LATEST.

  5. Esto ocultará el código con backdoor 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 backdoor 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 que tiene backdoor 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 Backdoor será invocado

Actuador Cron/Event

El hecho de que puedas hacer que las funciones lambda se ejecuten cuando algo sucede o cuando pasa algún tiempo hace que lambda sea una forma agradable y común de obtener persistencia y evitar la 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 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 logs de cloudtrail, eliminarlos/alterarlos

Apoya a HackTricks

Last updated