摘要: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端口的數據。如下圖

TCP三次握手中的服務器應答對比

左邊的數據包爲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日)處於高峯。

參考鏈接

  1. https://v2ex.com/t/656367?p=2
相關文章