insecurity

近日在网络传得比较离谱的一条消息是对TLS/SSL应用层的窃听。随着瓷翁生日的临近,长城似乎有越蹦越高的趋势,导致不少人对SSL v3的安全性也产生了怀疑,这里客栈尝试用简短的图文解释一下所谓的窃听如何完成,以及通过什么方式避免。

首先要强调的是,目前没有对SSL v3这个安全协议的可行攻击;所有窃听均需利用客户端(浏览器及用户)的弱点执行,而非对协议本身的直接攻击。

So, in before the fear spreads…

SSL会话破解有三种主要方式一是通过嵌入系统获取密匙,二是通过巧妙的方式进行Cryptanalysis(密码分析),三是设立中间人执行MITM攻击。

假如攻击者能入侵用户主机或服务器,那用户资料就直接沦为刀俎了,再绕道SSL属于白费力气。因此保持个人系统安全对防止第一类“破解”尤为重要。攻击者并不是在破解SSL协议,而是在直接想办法和你的系统挂钩,盗取加密前和解析后的信息。

what-you-see-is-what-it-sees

本地分析加密会话很简单,类似Http Analyzer的软件支持IE,Firefox,Chrome和Safari几款浏览器的请求记录,它们是站在用户与浏览器之间的看客,而非本地与远程主机之间的黑客(对于不支持的软件,例如Opera或Putty,它是无法记录HTTPS请求的)。

第二种方式因缺乏有效的密码分析,并没有实际应用;SSL v3本身没有已知漏洞,解开会话需要利用客户端和服务器端的漏洞完成(获取密匙);等同第一类攻击了。

mitm-basic

相比之下,最可行的SSL窃听方式是第三类:通过MITM。无需获得密匙,无需本地木马,远程窃听者通过建立两条链接:一条从窃听对象到窃听服务器,另一条从窃听服务器到目的服务器,尝试偷换身份并做到会话窃听。

之前我们也说了,协议本身并没有漏洞,因此浏览器的安全设计和用户的安全意识就成了最受考验的部分。第三类攻击要生成不合法的证书,当今的浏览器在遇到该类证书时都会提示错误,但信息的表达方式各不相同,误导用户接受非法证书也时常发生。

mitm-chrome

Chrome 3-beta的警告是最显眼的。

mitm-firefox

Firefox 3.5的警告需要阅读,也算显眼的。

mitm-opera

Opera 10的警告包含有用信息,但未必能帮助分析。

mitm-safari

Safari 4 on Windows的警告和普通提示没什么区别,一点就过了……

mitm-ie7

IE7的警告够简洁,但解释不足。不知道IE8如何(安装不能,无法测试)。

mitm-ie6

IE6的警告有够误导,以多数票计算,这是可以接受的对吧?

为了更好地测试各浏览器在MITM攻击下的反应,这里使用Stanford教学用的简单SSL MITM Proxy来测试。具体设置如下:

先准备好浏览器与Java。下载工具并解压压缩包后,使用命令行工具,转到该目录,并输入以下命令(Linux用户请看Readme)。

java -cp iaik_jce.jar; mitm/MITMProxyServer -localHost localhost -localPort 8001 -outputFile output.txt -keyStore FakeCAStore -keyStorePassword passphrase -v

mitm-client-1

这样就会在本地设立一个窃听用的Proxy,它会尝试修改所有加密链接发送的证书,将自己寄生在加密连接上。(注意该Proxy并不需要安装在本地,它可以安装在信息途经的任意服务器上,包括任何Tor节点。)

mitm-client-3

配置浏览器使用这个代理(localhost:8001),模拟请求通过远程的窃听服务器。和目的服务器配上之后,Proxy就会接收原证书,并制造假证书发送给浏览器,这时浏览器应该提示错误。

mitm-client-4

假如用户选择接受该证书,则余下的通信可被监听,这些通行将被记录在本地的output.txt,各位可自行瞻仰其详尽程度。

mitm-client-5

如果你看到的传输内容是一大串数字,请看Encoding是否启用了gzip,那是gzip后的网页数据;Amazon不启用gzip,直接返回HTML代码。

一个简单的SSL窃听就是这样完成的。但如何防止呢

I. 认真检查URL——这是废话,但也是最致命的用户疏忽。

mitm-key

II. 不要接受非法证书——当前用户关注度不足。

尤其是在存放了个人信息的网站。例子中的非法证书替换了发行者的部分(替换为locahost和stanford),是非常好辨认的错误。实际应用中,普通用户将很难分辨证书的真伪,这时选择拒绝才是上策,不管你有多信任该网站。

