AWS - Lambda Persistence

Support HackTricks

Lambda

詳細については以下を参照してください:

AWS - Lambda Enum

Lambda Layer Persistence

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

AWS - Lambda Layers Persistence

Lambda Extension Persistence

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

AWS - Abusing Lambda Extensions

リソースポリシーを介して

外部アカウントに異なるLambdaアクション(例えば、invokeやコードの更新)へのアクセスを許可することが可能です:

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

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

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

  1. Lambdaの元のコードをコピー

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

  3. Lambdaに関連するAPI Gatewayを呼び出してコードを実行

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

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

  6. API Gatewayに移動し、新しいPOSTメソッドを作成(または他の任意のメソッドを選択)し、Lambdaのバックドア付きバージョンを実行するように設定: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1

  7. arnの最後の:1は関数のバージョンを示している(このシナリオではバージョン1がバックドア付き)

  8. 作成したPOSTメソッドを選択し、アクションで**Deploy API**を選択

  9. これで、POSTを介して関数を呼び出すとバックドアが起動します

Cron/Event アクチュエータ

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

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

  • 新しいロールが作成されるたびに、Lambdaがコンプロマイズされたユーザーにアサムロール権限を付与する。

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

Support HackTricks

Last updated