关于KubiScan
KubiScan是一款能够帮助研究人员扫描Kubernetes集群中高风险权限的强大工具,在该工具的帮助下,研究人员可以轻松识别Kubernetes基于角色访问控制(RBAC)授权模型中的高风险权限。
攻击者可能利用高风险权限来攻击集群,而KubiScan可以帮助集群管理员识别和管理这种安全风险。这款工具在大型环境中尤其有用,因为在大型环境中有许多权限很难跟踪。KubiScan能够收集关于高风险角色\集群角色(roles\clusterroles)、角色绑定\集群角色绑定(rolebindings\clusterrolebindings)、用户和Pods的相关信息,并且可以将传统的手工流程以自动化的形式完成,并为管理员提供降低风险所需的可见性。
功能介绍
识别高风险角色\集群角色;
识别高风险角色绑定\集群角色绑定;
识别高风险主体(用户、组和服务账号);
识别高风险Pods\容器;
从Pods中导出令牌;
获取跟角色、集群角色或主体(用户、组和服务账号)相关联的角色绑定\集群角色绑定;
列举指定的主体(用户、组和服务账号);
列举角色的角色绑定\集群角色绑定;
显示可通过变量访问敏感数据的Pods;
获取集群的BootScrap令牌;
工具使用
依赖组件
Python 3.5+
Pip3;
Kubernetes Python客户端;
Prettytable
Openssl
Ubuntu安装样例
apt-get update apt-get install -y python3 python3-pip pip3 install kubernetes pip3 install PTable
接下来,运行下列命令以kubiscan别名来使用KubiScan:
alias kubiscan='python3 /<KubiScan_folder/KubiScan.py'
从主节点运行
在主节点上,存在有~/.kube/config文件以及所有相关证书的情况下,运行下列命令:
kubiscan <command>
比如说,下列命令将显示所有的风险主体:
kubiscan -rs
在远程主机上运行
我们可以从远程主机上运行该工具,你将需要一个特权服务账号,然后运行下列命令:
kubiscan -ho <master_ip:master_port> -t /token <command>
使用样例
广大研究人员可以直接在命令行窗口中运行下列命令:
python3 KubiScan.py -e
或在容器中运行下列命令:
kubiscan -e
工具演示视频
下面演示的是KubiScan的基础使用方法:
视频地址:https://cyberark.wistia.com/medias/0lt642okgn?wvideo=0lt642okgn
风险角色YAML
项目中有一个名为risky_roles.yaml的文件,该文件包含了风险橘色的优先级模板。虽然每个角色的类型都为Role,但这些模板能够跟集群中任何的Role\ClusterRole进行比对。
每一个这样的角色都会跟集群中的角色对比,如果检测到集群中包含风险角色,则会对风险进行标记。
我们已经将所有的高风险角色添加进了模板,研究人员也可以根据自己的需要去修改或添加更多的风险角色。
项目地址
KubiScan:https://github.com/cyberark/KubiScan
许可证协议
本项目的开发与发布遵循GPL-3.0开源许可证协议。