一些網(wǎng)站https證書出現(xiàn)問題的情況分析
2020.03.26下午,有消息說[1]github的TLS證書出現(xiàn)了錯(cuò)誤告警。證書的結(jié)構(gòu)很奇怪,在其簽發(fā)者信息中有一個(gè)奇怪的email地址:346608453@qq.com。明顯是一個(gè)偽造的證書。
為了弄清楚其中的情況,我們對(duì)這一事件進(jìn)行了分析。
DNS劫持?
出現(xiàn)證書和域名不匹配的最常見的一種情況是DNS劫持,即所訪問域名的IP地址和真實(shí)建立連接的IP并不相同。
以被劫持的域名go-acme.github.io為例,我們的passiveDNS庫(kù)中該域名的IP地址主要使用如下四個(gè)托管在fastly上的IP地址,可以看到其數(shù)據(jù)非常干凈。
對(duì)該域名直接進(jìn)行連接測(cè)試,可以看到,TCP連接的目的地址正是185.199.111.153,但其返回的證書卻是錯(cuò)誤的證書。因此github證書錯(cuò)誤的問題并不是在DNS層面出現(xiàn)問題。
劫持如何發(fā)生的?
為了搞清楚這個(gè)問題,可以通過抓取鏈路上的數(shù)據(jù)包來進(jìn)行分析。為了有較好的對(duì)比性,我們先后抓取了443端口和80端口的數(shù)據(jù)。如下圖
TCP三次握手中的服務(wù)器應(yīng)答對(duì)比
左邊的數(shù)據(jù)包為https連接,右邊的數(shù)據(jù)包為http連接??梢钥吹絟ttps的服務(wù)器應(yīng)答TTL為53,http的則為44。一般來說,在時(shí)間接近的情況下,連接相同的目標(biāo)IP,數(shù)據(jù)包在鏈路上的路徑是是近似的。https的TTL顯著的大于http的TTL,看起來很有可能是在鏈路上存在劫持。
有意思的是 在https后續(xù)的連接中其TTL值并不穩(wěn)定,比如在響應(yīng)證書的數(shù)據(jù)包中,其TTL變成了47,介于44和53之間,更接近于http鏈路的情況。作為對(duì)比,http的后續(xù)數(shù)據(jù)包的TTL值則一直穩(wěn)定在44。
[20200327 23:00 更新] 在數(shù)據(jù)包內(nèi)容方面,另一個(gè)值得關(guān)注的點(diǎn)是:被劫持的會(huì)話數(shù)據(jù)包(https)全部回包的IPID都是0. 正常數(shù)據(jù)包(http)首次回包IPID是0,之后的回包就不是了。
這是兩個(gè)有意思的現(xiàn)象。
被劫持會(huì)話后續(xù)返回的TTL值
因此,結(jié)合https會(huì)話過程中TTL值和IPID的異常,我們猜測(cè)是在鏈路上發(fā)生了劫持。
證書是怎么回事?
事實(shí)上,從我們DNSMon系統(tǒng)的證書信息來看,這個(gè)證書(9e0d4d8b078d7df0da18efc23517911447b5ee8c)的入庫(kù)時(shí)間在20200323早上六點(diǎn)??紤]到數(shù)據(jù)分析的時(shí)延,其開始在大網(wǎng)上使用最晚可以追溯到20200322。
同時(shí)可以看到,這個(gè)證書在證書鏈上的父證書(03346f4c61e7b5120e5db4a7bbbf1a3558358562)是一個(gè)自簽名的證書,并且兩者使用相同的簽發(fā)者信息。
相關(guān)證書信息
受影響的域名及時(shí)間
從上圖中可以看到,該證書的影響不僅僅在github,實(shí)際上范圍非常大。通過DNSMon系統(tǒng),我們提取出了受影響的域名共14655個(gè)。
通過DNSMon系統(tǒng)查看這些域名的流行度,在TOP1000的域名中,有40個(gè)域名受影響,列表如下:
- 1 www.jd.com
- 5 www.baidu.com
- 10 www.google.com
- 37 www.sina.com
- 44 www.163.com
- 51 www.douyu.com
- 62 www.suning.com
- 86 www.pconline.com.cn
- 91 sp1.baidu.com
- 126 twitter.com
- 137 www.eastmoney.com
- 143 mini.eastday.com
- 158 sp0.baidu.com
- 174 www.jianshu.com
- 177 www.mgtv.com
- 185 www.zhihu.com
- 232 www.toutiao.com
- 241 price.pcauto.com.cn
- 271 www.google.com.hk
- 272 video.sina.com.cn
- 299 www.youtube.com
- 302 www.acfun.cn
- 365 www.vip.com
- 421 news.ifeng.com
- 451 car.autohome.com.cn
- 472 www.facebook.com
- 538 www.gamersky.com
- 550 www.xiaohongshu.com
- 552 www.zaobao.com
- 580 www.xxsy.net
- 621 www.huya.com
- 640 mp.toutiao.com
- 643 www.ifeng.com
- 689 www.ip138.com
- 741 dl.pconline.com.cn
- 742 v.ifeng.com
- 784 www.yicai.com
- 957 passport2.chaoxing.com
- 963 3g.163.com
- 989 www.doyo.cn
對(duì)這些域名發(fā)生證書劫持時(shí)的DNS解析情況分析發(fā)現(xiàn),這些域名的解析IP均在境外,屬于這些域名在境外的CDN服務(wù)。值得一提的是盡管這些域名都是排名靠前的大站,但是因?yàn)閲?guó)內(nèi)訪問的時(shí)候,CDN解析會(huì)將其映射為國(guó)內(nèi)的IP地址,因此國(guó)內(nèi)感知到這些大站被劫持的情況比較小。
受影響二級(jí)域排名
在二級(jí)域方面,github.io 是受影響最大的二級(jí)域,也是此次劫持事件的關(guān)注焦點(diǎn)。
- 1297 github.io
- 35 app2.xin
- 25 github.com
- 18 aliyuncs.com
- 17 app2.cn
- 14 nnqp.vip
- 10 jov.cn
- 8 pragmaticplay.net
- 7 tpdz10.monster
- 7 suning.com
從時(shí)間維度來看,這些域名的首次被劫持時(shí)間分布如下:
從圖中可以看出域名首次受影響的數(shù)量有日常作息規(guī)律,并且在3月26號(hào)數(shù)量有了較大幅度的增加。
結(jié)論
- 劫持涉及域名較多,共計(jì)14655個(gè),其中TOP1000的網(wǎng)站有40個(gè);
- 劫持主要發(fā)生在國(guó)內(nèi)用戶訪問上述域名的海外CDN節(jié)點(diǎn)的鏈路上。國(guó)內(nèi)用戶訪問國(guó)內(nèi)節(jié)點(diǎn)的情況下未見影響;
- 所有這些劫持均使用了以 346608453@qq.com 名義簽名的證書,但我們沒有找到 編號(hào) 346608453 的QQ用戶與本次劫持事件相連的直接證據(jù),也不認(rèn)為該QQ用戶與本次事件有直接關(guān)聯(lián);
- 所有這些劫持最早出現(xiàn)在 2020.03.21 23時(shí)附近,持續(xù)到現(xiàn)在。并且在過去的24小時(shí)(26日~27日)處于高峰。