案例实战二| 学习笔记

简介: 快速学习案例实战二。

开发者学堂课程【容器安全与 Palo Alto Networks 解决方案 :案例实战二】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/628/detail/9880


案例实战二

目录:

一、演示内容

二、代码演示

 

一、演示内容

针对 Jenkins remote execution 漏洞攻击的检测与防御

image.png

 

二、代码演示

image.png

首先,一下生成这个 Jenkins,container 的时候,是赋予了它的一些权限,比如说 cat 一下这个 Jenkins 这样的yalm 文件,首先给它的一个权限,是在 namespace 是 vul,也就是 ability 的这样一个namespace里面,它所可以做的是一个 podacreativelate,Watch 等等,包括 deployment,包括 exe。权限其实是非常大的。

但是只限制于在这个 namespace 里面。

同时,把这个权限,service account 的名字叫做 Jenkins-vulnerability 的这样一个目录下,所以,在生成pop的时候,会把这个 serviceAccount 去挂载到这个 pod 的特定的目录下面。

image.png

进入这个 pop 的时候,就可以看到它的一个 token,包括它的一些 certificate 和一些证书,都会在这个某一个特定的目录下面。进行攻击的一个演示。

首先,在这个攻击的这个 server 下面,运行了一个 docker 的 container,它的名字叫 attacker:v1,进入 attacker:v1,的这一个 container 里面去,接下来,需要再开一个端口。

image.png

来做端口的一个443端口的反向监听,所以需要再 exec 开一个端口。两个同样的主机里面,都开了一个新的端口。现在目录是在根目录下,需要进入的 root 目录。然后,运行 auto-sploit,它会新开一个窗口,然后运行。这个 net cat 的这样一个命令,所以把这个443端口的监听打开,然后在这里就需要,把这个 attack 的 IP 地址把它输进去。

这是本机的 IP 地址。

现在需要输入 Jenkins 的这个 container,有个对外的一个 web server,一个IP地址。然后会有一些反馈。然后,在这个端口上,就收到了一个反向的一个443的这样一个连接。需要把一个一个代码输入进去。

image.png

在这里面,可以看到这里面的进程,这个进程就是现在连进来的这样一个进程。包括其他的一些进程。

然后权限是 root,进入了以后,比如说像骇客进来了以后,需要去拿到这个 Jenkins 的 token。目录是在 var 下面的。

可以看到三个文件,第一个,是 token 的。然后,有一个 certificate,也就是集群,这样一个证书,包括 namespace 。把这个 token 的值把它也需要给拷贝出来。

这是本机,也是在 Internet 上面的一个机器。在这里面,需要把刚才的那个 token值 ,付给一个变量。

然后,还有一个 certificate,需要把它拿出来,创建一个文件。现在已经拿到了 token,并把这个 token 存在了这样 token 的变量里面,存在一个骇客的,可以认为是一个骇客远程的这样一个电脑里面。那现在,希望通过用 curl 的命令,直接去访问整个 K8S 集群的公网地址,然后通过提供这个 token。

以及有他的集群的证书。去做一些动作,比如说想先去看一下在这个它上面运行了哪些 port,首先,在这集群上面。可以看一下整个。

API 公网的连接端点地址是这样一个地址。就是可以对公网访问,然后,把这个地址,做了一个动作,把这个命令抄过来。

QHDBS,就刚才的公网地址,然后,Namespace visibility 的这个 namespace pots。然后,把刚才生成的拷贝过来的 Jenkins。然后,作为一个 header,是用这个 token 的变量。然后可以拿到在这个ability的里面究竟运行了哪些,其实反馈过来,可以看到 namespace,然后运行了这样的 hot。在下面可以看到其他的地址是什么。可以查询到在这里面运行的 pod 的信息。

首先,提供了这个 token,然后也是访问这个 API 地址。提供设计,然后,照着文件来进行创建。其实就是把 yalm 改成了一个 Jenkins 对象的格式。Name 是 image ,然后,image 有个端口。其实是非常简单的一个 Jenkins 的文件。重新拷贝。

image.png

输完以后,状态就是在生成新的文件。状态现在是 status。

可以通过 twistlock, 在这个 reliability 的一个 namespace 下面,出现了刷新,刷新一下,已经pod生成了。

image.png

所以这样的话,其实黑客可以在里面任意地生成一些国际的矿体,比如说之前讲的蠕虫病毒,它可以自动的去下载新的矿体。比如,看 ca 的 crt 文件,其实已经有一些报警,可以看到这里面。

