从云AK泄露利用看企业特权管理

目录

- 缘起

- 当前主流AK泄露检测方式

- 防止AK滥用的关键要素?

- 哪些算特权账号管理?

- 如何做特权账号管理?

- 特权管理与堡垒机、IAM、零信任的关系?

- 特权管理是否应该侵入到业务流程中?

如果你是一名黑客,你是试图直接攻击一个层层加固、布满各种检测技术、24小时人员职守的系统并窃取数据。还是选择通过社会工程学的方式获取系统账号后,如入无人之境地查看、下载数据。

大多数情况从外部发起攻击都需要经历建立据点、搜寻目标、获取权限、拿到数据的几个阶段。对于一个基础安全牢固且运营良好的系统而言,直接攻击将耗费大量的时间和精力,而通过社工等方式获取系统特权账号则成了一条捷径。

缘起

云环境相比传统环境,新增的一大风险即用户Access key的泄露风险。AK是应用程序调用云平台API时使用的认证凭据。一个用户的AK泄露往往代表用户在云平台最高权限的泄露,云环境中所有计算、存储资源对入侵者门洞大开。非法利用者甚至不需要为此单独开发工具,直接使用现成的产品就能直接获取用户在云内的所有资源列表。

将AK导入商用的产品后可轻松获取用户云上资源

入侵者实际能做的还远不止这些。包括轻易查看当前用户所有的数据资产,在主机资产上执行任意命令,修改存储访问权限,数据库账号创建、提权,增加高权限用户,删除日志等等,可谓是无所不能。所以不能简单地将云平台的AK当作单个系统的顶级权限,而是云上所有资源的顶级权限。这也注定了用户在云上的AK将成为攻击者的重点目标。

AK功能强大,基本上管理员账号能做的AK都能做

当前主流AK泄露检测方式

从Gartner预言至少90%的云安全事故是因为用户的错误配置导致,到CSPM成为热门。AK泄露的检测其实并不是一个全新的领域。但是现有对于云平台AK泄露的手段主要还集中在检测代码泄露这一个途径上。

将仓库克隆到本地后就可以通过正则表达式来搜索,当时实际的扫描会更复杂一点,github承载的代码已经非常庞大了。

这种检测方式主要思想为:每次用户commit代码,添加新的文件或修改现有的文件时,密钥泄漏检测模块就会被启动。扫描被硬编码到代码中的Access Key和Access Secret字符串,将疑似AK的字符串发送给对应合作伙伴处进行确认,一旦合作伙伴匹配上真实的AK,即认为发生了AK明文泄露。随后对AK的拥有者发送邮件告警。

按照这位老哥在这里的测试,他故意提交包含AWS明文AK的代码到github平台测试恶意攻击者利用的时间。从提交代码到收到AWS 平台发出的AK泄露告警邮件,中间时间间隔不到1分钟。

而需要注意的是代码提交6分钟后,故意泄露的AK已经被3个攻击者利用,而且产生了查询S3存储桶的日志记录。

之所以有6分钟的延迟,还是因为github平台 commit 的事件订阅流有5分钟延迟。也就是说扣掉这5分钟延迟,攻击者和git平台几乎同时发现用户泄露的明文AK(扣除发邮件的时间,可能github平台稍快一点?不过重点还是在于攻击手段之普遍)。

这种通过扫描程序员代码中硬编码AK的检测技术,有点类似于密码撞库,其优点在于:

1、能在AK泄露的第一时间尽早发现,运气好的话AK此时还未被真正利用,给AK拥有者留了一定的反应时间。但是鉴于恶意使用者的扫描速度,以及从收到通知到完全禁用AK中间的操作时间,这个时间还是不容乐观,最好能通过SOAR工具进行自动化响应。

2、可检测的AK种类不局限于单个平台。目前国内的阿里云、腾讯云、京东云的AK都在github官方支持的范围内。https://docs.github.com/en/code-security/secret-scanning/secret-scanning-patterns#supported-secrets-for-partner-patterns

