前端安全第四期
劫持
当打开网页或者APP时,发现有些内容与当前业务几乎没有什么联系,而且这些内容有明显的营销或广告意图,这种场景大概率是劫持现象了
所谓劫持,顾名思义,正常通道被拦截。这里通道就是用户请求和响应的消息通道,劫持并不是阻塞消息通道,而是非法指向一些不合理节点或者返回一些不合理响应
为什么会有劫持呢?归根到底利益驱动。一方面涉及到运营商之间网间结算的问题,这部分费用对小运营商来讲很昂贵,因此为了节省成本,小运营商会对某些域名流量进行劫持。另一方面做广告或者有针对性的引导,很多是劫持者为了插入广告而获利才做的劫持
劫持种类有很多,在CDN业务内常见有DNS劫持(域名劫持)和HTTP劫持(内容劫持)
名词解析
-
CND
CDN,全称Content Delivery Network,根本的作用是将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。他-有别于镜像,它比镜像更智能,可以这样做一个比喻:CDN=镜像(Mirror) + 缓存(cache) + 整体负载均衡(GSLB),因而,CDN可以明显提高Internet中信息流动的效率。目前CDN都以缓存网站中的静态数据为主,如CSS、JS、图片和静态网页等数据。用户在从主站服务器请求到动态内容后再从CDN上下载这些静态数据,从而加速网页数据内容的下载速度,如淘宝有90%以上的数据都是由CDN来提供的
这里引用一个网上比较形象的例子:A家的网速 100M的,但他只用了10M的速度,B家的网速是10M的,但是他需要15M的速度才行。怎么办呢。 C是一家CDN服务商,在A家有个节点(就像A是一个赞助商一样)B在C家买了CDN加速服务。当B的速度不够的时候,CDN加速就会选择有节余的节点来帮B,提高B的速度。这样B的速度就能达到或超过15M ,皆大欢喜。A没浪费,B速度有了,C赚了钱。 当C的节点在全国都有,非常多的时候。那么你用C家的CDN加速服务,你就会健步如飞了
DNS解析流程图
在了解DNS劫持、HTTP劫持之前需要对DNS解析做一个流程悉知
DNS劫持(域名劫持)
DNS劫持是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。其实本质就是对DNS解析服务器做手脚,或者是使用伪造的DNS解析服务器可以通过下图来展示
可以看出红色的是劫持的流程,劫持后将你的请求转发到一个虚假的服务器
HTTP劫持(内容劫持)
内容劫持网上很少有提到,这也是在做httpDNS SDK所遇到的一个问题,其实内容劫持一开始的出发点是好的,是运营商为了加快用户的访问速度同时减少自己的流量损耗而做的一个缓存机制,用户在像服务器请求数据的时候运营商会把用户的请求转移到这个缓存池中,如果缓存中有就直接返回,没有的话再去像服务器请求然后拦截并缓存服务端给用户的回调数据,这样一来可以极大的降低运营商像服务器请求的次数,也能加快用户的访问,所以出发点是好,但是一些非法的商家对缓存池内部做一次些处理就是直接对返回的内容进行修改,这样一来我们就会接受到错误的数据
现在暂时没有发现办法,不过这样的劫持不是很多
点击劫持
点击劫持又称 UI-覆盖攻击,是 2008 年由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼提出点击劫持的概念,因为首先劫持的是用户的鼠标点击操作,所以命名叫点击劫持。主要劫持目标是含有重要会话交互的页面,如银行交易页面、后台管理页面等,曾经 Twitter 和 Facebook 等著名站点的用户都遭受过点击劫持的攻击
点击劫持(ClickJacking)是一种视觉上的欺骗手段, 一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面; 二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义
这类劫持攻击更多需要其他攻击的配合
防范
针对CDN场景下的劫持,根据数据链路有以下几种方案
-
针对DNS劫持,由于LDNS解析是不可控的,这边建议业务使用HTTPDNS,然后DNS请求,来规避DNS劫持,各家云厂家都有成熟的HTTPDNS的SDK&API调用模式
-
针对HTTP劫持,全站业务使用HTTPS方案,注意这里指的是全站,并不是其中一个业务域名
-
CDN防劫持方案
-
全链路HTTPS
-
对内容的MD5验证
-
回源直接IP回源,减少回源链路DNS劫持
-
中间链路私有协议SDN传输
-
不过这种类型的攻击一般危害性不是很大,更对都是植入广告
网络钓鱼
概述
网络钓鱼是一种经常用来窃取用户数据的社交工程攻击,包括登录凭证和信用卡号码,它发生在攻击者伪装成可信实体时,让受害者打开电子邮件,即时消息或文本消息,然后收件人被诱骗点击恶意链接,从而导致安装恶意软件,冻结系统以作为勒索软件攻击的一部分或泄露敏感信息
攻击可能会造成毁灭性的结果,对于个人而言,这包括未经授权的购买,窃取资金或识别盗窃,此外,网络钓鱼经常被用来在企业或政府网络中站稳脚跟,作为更大攻击的一部分,例如高级持续威胁(APT)事件,在后一种情况下,为了绕过安全边界,在封闭的环境中分发恶意软件,或获得对安全数据的特权访问,员工都会受到危害
屈服于这种攻击的组织通常会在市场份额,声誉和消费者信任度下降的同时承受严重的财务损失,根据范围的不同,网络钓鱼尝试可能会升级为企业难以恢复的安全事件
矛钓鱼(鱼叉式网络钓鱼)
以下示例解释一下什么是矛钓鱼
-
表面上来自myuniversity.edu的欺骗性电子邮件被大量分发给尽可能多的教员
-
该电子邮件声称用户的密码即将过期,有关说明可在24小时内到myuniversity.edu/renewal更新密码
点击链接可能会发生几件事情,例如:
-
用户被重定向到myuniversity.edurenewal.com,这是一个与真实更新页面完全相同的虚假页面,其中需要新的和现有的密码,监控页面的攻击者劫持原始密码以访问大学网络上的安全区域
-
用户被发送到实际的密码更新页面,但是,在被重定向时,恶意脚本会在后台激活以劫持用户的会话cookie,这导致反映的XSS攻击,使犯罪者有权访问大学网络
网络钓鱼
网络钓鱼涉及从假定的可信来源向尽可能多的人发送恶意电子邮件,并假设回复率较低,例如,网络钓鱼电子邮件可能声称来自PayPal,并要求收件人通过单击封闭的链接来验证其帐户详细信息,从而导致在受害者的计算机上安装恶意软件
钓鱼电子邮件是非个人化的,大量发送,通常包含拼写错误或其他显示其恶意意图的错误。问题是,并非所有人都注意到这些微妙的提示,可信的徽标和已知目的地的链接足以欺骗许多人分享他们的细节
另一方面,钓鱼电子邮件则更难以检测,因为它们似乎来自接近目标的来源。网络犯罪分子将个性化电子邮件发送给具有共同特征的特定个人或群体,例如在同一部门工作的员工
捕鲸
捕鲸使用欺骗性的电子邮件信息针对组织内的高级决策者,如首席执行官,首席财务官和其他高管。这些人可以访问高度有价值的信息,包括商业秘密和管理公司帐户的密码。
攻击者发送关于重要业务重要性的电子邮件,伪装成具有合法权威的个人或组织。例如,攻击者可能会向发送电子邮件的首席执行官请求付款,假装是公司的客户。
捕鲸攻击通常是针对目标个人,通常使用他们的头衔,职位和电话号码,这些都是通过公司网站,社交媒体或媒体获得的。
捕鲸与鱼叉式网络钓鱼的区别在于,捕鲸专门针对组织内的高级人员,而鱼叉式网络钓鱼通常追随一类人群较低的人群
防范
由于钓鱼属于个人主动行触发动作,所以对于个人与机构应该做哪些防范都只是建议行
对个人用户的建议
-
提高警惕,不登录不熟悉的网站,键入网站地址的时候要校对,以防输入错误误入狼窝,细心就可以发现一些破绽
-
不要打开陌生人的电子邮件,更不要轻信他人说教,特别是即时通讯工具上的传来的消息,很有可能是病毒发出的
-
安装杀毒软件并及时升级病毒知识库和操作系统(如Windows)补丁
-
将敏感信息输入隐私保护,打开个人防火墙
-
收到不明电子邮件时不要点击其中的任何链接。登录银行网站前,要留意浏览器地址栏,如果发现网页地址不能修改,最小化IE窗口后仍可看到浮在桌面上的网页地址等现象,请立即关闭IE窗口,以免账号密码被盗
对于企业用户的建议
-
安装杀毒软件和防火墙
-
加强电脑安全管理,及时更新杀毒软件,升级操作系统补丁
-
加强员工安全意识,及时培训网络安全知识
-
双因素身份验证(2FA)是对付钓鱼攻击的最有效方法,因为它在登录到敏感应用程序时添加了额外的验证层。2FA依赖于用户有两件事:他们知道的东西,比如密码和用户名,以及他们拥有的东西,比如他们的智能手机。即使员工受到损害,2FA也会阻止他们使用他们被盗用的凭证,因为仅凭这些凭证不足以进入
-
除了使用2FA之外,组织还应执行严格的密码管理政策,例如,应要求员工经常更改密码并且不允许重复使用多个应用程序的密码
-
教育活动还可以通过执行安全实践来帮助减少网络钓鱼攻击的威胁,例如不要点击外部电子邮件链接
-
为避免被“网络钓鱼”冒名,最重要的是加大制作网站的难度,具体办法包括:“不使用弹出式广告”、“不隐藏地址栏”、“不使用框架”等,这种防范是必不可少的,因为一旦网站名称被“网络钓鱼”者利用的话,企业也会被卷进去,所以应该在泛滥前做好准备
XXE攻击
介绍
现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook、paypal等等。举个例子,我们扫一眼这些网站最近奖励的漏洞,充分证实了前面的说法。尽管XXE漏洞已经存在了很多年,但是它从来没有获得它应得的关注度。很多XML的解析器默认是含有XXE漏洞的,这意味着开发人员有责任确保这些程序不受此漏洞的影响
XML和DTD
XML被设计用来传输和存储数据,这里提一下xml与html的区别:HTML 旨在显示信息,而 XML 旨在传输信息,而DTD定义 XML 文档的合法构建模块,它使用一系列的合法元素来定义文档结构,DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用
可以把XML理解为一个用来定义数据的东西,因此,两个采用不同技术的系统可以通过XML进行通信和交换数据,
<?xml version="1.0" encoding="utf-8"?> <name>李白</name> <salary>12</salary> <address>100</address>
有些XML文档包含system标识符定义的“实体”,这些XML文档会在DOCTYPE头部标签中呈现。这些定义的’实体’能够访问本地或者远程的内容。比如,下面的XML文档样例就包含了XML ‘实体’
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY entityex SYSTEM "file:///etc/passwd"> ]>
在上面的代码中, XML外部实体 ‘entityex’ 被赋予的值为:file://etc/passwd。在解析XML文档的过程中,实体’entityex’的值会被替换为URI(file://etc/passwd)内容值(也就是passwd文件的内容)
当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。 xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件 如果xml能够被解析,比如输入
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ANY [ <!ENTITY name "my name is nMask">]> <root>&name;</root>