AWS - Lambda Persistence

Apoya a HackTricks

Lambda

Para más información consulta:

AWS - Lambda Enum

Persistencia de Lambda Layer

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

AWS - Lambda Layers Persistence

Persistencia de Lambda Extension

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

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 con solo 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

Cron/Actuador de eventos

El hecho de que puedes hacer que las funciones lambda se ejecuten cuando algo sucede o cuando pasa un 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 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.

Apoya a HackTricks

Last updated