3.6 KiB
AWS - Lambda Persistence
{{#include ../../../../banners/hacktricks-training.md}}
Lambda
詳細については、次を確認してください:
{{#ref}} ../../aws-services/aws-lambda-enum.md {{#endref}}
Lambda Layer Persistence
任意のコードを実行するためにレイヤーを導入/バックドアすることが可能で、lambdaがステルスな方法で実行されるときに行えます:
{{#ref}} aws-lambda-layers-persistence.md {{#endref}}
Lambda Extension Persistence
Lambda Layersを悪用することで、拡張機能を悪用し、lambdaに持続させるだけでなく、リクエストを盗んだり変更したりすることも可能です。
{{#ref}} aws-abusing-lambda-extensions.md {{#endref}}
Via resource policies
外部アカウントに対して、異なるlambdaアクション(invokeやupdate codeなど)へのアクセスを付与することが可能です:

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

Version Backdoor + API Gateway
- Lambdaの元のコードをコピーします
- 元のコードをバックドアする新しいバージョンを作成します(または悪意のあるコードのみで)。そのバージョンを公開し、$LATESTにデプロイします
- コードを実行するためにlambdaに関連するAPIゲートウェイを呼び出します
- 元のコードを持つ新しいバージョンを作成し、そのバージョンを$LATESTに公開してデプロイします。
- これにより、バックドア付きのコードは以前のバージョンに隠されます
- API Gatewayに移動し、バックドア付きのlambdaの実行を行う新しいPOSTメソッドを作成します:
arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1 - 最後の:1は関数のバージョンを示すことに注意してください(このシナリオではバージョン1がバックドア付きのものになります)。
- 作成したPOSTメソッドを選択し、アクションで**
Deploy API**を選択します - これで、POST経由で関数を呼び出すと、あなたのバックドアが呼び出されます
Cron/Event actuator
何かが起こったときや時間が経過したときにlambda関数を実行できるという事実は、lambdaを持続性を得て検出を避けるための素晴らしく一般的な方法にします。
ここでは、lambdaを作成してAWSでの存在をよりステルスにするためのアイデアをいくつか紹介します。
- 新しいユーザーが作成されるたびに、lambdaは新しいユーザーキーを生成し、攻撃者に送信します。
- 新しいロールが作成されるたびに、lambdaは侵害されたユーザーにロールの引き受け権限を付与します。
- 新しいcloudtrailログが生成されるたびに、それらを削除/変更します。
{{#include ../../../../banners/hacktricks-training.md}}