中间人劫持攻击
HTTPS在建立了TCP连接之后,会进行SSL握手(SSL Handshake)来校验证书,协商加密协议和对称加密的密钥,之后就会使用协商好的密钥来进行传输。所以HTTPS攻击一般分为SSL连接建立前的攻击,以及HTTPS传输过程中的攻击
常见的HTTPS中间人攻击,首先需要结合ARP、DNS欺骗等技术,来对会话进行拦截,
1、SSL证书欺骗攻击
此类攻击较为简单常见。首先通过ARP欺骗、DNS劫持甚至网关劫持等等,将客户端的访问重定向到攻击者的机器,让客户端机器与攻击者机器建立HTTPS连接(使用伪造证书),而攻击者机器再跟服务端连接。这样用户在客户端看到的是相同域名的网站,但浏览器会提示证书不可信,用户不点击继续浏览就能避免被劫持的。所以这是最简单的攻击方式,也是最容易识别的攻击方式。
ssl证书欺骗
防范措施 :
钓鱼类攻击,App直接调用系统API创建的HTTPS连接(NSURLConnection)一般不会受到影响,只使用默认的系统校验,只要系统之前没有信任相关的伪造证书,校验就直接失败,不会SSL握手成功;但如果是使用WebView浏览网页,需要在UIWebView中加入较强的授权校验,禁止用户在校验失败的情况下继续访问。
2 SSL剥离攻击(SSLStrip)
SSL剥离,即将HTTPS连接降级到HTTP连接。假如客户端直接访问HTTPS的URL,攻击者是没办法直接进行降级的,因为HTTPS与HTTP虽然都是TCP连接,但HTTPS在传输HTTP数据之前,需要在进行了SSL握手,并协商传输密钥用来后续的加密传输;假如客户端与攻击者进行SSL握手,而攻击者无法提供可信任的证书来让客户端验证通过进行连接,所以客户端的系统会判断为SSL握手失败,断开连接。
该攻击方式主要是利用用户并不会每次都直接在浏览器上输入https://xxx.xxx.com 来访问网站,或者有些网站并非全网HTTPS,而是只在需要进行敏感数据传输时才使用HTTPS的漏洞。中间人攻击者在劫持了客户端与服务端的HTTP会话后,将HTTP页面里面所有的 https:// 超链接都换成 http:// ,用户在点击相应的链接时,是使用HTTP协议来进行访问;这样,就算服务器对相应的URL只支持HTTPS链接,但中间人一样可以和服务建立HTTPS连接之后,将数据使用HTTP协议转发给客户端,实现会话劫持。
这种攻击手段更让人难以提防,因为它使用HTTP,不会让浏览器出现HTTPS证书不可信的警告,而且用户很少会去看浏览器上的URL是 https:// 还是 http:// 。特别是App的WebView中,应用一般会把URL隐藏掉,用户根本无法直接查看到URL出现异常。
ssl剥离攻击
防范措施:
该种攻击方式同样无法劫持App内的HTTPS连接会话,因为App中传入请求的URL参数是固定带有“https://” 的;但在WebView中打开网页同样需要注意,在非全网HTTPS的网站,建议对WebView中打开的URL做检查,检查应该使用 “https://” 的URL是否被篡改为 “http://” ;也建议服务端在配置HTTPS服务时,加上“HTTP Strict Transport Security”配置项。
3 针对SSL算法进行攻击
上述两种方式,技术含量较低,而且一般只能影响 WebApp,而很难攻击到 Native App , 所以高阶的 Hacker,会直接针对SSL算法相关漏洞进行攻击,期间会使用很多的密码学相关手段。由于本人非专业安全相关人员,没有多少相关实践经验,所以本节不会深入讲解相关的攻击原理和手段,有兴趣的同学可以查看以下拓展阅读:
OpenSSL漏洞
常见的HTTPS攻击方法
防范措施:
这类攻击手段是利用SSL算法的相关漏洞,所以最好的防范措施就是对服务端 SSL/TLS 的配置进行升级:
只支持尽量高版本的TLS(最低TLS1);
禁用一些已爆出安全隐患的加密方法;
使用2048位的数字证书;
防范措施:
不要随意连入公共场合内的WiFi,或者使用未知代理服务器
不要安装不可信或突然出现的描述文件,信任伪造的证书;
App内部需对服务器证书进行单独的对比校验,确认证书不是伪造的;
二、中间人攻击的典型网络环境及其防御
中间人攻击有两种常见形式:基于监听的信息窃取与身份仿冒,与基于代理的信息窃取与窜改。以下为中间人攻击比较典型方式及其网络环境
1.基于监听的信息窃取
在同一个冲突域的局域网络中攻击者只要将网卡设为混杂模式,就可以轻松监听网络中的流量,通过Wireshark,Tcpdump等工具软件就可以过滤出密码、通信内容等敏感信息实现攻击。由于很多通信协议都是以明文来进行传输的,如HTTP、FTP、Telnet等,如果通信数据被监听,就会造成相当大的安全问题。
通过集线器连接的以太网络或是以太网线路中被恶意物理接入集线器及监听节点就是这种攻击方式的常见网络环境。其防御方法也很简单,就是确保物理连接不被改动,冲突域中不存在第三方节点,如改用计算机直接连接交换机的组网方式。
2. 基于监听的身份仿冒
在物理上不能保证通信不被监听的情况下,为了保护重要信息不被泄露,网络系统一般会对口令、敏感内容进行加密传输或引入Kerbose、SSL等协议对登录认证等关键通信过程进行加密保护。但是限于性能、效率等因素,并不是所有网络系统都能保证所有传输内容得到加密保护。
如一般的Web网站系统,只会对登录认证过程进行加密,而后续用户与网站的交互采用明文的HTTP协议传输。基于监听的中间人攻击,在口令或认证过程加密的情况下,通过其它技术手段也会对网络造成安全威胁,比较典型的手法是针对HTTP Cookie的攻击。
网站用户在访问网站前常常需要输入用户名与密码。网站会为通过验证的登录用户建立会话,一般会用Cookie(网站储存在用户本地浏览器上的数据,并在每次访问时提交给网站)保持对会话追踪以确认访问者的身份及登陆状态,并根据身份及登录状态为访问者设置访问网站资源的权限。当会话结束时,登陆信息就会被清除,但Cookie可能不会马上失效。
尽管访问者在浏览网站过程中通常没有意识到这种会话的存在,但它确实发生在每一次的链接点击过程中,是网站中最常见的会话形式。如果能够获取用于维持浏览器和登陆网站间会话状态的Cookie,攻击者可以模拟真实用户的访问,将窃取的Cookie发给网站服务器,这样就能冒充合法的会话连接获得在网站资源的相应权限(如图1所示)。攻击者一旦通过窃取Cookie完成对网站服务器的会话欺骗,受害者在网站上的个人数据将被任意查看和修改,受害者的帐号也可能被用于基于社交网络的攻击与诈骗。
防御基于Cookie的中间人攻击,服务器端可以把Cookie的有效时间设置为较短时间,以使已经结束会话的缓存状态尽快失效。另外,服务器或IPS设备在处理Cookie时,可以绑定一些用户信息如IP地址等,并对其进行验证,这样可以有效防止相当一部分的攻击。作为Web用户,在登录后结束浏览时,应该使用退出功能明确通知服务器会话已经结束,使Cookie立即失效
3.基于中间代理的中间人攻击
1) ARP欺骗(ARP Spoofing)
ARP欺骗是现代中间人攻击中最早出现的攻击形式,能够让与受害主机在相同子网的攻击者主机窃取目标主机的所有网络流,是比较容易执行且相当有效的中间人攻击形式。
从ARP工作机制可以看出,ARP协议简单易用,但是却没有任何安全机制,使用ARP协议的设备会接受在任何时间源自任何主机的ARP更新。这意味着攻击者可以向子网内另一台主机发送ARP数据包,并迫使目标主机更新其ARP缓存。ARP欺骗主要有仿冒网关或仿冒用户两类,由于子网内的主机与外网通信均需要经过网关,仿冒网关而进行的中间人攻击最为常见。
如图2所示,因为攻击主机A仿冒网关向主机B发送了伪造的网关ARP报文,导致主机B的ARP表中记录了错误的网关地址映射关系,正常的数据从而不能被网关接收。主机B原本通过网关发送到外网的所有数据报文都按照学习到的错误ARP表项发送到了攻击者控制的主机A,此时主机A可以把主机B的报文解析修改后转发给网关,并在后续将网关转回的外网回应报文解析修改后转发给主机B,成为主机B与网关之间的“中间人”。
防御ARP欺骗的主要方法有在整个局域网使用静态ARP,及通过主机ARP防护软件或交换机、路由器对ARP进行过滤及安全确认,其核心目标均是建立正确的ARP表项。静态ARP通过手动配置或自动学习后再固化的方式,在主机及网络设备上建立静态不变的正确ARP表项。
而伪造ARP报文的检测,需要由主机或网络设备提借额外的安全功能。伪造ARP报文具有如下特点:源MAC地址/目的MAC地址和以太网帧封装中的源MAC地址/目的MAC地址不一致;源IP地址和源MAC地址的映射关系不是合法用户真实的映射关系。精确的过滤与安全确认能有效的阻止ARP欺骗的发生。
2) DNS欺骗(DNS Spoofing)
DNS欺骗是攻击者冒充域名服务器让目标主机把域名转换成错误IP的一种欺骗行为,其目的是让受害主机把通过域名查询到的IP地址设为攻击者所控制主机的IP地址。如果受到此类攻击,用户通过域名连接的目标服务器可能被悄无声息地替换成了伪造服务。攻击者也可以在伪服务器上把受害主机的流量解析修改后冒名转发给真实的服务器,由“冒名顶替者”变为“中间人”。
DNS欺骗攻击是一种非常危险的中间人攻击,它容易被攻击者利用并且窃取用户的机密信息。其常被用于与钓鱼网站配合,如将用户对银行主页的访问重定向到攻击者所控制的钓鱼网站,骗取银行密码等。
使用WireShark模拟中间人证书伪造攻击http://blog.csdn.net/phunxm/article/details/38590561
**使用Charles模拟中间人证书伪造攻击
**http://www.jianshu.com/p/a81b496348bc