AWS - Lambda Persistence
Lambda
詳細については以下を参照してください:
AWS - Lambda EnumLambda Layer Persistence
Lambdaがステルスに実行されるときに任意のコードを実行するためにレイヤーを導入/バックドアすることが可能です:
AWS - Lambda Layers PersistenceLambda Extension Persistence
Lambda Layersを悪用することで、拡張機能を悪用し、Lambdaに持続的に存在し続けるだけでなく、リクエストを盗んだり変更したりすることも可能です。
AWS - Abusing Lambda Extensionsリソースポリシーを介して
外部アカウントに異なるLambdaアクション(例えば、invokeやコードの更新)へのアクセスを許可することが可能です:
バージョン、エイリアス & ウェイト
Lambdaは異なるバージョン(各バージョンごとに異なるコード)を持つことができます。 次に、Lambdaの異なるバージョンを持つ異なるエイリアスを作成し、それぞれに異なるウェイトを設定できます。 この方法で攻撃者はバックドア付きのバージョン1と正規のコードのみのバージョン2を作成し、ステルスを保つためにリクエストの1%だけバージョン1を実行することができます。
バージョンバックドア + API Gateway
Lambdaの元のコードをコピー
元のコードをバックドアする(または悪意のあるコードを含む)新しいバージョンを作成。そのバージョンを$LATESTに公開してデプロイ
Lambdaに関連するAPI Gatewayを呼び出してコードを実行
元のコードを含む新しいバージョンを作成し、そのバージョンを$LATESTに公開してデプロイ
これにより、バックドア付きのコードが以前のバージョンに隠されます
API Gatewayに移動し、新しいPOSTメソッドを作成(または他の任意のメソッドを選択)し、Lambdaのバックドア付きバージョンを実行するように設定:
arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1
arnの最後の:1は関数のバージョンを示している(このシナリオではバージョン1がバックドア付き)
作成したPOSTメソッドを選択し、アクションで**
Deploy API
**を選択これで、POSTを介して関数を呼び出すとバックドアが起動します
Cron/Event アクチュエータ
何かが起こったときや一定時間が経過したときにLambda関数を実行できるという事実は、Lambdaを持続性を確保し、検出を回避するための良い方法にします。 ここでは、Lambdaを作成してAWSでの存在をよりステルスにするためのいくつかのアイデアを紹介します。
新しいユーザーが作成されるたびに、Lambdaが新しいユーザーキーを生成し、攻撃者に送信する。
新しいロールが作成されるたびに、Lambdaがコンプロマイズされたユーザーにアサムロール権限を付与する。
新しいCloudTrailログが生成されるたびに、それらを削除/変更する。
Last updated