FritzFrog-下一代僵尸网络

概要



  • Guardicore发现了复杂的对等(P2P)僵尸网络FritzFrog,该僵尸网络自2020年1月以来一直在积极入侵SSH服务器。
  • Golang上的恶意软件:FritzFrog在Golang上运行模块化,多线程和无文件的恶意代码,在受感染设备的硬盘上没有任何痕迹。
  • 积极瞄准政府,教育,财政和其他资源:FritzFrog试图强行将其分发给政府办公室,教育机构,医疗中心,银行和许多电信公司的数千万个IP地址。其中,成功攻击了500多台服务器,其中包括美国和欧洲的知名大学以及一家铁路公司。
  • 复杂性:FritzFrog是完全专有的,其P2P实现是从头开始编写的,这表明其创作者在软件开发领域具有很高的专业水平。
  • 拦截:Guardcore Labs开发了Golang客户端程序,该程序能够拦截FritzFrog的P2P连接并像对等设备一样连接到网络。
  • 隶属关系:我们无法确定负责创建FritzFrog的特定组,但是当前的僵尸网络与以前已知的Rakos僵尸网络部分相似。


介绍



FritzFrog是一个非常复杂的对等僵尸网络,它积极地闯入全球的SSH服务器。得益于其分散的结构,它可以在所有节点之间分配控制权。该网络没有单点故障,对等方不断相互通信以保持其稳定,更新和持续活动。通过使用AES进行对称加密和使用Diffie-Hellman进行密钥交换的加密通道进行P2P连接。



与其他P2P僵尸网络不同,FritzFrog在其属性集方面是独一无二的:它是无文件的,因为它直接在内存中收集和执行包;尽管在网络中有效地平均分配了目标,但他还是非常积极地对目标进行蛮力攻击。其专有的P2P协议不基于任何当前已知的实现。



用Golang编写的恶意代码非常多变,并且在硬盘上没有任何痕迹。它以公共SSH密钥的形式创建后门,从而使攻击者能够永久访问受害者的设备。从其活动的开始,我们就确定了20种不同版本的可执行恶意软件。



在这篇文章中,我们将说明FritzFrog的活动是如何被披露的,以及其P2P网络的性质以及恶意代码的内部-包括感染过程,命令加密和易失性行为。



Guardicore实验室提供了一个Github存储库,该存储库带有一个脚本来检测该恶意软件,并提供其活动的危害指标(IoC)列表。





受感染主机的地理分布。最脆弱的国家是美国,中国和韩国。



FritzFrog研究



Guardcore Labs在僵尸网络百科全书研究中首先研究了FritzFrog 。在1月9日,新的攻击伴随着恶意进程的执行ifconfignginx。我们开始跟踪恶意活动的稳定且显着增加,不久该恶意活动便对Guardcore全球传感器网络(GGSN)进行了13,000次攻击。这些年来,我们跟踪了20种不同版本的FritzFrog二进制文件。





该图显示了针对GGSN的FritzFrog攻击的数量。



令人惊讶的是,乍看之下,恶意代码似乎并未与任何命令和控制(CNC)服务器通信。直到我们开始认真研究僵尸网络时,我们才意识到根本没有服务器。



为了拦截僵尸网络,Guardcore Labs在Golang上开发了一个客户端,该客户端可以与恶意软件交换密钥,以及发送命令和接收响应。这个程序,我们称其为“ frogger”,使我们能够研究网络的性质和目的,并且由于有了frogger,我们将自己的节点“添加”到了网络中,能够连接到僵尸网络,并参与了有效的P2P流量数据的传输。



FritzFrog一直在暴力破解数百万个IP地址,其中包括政府办公室,教育机构,医疗中心,银行和许多电信公司。其中,成功攻击了500多台服务器,其中包括美国和欧洲的知名大学以及一家铁路公司。



下一代P2P



为什么是新一代?



FritzFrog , :



  • : FritzFrog , (BLOB).
  • : .
  • : . , P2P DDG «root».
  • : .
  • : P2P - P2P , μTP.


一旦受害者被成功黑客入侵,带有UPX的恶意代码就会在其上启动,然后立即将其自身删除。为了最大程度地减少怀疑,恶意进程以名称ifconfig和nginx执行。在其工作的开始,恶意代码就在端口1234上侦听,等待命令。收到的第一条命令将受害者与网络对等方和暴力目标的数据库同步。





FritzFrog主机群集。每个节点都是一台受感染的SSH服务器。节点的大小表明了它们与网络其余部分的连通性。



非标准端口(例如1234)上的流量很容易被防火墙或任何其他安全系统注意到并阻止。因此,FritzFrog开发人员创造性地解决了该问题,而不是通过端口1234直接发送命令,攻击者通过SSH连接到受害者并在netcat设备上启动客户端,该客户端又与僵尸网络服务器连接。这样,任何命令都将作为netcat输入通过SSH传递,并很容易到达恶意代码。





FritzFrog使用受感染设备的本地netcat客户端,通过传统的SSH端口通过P2P命令建立隧道。



FritzFrog攻击者已部署了包含30多种不同命令的加密命令通道。命令参数和响应以指定的数据结构传递,并以JSON格式释放(“动员”)。数据使用对称AES加密进行加密,并在发送之前在Base64中进行编码。数据传输中涉及的节点使用Diffie-Hellman协议交换密钥。







