执行摘要
对于企业来说,要面临的最棘手挑战之一就是在积极阻止恶意广告、允许内容持续在线和保证普通用户可访问性之间掌握平衡。在网络浏览器上安装基础广告拦截工具并期待它进行全面保护的日子已经一去不复返了。一些网站为了保证付费广告客户的利益,往往会在网站上禁用这些广告拦截工具,因此紧依靠这些广告拦截工具是远远不够的。
正如本文将要详细介绍的那样,恶意广告是一个与基本网页浏览无关的问题。恶意广告可以与其他软件程序一起提供,包括广告软件和可能不需要的应用程序,而后者可能需要更多的关注。在当今的企业环境中,需要采取积极的方法来防范恶意威胁,其中可能包括DNS加固,或通过防火墙、入侵防御系统或Web安全平台添加额外的检测层。无论采用哪种方法,都需要彻底进行,不仅要考虑其安全影响,还要考虑到对用户产生连锁效果的可能性。
无论大家是否意识到,但就目前而言,广告是互联网的关键组成部分,也是互联网上大量内容免费的原因之一。广告允许人们支持他们的创业项目、小型企业,以及世界各地用户的美食博客。然而,这是一个非常复杂的系统,已经被攻击者成功地滥用。这是一个公众不应该忽视的问题,因为这些恶意广告可能会无所不在地传播恶意软件,并欺骗可能不了解某些页面上存在的威胁的传统互联网用户。
本文将主要分析在线广告如何工作、恶意广告是什么、恶意广告的危险性,并列举在现实生活中的例子,最后将说明组织和个人如何能保护自己免受这些威胁的困扰。
关于在线广告
在线广告实际上是一笔巨大的生意。2018年,美国的数字广告收入突破1000亿美元。从另一个角度来看,这与业内领先的航空航天和跨国银行公司的年收入一样多。那么对于这个复杂的行业来说,它们如何运作,以及如何向用户提供广告?实际上,有许多类型的在线广告,每一种都有其对应的营收方式。最常见的两类就是赞助内容和横幅广告。大多数用户都熟悉横幅广告,因为它们往往与网页内容有所隔离。而赞助内容,可以出现在页面上与原始内容相混合的页面上,赞助内容通常会带有某种标识符,明确的说明是属于“赞助内容”,当用户点击链接时,他们通常会通过广告网络访问另一个网站。针对每个类别,广告商会设置各种各样的选项。在本文中,我们将重点关注滥用实时出价(RTB)最为成熟的在线广告领域。
首先,我们来讨论一下RTB广告网络的组成部分。
第一部分是发布者,他们在自己的网站上托管广告,并获得相应收入。为了托管广告,发布者使用广告服务器。有多种类型的广告服务器可供选择,包括自行托管或服务式的解决方案。自托管广告服务器又分为使用开源解决方案或付费解决方案。RTB网络的第二个关键部分是开放式广告交换,这是一个公开的数字市场,发布者发布其网站可用于出价的广告位。而第三部分是广告商,这些广告商可以包括营销公司、个人或其他广告网络。然后,这些组织会实时竞标可以呈现内容的广告空间。现在,我们来具体分析一下其工作原理。
当随机用户请求网页时,HTTP请求将会发送给发布者,并开始出价。发布者利用集成代码或其广告服务器,借助广告交易所列出要出价的广告。作为HTTP请求和响应的一部分,发布者可以收集有关请求者的其他信息,包括入口统计信息、URL、位置、浏览器类型、窗口大小和其他可识别的信息。然后,所有这些信息都会传递到广告商开始竞价的广告交易平台。发布者提供的其他信息可以允许广告客户更加具体地定位其广告,并仅向可能参与的用户进行展示。然后,在有人中标之后,广告商将广告提供给广告交易所,广告交易所又将广告返回给发布商,并在浏览器中将其与网页上的剩余内容一起呈现给客户。需要知道的是,这一切都在几毫秒之内发生,因此这一过程也有可能被滥用。
货币化
发布商可以通过多种方式获得收益。首先,最为常见的是每次展示付费(PPI),基本上是指当广告在网站上呈现时就需要收取费用。广告客户支付每千次展示对应的费用,也就是被称为CPM。其次,是按点击付费(PPC),发布商会在用户每次点击广告时获得付款,这通常会产生比PPI更高的收入,但由于需要用户交互,实际点击的数量也不会太多。最后,还有一种方式是按订单付费(PPO),这是单次费用最高的一种方式,但通常需要用户完成某些操作,这些操作可能包括安装软件、注册邮箱、填写表单或符合广告商要求的任何其他操作,这是最难的一种收益方式,因为它不仅要求用户点击广告,还要在之后完成特定操作。
跟踪
在转向恶意攻击者的活动之前,我们还要说明最后一个概念——跟踪。由于广告客户和营销上在网络广告上花费了大量资金,他们想知道哪种方法最有效,因此他们会通过跟踪数据来获取信息。跟踪数据提供了有关流量来源和引流方式的信息。我们可能会注意到,日常访问的网址中传递了一些跟踪信息,如下面的URL示例所示。
utm_term=2310109&s=1&utm_campaign=pps_News%20Anchors%20T3%20DS%20LLE%20-%20Desktop%20USA&utm_source=taboola&utm_medium=news_site&pps_term=She%20Was%20Live%20Reporting%2C%20And%20Viewers%20Got%20Way%20More%20Than%20What%20They%20Bargained%20For&utm_content=msn-ie11-us
为了更好地理解其工作原理,我们修改了文本格式。以utm开头的元素是与营销相关的标签。UTM表示Urchin Tracking Module,这是跟踪数字广告营销的标准方式。正如我们所看到的那样,在此背景下提供了大量信息。前几个字段用于跟踪广告系列和其他数字标识符,而其他的一些字段更为有趣。请注意其中的utm_medium字段,该字段显示流量来源,在本例中为news_site。此外,我们还可以查看从Fox News页面点击的数量。现在,传统的横幅广告和赞助内容都可以添加此类连接,并且也是当前的主流做法。其中的最后一个字段非常值得关注,同时也说明了为什么这对于恶意行为者来说是非常有价值的,附加到utm_content字段后的是一小段信息“ie11-us”,这说明了访问链接的系统位置和所使用的浏览器类型。想象一下,如果我们是具有漏洞利用工具包的攻击者,并且可以使我们的特定恶意页面以运行特定Web浏览器或位于特定地理位置的系统为目标。
恶意广告
恶意广告是指恶意行为者通过滥用在线广告市场的方式获取收益的方法。这个过程与上面描述的大致相同,但在合法广告商之间还夹杂了少数恶意行为者、域名投资者和流量控制者。这些恶意组织专门为特定目标产生流量,而其目标可能是任何位置。在此过程中,他们会在最终提供恶意内容之前采用多层混淆。实际上,攻击者会在广告交易平台上对广告进行出价,然后让这些广告通过多层重定向技术最终指向某个恶意内容。这种恶意交付可能会存在很大差异,从虚假的Flash播放器到技术支持诈骗,再到漏洞利用工具,这些工具可以在没有用户交互的前提下危害到用户的系统安全。
我们通常看到的是用户被重定向到漏洞利用工具包页面,并且在对此类攻击进行分类时,我们可以清楚地发现恶意活动时如何试图对自身进行混淆的。
第一个图像遍历了流量定向系统(TDS),并使用HTTP/1.1 302请求的通用重定向技术。这种302重定向(302 Cushioning)技术已经长时间被广告所使用,同时也被互联网上的大多数网站普遍使用,这就使其成为了一种有效的重定向机制。
这是最终的302重定向,实际上指向漏洞利用工具包恶意页面,在实际示例中,使用了RIG漏洞利用工具包。这是广告网络面临的第一个主要挑战——广告的验证。广告网络如何验证依赖于如此多层302重定向广告的真实性?沿着漏洞利用工具包的路径,操纵任何302重定向,可以使其完全良性。举例来说,如果攻击者将最终的302重定向指向合法的广告,然后仅将其转移到目标实例中的恶意位置,那么防御将会变得越来越困难。
重定向也可以发生在服务器端,例如HTTP 301、302或响应头,以及客户端代码(例如JavaScript或HTML元素)。此外,恶意行为者可以利用某些重定向的效果来发挥其优势。例如,通过JavaScript“location.replace”将浏览器重定向到另一个站点,就不会在浏览器的历史记录中留下重定向的证据,这对于任何试图混淆其痕迹的人来说,都是一种有用的策略。
这种恶意感染链涉及大量组件和移动件,这种复杂的环境为恶意行为者提供了将合法站点的流量转移到恶意区域的充分机会,下面是整体流程的信息图。
恶意案例1:大型漏洞利用工具包恶意活动
Cisco Talos关注到在过去几周中,全球范围内RIG恶意活动的数量明显增加,这主要是由于恶意广告引起的。在我们深入了解恶意广告本身之前,我们首先讨论一下为什么恶意广告对于漏洞利用工具包使用者来说是一个具有吸引力的途径。
Talos已经观察到三种与漏洞利用工具包进行交互的不同方式,分别是恶意广告、被攻陷的网站和广告软件。我们重点关注其中的恶意广告。恶意广告的主要优势之一在于具有大量的潜在受害者用户。在利用受感染的网站来进行漏洞利用时,潜在受害者人群仅限于访问该网站的人员。但是,通过恶意广告,攻击者可以在不同位置影响更多不同的受害者。此外,正如我们在上文中所强调的,攻击者可以针对特定的浏览器发动攻击,从而大幅提高感染的成功率。下面我们可以看到,在已经建立的广告服务中,存在向广告客户提供的一组选项:
恶意广告的另一个优势在于它会加大维权者或威胁研究人员的工作量。使用被攻陷网站提供漏洞利用工具包的攻击者可能会遇到被攻陷网站出现单点故障。防御者和研究人员可能会找到恶意服务器,关闭被攻陷的网站,甚至可能修复被攻陷的网站,从而有效地控制恶意活动。另一方面,由恶意广告支持的同一活动具有来自各种相关或不相关网页的多个入口点,会使得遍历和缓解变得更加困难。此外,恶意广告网络在投放广告时通常会遍历多个广告网络。如果要根据恶意广告回溯到特定的广告客户,可能会有一些挑战性。研究人员如果选择重新构建感染链,即使并非不可能,但也非常困难,因为实时出价会为服务的内容引入随机性元素。
我们还发现,广告软件向用户传播恶意广告的数量出现激增。在当今世界,任何可以产生广告收入的内容都可能会被恶意行为者利用。具体而言,我们来分析一下某个恶意活动中感染路径的示例。
软件开发人员面临的挑战之一就是要决定如何通过软件来获利。基本上,有三种选择:出售、捆绑其他软件或开源。出售和开源是相当简单的选择,开发者可以通过出售或捐赠来获得金钱收益,也可以从开源社区中获得其他方面的支持。在这里,我们需要重点关注捆绑其他软件的这种方式,或者是将其他软件添加到安装包中的过程。
对于研究人员来说,蠕虫是一种非常熟悉的威胁。随着时间的推移,有一些备受瞩目的蠕虫映入我们的视线中,例如Conficker、Slammer、Code Red以及最近的WannaCry。蠕虫可以快速、有效地传播,并且难以控制。由于蠕虫非常普遍,并且在清除蠕虫方面存在一定难度,因此目前有许多软件解决方案可以解决这种类型的威胁。只要在网络上进行搜索,我们就可以找到从免费到收费高昂的各类软件解决方案。其中的一个搜索结果,可能指向类似于USB Guardian这样的网站。
如我们所见,USB Guardian声称该软件可以防范蠕虫病毒,并能够扫描USB设备。在安装软件时,会弹出此屏幕。
这是捆绑软件出现的地方,在我们的示例中,捆绑了BestSecurityTips工具栏。该工具栏将与USB Guardian一起安装,并且是恶意活动的源头。当我们单击工具栏中的最终用户许可协议时,将会出现一个空白的网页。
这个工具栏被称为Best Security Tips工具栏(最佳安全建议),经过一些初步研究后,我们发现该工具栏属于恶意。在安装之后,工具栏会更改浏览器主页和默认搜索引擎,允许攻击者篡改搜索结果并开展其他恶意活动,从而诱使用户点击欺诈广告或过度宣传的广告,可能进一步造成更多的破坏性结果,包括恶意软件感染。这些变化允许广告网络将内容推送到具有更高效率的终端系统。这个特定感染链演示了该软件请求广告的一些方式。
在安装后,立即发出一系列Web请求,第一个请求的是名为“daily ads”的广告网络,最终是漏洞利用工具包的恶意页面。
上面的请求是以“indexbst.php?idapp=198.”结尾的URL。但是,其中还有其他的重定向层出现。
在该过程中,首先是对/version/version.php的每日广告请求,并且会出现许多HTTP/1.1 302请求,重定向到一系列dailyads服务器。最终会将GET请求传递到ww7.dailyads[.]org,如下所示。
从上面的数据包捕获之中,可以获得一条关键信息:标头“X-Adblock-Key”。这个标头包含一个API密钥,允许Dailyads绕过最受欢迎的广告拦截工具之一。在许多情况下,该广告拦截工具是唯一能阻止显示恶意广告内容的工具。因此,此密钥的存在也就意味着至少有一个知名广告拦截工具不会阻止这些广告内容。最终,用户将以“indexbst.php?idapp=198”结尾的请求结束这一过程,如上所示,也就使用户首次访问恶意路径。
在这时,用户遇到了另外一个302重定向,它会指向在mybetterdl[.]com上托管的广告,该请求被另一个302重定向指向mybetterdl[.]com不同的子域名上。
随后会产生另外一个302重定向,这次指向了一个不同的域名bitcoinmaker[.]site,这是最后一个广告,会产生最后一次302重定向,将用户指向实际的漏洞利用工具包页面,在我们的示例中也就是RIG。
一旦用户完成一系列302重定向后,他们将会看到一个恶意页面,最终会利用已经修复的Adobe Flash或Internet Explorer漏洞,从而提供某种恶意Payload。
范围和影响
在上面的具体示例中,我们分析了软件安装过程是如何导致用户遭遇一系列恶意攻击的。但是,大多数感染的主机都没有部署特定的防病毒软件或反广告软件,用户毫无招架之力地受到恶意广告的攻击。
这些恶意广告活动涉及到各种不同的网站,包括新闻、设计、音乐、赛车和流行文化。根据Alexa的排名,Talos观察到的恶意网站访问量与TOP 5000站点的访问量一样。此外,Talos还发现了TOP 100网站与该恶意广告活动之间间接相关联的证据。往往都从赞助内容开始,这样的链接通常都显示在链接到其他较小网页的各种高排名站点上,之前我们所讨论的utm标记就是这种行为的一个主要例子。
我们发现了一些示例是从Alexa排名前50的网站开始,其中包括一些世界范围内具有较大规模的新闻网站。随后,用户被重定向到一个新的站点,远离Alexa TOP 50的网站,转到Alexa TOP 10000的一个网站上。随后,这些网站通过多次302重定向来实现恶意跳转,就像我们在上文中描述的那样。
恶意案例2:来自HIP的恶意内容
在2019年6月,Talos发现了一个网站,将Safari浏览器重定向到提供恶意Flash播放器安装程序的域名上。与上面讨论的漏洞利用工具包案例相反,该恶意广告活动的行为有一些是可以复现的,这就使得Talos研究人员可以提取到一些其他信息。
在这种恶意广告的场景中,攻击者利用被称为“域名停放”(Domain Parking)的通用服务来实现其广告活动。从本质上讲,停放的域名不会等待用户点击广告来产生PPC收入,而是会接受良性的流量,否则会返回错误,并将其重定向到广告网络中,充当一个广告发布商。
此类恶意广告的优点在于易用性较高、具有简单的目标定位、具有更大概率让用户点击流量。在流量市场中,会售卖一种名为“零点击”的流量,域名所有者可以购买流量并将其定向到自己的域名上。我们以之前的设定为例,借助域名停放的服务,攻击者可以指定影响域名的类别、目标浏览器、目标操作系统、目标地理位置,并在某些情况下可以统计观看广告的人群年龄及人口分布。
在我们调查的过程中,发现最初的域名由立陶宛的某个云服务商提供停放服务。Cisco Threat Grid具有近700个威胁评分在95以上的恶意软件样本与该主机相关。根据DNS历史数据显示,这个IP地址已经随着时间的推移,托管了数百个域名。在为期一周的时间内,就有87个域名被指向这个IP地址,其中包括一些明显的仿冒域名,例如:
0utlook[.]com
yotub[.]com
gmyail[.]com
yspace[.]com
yyooutube[.]com
在我们的调查期间,通常情况下,在避免服务器端请求速率限制的同时,Safari浏览器会通过一系列重定向,最终指向伪造的Flash播放器安装程序粘带呢。另一方面,针对非Safari浏览器,将会重定向到默认域名停放页面,为最终用户提供通过sedo.com购买域名的机会,sedo.com是知名的域名停放提供商之一,拥有超过1600万个域名可以出售。
在请求链中,使用了几种不同的重定向方法来传递恶意软件,如下表的示例所示。
在重定向链之中,多次访问了许多域名,每次访问时都具有不同的查询路径。HTTP流显示了在线广告流可以遵循的难度和复杂程度,并展现了这一环节是多么容易受到攻击。
当访问者向第1个站点发出HTTP GET请求时,客户端JavaScript会将主机重定向到两个后续站点。站点2设置包含用户ID的跟踪Cookie并关闭连接。站点3使用HTTP响应标头重定向到站点4:
{"Cache-Control": "max-age=0, private, must-revalidate", "Content-Length": "11", "Date": "Wed, 03 Jul 2019 17:27:44 GMT", "Location": "http://usd.franciscus-ful[.]com/zcvisitor/de20fa7f-9db7-11e9-9522-1264782e7ac8?campaignid=77a8d2a0-8209-11e9-bf85-0a5f8f5656fe", "Server": "nginx", "X-Cache": "MISS from bc01", "Via": "1.1 bc01 (squid/3.5.27)", "Connection": "close"}
在这里,我们可以借助站点4对所有请求的响应标题发现域名在零点击停放流量中所扮演角色的线索:
"Server": "ZeroPark-Traffic"
站点4上的代码包含HTML和JavaScript重定向的方法,并能够重定向到另外两个站点。我们的测试过程执行JavaScript元素,以重定向到站点5,但重定向是在收集和附加有关浏览器的可识别信息(例如:页面宽度和高度)以及当前窗口是否是浏览器中最顶层的窗口之后发生的:
<script type="text/javascript"> setTimeout(function () { var pageWidth = window.innerWidth ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.getElementsByTagName('body')[0].clientWidth); var pageHeight = window.innerHeight ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : var iframeDetected = window.self !== window.top; window.location="http://usd.franciscus-ful[.]com/zcredirect?visitid=de20fa7f-9db7-11e9-9522-1264782e7ac8&type=js&browserWidth=" + pageWidth +"&browserHeight=" + pageHeight +"&iframeDetected=" + iframeDetected; }, 1); </script>
站点5通过JavaScript重定向到站点6,立即进行另外两个HTTP重定向,最终指向伪造的Flash播放器安装页面。
所有三个按钮都是当前域名中指向相同路径的HTML href,如果单击此按钮,就会下载恶意.dmg安装程序。这个特殊的安装程序会使用一个名为“Shlayer”的知名恶意软件感染系统。
恶意广告的防范方法
考虑到各种原因,防范恶意广告是一项艰巨的任务。在线广告是互联网内容免费的原因,需要我们在阻止广告和允许网站获得收益之间寻找到一个平衡点。近年来,这个领域发生了一些重大的改变,特别是要求用户关闭广告拦截工具以查看内容的网站的兴起。尽管从收益角度来看这是可以理解的,但确实会带来风险,并且根据我们观察到的一些广告活动,我们可以将感染路径追溯到一些世界范围内受欢迎网站供用户点击的赞助商链接。除此之外,还有报道声称,一些大型广告用户一直在努力研究如何绕过热门的广告拦截工具。实际上,在Talos团队研究的两个示例中,广告客户付费绕过了广告拦截工具,从而导致广告拦截工具无法阻止该广告客户投放的任何广告。
最后要说明的是,本文只是在对风险进行评估,目前我们还有各种可以选择的环节方案。一方面,用户可以选择获得更加自由的用户体验,但相对应也要面对与恶意广告相关的较高风险。另一方面,用户也可以选择在网络浏览器中添加广告拦截工具,这将会降低风险,同时对用户的影响也最小。但是,即使部署了最为基础的防护,也会有一些站点无法访问。此外,还存在用户将最终托管的恶意广告网站列入白名单,或上述广告客户选择不再投放广告的风险。用户在下一阶段的防护措施,可以引入其它技术,例如Web代理或IDS/IPS,从而分析特定线路上的流量。这样一来,将会再次提高安全性并降低风险,但会有明显的成本增加,并在此过程中增加潜在的故障点。最后,我们还有更加主动的选项,就是阻止所有广告网络,这将会大幅降低我们的风险,但也会对我们的用户带来最大程度的影响。
要在域名或域名服务器上阻止广告网络,有许多不同的方法,但都需要我们使用某种DNS产品来实现这一目标。例如Cisco Umbrella这样的产品,其优点在于可以阻挡入口和TDS域,这可以为组织提供额外的保护层,从而阻止已知的不良域名向用户提供内容,而不紧紧是阻止广告的显示。下表展示了该控件是如何在风险和对用户带来的影响之间取得平衡的。
从用户的角度来说,有很多选择,包括可以缓解家庭安全性问题的开源解决方案。其中包括利用树莓派实现广告防护的pi-hole项目。Cisco同样也为普通用户提供了一些选择,可以利用Umbrella来提供保护。
无论我们选择哪种防护方式,数字广告都是威胁环境中不容小觑的威胁之一,可以用于在全球范围内传播恶意内容的偷渡式攻击之中。然而,这也是一个特别的挑战,由于这一风险的存在,互联网上的大量免费内容正在逐渐消失,因为内容提供者越来越难以从该内容获得收入。这些只是我们在未来几年中要被迫面对的几个主要问题,如果我们能越快意识到需要解决这一问题,就能获得越好的解决思路。
威胁指标(IoC)
案例1:大型漏洞利用工具包恶意活动
185[.]246[.]65[.]115
185[.]246[.]65[.]118
185[.]246[.]65[.]119
176[.]57[.]217[.]135
92[.]53[.]124[.]156
185[.]246[.]64[.]222
185[.]246[.]64[.]233
185[.]246[.]64[.]236
176[.]57[.]214[.]193
176[.]57[.]217[.]89
185[.]43[.]4[.]106
185[.]246[.]64[.]155
92[.]53[.]124[.]176
82[.]146[.]49[.]141
188[.]225[.]25[.]248
92[.]53[.]124[.]167
185[.]43[.]4[.]66
188[.]225[.]35[.]239
188[.]225[.]18[.]213
188[.]225[.]34[.]73
188[.]225[.]34[.]66
37[.]230[.]117[.]169
37[.]230[.]117[.]43
37[.]230[.]117[.]77
37[.]230[.]117[.]87
188[.]225[.]35[.]55
188[.]225[.]24[.]229
185[.]246[.]64[.]144
185[.]246[.]64[.]148
185[.]246[.]64[.]157
188[.]225[.]25[.]246
176[.]57[.]217[.]134
185[.]43[.]7[.]162
94[.]250[.]253[.]147
94[.]250[.]253[.]29
188[.]225[.]33[.]219
185[.]43[.]6[.]90
185[.]43[.]6[.]106
188[.]225[.]26[.]80
176[.]57[.]220[.]7
176[.]57[.]220[.]28
37[.]46[.]135[.]254
案例2:来自HIP的恶意内容
shoot2020[.]com
axiomatic[.]world
charmolivia[.]com
sleepdiploma[.]pw
usd[.]franciscus-ful[.]com
cdn[.]formatlog[.]com
cdn[.]detectioncache[.]com
cdn[.]browsedisplay[.]com
cdn[.]essentialarchive[.]com
cdn[.]alphaelemnt[.]com
cdn[.]megaelemnt[.]com
cdn[.]originaloption[.]com
cdn[.]entrydisplay[.]com
cdn[.]initiatormaster[.]com