原文链接:Watch Your Containers: Doki Infecting Docker Servers in the Cloud
译者:知道创宇404实验组翻译组

主要发现

  • Ngrok Mining Botnet是一个活跃的活动,目标是AWS、Azure和其他云平台中公开的Docker服务器,它已经活跃了至少两年。

  • 我们检测到了最近的一次攻击,其中包括使用区块链钱包生成C&C域名的完全未检测到的Linux恶意软件和以前未记录的技术。

  • 任何具有公开开放的Docker API访问权限的人都有可能在短短几个小时内被黑客入侵。这很可能是由于黑客对脆弱的受害者进行了自动且连续的全互联网扫描所致。

  • 自2020年1月14日首次分析以来,VirusTotal的60个恶意软件检测引擎中尚未检测到被称为“ Doki ”的新恶意软件。

  • 攻击者正在使用受感染的受害者搜索其他易受攻击的云服务器。

介绍

Linux威胁变得越来越普遍。造成这种情况的一个因素是,对云环境的转移和依赖日益增加,而云环境主要基于Linux基础架构。因此,攻击者已经采用了专门为此基础结构设计的新工具和技术。

一种流行的技术是滥用配置错误的Docker API端口,攻击者在其中扫描可公开访问的Docker服务器,并利用它们来设置自己的容器并在受害者的基础设施上执行恶意软件。

Ngrok僵尸网络是利用Docker API端口进行的持续时间最长的攻击活动之一,之前由Netlab和Trend Micro的研究人员报道过。作为攻击的一部分,攻击者滥用Docker配置功能,以逃避标准容器限制并从主机执行各种恶意负载。他们还部署了网络扫描仪,并使用它扫描云提供商的IP范围,以查找其他潜在的易受攻击目标。我们的证据表明,从新配置错误的Docker服务器上线到感染此活动仅需几个小时。

最近,我们检测到一种新的恶意软件有效负载,该负载与通常在此攻击中部署的标准加密矿工不同。该恶意软件是一个完全未被发现的后门,我们将其命名为Doki。

Doki使用一种以前未记录的方法,以一种独特的方式滥用狗狗币加密货币区块链来联系其运营商,以便动态生成其C2域名地址。尽管VirusTotal公开提供了样本,但该恶意软件已成功躲藏了六个月以上。

在本文中,我们将介绍攻击并提供对未检测到的Doki后门实施的技术的详细分析。

攻击

威胁针对的是云中配置错误的容器化环境。攻击者扫描可公开访问的Docker API端口并加以利用,以设置自己的容器并在受害者的基础设施上执行恶意软件。在此攻击过程中,攻击者正在生成并删除许多容器。

攻击期间创建的每个容器均基于安装了curl的高山图像。该映像在Docker Hub上可用。该图像不是恶意的,而是被滥用以进行恶意活动。通过使用包含curl软件的映像,可以在容器启动并运行后立即执行curl命令。

使用公开可用映像的优势在于,攻击者无需将其隐藏在Docker Hub或其他托管解决方案上。相反,攻击者可以使用现有映像,并在其上运行自己的逻辑和恶意软件。

如上所述,攻击者可以创建任何容器,但是要从托管计算机执行代码,攻击者必须使用容器转义方法。该技术基于新容器的创建,该新容器通过发布“创建” API请求来完成。请求的主体包含容器的配置参数。其中一个参数是bind,它使用户可以配置主机上要挂载到容器中的文件或目录。

攻击期间创建的容器被配置为将/ tmpXXXXXX目录绑定到托管服务器的根目录。这意味着可以从容器内部以正确的用户权限访问甚至修改服务器文件系统上的每个文件。

Ngrok是一项提供安全隧道的服务,可在本地服务器和公共Internet之间建立连接。攻击者滥用Ngrok来设计寿命短的唯一URL,并在攻击过程中将它们传递给基于curl的图像,从而使用它们下载有效载荷。下载的有效内容保存在容器的/ tmpXXXXXX目录中。

如在受攻击服务器的系统日志上所示,创建容器的命令

通过使用绑定配置,攻击者可以控制主机的cron实用程序。
攻击者修改主机的cron,以每分钟执行一次下载的有效负载。我们观察到两种类型的有效负载,一种是网络扫描器脚本,另一种是下载器脚本。

网络扫描仪使用zmap、zgrap和jq扫描与Redis、Docker、SSH和HTTP相关的端口。

使用一系列硬编码的IP地址范围的列表,该范围主要属于云服务器,例如AWS和国外的本地云提供商(我们已经看到来自中国、奥地利和英国的提供商),该脚本收集信息并将其上传到另一个Ngrok URL。

