AWS - Lambda 持久性
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
Lambda
欲了解更多信息,请查看:
Lambda Layer 持久化
可以引入/backdoor 一个 layer 来在 Lambda 执行时以隐蔽方式执行任意代码:
AWS - Lambda Layers Persistence
Lambda Extension 持久化
滥用 Lambda Layers 还可以滥用 extensions,并在 Lambda 中实现持久化,同时窃取和修改请求。
AWS - Abusing Lambda Extensions
通过 资源策略
可以将对不同 Lambda 操作(例如 invoke 或 update code)的访问权限授予外部账户:
.png)
版本、别名与权重
Lambda 可以有不同的版本(每个版本的代码可以不同)。
然后,你可以为 Lambda 创建不同的别名指向不同版本,并为每个别名设置不同的权重。
这样,攻击者可以创建一个backdoored 的版本 1和一个仅包含合法代码的版本 2,并仅在 1% 的请求中执行版本 1 来保持隐蔽。
.png)
版本 Backdoor + API Gateway
- 复制 Lambda 的原始代码
- 创建一个 backdoored 的新版本(在原始代码中植入后门或仅使用恶意代码)。发布并将该版本部署到 $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 方法,并在 Actions 中选择
Deploy API - 现在,当你通过 POST 调用该函数时,你的 Backdoor 将被触发
Cron/Event 触发器
你可以在某些事件发生或时间到期时让 Lambda 函数运行,这使得 Lambda 成为实现持久性和规避检测的常用方法。
下面是一些通过创建 Lambda 使你在 AWS 中更隐蔽的思路:
- 每当创建新用户时,Lambda 生成新的用户密钥并将其发送给攻击者。
- 每当创建新角色时,Lambda 授予被攻陷用户 assume role 权限。
- 每当生成新的 CloudTrail 日志时,删除/篡改它们
RCE 滥用 AWS_LAMBDA_EXEC_WRAPPER + Lambda Layers
滥用环境变量 AWS_LAMBDA_EXEC_WRAPPER,在 runtime/handler 启动前执行攻击者控制的 wrapper 脚本。通过 Lambda Layer 将 wrapper 放在 /opt/bin/htwrap,设置 AWS_LAMBDA_EXEC_WRAPPER=/opt/bin/htwrap,然后调用函数。该 wrapper 在函数运行时进程中运行,继承函数执行角色,并最终 exec 真正的 runtime,以便原始 handler 正常执行。
AWS - Lambda Exec Wrapper Persistence
AWS - Lambda Function URL 公开暴露
滥用 Lambda 的异步目标(asynchronous destinations)并配合 Recursion 配置,可以让函数在没有外部调度器(如 EventBridge、cron 等)的情况下持续自我调用。默认情况下,Lambda 会终止递归循环,但将 recursion 配置设置为 Allow 可重新启用它们。Destinations 在服务端交付用于异步调用,因此一次种子调用即可创建一个隐蔽、无代码的心跳/Backdoor 通道。可以选择使用 reserved concurrency 对调用速率进行限制以降低噪音。
AWS - Lambda Async Self Loop Persistence
AWS - Lambda Alias-Scoped Resource Policy Backdoor
创建一个包含攻击者逻辑的隐藏 Lambda 版本,并使用 lambda add-permission 的 --qualifier 参数将基于资源的策略限定到该特定版本(或别名)。仅向攻击者主体授予 lambda:InvokeFunction 对 arn:aws:lambda:REGION:ACCT:function:FN:VERSION 的权限。通过函数名称或主别名的正常调用不会受影响,而攻击者可以直接调用带后门的版本 ARN。
这比暴露 Function URL 更隐蔽,并且不会更改主流量别名。
AWS - Lambda Alias Version Policy Backdoor
冻结 AWS Lambda 运行时
拥有 lambda:InvokeFunction、logs:FilterLogEvents、lambda:PutRuntimeManagementConfig 和 lambda:GetRuntimeManagementConfig 权限的攻击者可以修改函数的 runtime management configuration。当目标是将 Lambda 函数保持在易受攻击的运行时版本,或保持与可能与较新运行时不兼容的恶意 layers 的兼容性时,此攻击尤其有效。
攻击者通过修改 runtime management configuration 来固定运行时版本:
# Invoke the function to generate runtime logs
aws lambda invoke \
--function-name $TARGET_FN \
--payload '{}' \
--region us-east-1 /tmp/ping.json
sleep 5
# Freeze automatic runtime updates on function update
aws lambda put-runtime-management-config \
--function-name $TARGET_FN \
--update-runtime-on FunctionUpdate \
--region us-east-1
验证已应用的配置:
aws lambda get-runtime-management-config \
--function-name $TARGET_FN \
--region us-east-1
可选:固定到特定运行时版本
# Extract Runtime Version ARN from INIT_START logs
RUNTIME_ARN=$(aws logs filter-log-events \
--log-group-name /aws/lambda/$TARGET_FN \
--filter-pattern "INIT_START" \
--query 'events[0].message' \
--output text | grep -o 'Runtime Version ARN: [^,]*' | cut -d' ' -f4)
将运行时固定到特定版本:
aws lambda put-runtime-management-config \
--function-name $TARGET_FN \
--update-runtime-on Manual \
--runtime-version-arn $RUNTIME_ARN \
--region us-east-1
Tip
学习并练习 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

