K8S后渗透横向节点与持久化隐蔽方式探索

前言

通常在红蓝对抗中,我们可能会通过各种方法如弱口令、sql注入、web应用漏洞导致的RCE等方法获得服务器的权限;在当前云原生迅猛发展的时代,这台服务器很可能是一个容器,在后续的后渗透由传统的提权变为容器逃逸,内网信息收集变为集群的信息收集,内网横向变成集群横向,拿下域控或者靶标变成获得集群的管理员权限;但是当拿下集群后如何拿下他们的宿主机呢?以及如何针对集群做持久化呢?本文主要从此来思考,由于目前主流的容器编排引擎和容器集群管理工具是Kubernetes,所以下文以Kubernetes集群为例。

Kubernetes

Kubernetes是一个开源的容器编排引擎和容器集群管理工具,用来对容器化应用进行自动化部署、 扩缩和管理。 Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有8个字符。Google 在 2014 年开源了 Kubernetes 项目。

Kubernetes架构

一个Kubernetes集群至少包含一个控制平面(control plane),以及一个或多个工作节点(worker node)。工作节点会托管 Pod ,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和 Pod。

控制平面(Control Plane) : 控制平面负责管理工作节点和维护集群状态。所有任务分配都来自于控制平面。控制平面组件会为集群做出全局决策,比如资源的调度、检测和响应集群事件。

 

工作节点(Worker Node) : 工作节点负责执行由控制平面分配的请求任务,运行实际的应用和工作负载。节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境。

 

对于组件的具体内容可以参考官方文档[1]。我们最终的目的就是要获得所有的节点的权限,其中一般情况下是一个master节点,多个worker节点。

工作负载

工作负载是在 Kubernetes 上运行的应用程序。在 Kubernetes 中,无论你的负载是由单个组件还是由多个一同工作的组件构成,你都可以在一组 Pod 中运行它。在 Kubernetes 中,Pod 代表的是集群上处于运行状态的一组容器的集合。

可以通过利用不同的工作负载资源达到我们的目的在每一个节点上跑一个特权Pod。

Deployment

Deployment是对ReplicaSet和Pod更高级的抽象。它使Pod拥有多副本,自愈,扩缩容、滚动升级等能力。

ReplicaSet(副本集)是一个Pod的集合。它可以设置运行Pod的数量,确保任何时间都有指定数量的 Pod 副本在运行。通常我们不直接使用ReplicaSet,而是在Deployment中声明。

StatefulSet

StatefulSet 是用来管理有状态的应用。一般用于管理数据库、缓存等。与 Deployment 类似, StatefulSet用来管理 Pod 集合的部署和扩缩。

DaemonSet

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

CronJob

Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。当数量达到指定的成功个数阈值时,任务(即 Job)结束。一个 CronJob 对象就像 crontab (cron table) 文件中的一行。它用 Cron[2] 格式进行编写, 并周期性地在给定的调度时间执行 Job。

Namespace

命名空间(Namespace)是一种资源隔离机制,将同一集群中的资源划分为相互隔离的组。

Kubernetes 会创建四个初始命名空间:

  • default: 默认的命名空间,不可删除,未指定命名空间的对象都会被分配到default中。

  • kube-system: Kubernetes 系统对象(控制平面和Node组件)所使用的命名空间。

  • kube-public: 自动创建的公共命名空间,所有用户(包括未经过身份验证的用户)都可以读取它。通常我们约定,将整个集群中公用的可见和可读的资源放在这个空间中。

  • kube-node-lease: 租约(Lease)[3]对象使用的命名空间。每个节点都有一个关联的 lease 对象,lease 是一种轻量级资源。lease对象通过发送心跳[4],检测集群中的每个节点是否发生故障。

下图为使用kubeadm搭建的k8s集群默认的ns以及相关资源。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值