AWS - Lambda Persistence

Supporta HackTricks

Lambda

Per maggiori informazioni controlla:

AWS - Lambda Enum

Lambda Layer Persistence

È possibile introdurre/backdoor un layer per eseguire codice arbitrario quando la lambda viene eseguita in modo furtivo:

AWS - Lambda Layers Persistence

Lambda Extension Persistence

Abusando dei Lambda Layers è anche possibile abusare delle estensioni e persistere nella lambda ma anche rubare e modificare le richieste.

AWS - Abusing Lambda Extensions

Via resource policies

È possibile concedere l'accesso a diverse azioni lambda (come invocare o aggiornare il codice) a account esterni:

Versions, Aliases & Weights

Una Lambda può avere diverse versioni (con codice diverso per ogni versione). Poi, puoi creare diversi alias con diverse versioni della lambda e impostare pesi diversi per ciascuno. In questo modo un attaccante potrebbe creare una versione 1 con backdoor e una versione 2 con solo il codice legittimo e eseguire solo la versione 1 nell'1% delle richieste per rimanere furtivo.

Version Backdoor + API Gateway

  1. Copia il codice originale della Lambda

  2. Crea una nuova versione con backdoor del codice originale (o solo con codice malevolo). Pubblica e distribuisci quella versione su $LATEST

  3. Chiama l'API gateway correlato alla lambda per eseguire il codice

  4. Crea una nuova versione con il codice originale, Pubblica e distribuisci quella versione su $LATEST.

  5. Questo nasconderà il codice con backdoor in una versione precedente

  6. Vai all'API Gateway e crea un nuovo metodo POST (o scegli qualsiasi altro metodo) che eseguirà la versione con backdoor della lambda: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1

  7. Nota il finale :1 dell'arn che indica la versione della funzione (la versione 1 sarà quella con backdoor in questo scenario).

  8. Seleziona il metodo POST creato e in Azioni seleziona Deploy API

  9. Ora, quando chiami la funzione tramite POST la tua Backdoor verrà invocata

Cron/Event actuator

Il fatto che tu possa far eseguire le funzioni lambda quando succede qualcosa o quando passa del tempo rende lambda un modo interessante e comune per ottenere persistenza ed evitare il rilevamento. Ecco alcune idee per rendere la tua presenza in AWS più furtiva creando lambdas.

  • Ogni volta che viene creato un nuovo utente, lambda genera una nuova chiave utente e la invia all'attaccante.

  • Ogni volta che viene creato un nuovo ruolo, lambda concede permessi di assunzione ruolo agli utenti compromessi.

  • Ogni volta che vengono generati nuovi log cloudtrail, cancellarli/modificarli

Supporta HackTricks

Last updated