FritzFrog网络上的节点保持紧密联系,不断相互ping通以验证连接性,对等方和目标方交换以及相互同步。节点还参与了一个聪明的选举过程,该过程会影响蛮力目标在网络中的分布。 Guardcore Labs的观察结果证实,目标均匀分布在网络中,并且没有两个节点会尝试入侵同一目标。



深入研究恶意代码



FritzFrog二进制文件是Golang上的高级恶意代码。它完全在内存中工作,每个带有恶意代码的节点都将整个目标数据库和对等数据库存储在内存中。恶意代码创建多个线程以同时处理各种任务,如下表所示。



FritzFrog定义受害者和目标设备控制状态如下:



  1. 目标:来自目标请求的设备随后将被传递到Cracker模块,然后Cracker模块将尝试对其进行扫描和破解。
  2. 部署:成功入侵的设备已通过DeployMgmt模块排队等待恶意软件感染。
  3. Owned (): P2P Owned.






每个带有恶意代码的节点都有一个工作线程,该工作线程负责接收命令,解析命令并将它们传递给代码中的适当功能。





反汇编程序中的工作功能。每个分支对应于受支持的P2P功能。



恶意代码本质上是临时的:即使它试图在系统重新启动后仍然存在,但为了以后访问被攻击目标,将保存后门,该后门的登录名和密码由网络上的对等方存储。恶意代码将公共SSH-RSA密钥添加到文件中authorized_keys。这个简单的后门可以使攻击者(使用私钥和私钥)无需更改密码即可进行身份验证,以防更改原始密码。 FritzFrog使用的唯一公钥如下所示。



ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJYZIsncBTFc+iCRHXkeGfFA67j+kUVf7h/IL+sh0RXJn7yDN0vEXz7ig73hC//2/71sND+x+Wu0zytQhZxrCPzimSyC8FJCRtcqDATSjvWsIoI4j/AJyKk5k3fCzjPex3moc48TEYiSbAgXYVQ62uNhx7ylug50nTcUH1BNKDiknXjnZfueiqAO1vcgNLH4qfqIj7WWXu8YgFJ9qwYmwbMm+S7jYYgCtD107bpSR7/WoXSr1/SJLGX6Hg1sTet2USiNevGbfqNzciNxOp08hHQIYp2W9sMuo02pXj9nEoiximR4gSKrNoVesqNZMcVA0Kku01uOuOBAOReN7KJQBt


恶意文件会多次在本地设备上运行各种Shell命令,以监视系统状态。例如,它运行free –m以检查可用的RAM uptimejournalctl –s @0 –u sshd跟踪SSH登录以及其他命令以显示CPU负载统计信息。这些统计信息可用于网络上的其他节点,并用于做出各种决策,例如,是否在设备上运行cryptominer。如果决定,恶意代码将启动一个单独的进程libexec来挖掘Monero。该矿工基于流行的XMRig矿工,并web.xmrpool.eu通过端口5555与公共池进行通信



恶性洪流般的网络



FritzFrog依靠在整个网络上共享文件的能力来感染新设备和启动恶意元素,例如Monero cryptominer。



为了在节点之间交换文件,FritzFrog使用了一种秘密的无文件方法:将文件分为存储在内存中的二进制数据数组,并且恶意代码通过将可用数组与每个数组的哈希值一起存储在映射中来监视可用数组。



当节点A要从其对等节点B接收文件时,它可以向节点B发送请求getblobstats以查找其拥有的阵列。然后,节点A可以使用P2P命令getbin或在address处使用HTTP通过其哈希获得特定的数组http://1234/。节点A收到所有数组后,便通过“汇编”模块构建文件并运行它。





getblolbstats. , .





跟踪P2P僵尸网络操作非常困难。由于网络的分布式特性,网络中的命令可以从任何节点传输到任何节点。但是,我们试图将此P2P僵尸网络与以前的类似威胁进行比较。



即使与其他P2P僵尸网络相比,FritzFrog仍然是独一无二的:它不像IRCflu那样使用IRCflu,与DDG不同,它直接在内存中运行,并且在与InterPlanetary Storm僵尸网络相对的Unix设备上运行。如果看起来像任何人,特别是在功能命名和版本编号方面,它都位于Rakos上,RakosGolang上的P2P僵尸网络,ESET在2016年对其进行了分析。



活动跟踪与缓解



Guardcore Labs提供了FritzFrog跟踪脚本以在SSH服务器上运行。它寻找以下僵尸网络指标:



  • 正在启动进程nginxifconfig或者libexec其可执行文件在系统上不再存在(如下所示)。
  • 在端口1234上侦听。


除此之外,端口5555上的TCP通信可以指示到Monero池的网络通信。



ubuntu@ip-111-11-11-11:~$ ./detect_fritzfrog.sh
FritzFrog Detection Script by Guardicore Labs
=============================================
 
[*] Fileless process nginx is running on the server.
[*] Listening on port 1234
[*] There is evidence of FritzFrog's malicious activity on this machine.


FritzFrog利用了大多数防火墙系统的端口和协议强制功能。您可以使用基于流程的细分规则来消除此类威胁。



弱密码被证明是FritzFrog攻击的关键漏洞。我们建议使用安全性更高的密码和公共授权密钥。此外,至关重要的是从文件中排除FritzFrog公钥,authorization_keys以防止攻击者获得对设备的访问权限。路由器和物联网设备通常会公开其SSH,因此容易受到FritzFrog攻击;我们建议更改此类设备的SSH端口,或者,如果未使用该功能,则完全禁用SSH。



All Articles