对于部分没有证书却强迫使用HTTPS的网站,请避免提交任何涉及个人隐私的信息,以免发生意外(接受非法证书将建立未验证的加密连接,用户和网站都没有办法判断是否有人窃听该链接)。

最后是检查CA机构,CA机构告诉浏览器是否应该相信一个网站:假如你不信任签发证书的那家CA,那它验证的网站你也不应相信(浏览器均内置了CA列表,但根据浏览器的不同,它们支持的CA数量也略有不同)。

mitm-downgrade

III. 不要允许SSL v1和v2——过期的SSL版本。

SSL v1和v2都有已知漏洞,不要允许浏览器降至这两个级别。主流浏览器都有禁止老加密协议的选项。

mitm-filter

IV. 使用现代化的浏览器——你想要安全,却继续使用IE6核心?

有些网站存在HTTPS与HTTP混用的问题,这时要小心拦截。虽然无法在远程修改被加密的对象,但未加密对象是可以修改的;若有攻击者插入隐藏表格或JS代码,数据可能被提交至第三方服务器,而用户不会察觉曾被窃听。IE7+会提醒用户有关“安全与不安全内容同时存在”的问题。

(我发现Opera 10和Safari 4都比较沉默,不会提示“存在未加密对象”,是我没设置对还是它们不受影响就不清楚了。)

实际应用中,由于SSL窃听十分耗费资源,是无法大规模长时间实施的;若你在浏览时经常碰到证书错误的情况,请尝试换用浏览器以排除软件上的错误。若情况继续,祝君好运……话说回来,收买CA机构也许比购买窃听服务器便宜得多;所幸咱们这边没什么大型的CA机构,否则……

大体的解释就这么多了,欢迎留言指教。

完。

2009-09-28 更新添加了备注,欢迎指教。

继续阅读

