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
- Copia el código original de la Lambda
- 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
- Llama al API gateway relacionado con la lambda para ejecutar el código
- Crea una nueva versión con el código original, publica y despliega esa versión a $LATEST.
- Esto ocultará el código con puerta trasera en una versión anterior
- 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 - 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).
- Selecciona el método POST creado y en Acciones selecciona
Deploy API - 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}}