image.png

如何进行防御,因为这个事情比较危险,如果一个 Token,token 被偷到以后,取决于这个 service 权限大小,其实可以做很多的破坏的动作,现在的话,需要把这个进程kill以后,可能需要一段时间才能返回。现在也不需要这个容器,把 container 退出来。

那现在有这个 engine 的 pop,把它 delete 出来。里面有个 nginx1,需要把它删掉。

pop 删掉了,现在等于是已经还原成了最主要的一个状态。现在的话,可以有几种方式来保护,一个是通过 twistlock的方式。因为可以看一下,twistlock 的话,它之前也反复的提到它有一个很好的功能。

在软件里面有个 contain 的 model 的一个学习。在这个镜像里面,学习到的话,它的一些进程。比如说这是在 static,也就是说在这个 Doctor 或者说在 build 这个 image。做了一些事情,一些静态的一些学到的一些竞争,同时,也会去学新的一些命令。

image.png

黑客如果进来的话,需要去分析一些新的子进程,因为在正常情况下,或者说 twistlock,是没有看到在这个容器里面进行的一些操作的。就可以进行一些阻断,那这也是会非常方便去保护好一些容器的环境,不需要一个去设白名单,那样的话会非常的麻烦。

通过机器学习的情况,它自动就会把这样一些问题。比如说一些进程会进行学习,用的 serviceaccount 是哪个。点进去可以看到它的一些缺陷。

比如说在 deployed port,究竟有哪些缺陷,缺陷还是比较大的,所以在之前的实验当中,可以通过serviceaccount token 的情况,去远程地拉起来一些可疑的镜像或者 pod。现在进行对它进行一个保护。需要就是在这个进程里面,把它改成 off,其他什么都不用做。不需要去加额外的白名单,当然如果需要有一些特殊的一些命令,在学习基线之外的,希望让他进行实行的,可以在这里面可以设置白名单或者黑名单去额外组织。

image.png

现在需要进入攻击镜像,重新进去,需要在这里让这个命令再给一次。在另外一个窗口里面。因为需要开两个窗口,再然后在这里面,把443的窗口的监听打开。

image.png

在这容器里面,进行这个 AUTO 命令,输入 attacker 地址。地址输入,然后需要输出,成功了。

在四四三的这样一个端口,现在就没有任何的一个反向连接进来。也就是 twistlock 已经完整的保护反向连接的操作。

image.png

在这个容器里面有之前定的这样策略。然后,策略是阻断。在这里面,看它进行了一个这样,可以看到非常详细的这样一个列表啊,比如说它想运行一个 tradition,被成功的阻断了,因为它是 unexpected 的 PROCESS。

因为是一个攻击,同时,它也有非常详细的一些日志作为今后的来使用。

twistlock 可以通过非常简单的一个开关,就可以进行保护。当然,另外一个的话呢,其实防止它产生新的镜像的话,其实之前也已经做过一些实例了。就是说可以通过一些方式,包括自动去发现镜像的是不是有漏洞,然后阻止有问题的一些镜像来生成,可以有分为很多步来保护,可以不被别人在里面去生成的新的镜像。

相关文章
|
人工智能 达摩院 物联网
应用案例|学习笔记
快速学习应用案例
102 0
应用案例|学习笔记
|
SQL 安全 Java
案例介绍|学习笔记
快速学习案例介绍
案例介绍|学习笔记
|
Kubernetes 安全 应用服务中间件
案例实战| 学习笔记
快速学习案例实战。
125 0
案例实战| 学习笔记
|
缓存 网络架构 开发者
案例_2|学习笔记
快速学习案例_2
案例_2|学习笔记
|
开发者
案例_1|学习笔记
快速学习案例_1
案例_1|学习笔记
|
SQL HIVE 开发者
SearchType 案例介绍|学习笔记
快速学习 SearchType 案例介绍。
|
JSON 算法 数据格式
SearchType 案例_介绍 | 学习笔记
快速学习 SearchType 案例_介绍
105 0
|
存储 人工智能 达摩院
应用案例| 学习笔记
快速学习应用案例
|
开发者
四大名著案例|学习笔记
快速学习四大名著案例
266 0
四大名著案例|学习笔记
|
XML JavaScript API
W3C的案例 | 学习笔记
快速学习W3C的案例
137 0
W3C的案例 | 学习笔记