但是,这种方案的问题也很明显:

  1. 对于非git平台上传的代码无法检测。代码管理平台那么多,不是每个都集成了AK明文检查。而且git平台的合作伙伴数量也很有限,并没有覆盖企业用户的核心供应商,这是非常致命的问题。而且在越来越多的企业信息管理趋严,禁止员工将代码上传公共平台的情况下,这个方案的效果将比较有限。
  2. 内部人员被网络钓鱼、社会工程后泄露的AK无法及时发现。极有可能发一个免费领云平台代金券的钓鱼邮件就能收获到一堆的AK,参照某学校发邮件领月饼的测试。
  3. 这种检测方式无法检测通过第三方系统暴露的AK,云平台AK应用范围极为广阔,云厂家在努力构建生态的同时,各种生态的合作伙伴水平参差不齐,容易成为整个环节的短板,一旦发生从第三方泄露的事件,极有可能又会产生对云平台的信任危机,以及最终责任难以追溯。
  4. 最后还是跟第三方有关,用户在开放AK给第三方时,如果没有做到良好的访问控制,不受监控的第三方可能滥用AK权限读取和保存过多原本它不应该读取的数据。

当然除了代码库扫描以外,还有其他的检测方式,比如通过浏览器插件来扫描隐藏在跨源http请求中的AK,但这些方案目前都还不是企业级方案。

防止AK滥用的关键要素?

AK滥用的问题需要从平台方和用户方两边共同解决。平台方需要提供足够多的安全措施,而用户则需要做好特权的管理。

1、默认安全:安全与开放和便利天然就是对立的,从云平台的角度来说对于开放API的范围以及开放的形式需要更加谨慎。高危的功能以什么形式开放,执行权限和编辑权限是否同时对外开放等。应该经过充分的安全评估后,再决定对外开放的范围。

2、分权。避免权限滥用最重要的就是做分权,这是API设计思想层面的改造。在给子账号分配权限时,将API分为读、写操作能达到及格的水平。按API业务属性和管理属性区分会更适合。参照三权分立的思想,创建密钥、重置主机密码这类授权类的读写API,与资源列表、弹性配置等业务数据类的读写API分开。上传任意自定义脚本与运行已经上传脚本的权限分开。最安全的方式也是云平台推荐的方式即删除主AK,只保留子AK。

3、审计和检测。对于AK的利用行为进行审计,记录下请求发起方的角色、调用的记录、读取的实例范围等内容。用以评估是否有AK在用户不知情的情况下被调用。在这基础上可以进一步基于行为进行调用风险的检测,对于某些特定的API调用序列进行告警,高风险API的调用告警。这一点似乎还没有哪一个云平台做到足够的重视。

4、访问控制。平台方有义务提供足够多的访问控制手段,包括不限于单独限制每一个AK访问源IP、访问时间段、可以访问的资源集/资源id、可以调用的API的范围。尽量从API权限层面缩减暴露面,减少不必要的访问风险。不过这么基础的能力,目前却只有华为云做了,而且不能单独对AK进行设置。限制key的使用范围是非常有必要的,但是访问控制不能解决所有的问题。因为高权限的key始终存在泄露的风险,除非高权限的key不存在。

这些都是在git平台泄露检测以外,出于安全的主观视角去考虑应该如何防止最高权限被滥用。当前主流云平台可提供的检测方案与理想还存在不小的差距,更别提还有很多云平台连AK泄露检测都还没有。

对于企业用户而言问题要更棘手一点,AK只是特权账号的一种,分散在各级系统、产品、控制台中的特权账号依旧无法得到有效管理。用户也无法被动指望自己的所有供应商都提供足够的特权管理手段。站在用户的角度来看,特权账号的管理必须是一个统一的产品,而不是松散的产品集合。但是目前并没有一个产品能够提供所有的保护手段。

哪些算特权账号管理?

特权账号广泛分布在企业内部的各个操作系统、应用程序中,而一旦发生云平台AK这种顶级权限的泄露将危害无穷。按照权限级别,大致可以分为以下3类。

根据账号的属性分,大致可以分为4类。

对于特权账号的管理,重点则在于对这4类账号中的高特权的管理员账号进行识别和管理。

如何做特权账号管理?

