CSDN云上容器 ATT&CK 矩阵详解,阿里云助力企业容器化安全落地( 七 )
K8s使用Secret对象对access key、密码、OAuth token和ssh key等敏感信息进行统一管理 。 pod定义时可以引用secret对象以便在运行时访问 。 攻击者可以通过pod内部service account或更高权限用户来获取这些secret内容 , 从中窃取其他服务的通信凭证 。
示例:查看并下载K8s secret保存的凭据:
xy@x-8 ~> kubectl get secrets --namespace=kube-systemNAME TYPE DATA AGEadmin-token-ltbcr kubernetes.io/service-account-token 3 184dalibaba-log-controller-token-9kv4m kubernetes.io3 184daliyun-acr-credential-helper-token-vwmlw kubernetes.io3 184dattachdetach-controller-token-l5bfh kubernetes.io3 184dbootstrap-signer-token-qbrx7 kubernetes.io3 184dbootstrap-token-509e2b bootstrap.kubernetes.io/token 6 184dcertificate-controller-token-dgpjn kubernetes.io3 184dcloud-node-controller-token-647sw kubernetes.io3 184d...xy@x-8 ~> kubectl get secret alibaba-log-controller-token-9kv4m --namespace=kube-system -o yaml6.2 云产品AK泄露
云原生的应用部署流程中会涉及到各种云产品的API通信 , 当某应用被攻破后 , 攻击者可以通过K8s secret或者挂载到本地的凭证文件来获取相关服务的AK并进行横向移动 。 一种常见的场景是:入侵WEB应用后获取云存储(OSS)、云数据库(RDS)、日志服务的通信凭证 , 并进一步窃取数据 。
示例:关于云产品AK的扫描规则已被工具化:
本文插图
6.3 K8sService Account凭证泄露
此类场景多见于办公网运维PC、跳板机以及通过SSH管理的master节点上 。 黑客在攻破此类服务器时 , 可以检查本地是否存在kubectl鉴权所需的配置文件(一般在$HOME/.kube/config) , 该文件通常包含了登录K8s集群的全部信息 。
6.4 应用层API凭证泄露
在复杂业务场景以及微服务架构中 , K8s各个服务之间、容器与VM之间会通过API方式进行通信 , 窃取其通信凭证可用于横向渗透 。
6.5 利用K8s准入控制器窃取信息
K8s准入控制器(Admission Controller)用于hook客户端对API Server的请求 。 其中变更(mutating)控制器可以修改被其接受的对象;验证(validating)控制器可以审计并判断是否允许该请求通过 。 准入控制器是可以串联的 , 在请求到达API Server之前 , 如有任何一个控制器拒绝了该请求 , 则整个请求将立即被拒绝 , 并向终端用户返回一个错误 。
为了便于用户部署自己的准入服务 , K8s提供了动态准入控制(Admission Webhook)功能 , 即用于接收准入请求并对其进行处理的HTTP回调机制 。
一种利用动态准入控制实现持久化的方式:攻击者在获取cluster-admin权限后 , 可以创建恶意的准入控制器hook掉所有的API访问 , 引用攻击者的外部webhook作为validating服务 , 这样k8s就会将携带敏感信息的API请求发送到攻击者所用服务器 。
示例:利用准入控制器后门 , 使用通配符hook全部操作 , 使用failurePolicy和timeoutSeconds参数做到用户侧无感 , 从而实现隐蔽的数据窃取(如:K8s secret创建时发送到API的AK信息) 。
apiVersion: admissionregistration.k8s.io/v1kind: ValidatingWebhookConfiguration...webhooks:- name: my-webhook.example.com failurePolicy: Ignore timeoutSeconds: 2 rules: - apiGroups: ["*"] apiVersions: ["*"] operations: ["*"] resources: ["*/*"] scope: "*"...7. Discovery/探测
7.1 访问K8s API Server
(参考2.4利用Service Account连接API Server执行指令)攻击者进入pod之后 , 可以通过curl或wget等http客户端 , 或使用编译好的报文构造工具 , 直接访问K8s REST API , 当service account具有高权限时可以直接下发命令进行横向移动 。 而当用户具有低权限时 , 也可能通过API Server探测到集群内部的资源信息、运行状态以及secret , 有利于寻找下一个突破点 。
推荐阅读
- 龙之队|解读华为云容器的战略布局,裸金属容器服务会是互联网新趋势吗?
- 自主力量|2020年总销量为0,难道国人真的不懂车?,猎豹Mattu沦为“炮灰”
- CSDN23 岁创业,28 岁成为福布斯亚洲青年领袖,这个“刷脸的男人”有点牛
- 足球小子|约书亚·金支持Black Lives Matter运动的膝盖
- 618 Battle名场面,好爸爸居然以一波"捣蛋"玩出圈了!
- 科记汇 AI开发者大会 | 360金融张家兴再揭数据AI融合中台面纱,CSDN
- CSDN如何通过自动增加索引,实现数据库查询耗时降低50%
- CSDN专访 | 观远数据吴宝琪:BI 最大的难点并不只在单点技术
- 孙越|德云社孙越晒午餐,没有大荤容器却引人注目,这样吃不胖才怪
- 旷视深度学习框架天元获评CSDN"AI开源贡献奖"
