网络安全研究人员2020年8月19日揭开了一个复杂的、多功能的P2P(peer-to-peer,P2P)僵尸网络的面纱,该僵尸网络自2020年1月以来一直在积极瞄准SSH服务器。Guardicore Labs2020年8月19日发布的一份报告显示,这个名为“FritzFrog”的是一个模块化、多线程、无文件的僵尸网络迄今已突破500多台服务器,感染了欧美知名大学和一家铁路公司。
Guardicore的Ophir Harpaz说:“凭借其分散的基础架构,它可以在所有节点之间分配控制权。” “在没有单一故障点的网络中,与对方不断相互通信,以保持网络的生命力,弹性和最新性。”
除了实施从头开始编写的专有P2P协议外,通信还通过加密通道进行,恶意软件能够在受害系统上创建后门,从而使攻击者得以继续访问。
无文件P2P僵尸网络
尽管以前曾观察到基于GoLang的僵尸网络,例如Gandalf和GoBrut,但FritzFrog似乎与Rakos有一些相似之处,Rakos是另一个基于Golang的Linux后门,以前曾发现它是通过对SSH登录的强行尝试渗透到目标系统的。
但是,令FritzFrog独树一帜的是它没有文件,这意味着它可以在内存中组装和执行有效载荷,并且在执行暴力攻击时更具攻击性,同时还可以通过在僵尸网络内平均分配目标来提高效率。
一旦确定了目标计算机,该恶意软件将执行一系列任务,包括对其进行暴力破解,在成功突破后用恶意有效载荷感染计算机,并将受害者添加到P2P网络。
为了掩盖事实,该恶意软件以ifconfig和NGINX的身份运行,并开始侦听端口1234,以接收进一步的执行命令,包括将受害者与网络对等方和暴力目标的数据库同步的命令。
这些命令本身通过旨在避免检测的一系列制造传输到恶意软件。僵尸网络中的攻击者节点首先通过SSH锁定特定的受害者,然后使用NETCAT实用程序与远程服务器建立连接。 此外,有效载荷文件以BitTorrent样式在节点之间交换,采用分段文件传输方法来发送数据块。
“当节点A希望从其对等节点B接收文件时,它可以使用getblobstats命令查询节点B所拥有的Blob,” Harpaz说。“然后,节点A可以通过其哈希(通过P2P命令getbin或通过HTTP,使用URL'https:// node_IP:1234 / blob_hash)来获得特定的blob。当节点A具有所有必需的Blob时,它将使用名为Assemble的特殊模块来组装文件并运行它。”
除了对命令响应进行加密和编码之外,该恶意软件还运行一个名为“ libexec“的单独进程来挖掘Monero硬币,并通过在SSH的“ authorized_keys ”文件中添加公钥来留下后门,以供以后访问受害者无需再次依赖密码即可进行身份验证。
攻击影响
据网络安全公司称,该活动于1月9日开始,自首次出现以来,累计攻击次数已达13,000次,涉及20种不同版本的恶意软件二进制文件。
除了针对教育机构以外,还发现FritzFrog暴力破解了属于政府组织,医疗中心,银行和电信公司的数百万个IP地址。
Guardicore Labs还提供了一个检测脚本,用于检查服务器是否已被FritzFrog感染,并共享其他危害指标(IoC)。
“弱密码是FritzFrog攻击的直接促成因素,” Harpaz总结道。“Harpaz建议选择强密码并使用公共密钥身份验证,这更加安全。路由器和IoT设备通常会暴露SSH,因此容易受到FritzFrog的攻击-如果不使用服务,请考虑更改其SSH端口或完全禁用对它们的SSH访问。”