您運營的應用被鏈路劫持了嗎?
劫持不可避免,但了解現(xiàn)有應用被劫持情況是解決問題的第一步。足夠覆蓋均勻的真實機器或手機監(jiān)測點,覆蓋所有大中小運營商和地域,就可以從用戶視角通過比對校驗機制自動監(jiān)測到鏈路劫持,并可以分析出劫持范圍和保留下劫持現(xiàn)象等。
一、鏈路劫持
TCP鏈路劫持其實就是指網(wǎng)絡鏈路上偵聽、偽造TCP包,達到控制目標網(wǎng)絡鏈路的行為。最常見的就是某些設備實現(xiàn)的對非法站點的訪問攔截,以及一些地區(qū)運營商的網(wǎng)頁植入廣告行為。也有篡改正常網(wǎng)頁進行SEO、騙流量的。
因為廣域網(wǎng)的鏈路劫持影響面大,一般會影響一個地區(qū)甚至是全國,所以本文重點討論廣域網(wǎng)的TCP鏈路劫持,局域網(wǎng)的劫持如ARP攻擊不在討論范圍。
二、鏈路劫持形式
目前發(fā)現(xiàn)的TCP鏈路劫持攻擊一般有兩種形式:中斷訪問型(分為單向發(fā)包和雙向發(fā)包)和替換頁面型。
中斷訪問型(多以單向發(fā)包為主,單向發(fā)包被劫持服務器端不易被發(fā)現(xiàn))常見于阻止用戶訪問某些網(wǎng)站,如某些設備禁止用戶訪問某些站點。中斷訪問型阻止用戶訪問策略也是有概率調整的。目的多是惡性在一個區(qū)域讓同類競爭對手的應用無法服務,或降低競爭對手應用的用戶可用性。
其原理就是偽造服務端給用戶發(fā)RST包阻止TCP連接的建立(單向發(fā)包)。某些設備做得比較狠,在冒充服務端給用戶發(fā)RST包的同時也冒充用戶給服務端發(fā)RST包(雙向發(fā)包)。
替換頁面型(多以部分增加頁面內容為主,不改動返回被劫持頁面請求的目的,也是讓服務器端無法主動發(fā)現(xiàn)被劫持。)原理也簡單,就是在一個HTTP請求后偽造服務端的HTTP響應給客戶端,這些利用鏈路劫持進行的彈窗廣告、“技術問題”產(chǎn)生的誤攔截、植入代碼不慎將頁面弄亂、甚至是釣魚等將會損害用戶利益。同時也大大降低了用戶體驗導致被劫持業(yè)務流失,造成被劫持應用的競爭力和公信力下降等等。
補充說明:雙向發(fā)包劫持概率極低,但對最終用戶隱私安全損傷性更大,也給應用運營者帶來不必要的法律風險,這種情況可以通過部署在機房的IDS也可以發(fā)現(xiàn)端倪。
三、監(jiān)測鏈路劫持
要解決鏈路劫持先要搞清楚哪些地區(qū)出現(xiàn)劫持,如劫持大致覆蓋范圍。鏈路劫持是區(qū)域性的,一般來講某地區(qū)用戶集中投訴,就可以聯(lián)系用戶調查了。用戶往往不懂Wireshark抓包,還要遠程協(xié)助,劫持現(xiàn)象也無法還原,沒有證據(jù)。無從推進解決,甚至都不知道損失有多大。
單項發(fā)包中斷訪問型鏈路劫持針對應用或url或域名或IP的,可以通過客戶端監(jiān)測采集來判斷,如果是替換頁面型,頁面大小或者HTML元素個數(shù)會有異常,也可以通過客戶端監(jiān)測采集來判斷。但通過監(jiān)測點采集判斷劫持,就要求監(jiān)測點覆蓋全面且均勻,因為一般劫持都出現(xiàn)在小運營商和區(qū)域范圍內,并且要保證監(jiān)測頻率均勻穩(wěn)定,才能發(fā)現(xiàn)一些概率性劫持策略的現(xiàn)象。
目前市場上專業(yè)擁有真實監(jiān)測網(wǎng)絡資源的監(jiān)測廠商極少,并且適時推出針對鏈路劫持監(jiān)測功能的只有博睿(Bonree)。
鏈路劫持監(jiān)測是了解被劫持狀況,和劫持預先發(fā)現(xiàn)、確定劫持影響范圍、保留劫持證據(jù)的第一步。
鏈路劫持解決都是基于前期搜集證據(jù)階段,可以參考文章引用的文章。
四、預防鏈路劫持挑戰(zhàn)
防范鏈路劫持就比較困難,畢竟攻擊者控制著網(wǎng)絡鏈路。不過并非不可能。
一是網(wǎng)站全程使用SSL。再一個就是在客戶端或(和)服務器丟棄偽造的TCP包。比如單向中斷訪問型,就可以丟棄包含偽造特征的TCP包(如Id為0或8888)。但某些項目就是利用客戶端、服務端同時丟棄的方式來翻墻的,又會造成次生安全風險。
最后,我們可以看到廣域網(wǎng)一點都不安全,所以敏感信息傳輸一定要加密,還要高強度加密;高端網(wǎng)頁最好有個校驗機制;自動升級的程序也一定要校驗文件簽名。
相關文章:http://security.tencent.com/index.php/blog/msg/81