在阅读本文前,请先仔细阅读以下两篇文章,限于条件,到目前为止我还没有构建测试环境进行实际测试,有兴趣的可构建内网环境测试。
SSL窃听攻击实操 作者 吴洪声 (以下简称吴先生的文章)
进化的艺术——Hillstone山石网科SG-6000-G5150产品评测 作者 山石科技公司 (以下简称山石科技)
向以上两位作者表示感谢。
主体思路:山石科技那款产品声称的加密数据流审计功能,我开始不太理解,不明白如何实现,但是经过吴先生的文章,我比较明白了其一般的工作原理。
首先在进化的艺术——Hillstone山石网科SG-6000-G5150产品评测 一文中,提到了“UTM Plus内置的SSL代理可以截断所有单向验证的SSL请求,对解密后的内容进行控制、审计”,其中的“SSL代理”工作机理,则由SSL窃听攻击实操 一文中得以体现,只不过山石科技将该功能置入硬件而已。
SSL窃听攻击实操 这篇文章看完以后,我提出两点关键性疑问,首先是如何获取的[email protected] 中CA的认证信函,以达到让假证书生效的目的呢? 相信第三方的攻击者做不到这一点,但是有关部门还是轻而易举的。还有一个办法,就是装置ROOT CA在客户端里,这个办法吗,CNNIC已经帮我们想好了。这样的话,假证书的合法性就没有了任何问题。
接下来如何使得域名被接转到假网站去呢?文章说修改掉HOSTS使客户机访问到假网站(持有假的CA),结合上面那一款山石科技的设备,该设备应该就能够把到指定网站的SSL给转发到他自己,然后利用假证书解密,达到窃听的目的。这里我的疑问是该公司如何取得CA的信任或者假造一张国外(比如GMAIL)的假证书呢?若该证书不被信任,浏览器是否会报警呢?或许它还需要额外的客户端软件(其实就是木马)进行配合。这个问题我还没弄明白,请有心人再研究吧。
但是如果是有关部门,问题就很简单了。首先叫CNNIC做一张GMAIL的真证书,放在窃听服务器hijack.greatfirewall.gov:443上,然后命令各地DNS把GMAIL的解析全部提交给hijack.greatfirewall.gov:443 (作用等同于吴先生文章中的修改HOSTS或山石科技路由器的SSL代理),接下来你输入的https://mail.google.com就被自动转接到了https://hijack.greatfirewall.gov.
后面的事情就很好说了,其实你在地址栏里看见的还是GMAIL的HTTPS,其实是连接到某国的有关部门的服务器上,你和他当然是加密通信,但是仍然可以操作——因为可以在那个服务器上很轻松的设置一个API来抓取真GMAIL的内容,因为你已经在那个网站上提交了密码,因此https://hijack.greatfirewall.gov 自动把你的帐户和密码发送给gmail,并原样取得返回结果。
他和GM之间也是SSL通信,验证过(你提交的)密码后,得到GM给他的解密的网页,然后他把返回的已解密的内容再SSL提交给你,只需要在他的服务器上做一个假的网站,然后把抓取的gmail返回内容填在里面,你的操作他也会如实提交回去,一切都不受影响,当然了,会留下一份完整的记录哦~
剩下的问题:DNS欺骗,CA的获取都不成问题,问题在哪呢?假设你打开一个gmail.com,发现前面有挂锁的标志,一切无异常,但是点击该证书,发现是CNNIC签发的 =。=,问题是google怎么会找贵国来签发证书呢?明显是个假证书。
好了,如果你禁用了CNNIC的CA,当你访问时会出错,检查以后发现CNNIC怎么会给google签发证书呢?
下一个问题,如果说,有关部门在国外,悄悄的又买下了一家CA,比如说Entrust吧,你怎么会知道Entrust是哪家网站的签发者呢?除非你知道每一家https的签发机构,这明显是不可能的啊。这一次有关部门吃了暗亏,被人发现了意图,下一次估计会悄悄的收购一家小的CA来签发呢。
因此解决办法有2个,一个是除了禁止CNNIC之外,每次登陆时看一下https是谁签发的,另外一个是避免DNS污染,收邮件,先翻墙。
拜托,别来跨省我,我给你们出主意呢!张菊长,快去美国考察,再收购一家CA,记得要保密,别给那些P民知道了啊!
配图美~
这事儿不能说太细。。。。
好复杂,飘过
看起来并不需要DNS劫持啊?