开发者学堂课程【容器安全与 Palo Alto Networks 解决方案 :案例实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/628/detail/9881
案例实战
目录:
一、Grabgid 新型容器蠕虫病毒的检测及防御
二、攻击方式
三、案例实战
四、代码演示
一、Grabgid 新型容器蠕虫病毒的检测及防御
Palo Alto Networks (派拓网络)威胁情报团队 Unit 42近日宣布发现一种新型加密挖矿蠕虫病毒,已有2000多台 Docker 主机因保护不力而受到感染。
Unit 42 将该病毒命名为 Graboid,是向90年代电影《异形魔怪》致敬,其行为与电影中的沙虫相类似,移动速度较快但总体来讲相对笨拙。
二、攻击方式
攻击者选取某个不安全的 docker 主机作为攻击目标,然后远程发布指令下载并部署恶意 Docker 镜像 pocosow/centos:7.6.1810.该镜像含有一个用来 与其他Docker 主机通信的 docker client 工具
.pocosow/centos 容器中的入口脚本 /var/sbin/bash 会从C2服务器下载4个 shell 脚本并逐个运行,这4个脚本分别是 live.sh, worm.sh, cleanxmr.sh, xmr.sh
脚本 live .sh 将被攻击主机上的可用 CPU 数量发送至 C2 服务器
脚本 worm.sh 下载一 个名为 "IP" 的文档,其中包含2000多个 IP 地址。这些 IP 地址便是那些有着不安全的 docker API 端点的主机。Worm.sh随机选取一 个IP地址作为攻击对象 ,使用 docker client 工具远程获取并部署 pocosow/centos container 容器。
脚本 cleanxmr. sh 随机选取 IP 文件中某个带有漏洞的主机,终止其上的加密挖矿容器。cleanxmr.sh 终止的不仅是蠕虫部署的加密挖矿容器(gakeaws/nginx),也包含少数处于运行状态的 xmrig 容器
脚本 xmr.sh 随机选取 IP 文件中某个带有漏洞的主机,然后将镜像 gakeaws/nginx部署于目标主机之上。gakeaws/nginx 含有伪装成为 nginx 的二进制 xmrig
三、案例实战
到界面里面,首先,展示雷达图的功能,如果某一天发现多了一个容器或者一个pod,它在容器里面,马上就会显示有这样一个新的一个 pod 出现了。然后,这也是第一步所要做的就是可视化。在这个雷达界面里面,它非常好的就是提供了这样的容器。发现了有新的这样一个容器生成,可以点进去可以看到,visibility,有很多的一些 benefite 在里面,包括 complex issue 在里面。
然后也看到有 runtime,它有一些问题在这 runtime 里面,同时,也可以看到它有向外的连接,连到一个新加坡的地址,然后端口是 TCP 的端口。
首先在经过 runtime 来进行访问,这里设了一个 graboid,它主要是针对于 image,可以通过好几种方法来应对攻击,或者对这个蠕虫病毒进行防御,第一个可以作为 trust image,因为是自己上传到docker,但是,如果它是从第三方的一个镜像的这样一个 docker 仓库进行下载,它就过不了这个 trust image 的检查,它会作为可疑的镜像就会把它给 block,另外一个,也可以通过reality进行过滤,还有,这样一些漏洞的话,也会排除在外。
第三个就是 access,因为这个攻击是通过这个 docker client 这个命令是调用远程主机上面的这样一些Docker的进程,拉起来镜像,所以通过这个 docker 命令的、audit,也可以完全的阻止这样攻击。
那现在来演示的话,就是通过这个 run time 的这样一个进程来进行保护。
在这里,参数都预设好的,这是在这个 select rule 里面,比如挖矿的这样一个行为,把它选上,然后 apply,然后,在这里,做的策略是 block。因为这一个容器的话,它是一个有危险性的这样一个容器,它是个病毒,所以需要在K8S集群里面把它这个容器给杀掉,不让它运行。
四、代码演示
K8S 可能需要重新连接,然后再去 get 一下 pod。
然后看一下状态,看到已经被 block 掉,因为它发现有一个 crystalminor 的这样一个流量,去到新加坡的地址,然后地址其实是变的,用不同的地址进行连接,然后也可以点到这个 frantic,往显微镜里面去看,有个 rom time audit。因为有挖矿的一个进程,就把它给整个容器给 Block 掉。
然后在这个 K8S 里面,可以看到状态是 error,也在重启,因为有的会试着把它拉起来,但是 twistlock 会执行 block 操作。超过一定次数的话,这个进程不会再生成新的容器。
输入 describe,看一下,在这里面有没有一些报告。在这里面 Failed container,会认为是一个 file。因为通过Content shame,然后再到 twistlockshame 的时候,之前有一个图。里面 twistlock 会把这个 corporate 试着去拉镜像的动作,就会把它给 block 掉。镜像是不会在进行运行的。
可以看到已经有12个,重启了一次,发现又是 error,其实它这个镜像并没有真正的起来了,起来后以后就被 block 掉了。它还会试着在进入 running 的状态,但是,twistlock 还是会把它这个镜像给杀掉,所以通过这样很简单的一个开关。就可以去把这个蠕虫病毒通过 twistlock 进行防护,镜像就会在雷达图里面就消失了。
重启了六次了以后,就没有再去拉它,然后,看一下还是 block。然后在这个雷达图里面,这个容器,这个 pod 就已经消除,消失了。