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






