“ 理解SSL窃听 ” 已被炮击37次

  1. 我不太关心技术,反正这段时间翻墙软件集体抽风,就说明老大哥其实早就掌握了拦截技术,只是以前一直睁一只眼闭一只眼,事实就是如此,这很可悲。

    1的头像

    #1

    1

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows XP Windows XP

    发射于 22:13 on September 26th, 2009 [回复]

  2. 人家在爱尔兰每日遛狗无墙之忧怠于安乐吧…

    mcv的头像

    #2

    mcv

    乘坐着 IceWeasel 3.0.6 IceWeasel 3.0.6 与 Debian GNU/Linux Debian GNU/Linux

    发射于 23:36 on September 26th, 2009 [回复]

  3. CS好复杂〜〜

    柴柴的头像

    #3

    柴柴

    乘坐着 Safari 4.0.3 Safari 4.0.3 与 Mac OS X 10.5.8 Mac OS X 10.5.8

    发射于 08:40 on September 27th, 2009 [回复]

  4. 这就比较麻烦了,比如19xxbbs这样的论坛,本身没有有效的证书,使用的是一个错误的证书。

    这种网站也许最容易被这种中间人攻击方法击破,只需要在路由上做一些手脚……因为用户本来就知道这个网站的证书不正确,极少会去二次验证证书的差异。

    Twitter:chenshaoju

    陈少举的头像

    #4

    陈少举

    乘坐着 Google Chrome 4.0.219.3 Google Chrome 4.0.219.3 与 Windows Vista Windows Vista

    发射于 12:06 on September 27th, 2009 [回复]

  5. @陈少举

    文中不是也提到即使有了ssl还是会在其他地方有更多的短板吗

    anonymous的头像

    #5

    anonymous

    乘坐着 IceWeasel 3.0.6 IceWeasel 3.0.6 与 Debian GNU/Linux Debian GNU/Linux

    发射于 13:52 on September 27th, 2009 [回复]

  6. Opera 10中如果在https网页中有插入HTTP的内容,数据提交的时候会有警告。
    比如使用https连接的谷歌阅读器,rss有插入外部链接的视频就老是提示个不停。

    icuy的头像

    #6

    icuy

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows XP Windows XP

    发射于 13:53 on September 27th, 2009 [回复]

  7. OMG!客栈被墙了吗?我是翻墙进来的~

    霜晚的头像

    #7

    霜晚

    乘坐着 Google Chrome 4.0.204.0 Google Chrome 4.0.204.0 与 Windows XP Windows XP

    发射于 17:37 on September 27th, 2009 [回复]

  8. 只要CA不被收买就好

    elvis_w的头像

    #9

    elvis_w

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows 7 Windows 7

    发射于 19:30 on September 27th, 2009 [回复]

  9. ……反正我也没有太不河蟹,跨那啥省大概不至于吧

    酿泉的头像

    #10

    酿泉

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows 7 Windows 7

    发射于 19:44 on September 27th, 2009 [回复]

  10. 报告!IE8下的显示和IE7是一样的。。wwww

    susankid的头像

    #11

    susankid

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows 7 Windows 7

    发射于 21:43 on September 27th, 2009 [回复]

  11. 虽然看不懂/但还是坚持读完了

    yclc的头像

    #12

    yclc

    乘坐着 Google Chrome 4.0.213.1 Google Chrome 4.0.213.1 与 Windows XP Windows XP

    发射于 22:44 on September 27th, 2009 [回复]

  12. 好文,收藏至20ju.com

    草根网的头像

    #13

    草根网

    乘坐着 TT Explorer 4.0 TT Explorer 4.0 与 Windows XP Windows XP

    发射于 09:37 on September 28th, 2009 [回复]

  13. 好文。防止SSL窃听需要用户自身提高防范,正如作者所说的大规模部署需要大量的资源,最有可能的是小规模的,定点的实施。

    自己提高警惕吧,防人之心不可无。

    Terry的头像

    #14

    Terry

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Arch Linux Arch Linux

    发射于 13:42 on September 28th, 2009 [回复]

    • 明明是Arch Linux竟然会认作Ubuntu,无语。博主换WP-UserAgent插件吧。
      Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Arch Linux Firefox/3.5.3

      Terry的头像

      #15

      Terry

      乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Arch Linux Arch Linux

      发射于 13:44 on September 28th, 2009 [回复]

  14. ca签发证书都会向几个固定的email发送验证信息。比如要伪造一张example.com的证书,ca会向root|webmaster|admin@example.com之类的邮箱发送一封确认邮件,只要点击了邮件中的确认信息,那么就可以证明这个域名是申请人的,然后ssl证书会发送到申请人指定的邮箱去(和用于验证的邮箱可以无关)。email拦截可比ssl劫持要容易得多了。只要拿到系统认可ca签发的证书,自然就不会出现根证书不受信任的警告,然后。。。。

    奶罩的头像

    #17

    奶罩

    乘坐着 Safari 4.0.3 Safari 4.0.3 与 Mac OS X 10.6.1 Mac OS X 10.6.1

    发射于 15:07 on September 28th, 2009 [回复]

    • 如今的网络认证你还需要生成被认证服务器本身的CSR,这个只有服务器管理人才知道;同时服务器需要安装了那个证书,方可称之为有效。我不觉得攻击者可以绕过这个。

      用email认证是极度危险的,如今还有CA这样做吗?
      CA自己操作错误导致的问题,浏览器自然帮不上忙;这也是我说用户应该判断自己信不信某个CA的主要理由。

      David Frank的头像

      #18

      David Frank

      乘坐着 Iron 3.0.197.0 Iron 3.0.197.0 与 Windows XP Windows XP

      发射于 15:18 on September 28th, 2009 [回复]

      • ssl证书申请一般都是基于域名的。只要你愿意,你也可以生成一个google.com的csr并且提交给ca,只要你有能力截获ca发送给google.com的这封验证邮件,你就可以获得一张google.com的ssl证书
        市面上所有品牌的ssl证书,只有高端产品才需要企业给证明才会办法,所有低端产品都是只基于域名和email进行验证。当然,这样颁发出来的证书没有企业的任何标示,只有一个域名的标示。但这样对于ssl劫持已经足够了,只要不出现警告信息,用户是根本不会留意这张证书的可信度

        奶罩的头像

        #19

        奶罩

        乘坐着 Safari 4.0.3 Safari 4.0.3 与 Mac OS X 10.6.1 Mac OS X 10.6.1

        发射于 16:49 on September 28th, 2009 [回复]

      • 按照国家信息安全的想法,也许靠国内的pki来“伪造”证书这种事情是很容易的。看样子战争很快就会升级了

        anonymous的头像

        #21

        anonymous

        乘坐着 IceWeasel 3.0.6 IceWeasel 3.0.6 与 Debian GNU/Linux Debian GNU/Linux

        发射于 15:36 on September 29th, 2009 [回复]

  15. 补充下,申请ssl证书的成本极为低廉,几十块钱甚至免费就能拿到(有些域名注册商会随域名注册送一张证书,可以自定义申请内容)

    奶罩的头像

    #22

    奶罩

    乘坐着 Safari 4.0.3 Safari 4.0.3 与 Mac OS X 10.6.1 Mac OS X 10.6.1

    发射于 15:08 on September 28th, 2009 [回复]

  16. 对了,我再补充一下,国内有某些软件会在安装的时候给用户的机器装上一张自己的root ca并且设为可信。我相信没有一个人会留意到这个问题。windows下强行添加一张root ca是没有任何警告或者提示的

    奶罩的头像

    #23

    奶罩

    乘坐着 Safari 4.0.3 Safari 4.0.3 与 Mac OS X 10.6.1 Mac OS X 10.6.1

    发射于 16:56 on September 28th, 2009 [回复]

  17. 网络教学贴么,先mark下(网络无力啊。。。
    话说火狐的警告一直让我能的很纠结,太麻烦了

    Akibarika的头像

    #24

    Akibarika

    乘坐着 Google Chrome 4.0.213.1 Google Chrome 4.0.213.1 与 Windows Vista Windows Vista

    发射于 21:39 on September 28th, 2009 [回复]

  18. 试一下ua.

    ddd的头像

    #25

    ddd

    乘坐着 Firefox 3.5.2 Firefox 3.5.2 与 GNU/Linux GNU/Linux

    发射于 10:11 on September 29th, 2009 [回复]

    • 当店长准确地叫出藏在各种面具之下旅客的名字的时候他们该多么高兴啊……

      anonymous的头像

      #26

      anonymous

      乘坐着 IceWeasel 3.0.6 IceWeasel 3.0.6 与 Debian GNU/Linux Debian GNU/Linux

      发射于 10:19 on September 29th, 2009 [回复]

      • 就从你开始吧XD

        小众Linux发行版的用户啊,催你们的开发者转UA吧……
        什么关键字都没有,检测个毛啊(翻台

        店长的头像

        #27

        店长

        乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows XP Windows XP

        发射于 11:17 on September 29th, 2009 [回复]

  19. 我又来了,为了证明我的说法和劫持的可行性,特意写了篇图文并茂的ssl劫持教程 http://wuhongsheng.com/it/2009/09/ssl-hijack/

    奶罩的头像

    #28

    奶罩

    乘坐着 Safari 4.0.3 Safari 4.0.3 与 Mac OS X 10.6.1 Mac OS X 10.6.1

    发射于 14:40 on September 29th, 2009 [回复]

    • 漂亮的劫持,但这里有三个问题:

      1. sohu让你注册了可用于验证的邮箱;这是sohu的严重漏洞。
      2. PositiveSSL给了你过多的email选择(还是Comodo,mozilla那次也是他们)
      3. 一旦被OCSP认定是非法证书,它立马就无效了。

      这些都不是SSL协议的错。

      David Frank的头像

      #29

      David Frank

      乘坐着 Iron 3.0.197.0 Iron 3.0.197.0 与 Windows XP Windows XP

      发射于 15:29 on September 29th, 2009 [回复]

      • Iron的图标很好看啊~ 这应该是Chrome的改编版吧,不知道用起来怎么样?说是安全性很强,那么究竟强在哪呢?

        霜晚dej的头像

        #30

        霜晚dej

        乘坐着 Google Chrome 4.0.204.0 Google Chrome 4.0.204.0 与 Windows XP Windows XP

        发射于 14:22 on September 30th, 2009 [回复]

  20. 说起来,我这个浏览器其实是Google[b]Chromium[/b]4.0.204.0,是移动免安装版的,只要拷贝就能用,看样子两者并没有区分嘛~

    霜晚dej的头像

    #31

    霜晚dej

    乘坐着 Google Chrome 4.0.204.0 Google Chrome 4.0.204.0 与 Windows XP Windows XP

    发射于 14:00 on September 30th, 2009 [回复]

    • Chromium =/= Google Chrome
      but they have the same UA.
      Use about:version to see the entire UA.

      m2的头像

      #32

      m2

      乘坐着 Google Chrome 4.0.219.8 Google Chrome 4.0.219.8 与 GNU/Linux GNU/Linux

      发射于 17:06 on September 30th, 2009 [回复]

  21. 学习了..

    zz的头像

    #33

    zz

    乘坐着 Google Chrome 3.0.197.11 Google Chrome 3.0.197.11 与 Windows 7 Windows 7

    发射于 02:35 on October 1st, 2009 [回复]

  22. 前几天访问一个博客时候遇到这情况,不过博客留言应该没事儿吧,不涉及什么密码之类的~

    红得发指的头像

    #34

    红得发指

    乘坐着 Firefox 3.5.3 Firefox 3.5.3 与 Windows XP Windows XP

    发射于 21:40 on October 6th, 2009 [回复]

  23. 我试试

    qqqqqqq的头像

    #35

    qqqqqqq

    乘坐着 Google Chrome 4.0.258.0 Google Chrome 4.0.258.0 与 Windows XP Windows XP

    发射于 10:08 on December 7th, 2009 [回复]

  24. “话说回来,收买CA机构也许比购买窃听服务器便宜得多;所幸咱们这边没什么大型的CA机构,否则……”不幸被言中了…CNNIC

    jaord的头像

    #36

    jaord

    乘坐着 Opera 10.10 Opera 10.10 与 Windows XP Windows XP

    发射于 04:21 on February 2nd, 2010 [回复]

  25. 大哥 武器是双方的 您这里说收买CA机构 对方马上就学会了。。唉。。

    Velaciela的头像

    #37

    Velaciela

    乘坐着 Google Chrome 5.0.322.2 Google Chrome 5.0.322.2 与 Windows XP Windows XP

    发射于 01:08 on February 23rd, 2010 [回复]

向我开炮!向我开炮! Leave a Reply

自定义头像——在 Gravatar 登录你的Email即可。留言被吃无需惊慌,请等待专人援救。

Comments will be closed in 5 months.


比特客栈的连珠合璧

比特客栈的东奔西走

比特客栈的旁门左道

News at: [2010/09/01 - 22:54] [4]

CAPITALISM! HO!

恭喜《RECETTEAR ~アイテム屋さんのはじめ方~》成为第一款登陆Steam的日式同人游戏!第一个吃战场原的公司Easy Game StationCarpe Fulgur(本地化兼发行商)站了出来!从此Steam平台不再是欧美死宅的绝对碉堡了!(虽然更多垃圾“全家乐游戏”已经悄然登陆……)

RECETTEAR最初发售於C73,听起来很有些历史了,其实不过是2008年而已。游戏内容基本分为打怪升级与管理商店两种,至于为什么一个小女孩要肩负这种成人的工作,当然是她爸欠债然后独自逃难啊!你又不是没看过这种剧情!

PS:虽然Steam上也有试玩,但你不一定非要从客户端下载;官网有独立试玩版提供。

PPS:说起官网,光看英文版页面我就知道Carpe Fulgur是一个很称职的翻译公司,其网页设计紧随日本官网使用传说中的Loser.dtd,哦不对,Loose.dtd。我对这个翻译团队忠于原作的精神表示放心。

News at: [2010/08/29 - 23:56] [12]

News at: [2010/08/27 - 23:42] [7]

recaptcha扫描书籍是件好事,可最近它给我出了这么一道题……

这周末准备去参加一个连官方网站都经常暂停服务的活动。届时将身着以上服装,欢迎旅客前来搭讪。(PS:客栈无限期招募三次元看板娘)

报告完毕。

News at: [2010/08/15 - 19:13] [3]

欢迎走上为智能手机和触屏开发Javascript的不归路。Mobile Graded Browser Support at jQueryMobile, 注意级别特指对DOM和Javascript的支持;此外B级有两种解读。

News at: [2010/08/07 - 19:08] [12]

为什么有这么多阿宅期望自己有实姐实妹?“被ACG欺骗了”是显而易见的回答之一。但美国杨百翰大学近期的一份研究表明,阿宅期盼实妹缠身,很可能是人类本能的自我心理调节!

(继续阅读)…

News at: [2010/08/07 - 03:51] [3]

我们预测的2年后,总算有制作公司主动把18禁游戏射交化了。好样的Moon-stone,你为日本糟糕开创了新纪元。话说回来,这个叫做“再触摸”的游戏开发系统真强大,名字和功能都是……

via zepy

News at: [2010/07/31 - 12:34] [5]

简单介绍:40岁的日本宅叔(目前是TRPG设计者兼同人作家)娶了20岁的中国姑娘,然后在网上发布生活漫画。内容取向见上图……

via 中国嫁日記 by 希有馬, h/t to popgo

News at: [2010/07/29 - 02:18] [7]

看来在我们打烊的日子里Pixiv更新了它的排名单格式,导致我们制作的Pixiv订阅源失效了。今晚抽空重新制作了一次,以下是各个订阅源的简介。

(继续阅读)…