在《HTTPS那些事(二)SSL证书》我描述了使用SSL证书时一些需要注意的安全问题,在这一篇文章里面我再演示一下针对HTTPS攻击的一些实例,通过这些实例能更安全的使用HTTPS。知己知彼百战不殆。
先说一下我的测试环境,WIFI局域网,两台计算机,其中一台是Windows 7用于发起攻击。另一台测试机用于测试攻击,配置为Windows XP SP3,IE8,Chrome 17。

在开始之前,再回顾一下SSL证书验证失败的三点原因:

  1. SSL证书不是由受信任的CA机构颁发的
  2. 证书过期
  3. 访问的网站域名与证书绑定的域名不一致

一、SSL劫持攻击
SSL劫持也就是SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,需要先将自己接入到浏览器与目标网站之间(中间人),在传输数据的过程中,替换目标网站发给浏览器的证书,之后解密传输中的数据,简单的图示如下:
[浏览器] <======> [目标网站] (正常情况)
[浏览器] <======> 中间人 <======> [目标网站] (中间人攻击)
中间人攻击最好的环境是在局域网中,局域网中所有的计算机需要通过一个固定的出口(网关)来接入互联网,因此攻击者只需要在局域网中实施一次中间人攻击就可以顺利的截获所有计算机与网关之间传输的数据。
下图就是在我的测试环境中实施一次中间人攻击之后进行的SSL证书欺骗工具,可以看到此时被欺骗的机器,浏览器已经给出证书错误的安全提示:


看到这样的提示,正常情况应该停止访问,如果继续访问,所有加密传输的数据都可以被攻击者解密。在这里我选择继续访问来看一下伪造的SSL证书信息。

这里可以看到,假证书中“颁发给”,“颁发者”,“有效日期”与真证书一样(见下图),攻击者可以在生成证书的时候给假证书写入与原始证书一样的信息来迷惑用户,但是迷惑不了证书的验证机制。对于普通用户来说,一定要看清浏览器的警告信息,如果有问题,就不要再继续访问。

二、SSLStrip攻击
SSLStrip攻击也需要将攻击者设置为中间人,之后将HTTPS访问替换为HTTP返回给浏览器,由于HTTP协议传输的数据是未加密的,从而截获用户访问的数据。举个例子,当我们访问hotmail.com的时候会重定向到一个https://login.live.com的一个HTTPS的地址上,SSLStrip会代替用户与服务器通信,并将这个地址改为http://login.live.com(注意这个地址在http后面没有s)返回给浏览器,此时如果用户继续登录的话,攻击者就会截取到用户的密码。这种攻击非常对普通用户非常具有迷惑性,但是防御却非常的简单:

  1. 对于网站来说,在配置HTTPS服务的时候加上“HTTP Strict Transport Security”配置项;或者是在代码中将所有HTTP的请求强制转移到HTTPS上,使用URL REWRITE也可以达到同样的效果。
  2. 对于关键的信息,例如用户登录网站的ID和密码,在发送之前先用JavaScript进行一次加密处理,这种方法不但是对SSLStrip有效,对SSL劫持攻击也有效,甚至是即便使用HTTP协议来传输用户登录的ID和密码都是安全的。这个功能果壳网就支持。
  3. 对于用户来说,在访问那些支持HTTPS的网站的时候,在浏览器的地址栏输入URL时强制的加上“https://”,大多数用户平时不注意这点,比如访问gmail,我们一般就输入“gmail.com”,如果是输入“https://gmail.com”就可以避免SSLStrip的攻击。对于使用脚本实现地址跳转也需要注意这个问题,location.href之后的URL,一定要强制加上“https://”。

由于防御SSLStrip攻击比较简单,大多数的网站都已经做好了安全方面的配置,但也有少数的网站仍然没有重视这个问题。

三、第三类攻击
所谓第三类攻击,完全就是软件厂商在软件的设计过程中忽略的了安全的问题,比如说前段时间某个手机浏览器就干了这么一件糗事。实际上这也是一种普遍存在的情况,程序的bug、漏洞,设计缺陷,都会打破一些安全模型。对于这种情况,软件厂商在软件设计阶段要充分考虑安全的问题,并且及时更新程序中的缺陷与安全漏洞;作为用户要及时的更新应用程序或者系统补丁,从而减少安全威胁。

目前最为常见的手段仍然是SSL劫持攻击,但无论是什么攻击手段,基础的利用都是局域网的中间人攻击,这种攻击手段非常的实用,尤其是在公共网络中。针对SSL的中间人攻击对普通用户来说或许还好识别一些,但是我们大多数情况访问的都是HTTP网站,传输的数据都是明文的,在这种情况下中间人攻击是不容易被发现的。对于普通用户,可以用以下的办法来防御局域网中间人攻击:

  1. 公司办公网络一定要在交换机上进行MAC地址绑定,对于一些规模不大,暂时不考虑加固内网的公司可以采取下面我说的方法。
  2. 临时接入公共网络的计算机,可以临时开启安全软件内的ARP防火墙。或者是使用VPN。
  3. 对于一些不喜欢安装安全软件的用户,可以使用stunnel配置代理或者是使用SSH转SOCKS 5代理。但是这需要用户有独立的服务器。
  4. 使用GoAgent代理工具,GoAgent与stunnel类似,都是一种使用ssl tunnel对传输进行加密的工具。即便是访问HTTP网站,GoAgent也可以像stunnel那样对传输进行加密,可以保证浏览网页,访问WEB邮箱的安全。GoAgent使用的是Google App Engine服务器,因此访问国内网站的速度会比较慢,对于这种情况可以使用Sina App Engine,具体配置方法可以在搜索引擎中用“goagent sae”作为关键字进行搜索。
  5. 在公共网络如果要进行商务办公,最好是用公司提供的VPN来对传输进行加密。

