再次更新國產(chǎn)黑客正在通過國內(nèi)骨干網(wǎng)絡(luò)發(fā)動大規(guī)模的中間人攻擊
網(wǎng)友反饋有攻擊者正在大規(guī)模的發(fā)起中間人攻擊劫持斗魚,京東和 GitHub 等網(wǎng)站。
此次攻擊很有可能是基于 DNS 系統(tǒng)或運營商層面發(fā)起的?,? 目前受影響的主要是部分地區(qū)用戶但涉及所有運營商。
更新:此次攻擊似乎與路由廣播有關(guān)通過骨干網(wǎng)絡(luò)進行劫持 443端口,目前經(jīng)測試 DNS 系統(tǒng)解析是完全正常的。
例如中國移動、中國聯(lián)通、中國電信以及教育網(wǎng)均可復(fù)現(xiàn)劫持問題,而國外網(wǎng)絡(luò)訪問這些站點并未出現(xiàn)異常情況。
從目前攻擊情況來看此次發(fā)起攻擊沒想到規(guī)模如此大。
部分信息的動態(tài)更新:
3月27日09:00:攻擊范圍似乎正在擴大,Github.com主站點也被劫持導(dǎo)致知名眾多開源項目現(xiàn)在全部無法訪問。
3月27日09:53:經(jīng)測試目前Github.com主站點正在陸續(xù)恢復(fù)中,部分地區(qū)的用戶訪問可能還會出現(xiàn)劫持請稍后。
3月27日09:53:據(jù)目前信息推測攻擊者似乎烏龍了?,?但是能從骨干網(wǎng)絡(luò)發(fā)起劫持看樣子并不簡單。
3月27日10:36:據(jù)測試Github.com主站點目前又掛了,證書還是那個自簽名證書因此和之前劫持信息是相同的。
3月27日11:06:據(jù)網(wǎng)友反饋Github的證書使用者換成?1396060845037@mymail.com?與之前郵箱不同。
3月28日00:27:據(jù)測試目前這種大規(guī)模劫持情況基本已經(jīng)消失 ,全國絕大部分地區(qū)訪問都已經(jīng)恢復(fù)正常。
最新:5月21日15:45:據(jù)360網(wǎng)絡(luò)安全實驗室的統(tǒng)計,此次劫持情況受影響的域名高達(dá)1.546萬個,包括多個主流網(wǎng)站。
例如京東、百度、谷歌、新浪、163、斗魚、蘇寧、推特、東方財經(jīng)、簡書、芒果TV、知乎、頭條以及YTB等等。
具體劫持情況主要是發(fā)生在鏈路上,例如HTTPS的TTL為 53、HTTP為 44,一般來說這兩個TTL值應(yīng)該非常相近。
同時被劫持的HTTPS會話數(shù)據(jù)包全部回包的 IPID 都是0,而未被劫持的即HTTP首次回包IPID為0之后就不再是0.
結(jié)合TTL值的不同與IPID的異常情況,360 網(wǎng)絡(luò)安全實驗室猜測此次問題是有人在鏈路上發(fā)起劫持導(dǎo)致訪問異常。
以上為最終更新、本文不再更新

關(guān)于QQ號主/攻擊者的身份追蹤信息:
注1 :此QQ從此前某數(shù)據(jù)庫里可檢索出使用者為某校高中生 ,不過尚不清楚是高中在校生還是已經(jīng)從該校畢業(yè)。
注2:目前關(guān)于黑客身份還在多方追蹤中尚未確定 ,至于是高中生還是已經(jīng)畢業(yè)的學(xué)生或者其他身份暫時還未知。
注3:檢索發(fā)現(xiàn)此QQ號主 1992年已從某高中畢業(yè),現(xiàn)在為某公司職員,據(jù)官網(wǎng)介紹該公司并沒有流量相關(guān)業(yè)務(wù)。
注4:據(jù)大佬們討論此次攻擊似乎是從骨干網(wǎng)絡(luò)發(fā)起七層精準(zhǔn)劫持 ,? 能做到這種攻擊的黑客看起來也不像初學(xué)者。
注5:大佬們討論的結(jié)果里看起來 BGP FlowSpec的可信度應(yīng)該是最高的,具體可以點擊這里查看最高贊的回答。

大量用戶無法正常訪問:
從目前網(wǎng)上查詢的信息可以看到此次攻擊涉及最廣的是 GitHub.io,其次用戶訪問京東等國內(nèi)知名網(wǎng)站亦會報錯。
查看證書信息可以發(fā)現(xiàn)這些網(wǎng)站的證書被攻擊者使用的自簽名證書代替,導(dǎo)致瀏覽器無法信任從而阻止用戶訪問。
所幸目前全網(wǎng)絕大多數(shù)網(wǎng)站都已經(jīng)開啟加密技術(shù)對抗劫持,因此用戶訪問會被阻止而不會被引導(dǎo)到釣魚網(wǎng)站上去。
如果網(wǎng)站沒有采用加密安全鏈接的話會跳轉(zhuǎn)到攻擊者制作的釣魚網(wǎng)站,若輸入賬號密碼則可能會被直接盜取。
攻擊者可能是正在進行測試:
沒想到這次攻擊能涉及全國多個省市自治區(qū)的網(wǎng)絡(luò)訪問,而且此次攻擊已經(jīng)持續(xù)十個小時還沒有恢復(fù)。

被劫持的京東(圖片來自unixeno)
部分節(jié)點測試情況:
# 阿里云上海數(shù)據(jù)中心(BGP)
curl -k -v https://z.github.io
* Connected to z.github.io (185.199.108.153) port 443 (#0)
* SSL connection using TLSv1.2 / ECDHE-ECDSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: C=CN; ST=GD; L=SZ; O=COM; OU=NSP; CN=SERVER; emailAddress=346608453@qq.com* start date: Sep 26 09:33:13 2019 GMT
* expire date: Sep 23 09:33:13 2029 GMT
* issuer: C=CN; ST=GD; L=SZ; O=COM; OU=NSP; CN=CA; emailAddress=346608453@qq.com* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
> GET / HTTP/1.1
> Host: z.github.io
> User-Agent: curl/7.52.1
> Accept: */*
# 群英網(wǎng)絡(luò)鎮(zhèn)江數(shù)據(jù)中心(電信)
curl -k -v https://z.github.io
* About to connect() to z.github.io port 443 (#0)
* Trying 185.199.110.153...
* Connected to z.github.io (185.199.110.153) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: E=346608453@qq.com,CN=SERVER,OU=NSP,O=COM,L=SZ,ST=GD,C=CN
* start date: Sep 26 09:33:13 2019 GMT
* expire date: Sep 23 09:33:13 2029 GMT
* common name: SERVER
* issuer: E=346608453@qq.com,CN=CA,OU=NSP,O=COM,L=SZ,ST=GD,C=CN
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: z.github.io
> Accept: */*
# 華為云香港數(shù)據(jù)中心(以下為正常連接的證書信息第44行)
curl -k -v https://z.github.io
* Rebuilt URL to: https://z.github.io/
* Trying 185.199.108.153...
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use h2
* Server certificate:
* subject: C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=www.github.com
* start date: Jun 27 00:00:00 2018 GMT
* expire date: Jun 20 12:00:00 2020 GMT
* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x556d826f6ea0)
> GET / HTTP/1.1
> Host: z.github.io
> User-Agent: curl/7.52.1
> Accept: */*