导语:Cisco Talos团队5月底公布了VPNFilter恶意软件的一些细节,日前又公布了针对VPNFilter研究的新进展。

简介

文章《新VPNFilter恶意软件:攻击至少50万网络设备》(http://www.4hou.com/web/11855.html)描述了VPNFilter的一些细节,日前Taols团队又公布了针对VPNFilter研究的新进展。

总的来说,VPNFilter攻击的设备类型和型号比之前预计的要多,而且有更多的功能,比如将漏洞利用传给终端。

首先,研究人员发现被攻击的目标名单中增加了很多新面孔,比如ASUS、D-link、华为、中兴等等。目前尚未发现有思科产品受到影响。

研究人员还发现一个新的stage 3模块,该模块可以将恶意内容注入到流经网络设备的web流量中。在上一篇文章中,对stage 3的推测描述不够详细,本文进行更新。攻击者利用该模块可以通过中间人(攻击)的能力将漏洞利用传递到终端设备上,比如拦截网络流量、注入恶意代码等等。

根据这些发现,研究人员可以确认该威胁不仅仅是网络设备本身带来的,攻击者还将该威胁扩展到被入侵的网络中。

研究人员还发现一个向所有缺乏kill命令的stage 2模块提供该功能的stage 3模块。在执行时,该模块会从设备中移除VPNFilter恶意软件的记录,然后使该模块不可用。研究人员将该模块命名为“ssler”。

技术分析

下面就对stage 3模块——“ssler”进行详细分析:

Ssler模块也叫做"Esler",通过拦截流经设备的80端口的流量来提供数据泄露和JS注入功能。该模块有一个参数列表,决定了模块的行为和被攻击的目标网站。第一个参数控制窃取的数据要存储的文件夹的位置,其他参数的作用如下:

· dst:用创建的iptable规则来限定应用的特定的目的IP地址或CIDR范围。

· src:用创建的iptable规则来限定应用的特定的目的IP地址或CIDR范围。

· dump:所有含有dump参数的域名都会将HTTP头记录到reps_*.bin文件中。

· site:当域名提供了site参数,该域名就会对目标web页面进行JS注入。

· hook:该参数决定了JS文件要注入的URL。

Ssler模块的第一个动作就是配置设备的iptable来重定向所有80端口的流量到8888端口。首先使用insmod命令来插入3个iptable模块(ip_tables.ko, iptable_filter.ko,iptable_nat.ko)到kernel中,然后执行下面的shell命令:

· iptables -I INPUT -p tcp –dport 8888 -j ACCEPT

· iptables -t nat -I PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8888

注:为了保证这3条规则不被删除,ssler每4分钟就会将删除的这些命令重新添加回来。

任何80端口上的出web请求都会被ssler拦截,在被发送到合法的HTTP服务之前,都可以进行检查和操作。所有的HTTP请求都会被ssl分离,也就是说请求在发送给真实的HTTP服务器之前会做下面的变化:

所有实例中的含https://都会被替换为http://,将安全的HTTP资源请求变成不安全的HTTP资源请求,这就可以提取出凭证这样的敏感数据。

如果请求中含有Connection: keep-alive,也会被替换为Connection: close。

如果请求中含有header Accept-Encoding:gzip就会被替换为Accept-Encoding: plaintext/none,这样就不会有相应消息被压缩为gzip。

如果主机在dump: parameters中,请求的详细细节就会保存到硬盘中进行过滤,包括URL、端口、所有的请求头等。如果主机不再dump: parameter中,那么就只保存有Authorization header或URL中有凭证的请求。如果URL中含有assword=或ass=或下面的信息就认为该URL中含有凭证信息:

· sername=

· ser=

· ame=

· ogin=

· ail=

· hone=

· session%5Busername

· session%5Bpassword

· session[password

到accounts.google.com的POST请求中如果含有signin字符串,也会被保存。

这些修改完成后,ssler会用修改的请求数据通过80端口建立到真实HTTP服务器的连接。然后ssler会从HTTP服务器接收响应消息,然后做出如下修改后再传递给受害者:

响应消息中的https://会被替换为http://,下面的头会被忽略,不发给客户:

· Alt-Scv

· Vary

· Content-MD5

· content-security-policy

· X-FB-Debug

· public-key-pins-report-only

· Access-Control-Allow-Origin

整个响应是ssl分割的,也就是说所有https://会变成\x20http://。

如果参数site:提供一个域名,那么攻击者就会尝试注入JS到所有Content-Type: text/html或Content-Type: text/javascript的响应。

响应中被ssl分割的域名随后会添加到一个分割的域名列表中。随后被ssler模块拦截的请求会通过HTTPS协议和443端口而不是HTTP的80端口去发送。默认情况下,列表中有4个域名,分别是www.google.com, twitter.com, www.facebook.com, www.youtube.com

'dstr' (设备破坏模块)

Dstr模块是用来使被感染的设备不能正常运行的,该模块是通过删除正常运行所需要的文件来完成该目的的。该模块在删除系统中其他的文件前会删除与自身运行相关的所有文件,这可能是为了防止在取证分析过程中被发现。

研究人员对x86版本的dstr模块进行了深度分析,该模块首先会从硬盘中删除自己,然后停止运行stage 2进程。然后从所有的运行进程中找到vpnfiler、security和tor,并中止这几个进程。然后,删除下面的文件和目录:

· /var/tmp/client_ca.crt

· /var/tmp/client.key

· /var/tmp/client.crt

· /var/run/vpnfilterm/htpx

· /var/run/vpnfilter

· /var/run/vpn.tmp

· /var/run/vpn.pid

· /var/run/torrc

· /var/run/tord/hidden_ssh/private_key

· /var/run/tord/hidden_ssh/hostname

· /var/run/tor

· /var/run/msvf.pid

· /flash/mikrotik.o

· /flash/.mikrotik.

dstr模块会通过用0XFF字节覆写所有/dev/mtdX的可用空间。最后执行shell命令rm -rf /* 来删除文件系统中其他的文件,然后设备重启。此时,设备会缺乏运行所必须的文件,就不能正常启动。

'ps' (stage 3 packet sniffer)

Ps是stage 3的包嗅探器模块。其中一个样本叫做R600VPN MIPS-like (Lexra架构),该样本是一个寻找基本认证和监控ICS流量的包嗅探器,而且是专门针对TP-LINK R600-VPN的。

恶意软件会使用原始的包来寻找与预定义的IP地址带连接,而且只寻找150字节或更大的TCP包。嗅探器只能看,但是不能修改网络流量。

微信图片_20180608001704.jpg

结论

这些新的发现表明VPNFilter威胁正在进一步发展。除了攻击目标和厂商的增多,还发现了恶意软件的新功能,恶意软件不仅可以攻击终端设备,还入侵设备所处的网络。如果攻击成功,攻击者就能够完成rootkit、数据窃取、破坏性恶意软件等功能。

研究人员表明会继续关注VPNFilter的更新情况。

源链接

Hacking more

...