特权管理的思路本质上与管理其他的资产没有太大的区别。为了达到最佳效果,特权管理解决方案应该至少接入ATT&CK框架中常用到的本地账号、域账号、云账号。并且能够做到:

  1. 能够协助企业管理人员识别分散在内部各种系统中的特权账号-包括root账号、公用账号、高权限管理员、SSH密钥、证书、API key等等。
  2. 持续监控账号状态,包括账号的权限变更、轮换记录、使用范围等信息。
  3. 根据账号的权限等级和用途,将特权账号的使用监控起来,审计特权账号的所有使用记录,包括特权账号的登陆设备、访问源、访问目的、访问时间、访问数据范围等信息,及时发发现对关键文件和目录的未授权访问和/或更改。
  4. 最好能根据账号的使用记录自动学习生成每个账号的安全策略。再通过人的运营来补齐管理策略。
  5. 能对特权账号的可疑行为进行告警。必要时并可以联动其他设备,阻断恶意的访问行为。对可疑的活动进行阻断或放行后,能持续更新账号安全策略。

特权管理与堡垒机、IAM、零信任的关系?

堡垒机、IAM、零信任都属于特权管理的一部分,在特权管理的实施层面提供支持。这些产品在各自领域都能发挥特权访问控制的能力,应该利用他们自身的认证、审计和管控能力,保证特权管理策略落地。

而零信任平台则是在将来最有希望能够成为统一大PAM的平台。只是目前的阶段还挣扎在权限控制的大坑里。

特权管理是否应该侵入到业务流程中?

对于特权管理平台的建设,是否应该做一个大而全的系统,不仅仅是监控特权账号的滥用,还要深入到特权账号的整个生命周期中,将特权账号创建、使用、删除、审计全部管理起来?

我个人认为在初期没有必要,不要过度追求一个完美的系统。不同类型的账号管理方式差异很大,包括认证方式、密码轮换策略、访问控制策略等都不相同。如果在一开始就将所有的东西集成在一个大的平台内,会导致这一个平台的工程量和建设周期被无限拉长,且变得过于依赖执行层面的设备,然后面临大量定制开发。

相反通过采集这些特权账号的使用日志,通过大数据的方式检测特权账号的生成、使用、泄露。以及特权账号,会更容易落地。并且可以与恶意行为关联起来。

这个世界总会有新的变化,你无法阻止它们。安全不是阻止未知的事物或做一些很酷的新事物。决定你能做什么不能做什么,并集中精力把基本的事情做好。

参考资料:

1、Privileged Attack Vectors

2、Detecting and Mitigating Secret-Key Leaks in Source Code Repositories

3、 https://www.anquanke.com/post/id/275261  云主机AK/SK泄露利用

4、 https://docs.github.com/en/developers/overview/secret-scanning-partner-program Secret scanning partner program

5、 https://medium.com/swlh/aws-access-keys-leak-in-github-repository-and-some-improvements-in-amazon-reaction-cc2e20e89003

从云AK泄露利用看企业特权管理的更多相关文章

  1. 云服务器上利用Docker部署Django项目

    转载别人的,请看下面链接 云服务器上利用Docker部署Django项目

  2. CTF-lottery[git文件泄露利用+PHP弱类型]

    知识点:PHP弱类型 .git文件泄露 玩攻防世界 遇到一个题lottery  进去看看  分析玩法 我们发现 进入登陆用户都是初始值 金钱是20  彩票号码必须输入7位 然后看你输入的彩票号码有多少 ...

  3. 从云数据迁移服务看MySQL大表抽取模式

    摘要:MySQL JDBC抽取到底应该采用什么样的方式,且听小编给你娓娓道来. 小编最近在云上的一个迁移项目中被MySQL抽取模式折磨的很惨.一开始爆内存被客户怼,再后来迁移效率低下再被怼.MySQL ...

  4. 袋鼠云旗下新公司云掣科技启航,深耕云MSP业务助推企业数字化转型

    1983年3月15日,国际消费者联盟组织将3月15日确立为国际消费者权益日. 2019年3月15日,袋鼠云举办三周年年会. 一生二,二生三,三生万物.植树节后,万物生长. 年会现场,袋鼠云宣布成立新公 ...

  5. 阿里云上如何利用war包安装jenkins

    一. 前提条件:已安装jdk和tomcat 如何安装,请参考<如何在阿里云上部署war包到tomcat服务器> 二. 下载war包 下载地址:http://mirrors.jenkins- ...

  6. 【转载】ASP.NET网站选购阿里云服务器的时候,阿里云账号个人认证以及企业认证有何不同

    在采购阿里云产品,如阿里云云服务器.阿里云短信包.阿里云数据库MySql以及Sqlserver.阿里云对象存储OSS等云产品的时候,如果账号未进行实名认证,很多时候会要求实名认证操作,在实名认证时可选 ...

  7. 看AppCan移动管理平台如何助力企业移动化

    AppCan企业移动管理平台(EMM)是为企业移动化战略提供综合管理的平台产品.AppCan EM移动管理平台为企业提供对用户.应用.设备.内容.邮件的综合管理服务,并在此基础上为企业提供统一应用商店 ...

  8. Sharepoint 2013企业内容管理学习笔记(一) 半自动化内容管理

    大家好,今天我来与大家分享一个关于sharepoint2013文档管理方面的一个知识,我相信也许早就有人了解并熟知这项技术了,呵呵,众所周知,sharepoint 有一个很亮的功能,什么?没错,就是文 ...

  9. 阿里云上万个 Kubernetes 集群大规模管理实践

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...

