首页 » Protocol » HTTPS » 正文

(转)有https就够安全了吗?

本文转载自:http://rdcqii.hundsun.com/portal/article/421.html


在平时工作和日常生活中, “https=安全”这样的观点在大多数人的思维中根深蒂固,甚至很多人根本不认为自己会被攻击。那这个观点到底对不对呢?难道真的是 too young too simple, sometimes naïve么?

下面就由笔者来打破人们的这些鬼https的信任吧、(注:本文只讨论前端以及中间人的手段来获取信息,因为https主要是为了防止信息被监听。至于黑站等相关问题,本文暂不讨论,大家如有兴趣请持续关注。)

 

|第一部分 .  https降级攻击|

降级攻击这项技术历史悠久,但由于操作简单便捷,所以使用率一直很高。这项技术与证书伪造殊途同归,为了让读者能直观感受这一类直接劫持类型的攻击,在此做一个简单的演示。

为了让大家对整个演示过程印象深刻,把BAT的产品拿来做演示对象应该是最有效的。另外,个人觉得搜索引擎应该也是大家用的最多的产品,那不妨就让baidu身先士卒,先上笔者的手术台被我解剖下。

 

工具:一台受害者的电脑或者虚拟机,另一台装有sslstrip或者一堆高度集成的自带sslstrip功能的中间人工具框架。具体操作请看下面演示 :

 

在受害者电脑上,这个是正常访问baidu的样子。有小锁图标,有https协议,然后我们看看如果受到了降级攻击之后,受害者的百度:

 

很明显,安全锁图标消失了,地址栏最前面的https 也不见了。其实,很多攻击者会通过注入前端的js,让用户看起来有https,也有安全锁图标。下面,我们登录下试试:

在攻击者的电脑上:

由上图可见,受害者电脑上输入的用户名和加密后的密码都已经被截取到。幸好密码是加密的,攻击者无法直接获取受害者的用户名和密码。由上可知,即使有了https,对密码加密也是必不可少的步骤。紧急关头,这也能给自己加一道最后的防护。

从另一个角度来说:在我们的演示中,密码已经加了密,所以获取到了也没什么用。而且有的同学说,在地址栏里面这么明显的差别,一般人都能看出是受到攻击了;既然都能看出问题的所在,那也就不存在安全失控这样的隐患。
那接下来,我们继续介绍些更隐蔽、更直接地拿到明文密码的方法。

 

|第二部分 .  js中间人投毒|

这个名字其实是笔者根据攻击原理形象化的描述。其原理是先开展中间人攻击,然后在用户请求的时候修改返回的数据包,插入有攻击性的js代码。具体步骤请看下面的演示:

工具:一台受害者的电脑,一台攻击者的电脑,为了方便,直接使用mitmf这个中间人攻击框架进行操作。

攻击者电脑开启mitmf,调用jskeylogger模块:

看看日志:

已经开始注入恶意的js了。

受害者继续登录baidu:

密码是“xiaobaitu”,攻击者这边已经收到,如下图所示。

登录凭证窃取计划完成,这个方法比第一个方法要方便得多,直接窃取到明文密码,而且https以及安全图标都还在。

除了中间人攻击的方法,攻击者还可以结合xss,js缓存投毒等一系列攻击手段开展类似的攻击,危害不可谓不大。

 

|第三部分 浏览器恶意插件|

浏览器恶意插件,和中间人关系不大。因为中国有Great Firewall的存在,我们基本可以不用担心一些恶意插件能窃取我们的资料。但是由于习惯原因,很多人喜欢用chrome,并且大家也都知道chrome可以装很多有用的插件,然而由于Great Firewall的存在,通过正常渠道是访问不到谷歌应用商店的。于是,很多有需要的用户会通过各种方法去下载类似的插件。而对插件原理不甚明了的用户,就很有可能下载到带有恶意js的插件。通常来说,大部分的杀毒软件对带有恶意js的插件是没有特别好的检测方案的。而无论是谷歌还是火狐的官方插件商店,都曾经出现过带有恶意代码的插件,造成了巨大的损失。

背景介绍完了,演示如下:

工具:一台受害者的电脑,一个笔者写的chrome插件,一台可以访问接收的web服务器。

首先,攻击者在经不住诱惑的情况下(如“美女图片”插件,“一元钱抢6s”插件等描述),下载了恶意的插件,然后又登录baidu(为了增强大家印象),现在,我们换一个比较“致命”的应用,支付宝。

 

密码是“woshidahuilang”。

接收服务器:

由上图可以看出,攻击者端已接收到全部的信息。

该方法的原理就是通过浏览器插件,在点击登录时,将登录框的信息通过ajax表单的形式提交的远程服务器,无声无息间账号密码已经泄露。

下面贴个实现代码:

主要是通过监听表单的submit事件来实现。

Http安全问题其实是当前的一个重点问题,很多人的账户密码都是由以上攻击方式而被窃取的。除上三种方式外之外,攻击方法还有很多,本文就不一一列举了。用户必须要理解一个概念:安全是一个需要积累的过程,就像打补丁。一个补丁刚打上时,暂时可以保证安全。但是时间一久,系统仍有可能出现其他的漏洞。你可能认为某个小补丁不起眼,能一击而破,可是别忘了,补丁也不是独自战斗。因此,各项安全工作一起合力,就能很好的延长防护的纵深以及拉长防护的战线,给予我们以及用户更好的保护。


 

Comment