AWS - Lambda Persistence
Lambda
更多信息请查看:
AWS - Lambda EnumLambda Layer Persistence
可以在 Lambda 执行时以隐蔽的方式引入/后门一个层以执行任意代码:
AWS - Lambda Layers PersistenceLambda Extension Persistence
滥用 Lambda Layers 也可以滥用扩展并在 Lambda 中持久存在,还可以窃取和修改请求。
AWS - Abusing Lambda Extensions通过资源策略
可以授予外部账户对不同 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 赋予被攻陷用户 assume role 权限。
每次生成新的 cloudtrail 日志时,删除/更改它们
Last updated