随机推荐

  1. 初学python常用,python模块安装和卸载的几种方法

    兄弟们常常因为遇到模块不会安装,或者遇到报错就懵了,就很耽误学习进度,今天我们就一次性了解Python几种安装模块的方法~不过~ 实在是懒得看 点击此处找管理员小姐姐手把手教你安装 一.命令提示符窗口 ...

  2. c# 把网络图片http://....png 打包成zip文件

    思路: 1.把网络图片下载到服务器本地. 2.读取服务器图片的文件流 3.使用zip帮助类,把图片文件流写进zip文件流. 4.如果是文件服务器,把zip文件流 推送文件服务器,生成zip的下载url ...

  3. 6. RDD综合练习:更丰富的操作

    集合运算练习 union(), intersection(),subtract(), cartesian() 内连接与外连接 join(), leftOuterJoin(), rightOuterJo ...

  4. 0016:单源最短路径(dijkstra算法)

    题目链接:https://www.luogu.com.cn/problem/P4779 题目描述:给定一个 n 个点,m 条有向边的带非负权图,计算从 s 出发,到每个点的距离. 这道题就是一个单源最 ...

  5. mysql语法使用详细代码版

    mysql 1.什么是数据库 数据库:(DB,DataBase) 作用:用来存储数据,管理数据.Txt,Excel,word是在数据库出现之前存储数据的. 概念:数据仓库,安装在操作系统上的软件. 数 ...

  6. Netty源码解读(四)-读写数据

    读写Channel(READ)的创建和注册 在NioEventLoop#run中提到,当有IO事件时,会调用processSelectedKeys方法来处理. 当客户端连接服务端,会触发服务端的ACC ...

  7. 函数,递归以及dom简单操作

    函数 函数概述 函数就是具备某个功能的一个工具.是完成某个功能的一段代码. 系统提供了很多函数,但是并不能包含所有的功能,所以有些功能需要我们自己来写----自定义函数.函数定义好以后,就可以像系统函 ...

  8. ViewPlane类定义

    这个类主要是记录了所有跟视图窗口有关的数据,用于显示. 类声明: #pragma once #ifndef __VIEWPLANE_HEADER__ #define __VIEWPLANE_HEADE ...

  9. 蔚来杯2022牛客暑期多校训练营7 CFGJ

    比赛链接 C 题解 方法一 知识点:思维. 先统计没有出现的数,每个都可以随便放,所以作为补位用的. 将原数组左移一位作为预定的答案数组,然后开始检查.如果和原数组一样,则用补位数字填充,如果不一样就 ...

  10. .NET 扩展 官方 Logger 实现将日志保存到本地文件

    .NET 项目默认情况下 日志是使用的 ILogger 接口,默认提供一下四种日志记录程序: 控制台 调试 EventSource EventLog 这四种记录程序都是默认包含在 .NET 运行时库中 ...