1 概述
2018 年 5 月 23 日,思科发布针对 VPNFilter 调查报告。思科发现至少 54 个国家/地区的 50 万台感染设备,包括 Linksys,MikroTik,NETGEAR 和 TP-Link 网络设备,以及 QNAP 网络附加存储(NAS)设备。该恶意软件的组件允许盗窃网站凭据和监视 Modbus SCADA 协议甚至破坏受感染设备。
思科在 2018 年 5 月初观察到受感染的设备在23、80、2000和8080端口上进行 TCP 扫描,这些扫描针对 100 多个国家/地区的设备。在 5 月 8 日,观察到 VPNFilter 感染活动急剧增加。几乎所有新感染的受害者都位于乌克兰,此外大多数位于乌克兰的感染设备与世界其他地区共用第 2 阶段 C2 基础设施 46.151.209.33。思科称 BlackEnergy 和 VPNFilter 之间的代码重叠,并且 VPNFilter 在乌克兰的攻击时机也与 BlackEnergy 有联系。
同一天,美国司法部发布新闻称已采取行动,破坏由 APT28 控制的 VPNFilter 僵尸网络。FBI 控制了 VPNFilter 的命令和控制基础结构一部分的域,因此捕获到受感染设备地址并修复受感染设备。
2021 年 1 月 9 日,趋势科技发布报告称截止到 2020 年 VPNFilter 仍在持续性感染,并且感染会持续数年直到拥有漏洞的设备被替换为止。趋势科技联合 Shadowserver 构造数据包和图像来主动发现网络中存活的受感染设备,这一举措发现上千主机仍感染恶意软件,由于域可能在 DNS 级别被阻止,因此趋势科技认为感染的数量更高。
VPNFilter 恶意软件是一个多阶段的模块化平台,具有多种功能,包括初始感染、命令与控制以及第三阶段并部署了有效负载,可支持情报收集和破坏性网络攻击操作。恶意软件的第一阶段从十二个以上的供应商处获得对特定设备的访问权限,在第一阶段即使重启设备仍可持续存在,第一阶段的主要目的是获得持久的立足点并启用第二阶段恶意软件的部署。
第二阶段恶意软件重新启动就不复存在,具有文件收集,命令执行,数据渗漏和设备管理等功能,甚至某些版本还具有破坏功能,该功能覆盖设备固件的关键部分并重启设备,从而使其无法使用。此外,还有多个插件为第二阶段提供了其他功能,例如用于收集设备流量、窃取网站凭据甚至可以监视 Modbus SCADA 协议的数据包嗅探器插件以及通信模块。
第二阶段尝试连接到图像托管站点 Photobucket,下载一张图片,该 Exif 格式的图片的 GPS 坐标中嵌入了 C&C 服务器的 IP 地址。如果失败,则它将尝试连接到域 toknowall.com
来下载嵌入 C&C 的图像。最后,如果这两次尝试都失败了,它将打开一个侦听器来监视所有传入的数据包,以获取一个特制的 TCP 数据包,该数据包将包含第二阶段 C&C 服务器的 IP 地址。
VPNFilter 第一阶段受害面较大,以下针对第一阶段进行详细分析。
2 第一阶段分析
VPNFilter 的第一阶段感染了基于 Busybox 和 Linux 运行的固件的设备。第一阶段主要目的是找到第二阶段 C&C 并下载第二阶段有效载荷。
恶意代码修改非易失性配置内存(NVRAM)值,并将其添加到 Linux 作业计划程序 crontab 中,以实现持久性。
第一阶段恶意代码某些字符串以加密形式存储,仅在运行时解密。解密算法是修改过的 RC4 算法。正常的RC4算法在内部状态初始化的置换阶段会XOR值,但是第一阶段恶意代码并没有交换S[i]
和S[j]
的值,也就是没有进行置换,这形成了一个显著的特征。解密密钥为“%^:d”
,解密字符串为如下图所示。
将恶意代码中证书字符串写入到/var/run
中,分别是client_ca.crt
、client.key
以及client.crt
。用于后续双向认证。其中client_ca.crt
是服务器和客户端共有证书。
恶意代码完成初始化后,进入到获取第二阶段 C2 阶段。分别从图像共享主机 Photobucket 和域名 toknowall.com 下载图片并获取第二阶段 C2。
恶意代码首先将从图像共享主机 Photobucket 下载第一张 EXIF 格式图片,然后提取图片中 GPS 坐标包含的 IP 地址。每个第一阶段的恶意软件都包含多个 Photobucket 账户被用作 C&C,执行期间随机选择其中一个作为 Photobucket 账户,其中 Photobucket 账户是上文解密结果。
第一阶段恶意软件0e0094d9bd396a6594da8e21911a3982cd737b445f591581560d766755097d92
访问 Photobucket 的账户包括“nikireedl1”
、“kmila302”
、“lisabraun87”
和“katyperry45”
。
恶意软件50ac4fcd3fbc8abcaa766449841b3a0a684b3e217fc40935flac22c34c58a9ec
访问 Photobucket 的账户包括“eva_greenl”
、“monicabelci4”
、“katyperry45”
、“saragrayl”
、“millerfred”
、“lisabraun87”
、“jeniferanistonl”
、“amandaseyfriedl”
、“nikkireedll”
、“suwe8”
、“bob7301”
和“kmila302”
。
该算法从下载的图像文件的 Exif 标头中包含的 GPS 信息中使用 GPSLatitude 和 GPSLongitude 两个段计算 IP 地址。这两个段都包含 Degrees、Minutes 和 Seconds 三个值,这些值作为有理数存储。每个值又包含 Numerator(分子)和 Denominator(分母)。计算 IP 地址算法如下:
-
IP地址第一个八字节组:Latitude Minutes Numerator + Latitude Degrees Numerator + 90
-
IP地址第二个八字节组:Latitude Seconds Numerator + Latitude Degrees Numerator + 90
-
IP地址第三个八字节组:Longitude Minutes Numerator + Longitude Degrees Numerator + 180
-
IP地址第四个八字节组:Longitude Minutes Numerator + Longitude Degrees Numerator + 180
如果第一阶段恶意代码无法从 Photobucket 下载图片或者无法从图片中成功获取到 IP 地址,则会访问备份域名toknowall.com
,下载图片并提取 IP 地址。
如果这两种方式都失败,则打开一个嗅探器,监听受感染设备所有流量。同时,可以依据以下特征制作激活包,给受到第一阶段恶意代码感染的主机发送 TCP 包,等待设备回连 443 端口。
-
检查所有设置了SYN标志的TCP/IPv4数据包; -
检查数据包目标IP是否与从api.ipify.org找到的受害主机公网IP匹配,如果无法从api.ipify.org获取IP,则跳过此检查 -
确保数据包有八个或更多字节; -
扫描数据寻找x0cx15x22x2b,该4个字节后面的字节被解释为IP地址,如x01x02x03x04被解释为1.2.3.4; -
调用解析出的新IP地址;
与 C2 进行双向认证,客户端与服务器进行证书交换,彼此验证。服务器首先向受感染设备发送证书,客户端使用 client_ca.crt 验证完证书后向服务端发送证书 client.crt,服务端验证成功后,受感染设备和服务器开始通信。其中 client.crt 是 client_ca.crt 颁发的证书。
样本从 C2 的/update/<filename>
目录中加载文件,其中<filename>
是易受攻击的设备的型号名称(例如,对于 Qnap NAS 设备为 qnapx86)。
从 C2 下载的模块另存为/var/vpnfilter
,并通过chmod(511)
命令分配了执行许可,然后通过sys_execve()
系统调用执行。
以上所有和通信有关的 user-agent 均是“User-Agent: Mozilla/6.1 (compatible; MSIE 9.0; Windows NT 5.3; Trident/5.0”
,其中 Windows NT 5.3 不存在,是一个显著的流量特征。
3 总结
VPNFilter 恶意软件是另一种哲学范式的清晰展示:我们在日常生活中帮助我们的物联网设备越多,CPU 变得越先进,驱动我们的路由器、汽车或冰箱等,攻击就越大面变成。
在所有这些设备中,无论是 ARM 或 MIPS 还是 Intel x86,CPU 的类型都无关紧要,只要它们足够强大,并且每天都变得越来越强大。这就是进化的全部要点,这个过程不会停止。VPNFilter 不是第一个针对网络上的日常设备的僵尸恶意软件,也不会是最后一个。防范恶意软件,任重道远,也是每个安全人的职责与荣耀。
end
招新小广告
ChaMd5 Venom 招收大佬入圈
新成立组IOT+工控+样本分析 长期招新