提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      《入侵生命周期细分实践指南》:容器管理命令攻击
      发布时间:2021-11-18 阅读次数: 460 次
      美创科技为了更好地进行入侵检测和防御,参照各种安全威胁框架和自身的实践与思考,提出了基于入侵生命周期的攻击管理模型。

      作为美创新一代安全架构的三大支柱之一。入侵生命周期v1.0把入侵过程划分为7个阶段:探索发现、入侵和感染、探索感知、传播、持久化、攻击和利用、恢复。入侵生命周期v1.0同样以ATT&CK作为基本战术知识库,匹配到不同的入侵阶段。需要注意的是,并非所有的入侵都会经历这7个阶段,也没有绝对的线性次序。

      1)探索发现

      在这个阶段中,攻击者会先锁定攻击对象,然后利用某些技术手段,尽可能多地获取目标暴露出来的信息,如通过端口扫描、指纹探测等方式,发现敏感端口及版本信息,进而寻找攻击点,为下一步入侵做准备。

      2)入侵和感染

      在这个阶段,攻击者会根据“探索发现”阶段所发现的重要信息,来对目标暴露出的攻击面进行攻击尝试,在“探索发现”阶段收集到的信息越多,攻击对象所暴露的攻击面也就越多,攻击更易成功。

      3)探索感知

      攻击者在成功进入系统内部后,由于是首次进入所以会出现对内部环境不熟悉的情况,这时攻击者的动作一般会是对当前所处环境进行探索,摸清内部大致的网络结构,常常伴随着被入侵本机的敏感信息收集以及对内网大量的端口进行扫描,后续根据攻击者的目的进行下一步操作。

      4)传播

      在此阶段,攻击者根据上一阶段在内网探索感知收集到的信息,选择特定的攻击手法。如若发现内部是域环境,攻击者可能会尝试先攻破域控服务器,再传播其他机器。若是工作组环境,可能会利用收集到的端口和服务信息,选择特定漏洞进行批量扫描攻击,来尽可能多地继续获得其他计算机的控制权。

      5)持久化

      攻击者在对资产进行恶意操作后,为了能够减少再次连接的攻击成本,方便下次进入,会进行“留后门”的操作,常见的后门如:建立计划任务,定时连接远程服务器;设置开机启动程序,在每次开机时触发执行特定恶意程序;新建系统管理员账号等。这样便于攻击者下次快速登录并控制该系统。

      6)攻击和利用

      攻击者在此阶段便会开始对目标资产进行恶意操作,按照攻击者意愿,对能利用的数据进行窃取、利用;对操作系统、敏感文件进行破坏、删除。所有的防御手段都应该极力阻止攻击者进行到这一阶段。

      7)恢复

      攻击者在执行所有的攻击操作时,往往会在系统上留下大量的行为日志,因此在这一阶段,攻击者会对记录自身痕迹的所有日志进行处理,或删除或混淆,从而消灭证据,逃避追踪。

      本系列文章基于美创科技入侵生命周期1.0架构,细分个阶段攻击者的常用攻击手段,并对相关攻击手段的具体实施方式进行逐一剖析,为安全防御建设提供有力知识补充和反制准备。

      容器管理命令攻击

      入侵和感染

      攻击者可能会滥用容器管理服务在容器内执行命令。如docker、kubernetes、kubelet等容器管理服务都可以允许在环境中远程管理容器。在docker中,攻击者会在容器部署期间指定一个入口点来执行脚本或命令,如dockerexec在正在运行的容器内执行命令。在kubernetes中,如果攻击者拥有足够的权限,可以通过与kubernetes api服务器进行命令交互,kubelet的交互运行可以通过kubectl exec进行。

      从攻击行为链条的上下文来看,针对容器管理命令执行的输入输出如下:

      输入:系统登录的账号密码、容器的命令

      输出:容器的命令执行结果


      目前常见的容器有docker、kubernetes。下面将演示docker、kubernetes的常见的命令。

      一:Docker命令执行

      1.   docker安装

      在ubuntu18中安装docker

      curl -sSL https://get.daocloud.io/docker | sh


      2.   docker中安装centos


      docker pull centos



      3.   docker命令执行,执行其中的centos

      docker images 查看已安装的镜像


      docker run -d -I -t Imageid /bin/bash



      docker ps 查看运行中的docker容器



      docker attach 容器id :进入对应容器,并可在容器内执行相关命令



      二:Kubernetes命令执行

      K8s是基于容器的集群管理平台,全称为Kubernetes。一个K8s系统,通常称为K8S集群(Cluster),这个集群主要包括两个部分,一个Master节点(主节点),一群Node节点(计算节点)。

      Master节点包括API Server、Scheduler、Controller manager、etcd。

      APIServer 是整个系统的对外接口,供客户端和其他组件调用,相当于“营业厅”。

      Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

      Controllermanager负责管理控制器,相当于“大总管”。

      Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是pod

      Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

      Docker:用于创建容器

      Kubelet:用于负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

      Kube-proxy:主要负责对Pod对象提供代理。

      Fluentd:主要是负责日志收集、存储与查询。

      1.   添加国内源,由于需要下载kubeadmin/kubelet/Kubernetes-cni,需要添加国内的下载地址,这里以中科大为例子:

      cat< /etc/apt/sources.list.d/kubernetes.list
      debhttp://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
      EOF



      2.   下载Docker & Kubeadm & Kubelet & Kubernetes-cni

      apt-get update && apt-get install -y docker.io kubeletkubernetes-cni=0.6.0-00 kubeadm

      这里需要互相之间具有依赖关系,可以一个个依次下载

      添加源之后,使用 apt-get update 命令会出现错误,原因是缺少相应的key,可以通过下面命令添加(E084DAB9 为上面报错的key后8位):

      gpg --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
      gpg --export --armor E084DAB9 | sudo apt-key add –

      如果不关闭swap,运行kubernetes可能会出现错误,即使安装成功了,node重启也会出现kubernetes server运行错误

      sudo swapoff -a #暂时关闭

      3.   安装kubeadm所需要的docker镜像

      Kubeadm config images list 查看所需要的docker镜像


      由于k8s.gcr.io,被国内墙了,这里可以用阿里云的地址进行下载

      fori in `kubeadm config images list`; do
        imageName=${i#k8s.gcr.io/}
        docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
        docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/$imageNamek8s.gcr.io/$imageName
        docker rmiregistry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
      done;


      注意这里其中coredns容器,在tag命名时,主要有2个coredns,最后安装完容器后。



      4.   安装kubelet

      kubeadm init --ignore-preflight-errors=all
      成功安装



      添加网络插件,不然新创建的容器都无法正常访问
      sysctl net.bridge.bridge-nf-call-iptables=1
      kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectlversion | base64 | tr -d ' ')



      创建Pod

       kubectl create -f https://raw.githubusercontent.com/kubernetes/website/main/content/zh/examples/application/shell-demo.yaml
      查看所有命名空间下的所有容器
      kubectlget pods --all-namespaces



      查看某个容器
      kubectlget pod shell-demo



      进入某个容器的系统命令
      kubectlexec -it shell-demo -- /bin/bash



      参考链接:

      K8s安装教程:
      https://zhuanlan.zhihu.com/p/46341911

      K8s集群渗透:
      https://www.freebuf.com/vuls/196993.html

      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部