下载脚本负责下载和安装各种恶意软件二进制文件,这些二进制文件通常是几种众所周知的加密矿工之一。我们已经注意到,它也可以安装完全未检测到的恶意软件组件。我们将该恶意软件命名为Doki,并将在下一部分中提供技术分析。

攻击者可以完全控制自己创建的容器的配置以及放入容器的文件。通过使用合法的API命令,攻击者可以从他创建的容器中逃脱,并从服务器本身内部执行任何代码。

Doki恶意软件

Doki是Linux的后门程序,其功能是执行从其操作员接收到的代码。该恶意软件利用DynDNS服务和基于Dogecoin加密货币区块链的独特域生成算法(DGA)来实时查找其C2的域。 该恶意软件是一个完全未被检测到的后门。尽管它已于 2020年1月14日上载到VirusTotal,并自此进行了多次扫描,但六个月以来一直未被发现。

Doki是多线程的,并使用embedTLS库进行加密功能和网络通信。执行后,恶意软件将创建一个单独的线程以处理所有C2通信。

该恶意软件首先使用其独特的DGA生成C2域。为了构造C2地址,恶意软件执行以下步骤:

  1. 查询dogechain.info API,以获取从攻击者控制的硬编码钱包地址发送(花费)的值。查询格式为:https : //dogechain.info/api/v1/address/sent/{address}

  2. 对“sent”下返回的值执行SHA256

  3. 保存SHA256值的十六进制字符串表示形式的前12个字符,用作子域。

  4. 通过将子域附加到ddns.net来构造完整地址。一个示例域是:6d77335c4f23 [.]ddns [.] net

攻击者使用此技术,通过从其钱包中转移一定量的狗狗币来控制将与恶意软件联系的地址。由于只有攻击者才能控制钱包,因此只有他可以控制何时以及要转移多少个狗币,从而相应地切换域。此外,由于区块链既是不可变的又是分散的,因此这种新颖的方法可以证明对执法部门的基础设施拆除和安全产品的域过滤尝试具有相当的弹性。

值得注意的是,一旦生成了域,恶意软件便会确保它不是“ 46927e019820”,即“ 0.000000”生成的内容,这意味着从未从钱包中转移过狗狗币。在生成该域的情况下,恶意软件将退出而无需继续进行操作。

否则,恶意软件将继续使用URL  /update.sh通过HTTPS与C2联系来下载Shell脚本,并将返回的数据另存为/tmp/update.sh 

然后它将解析当前进程的PID和用作脚本参数的路径,并通过运行以下命令继续执行脚本:/ bin / sh -c ./update.sh   

同时,恶意软件的主线程从STDIN读取数据,期望从该Shell脚本接收二进制数据。参数被传递到脚本,以便允许它以这种方式与恶意软件通信并接收要执行的代码。

如果通过STDIN接收到数据,则该恶意软件会将自身保存为/ tmp下的文件,并从预定义的Linux内核模块列表中随机选择其名称。

尽管这是一种非常基本的欺骗方法,但在Linux恶意软件中却不常见,该恶意软件通常不会伪装成系统文件。

最终,恶意软件继续进行分叉,因此子进程执行文件,并且主进程循环以重复恶意软件的逻辑流程。

底线

Ngrok僵尸网络活动已经进行了两年多,并且非常有效,在数小时内即可感染任何配置错误的Docker API服务器。独特且未检测到的Doki恶意软件的合并表明操作正在继续发展。

由于攻击者使用容器逃逸技术来完全控制受害者的基础结构,因此此攻击非常危险。我们的证据表明,从新配置错误的Docker服务器上线到感染此活动仅需几个小时。

容器服务器所有者需要立即采取的措施

在云中拥有容器服务器的公司和个人都必须立即修复配置以防止暴露。这包括:检查是否有任何暴露的端口,验证现有容器中是否没有多余或未知的容器,以及监视资源的过度使用。 我们建议您阅读我们的文章,“保护Docker运行时环境的最佳实践”。您还可以在云服务器上运行我们的YARA规则,以检查您是否已被此系列广告感染。

被Intezer Protect检测

我们使用Cloud Workload Protection Platform(CWPP)Intezer Protect检测到了这种威胁。Intezer Protect安装在Linux机器上,可以在服务器内存中执行识别的未知代码。经过基因分析,该平台得出的结论是该代码从未在野外发现过,这意味着它是全新的,因此该恶意软件很可能是完全从头编写的。这是业界采用零信任执行来保护云工作负载的原因之一。

IOCs

4aadb47706f0fe1734ee514e79c93eed65e1a0a9f61b63f3e7b6367bd9a3e63b

6d77335c4f23 [.] ddns [.] net


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1278/