AWS - Lambda Persistence

Reading time: 6 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Lambda

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

AWS - Lambda Enum

Lambda Layer Persistence

任意のコードを実行するためにレイヤーを導入/バックドアすることが可能で、lambdaがステルスな方法で実行されるときに行えます:

AWS - Lambda Layers Persistence

Lambda Extension Persistence

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

AWS - Abusing Lambda Extensions

Via resource policies

外部アカウントに対して、異なるlambdaアクション(invokeやupdate codeなど)へのアクセスを付与することが可能です:

Versions, Aliases & Weights

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

Version Backdoor + 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メソッドを選択し、アクションで**Deploy API**を選択します
  9. これで、POST経由で関数を呼び出すと、あなたのバックドアが呼び出されます

Cron/Event actuator

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

  • 新しいユーザーが作成されるたびに、lambdaは新しいユーザーキーを生成し、攻撃者に送信します。
  • 新しいロールが作成されるたびに、lambdaは侵害されたユーザーにロールの引き受け権限を付与します。
  • 新しいcloudtrailログが生成されるたびに、それらを削除/変更します。

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする