是谁悄悄偷走我的电（三）：某在线广告网络公司案例分析

我们最近注意到，某在线网络广告商会将来自 coinhive 的javascript网页挖矿程序，插入到自己广告平台中，利用最终用户的浏览器算力，挖取比特币获利。


P公司是一家在线广告网络公司，负责完成广告和广告位之间的匹配，并从中获取收入；Adblock 是一种浏览器插件，用户可以利用来屏蔽广告。显然，上述两者之间有长久的利益冲突和技术对抗。


在2017-09之前，我们就注意到 P公司 会利用类似 DGA 的技术，生成一组看似随机的域名，绕过 adblock，从而保证其投放的广告能够到达最终用户，我们将这组域名称为 DGA.popad。


从2017-12开始，我们观察到P公司开始利用这些 DGA.popad 域名，插入挖矿代码牟利。


广告网络公司与广告屏蔽插件之间的对抗并不是新鲜事，但是广告网络公司参与到眼下流行的网页挖矿，这值得引起我们的注意。


P公司背景简介


P公司是一家在线广告网络（adnetwork）公司。所谓在线网络公司，其主要工作是连接广告主（advertiser）和媒体（publisher），聚合publisher提供的广告位，并与广告主的需求进行匹配。它们的关系可以从下图简单说明，更多关于Adnetwork的信息请参考[1]：





Adblock是一个浏览器广告屏蔽插件。由于可以用来屏蔽广告，所以与上述在线广告网络公司是有利益冲突的。但是因为屏蔽不必要的广告可以提高用户体验，所以也获得了相当多的用户，按照adblock 在Chrome商店中的说法，其用户数量超过4千万。





利益冲突带来了技术对抗，不同广告商采用了多种技术来对抗adblock[2]及其同类工具。P公司的做法是利用一组看似随机的域名，我们在2017-09以前注意到了这一点，并称其为DGA.popad。


DGA.popad是利用类似DGA（Domain Generation Algorithm）的技术生成的，不容易被adblock之类的工具拦截[3]。部分域名如下表所示，其泛化表达形式为[a-z]{8,14}.(bid|com)。github上有人开源了一个项目[4]，列出P公司正在使用的DGA域名，可以导入到adblock。


zyleqnzmvupg.com
zylokfmgrtzv.com
zymaevtin.bid
zzevmjynoljz.bid
zziblxasbl.bid
zzvjaqnkq.bid
zzwzjidz.bid



有运维pDNS的朋友可以试试看，你们的库中应该存在大量的DGA.popad。


注意到至少从2017-12开始，P公司开始利用 DGA.popad挖矿


从2017-Q4开始，网页挖矿逐渐成为安全社区关注的焦点。网页挖矿的本质是利用某些网站提供的javascript脚本，利用用户终端浏览器算力获取比特币或者其他代币。有若干大站被报道牵涉其中，比如中国的南方周末[5]以及知名的海盗湾[6]。


DGA.popad 系列域名，在2017-09被我们初次注意到时，是可以确定并没有参与网页挖矿的。但是从2017-12，我们对全网网页挖矿情况做度量时（见之前文章 是谁悄悄偷走我的电 一 和 二 ），发现这些域名开始参与挖矿。


被我们注意到的原因也很简单，这些域名与coinhive.com系列域名有紧密的关系，可以确认投递了coinhive.min.js挖矿程序，并且在alexa域名排名中的位置比较高。熟悉我们的读者还记得，我们在之前的文章里已经提到，alexa Top 30万域名中挖矿相关的网站已经被我们监控。


依据censys的数据，这些域名的 alexa 排名分别是：


1999 arfttojxv.com
2011 vimenhhpqnb.com
2071 ftymjfywuyv.com
2192 wpqmptpavn.com
2442 buhxsaifjxupaj.com
2965 jeksffryglas.com
3026 wkmuxmlk.com






为了确认上述挖矿事实，我们尝试了访问 DGA.popad 系列域名之一 jccdpudtb.bid。在打开页面的瞬间，CPU利用已经飙升到100%，如下图所示。





并且我们确认，访问 DGA.popad 网站的favicon.ico文件时，实际返回的，也是挖矿脚本。如下图所示：





DGA.popad 系列网站网页挖矿的流量来源


由于广告网络涉及到众多不同利益相关方，事件分析过程需要完整且精确。第一步需要

搞清楚挖矿相关的流量来源。我们利用 DNSmon 系统，查找了过去两个月DGA.popad的历史关联域名，发现数据源主要集中在色情站以及bt下载资源站。具体的关联域名如下：


