一、概述
日前,火绒安全团队发现"ADSafe净网大师"、"清网卫士"、 "广告过滤大师"等多款知名软件暗藏恶意代码,偷偷劫持用户流量。这些软件出自同一公司,功能类似,主要是屏蔽网页广告。根据技术分析,三款软件都会通过替换计费名(不同网站和上游分成的标识)的方式来劫持流量,牟取暴利。其劫持网站数量为近年最多,已达50余家,包括国内多家知名导航站、电商以及在线消费交易平台等。更可怕的是,"ADSafe"劫持规则可随时通过远程操作被修改,不排除其将来用来执行其他恶意行为的可能性,存在极大安全隐患。
图1
火绒安全团队发现,"ADSafe"官网的软件版本虽然停留在v4.0.610,但其论坛、下载站中却发布了v5.3版。根据技术分析,"清网卫士"、"广告过滤大师"和v5.3版"ADSafe"的功能、广告过滤规则,以及恶意代码都完全一样,可以认定,"清网卫士"和"广告过滤大师"软件其实就是"ADSafe"的最新版本,都会通过替换计费名(不同网站和上游分成的标识)的方式来劫持流量,牟取暴利。
目前,"ADSafe"(v5.3及以上版本)和"清网卫士"等软件正在通过国内各大下载站、官网以及官方论坛大肆传播。用户电脑中只要装了上述软件,网站中(如 图2)产生的流量都会被劫持。
图2
如上图所示,此次涉及到的受劫持网站数量是我们近年来发现最多的一次,共有50余家。不仅包括国内的导航站、电商(淘宝、京东、华为商城、小米商城、1药网等);还包括国内一些在线消费交易平台(新东方、悟空租车);国外的品牌购物站(Coach、Hanes、Clarins等)。
另外,现在劫持规则还在持续更新,不排除将来可能用于其他攻击。例如火绒之前报道过的病毒利用JavaScript进行挖矿(www.huorong.cn/info/151443978790.html)和窃取个人信息(www.huorong.cn/info/1518338707106.html)的案例,建议广大用户注意防范。"火绒安全软件"最新版可以拦截"ADSafe"和"清网卫士"。
近几年,互联网公司间的流量争夺赛愈演愈烈,并成为其主要收入来源。然而"流量"和"侵害用户"往往是相伴而生,这也是"火绒关停流量业务"的初衷。软件提供服务,用户购买服务/产品,才是健康的商业模式,而不是打着"免费"的旗子,背地里却把用户电脑当作"战场",当成软件厂商的赚钱工具。归根结底,只有规范的服务、优质的产品,才是企业的制胜法宝,是企业长久发展的经营之道。
二、病毒来源
火绒近期在多个用户现场发现,名为清网卫士的广告过滤软件会恶意劫持流量。当用户访问搜索引擎、网址导航站、电商网站时,该软件会通过HTTP代理的方式将访问网址劫持为带有推广号的目标网址链接,恶意流量劫持涉及国内外众多线上消费平台及导航搜索站点,国内电商平台包括:淘宝、京东、苏宁等,国外线上消费平台则包括:Coach、Hanes、Nike等多个知名品牌。被劫持的网址列表,如下图所示:
被劫持网址
随后,我们找到了清网卫士官网(hxxp://www.ad-off.com/),如下图所示:
清网卫士官网
值得一提的是,在我们查看清网卫士页面源码的时候,发现在被注释的网页代码中竟然出现了ADSafe(ADSafe)的官网微博地址和用户QQ群。如下图所示:
清网卫士网页源码
被注释的清网卫士官方微博地址(http://e.weibo.com/3066343347),实际最终会跳转到ADSafe的官方微博,如下图所示:
清网卫士微博地址
被注释的QQ群号实际为ADSafe用户群,如下图所示:
清网卫士QQ群
除此之外,被注释的清网卫士微信公众号 "adoffjwds",公众号名称后半部分"jwds"为净网大师首字母。根据上述几点,我们可以初步推断,清网卫士可能和ADSafe存在着某种联系。
在我们对ADSafe 5.3.117.9800版本(安装包来源为某下载站)进行分析后发现,该版本的ADSafe也具有相同的劫持行为。除此之外,该版本ADSafe和清网卫士的功能组件中大部分功能代码基本相同,甚至有部分用于流量劫持的数据文件SHA1也完全相同。以HTTP代理主模块为例进行代码比对,ADSafe.exe(ADSafe)和Adoff.exe(清网卫士)代码对比,如下图所示:
代码对比
用于流量劫持的数据文件SHA1对比,如下图所示:
数据文件SHA1对比
该版本ADSafe安装包数字签名有效,名称为"Shanghai Damo Network Technology Co. Ltd.",即上海大摩网络科技有限公司。如下图所示:
ADSafe 5.3.117.9800版本安装包文件属性
ADSafe签名信息
综上,我们可以完全断定,清网卫士和ADSafe5.3.117.9800版本都属于同一个软件制作商,且带有相同的流量劫持逻辑。
随后,我们也对ADSafe官网(hxxp://www.ad-safe.com/)版本进行了分析。 我们发现,官网下载的ADSafe安装包不会释放网络过滤驱动和劫持策略,由于官网版本安装后网络过滤框架不完整,所以不会进行恶意流量劫持。
三、详细分析
如上文所述,清网卫士与ADSafe5.3.117.9800版本劫持逻辑基本相同,所以我们下文中针对该版本ADSafe进行详细分析。病毒运行流程,如下图所示:
病毒运行流程
如上图所示,由于ADSafe使用HTTP代理的方式进行劫持,所以一旦劫持规则生效,用户电脑中所产生的所有HTTP请求都会被ADSafe进行劫持,截至到我们发布报告之前,ADSafe劫持的网址多达54家,且受影响网址还在不断进行更新。
网络过滤驱动
当本地产生HTTP请求时,网络过滤驱动会将过滤到的HTTP请求转发给本地的HTTP代理(ADSafe.exe)。网络过滤驱动中的转发逻辑,如下图所示:
转发逻辑代码
HTTP代理
HTTP代理进程(ADSafe.exe)主要负责处理网络过滤驱动转发来的HTTP请求,根据不同的规则可以用于做广告过滤和流量劫持。ADSafe规则分为两个部分,分别在两个不同的目录下。规则目录位置及用途,如下图所示:
规则目录位置及用途
如上图所示,用户订阅规则主要对应ADSafe中的自定义广告过滤规则,主要用于广告过滤、间谍软件过滤等;流量劫持规则中主要包括劫持策略和劫持内容,劫持生效后,可以将原有的HTTP请求替换为预先准备好的劫持内容,达到劫持目的。以访问http://www.jd.com为例,由于跳转过程较快,我们断网截取到了劫持链接(hxxps://p.yiqifa.com/c?w=***&t=https://www.jd.com/)。劫持效果,如下图所示:
流量劫持
最终跳转页面,如下图所示:
最终劫持地址
流量劫持策略不但会被5.3版本的ADSafe直接释放,还可以进行云控更新,就在我们分析的同时,劫持策略还在不断更新,所以下文所提到的劫持策略均以我们获取到的最后一个版本为准。
ADSafe策略文件中数据均使用AES算法进行加密,加密后数据使用BASE64进行编码。由于所有策略文件解密流程完全相同,下文中不再进行赘述。相关解密逻辑,如下图所示:
解密逻辑相关代码
策略更新功能主要对应ADSafe中的AdsCdn.dll模块,该模块主要负责策略的请求、下载和解密流程。劫持策略更新流程首先会访问C&C服务器地址请求策略配置数据CdnJsonconfig.dat。C&C服务器地址,如下图所示:
C&C服务器地址
请求CdnJsonconfig.dat数据相关代码,如下图所示:
请求CdnJsonconfig.dat数据代码
该文件完成解密后,我们可以得到如下配置:
CdnJsonconfig.dat解密后数据
如上图所示,其中"0002020A"属性中存放的是策略更新配置文件下载地址(hxxp:// filesupload.b0.upaiyun.com/pc_v4/rulefile/source_9800.xml?-70969872),通过HTTP请求我们可以得到如下配置:
策略更新配置
如上图所示,每一组"<RuleFile>"标签对应一个策略或数据文件,其下一级的"<sUrl>"标签中存放的是文件下载地址,下载每个文件至本地后都会对文件的MD5值进行比对,确保文件的完整性。在验证MD5之后,会将规则文件解压至ADSafe安装目录下的res目录中。策略更新相关代码,如下图所示:
策略更新代码
我们前文说到,在ADSafe官网版本(4.0版本)中未包含流量劫持策略,其实是因为低版本AdsCdn.dll动态库中用于请求CdnJsonconfig.dat数据的网址指向的是一个局域网地址(hxxp://192.168.1.77:823/i.ashx),所以不能进行劫持策略的更新。不但如此,官网版本安装包安装后,不会释放网络过滤驱动,这就直接导致官网版本的ADSafe安装后根本不具有任何广告过滤功能。
代理服务进程除了上述操作外,还会通过检测窗口名(OllyDbg等)、修改线程调试属性等方式进行反调试,相关代码如下图所示:
检测调试器
流量劫持策略
在流量劫持策略下发到本地之后,首先会进行解密,之后加载到HTTP代理服务中。为了方便我们下文中对劫持规则的说明,我们首先引用ADSafe过滤语法简表对过滤规则的关键字进行说明。关键字及相关用途如下图所示:
过滤语法简表
流量劫持策略被存放在ADSafe安装目录下的"res\tc.dat"文件中,经过解密我们可以得到劫持策略。部分劫持策略,如下图所示:
劫持策略
如上图所示,劫持规则每条含义大致相同。首先通过正则匹配网址,在网址匹配成功之后,会将"$$"后的HTTP数据包内容进行返回,在返回的数据包中包含带有流量劫持功能的JavaScript脚本。以0025.dat解密后数据包内容为例,如下图所示:
数据包内容
以前文劫持规则为例,劫持生效后当用户访问"dangdang.com"和"suning.com"等网址时,返回数据都会被替换为HTTP数据包0025.dat。数据包文件内容也需要进行解密,解密后我们可以看到JavaScript脚本控制的相关劫持逻辑。
劫持京东等电商网站
首先脚本会根据不同的网址执行不同的劫持逻辑,网址列表如下图所示:
网址劫持规则列表
如上图,url属性中存放的是欲劫持网址,name存放的是劫持调用函数,在该劫持脚本中,每个网址都对应不同的劫持函数。劫持函数调用逻辑,如下图所示:
劫持函数调用
由于劫持网址众多,我们只以较为典型的几种劫持情况进行说明。我们先以劫持京东商城为例,劫持使用的函数为_fun_17。函数逻辑,如下图所示:
用来劫持京东的_fun_17函数
_fun_17函数会从预先准备的劫持数据中解密出一组劫持链接,且每个链接都对应一个劫持概率,劫持概率以比例的形式被依次存放在劫持链接数组后面。解密出的劫持数据,如下图所示:
劫持数据
在获取到上述劫持链接后,会调用ft_r函数在当前页面中插入刷新标签进行跳转。如下图所示:
ft_r函数内容
如上图,每个劫持链接都是通过广告推广平台(如亿起发、星罗、多麦等)链接跳转至最终的京东主页,ADSafe会通过这些广告推广平台进行流量套现。其他网址的劫持也大致相同,下面对其他劫持逻辑进行简单说明。
劫持Hao123导航
针对Hao123的劫持逻辑,如下图所示:
如上图,劫持Hao123所示用的HTTP数据在0021.dat中存放,解密后与0025.dat大致相同,但该文件中只存放又针对Hao123的相关劫持代码。劫持函数,如下图所示:
Hao123劫持函数
上图脚本会从推广号列表中随机选取一个推广号拼接在"https://www.hao123.com/?tn="链接后面,之后也是通过插入刷新标签的方式进行跳转。用来劫持的推广号共8个,如下图所示:
用来劫持Hao123的推广号数据
劫持百度搜索
劫持百度搜索的劫持策略,如下图所示:
劫持策略
劫持百度搜索的数据在0023.dat中,劫持函数如下图所示:
百度搜索劫持函数
与 Hao123劫持情况相似,推广号也在一个列表中共36个,如下图所示:
推广号列表
四、同源性分析
除了前文中所说的清网卫士外,我们还发现一个与ADSafe具有相同劫持策略及功能模块的广告过滤软件"广告过滤大师"。该软件有两个页面完全相同的官网,分别为hxxp://www.admon.cn/和hxxp://www.newadblock.com/,且"admon.cn"域名是由"上海大摩网络科技有限公司"注册的。如下图所示:
admon.cn注册信息
官网页面不但完全相同,且都带有多家安全软件的安全认证,如下图所示:
广告过滤大师官网页面
广告过滤大师劫持策略目录与ADSafe、清网卫士对比,如下图所示:
劫持策略目录对比
不但目录中文件名基本一致,而且用于流量劫持的数据SHA1也基本一致(只有0025.dat的SHA不同),三款软件也都同时包含有相同的功能模块。所以我们可以判断,三款软件同属于一家软件制作厂商。SHA1对比,如下图所示:
流量劫持数据文件SHA1对比
五、附录
文中涉及样本SHA256:
*本文作者:火绒安全,转载请注明来自 FreeBuf.COM