最后再说说手机上网,目前公共WIFI越来越普及,手机上网也越来越方便,因此也需要重视数据传输过程中的安全问题。虽然GoAgent也有支持Android和iOS的版本,但如果要使用在线支付之类的功能,最好是利用官方出的应用来进行操作。针对手机的安全防护目前还没有计算机那么强大,因此在没有办法保证传输加密数据之前,最好不要用手机来做什么涉及到隐私或者是商业保密的工作。

HTTPS那些事(三)攻击实例与防御的更多相关文章

  1. HTTPS那些事(三)攻击实例与防御(转载)

    原创地址:http://www.guokr.com/blog/148613/   在<HTTPS那些事(二)SSL证书>我描述了使用SSL证书时一些需要注意的安全问题,在这一篇文章里面我再 ...

  2. HTTPS那-攻击实例与防御

    在<HTTPS-SSL证书>我描述了使用SSL证书时一些需要注意的安全问题,在这一篇文章里面我再演示一下针对HTTPS攻击的一些实例,通过这些实例能更安全的使用HTTPS.知己知彼百战不殆 ...

  3. HTTPS那些事(一)HTTPS原理

    转载来自:http://www.guokr.com/post/114121/ 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传 ...

  4. [转]HTTPS那些事(一)HTTPS原理

    [转]HTTPS那些事(一)HTTPS原理 http://www.guokr.com/post/114121/ 楔子谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>, ...

  5. HTTPS那些事(一) HTTPS原理

    谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传输的一些情况,从回复来看,争议还是有的.随着网络越来越普及,应用越来越广泛,一 ...

  6. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

  7. Web前端攻击方式及防御措施

    一.XSS [Cross Site Script]跨站脚本攻击 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户 ...

  8. https ddos攻击——由于有了认证和加解密 后果更严重 看绿盟的产品目前对于https的ddos cc攻击需要基于内容做检测

    如果web服务器支持HTTPS,那么进行HTTPS洪水攻击是更为有效的一种攻击方式,一方面,在进行HTTPS通信时,web服务器需要消耗更多的资源用来进行认证和加解密,另一方面,一部分的防护设备无法对 ...

  9. 使用Nginx的配置对cc攻击进行简单防御

    ddos攻击:分布式拒绝服务攻击,就是利用大量肉鸡或伪造IP,发起大量的服务器请求,最后导致服务器瘫痪的攻击. cc攻击:类似于ddos攻击,不过它的特点是主要是发起大量页面请求,所以流量不大,但是却 ...

随机推荐

  1. PHP菜刀工具WebHandler

    PHP菜刀工具WebHandler   在Web渗透测试中,后台代码如果包含系统命令执行功能,并以用户提交的数据作为参数,就带来潜在的安全隐患.Kali Linux提供一款PHP菜单工具WebHand ...

  2. Codeforces Round #394 (Div. 2) A. Dasha and Stairs 水题

    A. Dasha and Stairs 题目连接: http://codeforces.com/contest/761/problem/A Description On her way to prog ...

  3. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题

    Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...

  4. ios数据保存

  5. Linux/CentOS设置全局代理(http)

    说明:为什么说是http代理,其实这个还不能说是全称走代理,罪名写的区别就是ICMP协议这个设置就无效,只能说是90%的应用都可以使用这个设置来实现代理访问,只有个别不行,比如一些软件根本不走http ...

  6. Visual Studio 2019 preview中体验C# 8.0新语法

    准备工作: Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能,但目前也有一些可以试用了.在开始之前,需要进行入两项设置: 将Framework设置为.ne ...

  7. TC SRM601

    250 水题,上来想一下就可以搞了. 500,比赛时候没有想出来,结束后补了下,感觉很简单. 只要枚举两个集合异或结果哪一位二进制位不同,因为大小由最高位不同决定. 然后进行DP就可以了,比较好的题目 ...

  8. Understanding the STM32F0's GPIO

    Understanding the STM32F0's GPIO This is the first part of the GPIO tutorial for the STM32F0Discover ...

  9. oracle 删除字段中空格

    update  sales_report set region =  REGEXP_REPLACE(region,  '( ){1,}', '')

  10. mmc生产任务分配问题续

    mmc生产任务分配问题续,本题目比上个题目难, 要注意的是,生产,销售,库存的关系, 生产+上月库存-销售=本月库存, 期初,生产=库存,销售没有.