【深度分析】VPNFilter:危及全球工控设备和办公网络的物联网高级威胁
颁布功夫 2018-06-17一、威胁概述
近期,思科Talos团队因情况垂危提前公开了一项未实现的钻研,该钻研提及了一个可能对全球网络产生沉大风险的高级威胁攻击(约莫有50万台设备受到习染),由于其主题�?槲募猇PNFilter,故该恶意代码也被定名为”VPNFilter”。该攻击是一路以入侵物联网为载体从事可能由国度提议的全球性的高级恶意软件攻击,恶意软件通过三个阶段来部署其攻击兵器,目前已经有至少50万台设备受到习染。攻击者利用该恶意软件来节造并监督处于工控网络、办公环境中的网络设备(蕴含路由器、网关、防火墙以及其他的物联网设备),其支持工控网络谍报网络、沉要敏感的流量(登录凭证)截取、流量篡改、定向JS注入、设备粉碎性攻击等职能。
恶意软件在5月8日出现大规模的以乌克兰为重要指标的攻击活动,并且在5月17日乌克兰的受习染设备出现大幅度增长,这些受习染设备均受控于C&C 46.151.209.33, 看起来这次攻击指标似乎对准乌克兰。乌克兰电力系统已经受到过两次黑客攻击,并且导致了停电变乱,两次攻击均以悠久而隐秘的渗入伎俩入侵到指标。而这次的攻击活动以物联网入口,利用大量存在缝隙的物联网设备作为载体进行撒网式攻击,并且以惊人的速度习染了至少50万台设备,其中蕴含有华为、中兴、华硕、Dlink、Ubiquiti、UPVEL、Linksys、MikroTik、NETGEAR 和 TP-Link等设备。同样,这次恶意代码与2015年攻击乌克兰电网的BlackEnergy使用一样的变形RC4算法对关键信息进行加密;并且与之类似的是同样也有对主机设备进行沉要数据擦除与沉启的连环作为以达到让设备无法启动的主张(同时也提高了取证的难度)。
宝运莱官方网站ADLab发现该预警后对该恶意软件进行了深刻的分析,以分解其实现机造。我们发现该恶意软件中除了选取图片文件的EXIF数据传输用于下载恶意代码主题组件的C&C表,还选取HTTP头中的location和direct字段传输该C&C,甚至选取了一种我们称之为”SYN隧路技术”的高级暗藏技术来实现恶意软件C&C的被动更新,即便如之前所报路那样,FBI阻断了该恶意软件的C&C,该技术也能够让该恶意软件急剧新生。其中第三阶段恶意组件专门针对TCP和谈进行嗅探处置,不仅对工控modbus SCADA和谈进行谍报网络,同时还会嗅探基于http和谈的登录凭证信息和Authorization信息。该嗅探�?楸匾诳驮冻讨付╩odbus服务器进行精确的监控,以发现所有衔接的从机设备。此表,在最近公开的攻击插件�?橹谢鼓芄豢闯�,该次攻击可用于宽泛的谍报网络以及对特定指标进行渗入攻击,其中蕴含对80端口的流量沉定向、强造转换HTTPS为HTTP以方便流量监控、窃取HTTP要求包中的登录凭证信息、向指定网站的响应数据中注入恶意javascript剧本等等。
二、恶意软件工作道理
该恶意软件通过利用路由器、网关、防火墙等物联网设备缝隙进行宽泛的习染和传布。在习染设备中,其首先启动一个Loader�?橹葱�,该�?橹匾迪至薞PNFilter组件的下载与执行。Loader�?椴⒉皇侵苯油ü付ǖ南略氐刂防聪略豓PNFilter组件,而是通过多种技术伎俩来获取VPNFilter的下载地址(存储点)。其首先会向服务器photobucket.com发送要求并尝试解析响应数据中的Locaion、direct、图片EXIF信息来获��;若是失败则向服务器taknowall.com发送要求并解析图片的EXIF来获��;若是依然无法获取到C&C,则会选取”SYN隧路技术”来获取C&C实现下一个阶段组件的下载地址。此表,VPN存储点获取成功后,Loader通过内置SSL证书文件来验证下载VPNFilter组件。
VPNFilter组件最后会被下载到”/var/run/”目录下,是该类恶意攻击的主题组件,通过该组件,恶意软件得以驻留在被习染系统中。VPNFilter组件为攻击者提供了一个用于守护僵尸网络的框架,攻击者能够基于分歧的攻击主张加载分歧的插件和执行分歧远控节造号令。目前所发现的插件�?橛校阂桓鲇糜谥С窒谓拥絋or网络的Tor 客户端(Tor Client,文件tor);一个为嗅探登录凭证和Modbus工控和谈信息的TCP流量嗅探�?椋═CP Traffic Sniffer,文件ps);一个专门为HTTP 80端口进行流量监控、截取、篡改、注入的HTTP 流量监控�?椋℉TTP Traffic Controllor,文件ssler);以及可用于粉碎设备使其无法沉启、无法取证的设备粉碎�?椋―estroy Module,文件dstr),此表其还存在其他的�?槿纾簃ikrotik.o、torrc、ip_tables.ko、iptable_filter.ko、iptable_nat.ko。
三、恶意软件分解
凭据该恶意软件执行攻击的步骤,能够将其划分为三个阶段,其中Loader文件为第一个阶段的恶意�?�,VPNFilter文件为第二阶段的恶意�?�,Tor客户端和流量嗅探器为第三阶段的恶意�?�。以下别离对这三个阶段的恶意代码进行深刻的分解。
第一阶段:习染设备并下载恶意代码主体执行
第一个阶段的样本能够看作是一个Loader(文件名为msvf),攻击者利用设备缝隙将其落地到设备内存中运行。该Loader重要主张是从C&C服务器高低载第二阶段的恶意组件执行。该Loader分歧于以往的物联网恶意代码那样将C&C内置于代码内,而是通过在合法图片网站高低载一张暗藏有C&C地址的图片进行解析,从而得到真实的C&C。而恶意代码为了预防流量追踪,选取socks5代理、Tor、以及ssl的方式进行该图片的下载。若是图片下载失败,也会选取极其荫蔽的原始流量数据嗅探的方式来获取C&C。
同时该�?榛故酝寂腘VRAM并将自身参与按时工作文件”crontab”中,以达到常驻的主张。通常物联网恶意代码如mirai等没有涉及常驻机造,使得其在设备沉启后会隐没。
1、两次创建子过程并且启用恶意代码对当前用户组的读写执行权限
第一阶段样本执行后,会fork两次,第一次用于算帐过程资源启用读写执行权限。
第二次fork会在子过程中确认过程文件是否存在,若是不存在会进行文件的回写,预防进行文件迷失。
此表在第二次fork的子过程中,恶意代码为了预防自身文件在设备沉启后隐没,还会将自身文件参与到crontab文件末尾,以实现开启启动、常驻设备的主张。
2、 解密证书文件名、图片链接数据等内容
接下来恶意代码会通过变形的RC4算法来解密后续要用到的字符串和数据,变形RC4秘钥为”%^:d”,最新版本已经更新为“g&*kdj$dg0_@@7’x”。
变形RC4的stable数据如下:
最后解密得到如下信息,其中蕴含证书文件名、版本号、build信息、图片url等。
解密url:
3、创建ssl证书文件以及恶意代码版本文件
解密实现后,恶意代码会将代码中内嵌的公钥、私钥数据存储在证书文件中。该恶意代码中存放有三个证书数据,其中两个公钥和一个私钥,公钥存储在文件”/var/run/client_ca.crt”和”/var/run/client.crt”中,私钥存储在文件”/var/run/client.key”中。
此表,版本信息0.3.9qa会被写入到文件/var/run/msvf.pid中。
4、下载第二阶段组件
第二阶段的恶意代码下载地址选取三种方式获取。首先尝试从photobucket网站要求C&C,具体依照如下链接挨次去下载并提取第二阶段恶意代码的服务器地址。
http://photobucket.com/user/nikkireed11/library
http://photobucket.com/user/kmila302/library
http://photobucket.com/user/lisabraun87/library http://photobucket.com/user/katyperry45/library
固然当前这些链接已经失效,但是通过逆向能够看出,若是要求响应码为302,恶意代码则会从响应数据中的”Location”/”location”参数中提取出第二阶段恶意代码的下载地址。
若是恶意代码要求的响应码为200,则会从要求的响应数据包的HTTP头部中提取”direct”参数的值,作为第二阶段恶意代码下载地址。
若是不存在该值,则会从图片文件中的EXIF域提取经纬度数据并将其转换为第二阶段恶意代码下载的IP地址。下载的图片文件EXIF部门数据类似下图。
处置代码如下:
若是以上情况均失败,恶意代码还会尝试要求如下链接,该链接也是一张图片,和上面步骤一样从EXIF中提取经纬度并处置得到下载地址:http://taknowall.com/manage/content/update.php 。
若是上面的所有方式都尝试后依然无法成功获取C&C地址,恶意代码会通过链接http://api.ipify.org?format=json获取到当前设备的表网IP地址,而后嗅探当前设备的原始网络流量数据,并试图从这些流量数据中过滤出切合特定体式的网络数据包,若是满足体式要求,便会从该数据中提取出第二阶段恶意代码的下载地址。其中过滤包时需满足如下前提:
(1) 原始数据流长度必须大于0x3D
(2) 数据包必须为TCP包
(3) 数据包的SYN必须被设置
(4) 主张IP必须为当前设备的公网IP
(5) Tcp Option的MSS(Maximum Segment Size) 必须为0c 15 22 2B(现实上为犯法MSS)
若是满足以上前提,则从MSS之后的4个字节提取出C&C的IP地址。我们将这种以SYN TCP数据流作为数据传输的技术称为”SYN隧路技术”。利用该种技术来传输C&C地址不仅可能很好隐秘黑客的踪影(无需在恶意代码逆向或者网络存储点上露出黑客C&C地址),并且可能矫捷的变换C&C,极度难以被发觉。因而,能够说样本中任何内置C&C或者存储C&C的存储点被措置后,该恶意代码依然能够受控于黑客。这给法律部门措置该恶意代码带来了巨大挑战。原始流的部门判定代码如下:
若是以上任何一种方式可能成功获取到下载地址并且下载组件成功,恶意代码便会直接执行所下载恶意代码,而后退出。下载的第二阶段的恶意代码被保留为文件”/var/vpnfilter”。
第二阶段:节造号令接管、分发、执行
该样本以实现后门节造为主张,其重要用于衔接节造端服务器,接管节造号令执行相应的职能节造。样本首先为了确保运行实体的唯一性,会绑定1386端口。若是该端口被占用便会终止运行。此表在新版本中不再通过这种容易自我露出的方式来做唯一性判定,并且增长了自我删除的职能。
若是绑定成功,便会进入主题工作代码中执行。首先为了预防因CPU资源不及、平台兼容性等问题导致无法工作或者退出,其还注册了大量异常信号用于自我新生。
而后选取同样的变形RC4算法和秘钥来解密关键字符串以供后续使用。接下来会实现后续装置配置流程。
首先检测ssl证书文件是否存在,若是不存在,其会处于等待状态,直到证书文件装置实现。不然起头配置工作目录、设置代理地址、设置Tor网络地址、获取表网IP地址、MAC地址、网络名称等信息。下图为部门装置信息。
接下来创建工作目录/var/run/xxm/及/var/run/xxw并开启主循环,向节造端要求节造号令并且执行相应的节造职能。
节造号令的要求有两种方式,一种是通过socks5代理方式,一种是通过Tor网络要求。通过socks5代理要求的C&C地址如下(在新版本中91.121.109.209被移除):
91.121.109.209
217.12.202.40
94.242.222.68
通过Tor网络要求的地址如下(在新版本钟妆zuh3vcyskd4gipkm.onion/bin32/update.php”被移除):
6b57dcnonk2edf5a.onion/bin32/update.php
zuh3vcyskd4gipkm.onion/bin32/update.php
tljmmy4vmkqbdof4.onion/bin32/update.php
这两种方式的要求都是通过ssl和谈进行的。要求实现后,恶意代码解析相应数据并且提取出节造号令和节造参数信息。其实现的远程节造号令和节造参数信息如下:

从该后门实现的远程节造职能我们能够揣摩该黑客的动机:
(1) 和其他后门一样,黑客但愿可能通过远程shell号令对设备进行齐全的节造。
(2) 黑客能够在一按机遇对这些设备进行粉碎性操作,使其无法再次使用。
(3) 为了暗藏其可疑的节造流量,选取socks5和Tor逃避IDS监测。
(4) 能够矫捷的配置其在Tor网络中的C&C服务器以及代理服务器
(5) 能提供扩大�?榈南略赜胫葱械牟僮�。
(6) 可矫捷配置衔接C&C的频率,提高其活动的荫蔽性。
此表,该阶段的最新恶意代码有较大的变动,不仅对代码做了优化、去除了日志信息,还扭转了部门节造号令的职能,好比kill号令用于实现过程及算帐其下载的插件,新增长了update号令和restart号令。不言而喻,update号令用于更新样本,restart号令用于沉启样本执行。同时移除了seturl、proxy号令。
第三阶段:扩大组件
第三阶段目前已经发现大量的组件,其中蕴含一个为MIPS平台的流量嗅探器、一个用于粉碎设备的dstr�?椤⒁桓鲇糜诮锌矸篐TTP流量嗅探和监控的ssler�?�,还有一些辅助性�?槿纾篢or client、mikrotik.o、torrc、ip_tables.ko、iptable_filter.ko、iptable_nat.ko等。辅助性�?槿鏣or客户端用于支持第二阶段的Tor网络通讯。Tor工程提醒:
由于其为尺度的Tor客户端,不具备恶意职能,因而我们仅仅分析主题的三个�?�。
1、MIPS平台的TCP流量嗅探�?�
该�?槲狹IPS平台,其重要通过从原始数据包中过滤出TCP/IP数据包,并且通过对TCP的payload数据进行过滤,检索其中的敏感信息存储起来。
该流量嗅探�?橥ü诙锥味褚獯朐冻滔略夭⑵舳葱�,其启动运行参数如下:
{�?槊鹽 DstDir Unkownagr ModbusServer
其中第一个参数为嗅探数据的存放蹊径,第二个参数未使用,第三个参数为modbus server的IP地址。
该�?槠舳蟛⒚挥凶龉喽畋淼墓ぷ�,初始化环境后直接挪用流量截取函数进行流量嗅探。
同样二进造法式中不带任何符号文件,函数由我们分析完后进行了沉定名。该函数重要创建一个原始socket并且接管当前设备所通过的原始数据流。
接下来恶意代码会凭据TCP/IP头部体式鉴别出TCP数据包以进前进一步的处置。
首先该�?橹还厍惺莅ざ却笥�0x96个字节的原始流数据,也就是说除去TCP/IP和谈头部的长度的0x36个字节,该�?榻鼋黾喽酱笥�0x60个字节的TCP payload数据。
对于TCP payload数据大于0x60个字节的数据包,该�?榛峤馕鯥P、TCP和谈,并且通过主张端口502判定当前流量数据是否是工控的modbus TCP和谈包,若是是,且当前数据包的主张IP为运行参数中指定的IP地址,该�?楸慊峤檬莅械脑碔P、主张IP、源端口、主张端口纪录下来。
其中纪录的信息体式如下:
*modbus*
源IP:源端口->主张IP:主张端口(如:192.168.1.5:2243->192.168.1.3:503)
该信息纪录在文件%workdir%/rep_[time].bin。
若是当前和谈不是modbus和谈,该�?榛崞揪菀延械墓娑ń泄�,找出其关切的两类数据:一种为携带有验证信息HTTP数据包,一种是携带有登录信息的HTTP要求数据。其中提取验证数据的关键字为"Authorization: Basic”,一旦找到该信息,该�?榛峤鼻靶崽降降氖莅苯蛹吐嫉轿募�%workdir%/rep_[%time%].bin中。
提取登录信息的关键字如下:
用户名关键字:"User="、"user="、"Name="、"name="、"Usr="、"usr="、"Login="、"login="
登录密码关键字:"Pass="、"pass="、"Password="、"password="、"Passwd="、"passwd="
此表要注明的是,数据包中只有满足如下前提,该�?楸慊崤灼�
(1) 数据包的主张IP为�?樵诵胁问付ǖ腎P。
(2) 数据包的源端口幼于1024。
(3) 数据包的源端口为8080/8088。
(4) TCP payload数据长度幼于0x14。
(5) TCP Payload数据包中蕴含有"<?xml"、">"、"Basic Og=="、"/tmUnblock.cgi"、"Password required"、"<div”、"<form"、"<input"、"{"、"}"、"200 OK"、".get"、"<span "、"<SPAN "、"<DIV "等。
2、ssler HTTP嗅探与监控�?�
该�?橹匾攵訦TTP层执行越发丰硕和壮大的处置,其提供有HTTP流量沉定向、HTTP流量监控与截取、流量劫持与篡改、定向注入JS以进行精准攻击等职能。其由第二阶段的恶意�?槠舳诵�,运行参数注明如下:
首先该�?榛崾褂胕nsmod号令装置三个iptable有关的内核�?� (ip_tables.ko、iptable_filter.ko、 iptable_nat.ko),通过这三个�?�,恶意代码能够将自己的规定配置到iptable中去 。
接下来执行如下号令将所有80端口的流量沉定向到其所监听的8888端口上:
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8888
为了保障该规定不会被删除,该�?榛崦扛�5分钟更新一次该规定。
该�?榛峁刈⑺�80端口上的数据,蕴含流向服务器端和流向客户端的数据。在处置流向服务器端的数据时,为了最大化的监控到敏感数据,其会对HTTP要求的数据进行肯定篡改。在处置流向客户端的响应数据时,同样会对数据进行篡改并且凭据启动参数的指定来对特定指标执行精准的JS注入,入侵到具体客户端主机上,也可所以内网的办公主机上。
(1)对要求数据的处置
首先,该�?槲丝赡茏畲笙薅鹊募嗫氐搅髁�,其会将所有要求数据的"https://"篡改为"http://"。为了确保HTTP传输的数据都为可处置数据,会批改”Accept-Encoding”的值,以及批改Connection的方式,具体处置方式如下:
i. 将要求数据中的所有https篡改为http,以方便监控并窃取敏感信息,如登录凭证等。
ii. 若是HTTP要求中蕴含佑妆Connection: keep-alive”,将会被代替为”Connection: close”。
iii. 若是HTTP要求中,HTTP头中蕴含有gzip值的”Accept-Encoding”头部域(排除url为jpg、jpeg、png、gif、css、js、ttf、woff文件),其将会转化为”Accept-Encoding: plaintext/none”,这样要求得到的数据便不会被服务器端压缩。
随后,该组件可对截取的流量进行过滤并将有关数据保留到设备中。首先若是”dump:domain”参数被指定,http要求的url、port、http header城市保留在指定的文件中。若是在dump参数中没有指定具体值(domain字符串为空)或者dump参数没有指按时,其会dump蕴含有特定信息http要求信息。其通过URL来判定当前要求是否是其关切的要求,若是URL中蕴含有关键字:
”sername=”、”ser=”、”ame=”、”ogin=”、”ail=”、”hone=”、”session%5Busername”、”session%5Bpassword”、”session[password”便会dump要求的头部信息到指定的文件中。
另表,对accounts.google.com发送的POST要求,只有其中蕴含有字符串”signin”,城市被dump下来。
(2)对响应信息的处置
所有HTTP要求得到的响应数据城市被处置,其处置方式如下:
i. 响应信息中Location的值若是是”https://”,则被代替为http://。
ii. 若是响应头部中蕴含有Alt-Scv、Vary、Content-MD5、content-security-policy、X-FB-Debug、public-key-pins-report-only、Access-Control-Allow-Origin,便会被阻断,也就是说,要求方无法得到响应。
iii. Dump所有要求包的数据到本地,其中蕴含https://和http://。
iv. 若是参数”site:domain”指定了域名关键字或者域名的一部门,其会将一段javascript剧本注入到所有蕴含有的”Content-Type: text/html” 或者”Content-Type: text/javascript”响应数据的msgbody中。其注入步骤:首先响应的msgbody数据中必须蕴含字符串”<meta name= … >”并且长度必须大于参数”hook:”所指定的字符串长度。若是满足前提,字符串”<meta name= … >”将会被代替成为”<script type="text/javascript" src="[hook value]">”,当前受害者IP及其接见的网站域名将会参与到内部的一个白名单中,以预防沉复注入,白名单每4天会被清空一次。
在响应数据中,恶意�?榛崽崛∶扛隽唇又械挠蛎�,并且将其参与到截取列表中,这个截取列表中所有的https和http要求城市依照“(1)对要求数据的处置”的方式进行处置。默认情况下蕴含有 www.google.com、 twitter.com、 www.facebook.com、www.youtube.com。
3、 设备粉碎�?椋―estroy module)
由于老版本的第二阶段�?榈ゴ康闹皇堑ヒ徊脸璞竚tdblock0的前5000个字节以粉碎设备,有很大几率会失败,因而新版本的第二阶段�?榻玨ill指令的粉碎性职能取缔,并选取插件�?榈姆绞嚼词迪�。该插件�?椴唤龈慕朔鬯樯璞钢澳�,并且还提供了痕迹算帐的职能。其主张不仅让设备无法复原,并且即便复原了也无法取证获取恶意代码有关痕迹。
�?槠舳笫紫壬境陨砦募�,而后强造关关所有蕴含"vpnfilter"、"security"、"tor"关键字的过程。
接下来算帐掉所有痕迹文件,其中蕴含有证书文件、Tor客户端有关文件、版本信息文件等。
该�?榛够岜槔鷐td分区,并强造擦除整个FLASH。
最后,其选取”"rm -rf /*"”强造递归删除文件系统上的所有文件,并沉启设备。
四、总结
通过度析我们能够看出,该恶意代码攻击手法隐秘高妙,其不仅选取代理+Tor+SSL的方式以逃避网络流量的监测,并且还有多沉战术用于确保主题组件(第二阶段恶意代码)的成功下发。首先选取了HTTP的方式将C&C存放于”direct”或者”location”字段中,若是这种方式被阻断则选取图片隐写技术将C&C存储于EXIF中,若是存储C&C的图片链接失效,其还在代码中留了一个”SYN”后门,通过”SYN隧路技术”来传输C&C。这种能够说是黑客采取的一种较为高妙且极度保险的战术,为其行动在被发现甚至是被阻断后设置了多沉保险,也便于在黑客发现被阻断后进行急剧切换,极大地提高了其节造的悠久性和矫捷性。
我们还能够看到,迅猛发展的物联网设备也起头造成高级威胁组织的一类攻击向量,其试图通过这些设备来网络谍报,蕴含登录凭证以及工控设施有关的沉要信息,通过矫捷的�?榛芄�,可凭据有关谍报对特定主机执行精准攻击或者对大量设备执行极具粉碎性的攻击,其风险性极度之大。
建议厂商将检测规定(Talos已经公开了100多条snort规定)参与到流量检测设备中,若是支持原始流量检测,也可利用“SYN隧路技术”中的特点进行越发深度和精确的检测。一旦发现受习染设备,建议选取应急战术对设备进行措置(好比对设备进行断网并且复位复原到出厂模式、更新最新固件),同时进一步查抄内网主机是否有被攻击并请专业人士进行处置。
IOC:
第一阶段涉及的有关URL:
photobucket[.]com/user/nikkireed11/library
photobucket[.]com/user/kmila302/library
photobucket[.]com/user/lisabraun87/library
photobucket[.]com/user/eva_green1/library
photobucket[.]com/user/monicabelci4/library
photobucket[.]com/user/katyperry45/library
photobucket[.]com/user/saragray1/library
photobucket[.]com/user/millerfred/library
photobucket[.]com/user/jeniferaniston1/library
photobucket[.]com/user/amandaseyfried1/library
photobucket[.]com/user/suwe8/library
photobucket[.]com/user/bob7301/library
toknowall[.]com
第二阶段涉及的有关IP及链接:
91.121.109[.]209
217.12.202[.]40
94.242.222[.]68
82.118.242[.]124
46.151.209[.]33
217.79.179[.]14
91.214.203[.]144
95.211.198[.]231
195.154.180[.]60
5.149.250[.]54
91.200.13[.]76
94.185.80[.]82
62.210.180[.]229
62.210.180[.]229
91.200.13[.]76
23.111.177[.]114
6b57dcnonk2edf5a[.]onion/bin32/update.php
tljmmy4vmkqbdof4[.]onion/bin32/update.php
zuh3vcyskd4gipkm[.]onion/bin32/update.php
4seiwn2ur4f65zo4.onion/bin256/update.php
zm3lznxn27wtzkwa.onion/bin16/update.php
最新受习染的设备如下:
参考链接:
https://blog[.]talosintelligence.com/2018/05/VPNFilter.html
https://blog.talosintelligence.com/2018/06/vpnfilter-update.html


京公网安备11010802024551号