www.javjunkies.com
hitomi.la
btdb.to
ouo.io
www.torrentkitty.tv
www.jkforum.net
rarbg.is
hpjav.com
theporndude.com
www.veporn.live
www.thisav.com
watchjavonline.com
syndication.exosrv.com
svscomics.com
openload.co
ancensored.com
www.javdoe.com
torrentsgroup.com
ouo.press
javfor.me
img.yt
www.viralvideos.pro
www.jisutiyu.com
www.javqd.com
www.freebunker.com
www5.javmost.com
v.pptv.com
syndication.exdynsrv.com
sukebei.nyaa.si
streamango.com
sharemods.com
popjav.com
ho.lazada.com.my
fmovies.pe
faptitans.com
dzyqqwixizp.com
dailyuploads.net



详细流程分析


我们以上面列表中的第一个域名www.javjunkies.com来实际看看整个数据流程是怎么样的。由于DGA.popad 和 adblock 之间存在对抗，是否开启adblock，对应的流程有细微的区别，下面我们分两节分别描述其过程。


不开启adblock


其流程如下：


 * 
   
   
   
   1 第237帧开始访问www.javjunkies.com/main/，这是一个色情站，其页面上的广告位代码会引导用户浏览器访问P公司旗下网站。
   

 * 
   
   
   
   2 第254帧开始请求serve.popads.net，这是P公司的标准做法。这一帧里会获取对应广告的链接。
   

 * 
   
   
   
   3 上述获得的广告链链接是经过base64编码的，在浏览器端被解码后，我们可以看到在268帧发出了对该广告链接的请求。268帧是从获取到的广告链接中得到最终的广告URI，从268帧的应答内容来看（红框高亮处），除了获取到最终广告的URI之外，另外附带了一个获取coinhive.min.js脚本并执行的过程，在用户不知情的情况下开始利用广告网络来挖矿。
   







开启adblock


开启adblock的流程和不开启adblock的流程类似，不同只是承载广告功能的域名由serve.popads.net转为tncexvzu.com（DGA.popad 系列域名之一）。整个流程如下：


 * 
   
   
   
   1 第449帧，再一次开始访问www.javjunkies.com
   

 * 
   
   
   
   2 由于开启了adblock，所以P公司的标准网站serve.popads.net会被屏蔽，但是广告位上的js代码会使用DGA.popad 系列域名之一tncexvzu.com来替代。我们可以在第486帧观察到这一点。除此之外的其他功能都与上一节中的描述类似。
   

 * 
   
   
   
   3第495帧里，浏览器开始加载广告，并随即执行广告后附加的挖矿脚本代码。这里也与上一节情况基本一致。
   







DGA.popad 系列网站的挖矿的影响范围和挖矿收益


影响范围：


 * 上述P公司利用广告网络挖矿盈利的行为至少从2017年12月就开始了
 * 受此影响的用户范围较大，因为对应的 DGA.popad 网站的alexa排名较高
 * 但是无法做定量的估算，这是因为，虽然我们可以利用 DNSMon 确认有哪些网站的流量会流经 DGA.popad 和 serve.popads.net 网站，但是我们注意到并非所有的流量中都会被插入网页挖矿程序，而且目前我们尚不确定具体哪些流量会被选中、哪些被过滤


挖矿收益不确定：


 * T3z562MP2Zg1lIa7RUJy19d67woeZmJJ，这个是我们在分析过程中最常遇到的P公司所使用的 site_key，coinhive会把挖矿收益都计入这个账户
 * 但是由于coinhive和门罗币的机制，无法查询到这个site key对应的钱包地址，也无法进一步确认目前的收益。


后续我们会继续关注此类域名的行为，如果您有这方面更详细的数据，也请欢迎向我们反馈。


参考链接


 1. https://en.wikipedia.org/wiki/Advertising_network
 2. https://www.google.com.hk/search?newwindow=1&safe=strict&q=anti+adblock&spell=1&sa=X&ved=0ahUKEwiPvMn31prYAhVIopQKHR1mCHMQvwUIIigA&biw=1920&bih=1067
 3. https://www.reddit.com/r/firefox/comments/4wpd23/popads_just_announced_that_they_have_a_new_method/
 4. https://github.com/Yhonay/antipopads/blob/master/hosts
 5. http://www.infzm.com/content/131666
 6. http://hackernews.cc/archives/14794
 7. https://censys.io/domain?q="coinhive.min.js"