开发者学堂课程【如何进行 CDN 以及下载优化分析:劫持发现、定位以及解决的最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/947/detail/14759
劫持发现、定位以及解决的最佳实践
内容介绍:
一、 常见网站劫持场景
二、 典型场景分析&DEMO
一、常见网站劫持场景
相信大家对网站劫持不是很陌生,比如我们访问某个网站时,在屏幕的右下角会弹出广告,这些广告也不属于这个网站的内容,这就属于常见的内容劫持。一般来说,我们把网站劫持分为三大类型:DNS 劫持、内容劫持、跳转劫持。
DNS 劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析请求,分析请求的域名,返回假的 IP 地址或者什么都不做使请求失去响应,造成特定的网络无法访问或访问的是其他网址。
内容劫持,通过网站程序漏洞或者服务器系统漏洞从而拿到网站或者服务器权限,然后再网站添加JS跳转代码从而实现网站劫持。网站劫持代码等下在下方分享出来。
跳转劫持,一般通过 HTTP 劫持网站请求,虽然 DNS 解析域名 IP 地址不变,但是在和网站交互过程中劫持了用户的请求。在网站返回用户响应时,返回302或301响应码,将用户引导到错误的网站,从而实现对网络内容的劫持。
网站劫持不仅仅是对网页内容、信息传播性的篡改,还可能会造成严重的危害。网站劫持的危害如下:
轻则影响网站流量、搜索引擎的权重、排名;重则泄露用户隐私从而造成财产损失。
巴西银行钓鱼事件
在2009年制造了轰动全球的”银行劫持案“导致巴西最大银行 Banco Bradesco 银行近1%客户受到攻击而导致账户被盗。黑客利用宽带路由器缺陷对用户 DNS 进行篡改导致用户浏览黑客所制作的 Web 页面,该 WEB 页面排版与银行页面基本一致,用户在不之情的情况下输入账号和密码等信息,造成账号密码的泄露,黑客利用盗取的信息进行盗取造成用户的经济损失。其宽带路由器 DNS 就会被黑客篡改,由于该 WEB 页面设有巧妙设计的恶意代码,成功躲过安全软件检测,导致大量用户被 DNS 钓鱼诈骗。
从这个例子来看,网站劫持的危害非常大,可能会造成很大的经济损失。
监测网站劫持面临着很大的困难,劫持分析的难点:
网站劫持隐蔽性强,通过传统的手段,很难主动发现网站劫持。对用户提供商来说,更多的是靠用户的反馈来发现劫持的问题。对黑客来说,网站劫持并不是全流量的劫持,更多的是某一用户或某一地域的劫持。
取证难,劫持大多数都发生在客户端用户一侧,除了内容劫持的场景,并不属于服务端的问题。对于客户端来说,很难拿到劫持的证据和服务提供商进行沟通。
解决难,尤其是 DNS 中的运营商劫持,很难通过更改 DNS 解析的服务或者还原代码或其他技术。向主管部门反馈然后推动运营商进行整改的方式。
针对劫持分析的这些难点,将应对网站劫持方式分为两个部分:事前防范和事中监测。
事前防范,如使用正规的 DNS 服务提供商,进行 DNS 解析,不要使用小型的 DNS 服务提供商;尽量关闭泛域名解析,避免跳转劫持的场景;及时更新系统补丁和软件版本,减少漏洞,防止木马等病毒入侵,从而对网站内容的劫持;养成定期备份网站的习惯,一旦出现劫持及时还原代码进行应对。
事中监测,如实现常态化全天候、多地域的劫持监测,一天24h 对网站进行监测,对网站用户访问的地域进行全天覆盖;真实用户监测,模拟用户访问网站;及时告警,当发现网站劫持情况时,及时通知网站技术的服务部门,及时采取措施进行止损。对于事中监测来说,阿里云云拨测的劫持分析功能就能很好的满足这些需求。
二、典型场景分析&DEMO
阿里云云拨测的劫持分析 Demo:
打开阿里云官网,登录到阿里云的控制台,找到应用实时监控服务,点击进入云拨测服务,新建拨测任务,输入拨测的名字,劫持测试,输入要监测网站的域名,以阿里云为例,http://www.aliyun.com.任务类型选择“浏览-Chrome全元素(HTTP1.1/2.0)”,点击下一步,搜索监测点,建议选择真实用户的监测点,选择“全国主要省份城市网民(LM)”,如果说这些监测点并不在用户监测的覆盖范围之内,可以选择自定义监测点,点击下一步,对于劫持分析最重要的几个劫持配置就是 DNS 劫持白名单、页面篡改和流量劫持三个参数,分别对应着 DNS 劫持、内容劫持和网络跳转劫持。这里以 DNS 劫持为例,首先输入监测域名,输入阿里云的首页,在检测域名下,需要输入冒号,输入域名解析的正确 IP 地址,阿里云肯定有很多的 IP 地址,www.aliyun.com:203.119.200.243,除了配置单个域名,还可以配置多个域名,用竖线进行分割
www.aliyun.com:203.119.200.243|203.119.200.242,也可以用*进行匹配www.aliyun.com:203.119.200.243|203.119.200.*。这里配置 DNS 劫持名单
www.aliyun.com:203.119.200.243|203.119.200.242,劫持标识为劫持判断关键字或关键元素,允许带“*”。下一步监测频率选定5分钟,开启劫持的告警,当劫持比例大于百分之十出现告警。告警也可以通过钉钉邮件、短信或电话的方式通知到不同的联系人,选择 test_1的通知策略,点击下一步,确认下选定的配置,点击完成就可完成对目标网站劫持的监测。
DNS 劫持
www.baidu.com:202.0.3.55|203.3.44.67[代表
www.baidu.com 域名下除202.0.3.55和203.3.44.67之外的都是被劫持的]
www.baidu.com:202.0.3.*[代表 www.baidu.com 域名下以202.0.3.开头的 IP 都不认为是被劫持]
www.baidu.com:202.0.3.1/27[代表 www.baidu.com 域名下 IP 前27位与202.0.3.1前27位相同的 IP 都不认为是被劫持]
www.baidu.com:*[代表 www.baidu.com 域名下所有 IP 都不认为是被劫持]
可以用下划线配置多个解析的 IP 地址,表示 IP 地址都属于正常的解析,一旦发现 IP 地址不在正常范围内,就认为域名被劫持了;还可以配置*,意味着域名是202.0.3开头的都属于正常的解析,在此之外,说明域名被劫持了。
页面劫持
www.baidu.com:/cc/bb/a.gif|/v/bb/cc.jpg [代表出现了 www.baidu.com 域名下除基础文档、/cc/bb/a.gif和//bb/ccjpg 之外的元素都属于页面被篡改的]
www.baidu.com:*[代表 www.baidu.com 域名下所有的元素都不认为是被篡改,代表监测到配置的域名之外的元素不认为是被篡改反之没有配置*呗认为出现了配置的域名之外的元素即为篡改]
需要配置域名对应的正确的范围内的地址,元素可以配置多个,同时也支持*的匹配。
跳转劫持
跳转成功:判断规则是,在设置的最多元素识别个数之内成功匹配到元素的关键信息,判断为跳转成功。跳转成功时统计跳转次数,从第一个302跳转算起。
跳转到错误页面∶判断规则是,关键信息匹配失败,并且页面元素总个数(元素瀑布图中元素的个数)小于设置的识别元素个数,判断为跳转到错误页面。
跳转到第三方网站∶只要页面元素总个数超过(大于)设置的元素识别个数,还是没有识别到关键信息,则被认为跳转到了第三方地址。
跳转成功会认为跳转目标元素在设置的最多元素识别个数之内,同时关键元素个数也可匹配,认为是正常的跳转,如果在目标跳转地址上没有匹配到关键的元素标识,元素个数是小于十个,则认为是错误的跳转;元素个数超过十个,且没有匹配到关键的元素,就认为是第三方网站的跳转。
看一下在劫持的任务里,可以对劫持进行哪些维度的分析,进入劫持任务,点击多维报告,可以针对不同域名的维度,地域的维度对劫持的指标主要是总劫持次数,劫持比例,域名劫持次数等进行多维的分析。
可以看一下刚才任务的总劫持次数,目前只选择北京、天津两个监测点,北京市的总劫持次数是56次,天津市的总劫持次数也是56次;看一下劫持比例,北京市98.25%,天津市也为98.25%;这是基于地域的多维分析。
我们也可以基于监测点的分析,基于趋势的分析,还可以通过散点图的方式对每一次拨测的劫持进行具体的查看和筛选,图例中圆形状的就表示产生了劫持,可以把它框选出来,看一下具体是哪个点,可以看到具体的监测任务以及检测点,这就是整体的劫持分析。
告警会通过钉钉邮件、短信或电话的方式通知到不同的联系人,也可以查看一些告警的详细信息。
以上就是阿里云云拨测的劫持分析的能力,主要针对的刚刚提到的三个类型的劫持分析的场景,DNS 劫持、内容劫持和跳转劫持。