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