一些網站https證書出現問題的情況分析
摘要:44 www.163.com。出現證書和域名不匹配的最常見的一種情況是DNS劫持,即所訪問域名的IP地址和真實建立連接的IP並不相同。
20200326下午,有 消息說 [1]github的TLS證書出現了錯誤告警。證書的結構很奇怪,在其簽發者信息中有一個奇怪的email地址:[email protected]。明顯是一個僞造的證書。
爲了弄清楚其中的情況,我們對這一事件進行了分析。
DNS劫持?
出現證書和域名不匹配的最常見的一種情況是DNS劫持,即所訪問域名的IP地址和真實建立連接的IP並不相同。
以被劫持的域名go-acme.github.io爲例,我們的passiveDNS庫中該域名的IP地址主要使用如下四個託管在fastly上的IP地址,可以看到其數據非常乾淨。
對該域名直接進行連接測試,可以看到,TCP連接的目的地址正是185.199.111.153,但其返回的證書卻是錯誤的證書。因此github證書錯誤的問題並不是在DNS層面出現問題。
劫持如何發生的?
爲了搞清楚這個問題,可以通過抓取鏈路上的數據包來進行分析。爲了有較好的對比性,我們先後抓取了443端口和80端口的數據。如下圖
左邊的數據包爲https連接,右邊的數據包爲http連接。可以看到https的服務器應答TTL爲53,http的則爲44。一般來說,在時間接近的情況下,連接相同的目標IP,數據包在鏈路上的路徑是是近似的。https的TTL顯著的大於http的TTL,看起來很有可能是在鏈路上存在劫持。
有意思的是 在https後續的連接中其TTL值並不穩定 ,比如在響應證書的數據包中,其TTL變成了47,介於44和53之間,更接近於http鏈路的情況。作爲對比, http的後續數據包的TTL值則一直穩定在44 。這是一個有意思的現象。
因此,結合https會話過程中這種TTL值的異常,我們猜測是在鏈路上發生了劫持。
證書是怎麼回事?
事實上,從我們DNSMon系統的證書信息來看,這個證書(9e0d4d8b078d7df0da18efc23517911447b5ee8c)的入庫時間在20200323早上六點。考慮到數據分析的時延,其開始在大網上使用最晚可以追溯到20200322。
同時可以看到,這個證書在證書鏈上的父證書(03346f4c61e7b5120e5db4a7bbbf1a3558358562)是一個自簽名的證書,並且兩者使用相同的簽發者信息。
受影響的域名及時間
從上圖中可以看到,該證書的影響不僅僅在github,實際上範圍非常大。通過DNSMon系統,我們提取出了受影響的域名共 14655 個。
通過DNSMon系統查看這些域名的流行度,在TOP1000的域名中,有40個域名受影響,列表如下:
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
對這些域名發生證書劫持時的DNS解析情況分析發現,這些域名的解析IP均在境外,屬於這些域名在境外的CDN服務。值得一提的是儘管這些域名都是排名靠前的大站,但是因爲國內訪問的時候,CDN解析會將其映射爲國內的IP地址,因此國內感知到這些大站被劫持的情況比較小。
受影響二級域排名
在二級域方面,github.io 是受影響最大的二級域,也是此次劫持事件的關注焦點。
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
從時間維度來看,這些域名的首次被劫持時間分佈如下:
從圖中可以看出域名首次受影響的數量有日常作息規律,並且在3月26號數量有了較大幅度的增加。
結論
1)劫持涉及域名較多,共計14655個,其中TOP1000的網站有40個;
2)劫持主要發生在國內用戶訪問上述域名的海外CDN節點的鏈路上。國內用戶訪問國內節點的情況下未見影響;
3)所有這些劫持均使用了以 [email protected] 名義簽名的證書,但我們沒有找到 編號 346608453 的QQ用戶與本次劫持事件相連的直接證據,也不認爲該QQ用戶與本次事件有直接關聯;
4)所有這些劫持最早出現在 2020.03.21 23時附近,持續到現在。並且在過去的24小時(26日~27日)處於高峯。