AWS - Lambda Persistence

HackTricksをサポートする

Lambda

詳細については、以下を確認してください:

AWS - Lambda Enum

Lambda Layer Persistence

Lambdaが実行されるときに任意のコードを実行するためにレイヤーを導入/バックドアすることが可能です:

AWS - Lambda Layers Persistence

Lambda Extension Persistence

Lambda Layersを悪用することで、拡張機能を悪用し、Lambdaに持続させることができ、リクエストを盗んだり変更したりすることも可能です。

AWS - Abusing Lambda Extensions

リソースポリシー経由

外部アカウントに対して、さまざまなLambdaアクション(呼び出しやコードの更新など)へのアクセスを付与することが可能です:

バージョン、エイリアス & ウェイト

Lambdaは異なるバージョン(各バージョンに異なるコード)を持つことができます。 次に、Lambdaの異なるバージョンを持つ異なるエイリアスを作成し、それぞれに異なるウェイトを設定できます。 この方法で、攻撃者はバックドア付きのバージョン1正当なコードのみのバージョン2を作成し、リクエストの1%でのみバージョン1を実行して隠密性を保つことができます。

バージョンバックドア + API Gateway

  1. Lambdaの元のコードをコピーします。

  2. 元のコードをバックドアする新しいバージョンを作成します(または悪意のあるコードのみで)。そのバージョンを公開し、$LATESTにデプロイします

  3. Lambdaに関連するAPIゲートウェイを呼び出してコードを実行します。

  4. 元のコードで新しいバージョンを作成し、そのバージョンを$LATESTに公開してデプロイします

  5. これにより、バックドア付きのコードは以前のバージョンに隠されます。

  6. API Gatewayに移動し、バックドア付きのLambdaの新しいPOSTメソッドを作成します:arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1

  7. 最後の:1は関数のバージョンを示しています(このシナリオではバージョン1がバックドア付きのものになります)。

  8. 作成したPOSTメソッドを選択し、アクションで**APIをデプロイ**を選択します。

  9. これで、POST経由で関数を呼び出すとバックドアが呼び出されます

Cron/Event actuator

何かが起こったときや時間が経過したときにLambda関数を実行できることは、Lambdaを持続性を得て検出を避けるための良い一般的な方法にします。 ここでは、Lambdaを作成してAWSでの存在をより隠密にするためのいくつかのアイデアを紹介します。

  • 新しいユーザーが作成されるたびに、Lambdaは新しいユーザーキーを生成し、攻撃者に送信します。

  • 新しいロールが作成されるたびに、Lambdaは侵害されたユーザーにロールの引き受け権限を付与します。

  • 新しいCloudTrailログが生成されるたびに、それらを削除/変更します。

HackTricksをサポートする

Last updated