最近我的手機(jī)使用廣電寬帶網(wǎng)絡(luò)時(shí)總是莫名其妙跳轉(zhuǎn)到一號店,而且網(wǎng)頁下面也會出現(xiàn)廣告條,這種情況明顯是運(yùn)營商劫持投放廣告。廣告如下

換dns
首先最可能的是dns污染了,于是我把dns換成了阿里dns 223.5.5.5 ,但是情況并沒有任何改變,還是有廣告出現(xiàn)。
既然換dns無用,那很有可能就是dns劫持了,應(yīng)對方法也很簡單,在路由器上安裝pdnsd來強(qiáng)制使用tcp方式查詢dns,這樣作確實(shí)有用。網(wǎng)頁廣告有兩種,一種是上圖底部圖片形式的廣告條,來自游俠,另一種是白底黑字的廣告條,貌似是百度的。這么做只能讓第一種廣告消失。而且網(wǎng)頁還是會自動跳轉(zhuǎn)到一號店。
這么看的話,他們應(yīng)該是dns劫持和tcp劫持都用了,于是我向運(yùn)營商投訴了,到第二天確實(shí)好像暫時(shí)沒有廣告了,但是過了一天廣告又出現(xiàn)了,一號店跳轉(zhuǎn)也出現(xiàn)了,估計(jì)他們根本就沒有處理,只是廣告出現(xiàn)頻率低,我那天沒遇到而已。
分析
既然投訴沒用,那就抓到證據(jù)舉報(bào)吧。開始抓包
由于廣告和一號店跳轉(zhuǎn)出現(xiàn)頻率是在太低,我抓了一個(gè)多小時(shí)都沒能抓到包。只是在投訴之前出現(xiàn)了一次廣告,我當(dāng)時(shí)還沒開抓包工具,只留了一張截圖

其中那個(gè)139的ip明顯有問題,雖然我不太懂js,但是看了看其中的js代碼,貌似不是加廣告的,但是不管怎么說,這個(gè)東西只有在使用廣電寬帶才有,肯定和廣告有關(guān)系,而且看其中的代碼有判斷瀏覽器UA的,這可能就是廣告只在手機(jī)出現(xiàn)而不在電腦出現(xiàn)的原因。
幸運(yùn)的是,就在我寫這篇文章時(shí),終于抓到了一號店跳轉(zhuǎn)的包
由于網(wǎng)頁加載完成就會自動跳轉(zhuǎn)到一號店,不能查看網(wǎng)頁資源,但是看抓包數(shù)據(jù),我這邊不知為何向一號店ip發(fā)出了一個(gè)get請求,然后收到一個(gè)302跳轉(zhuǎn),指向了一號店的官網(wǎng),而且網(wǎng)址后面跟有跟蹤id,http://m.yhd.com/4?tracker_u=901839607,這個(gè)網(wǎng)址明顯是用來推廣的,這個(gè)包的ttl值是44,但是在打開一號店的網(wǎng)頁后,這個(gè)包后面收到的來自一號店的包ttl值都是235,這個(gè)包明顯是偽造的,用于一號店網(wǎng)盟的推廣。
偽造的包:

真包:

除了自動跳轉(zhuǎn)到一號店以外,當(dāng)我訪問m.yhd.com時(shí),網(wǎng)頁會自動跳轉(zhuǎn)到一個(gè)yiqifa.com的鏈接,然后再跳轉(zhuǎn)到一號店的推廣地址http://m.yhd.com/4?uid=00f162afa8cac7df89ff&tracker_type=1&tracker_u=10303410999&website_id=840145,這個(gè)與上一個(gè)不同,上一個(gè)是一號店網(wǎng)盟的推廣,這個(gè)是億起發(fā)的推廣,在我向m.yhd.com發(fā)起請求后,同樣也會收到一個(gè)302跳轉(zhuǎn),這次是指向 http://p.yiqifa.com/n?k=2mLErn2LWE3SrI6H2mLErI6H6EDF1QLF6njq6nPHWNKqrI6HkQLErn2S1nzmWlDmrBbbYwA5WmL-&e=shanxic&t=http://m.yhd.com/\r\n
然后yiqifa.com再次發(fā)出302指向一號店達(dá)到推廣的目的,這個(gè)偽造的包ttl值是59,明顯也不是一號店的。

最后我查看了兩個(gè)偽造包的響應(yīng)速度,都在50ms以內(nèi)(好像一次是二十幾毫秒,一次是40毫秒),更加肯定這不是來自一號店的??梢源_定是運(yùn)營商的問題,由于兩種攻擊ttl值差別較大,所以ttl值很可能不是真實(shí)的,因此難以判斷攻擊者位置,但根據(jù)響應(yīng)速度來看,比阿里DNS西安節(jié)點(diǎn)響應(yīng)速度還快點(diǎn),攻擊者應(yīng)該就是在西安。
附一張別人的圖說明攻擊原理

這種攻擊除了加密數(shù)據(jù)以外沒有其他辦法防御,實(shí)在是討厭,希望能盡快解決。
我抓到的數(shù)據(jù)包: http://pan.baidu.com/s/1pL3ujWZ