AWS - Lambda Persistence

Support HackTricks

Lambda

Para mais informações, confira:

AWS - Lambda Enum

Lambda Layer Persistence

É possível introduzir/backdoor uma camada para executar código arbitrário quando a lambda é executada de forma furtiva:

AWS - Lambda Layers Persistence

Lambda Extension Persistence

Abusando das Lambda Layers, também é possível abusar das extensões e persistir na lambda, além de roubar e modificar solicitações.

AWS - Abusing Lambda Extensions

Via resource policies

É possível conceder acesso a diferentes ações da lambda (como invocar ou atualizar código) para contas externas:

Versions, Aliases & Weights

Uma Lambda pode ter diferentes versões (com código diferente em cada versão). Então, você pode criar diferentes aliases com diferentes versões da lambda e definir diferentes pesos para cada uma. Dessa forma, um atacante poderia criar uma versão 1 com backdoor e uma versão 2 apenas com o código legítimo e executar apenas a versão 1 em 1% das solicitações para permanecer furtivo.

Version Backdoor + API Gateway

  1. Copie o código original da Lambda

  2. Crie uma nova versão com backdoor no código original (ou apenas com código malicioso). Publique e implante essa versão no $LATEST

  3. Chame o API gateway relacionado à lambda para executar o código

  4. Crie uma nova versão com o código original, publique e implante essa versão no $LATEST.

  5. Isso esconderá o código com backdoor em uma versão anterior

  6. Vá para o API Gateway e crie um novo método POST (ou escolha qualquer outro método) que executará a versão com backdoor da lambda: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1

  7. Note o final :1 do arn indicando a versão da função (a versão 1 será a com backdoor neste cenário).

  8. Selecione o método POST criado e em Ações selecione Deploy API

  9. Agora, quando você chamar a função via POST, seu Backdoor será invocado

Cron/Event actuator

O fato de que você pode fazer funções lambda rodarem quando algo acontece ou quando algum tempo passa torna a lambda uma maneira interessante e comum de obter persistência e evitar detecção. Aqui estão algumas ideias para tornar sua presença na AWS mais furtiva criando lambdas.

  • Toda vez que um novo usuário é criado, a lambda gera uma nova chave de usuário e a envia para o atacante.

  • Toda vez que um novo papel é criado, a lambda concede permissões de assumir papel para usuários comprometidos.

  • Toda vez que novos logs do cloudtrail são gerados, exclua/altere-os

Support HackTricks

Last updated