電信網(wǎng)頁訪問監(jiān)控原理分析
近段時(shí)間,一個(gè)在電信上班的朋友經(jīng)常說,他們有辦法知道一個(gè)NAT 網(wǎng)關(guān)內(nèi)部的電腦主機(jī)
數(shù),而且能夠記錄里面任何人的上網(wǎng)記錄,聽得我是心癢癢的,可問他方法,他又死活不說,
郁悶。今天比較閑,腦袋里又想起了這事,想來想去,認(rèn)為電信很可能采用欺騙客戶端的方
法,讓客戶端的信息首先發(fā)到監(jiān)控主機(jī),然后再發(fā)到目標(biāo)服務(wù)器。
為證實(shí)推斷是否合理,抱著試試的心態(tài),立即在自己的機(jī)器上做了以下實(shí)驗(yàn),步驟如下:
1. 打開機(jī)器上的科來網(wǎng)絡(luò)分析系統(tǒng)。
2. 添加一個(gè)圖1 所示的過濾器,為的是只捕獲我的機(jī)器(192.168.0.88)和網(wǎng)關(guān)
(00:D0:41:26:3F:9E)以及外網(wǎng)的數(shù)據(jù)通訊,即不捕獲我與內(nèi)部網(wǎng)之間的通訊。

(圖1 設(shè)置過濾器)
3. 為減少數(shù)據(jù)干擾,在關(guān)閉本機(jī)上運(yùn)用的其它應(yīng)用程序后,開始捕獲。
4. 在本機(jī)上訪問一個(gè)網(wǎng)頁,這里以訪問www.colasoft.com 為例。
5. 在頁面出來后,停止捕獲,并開始分析系統(tǒng)捕獲到的數(shù)據(jù)包。
6. 此次網(wǎng)頁訪問系統(tǒng)共捕獲到了22 個(gè)數(shù)據(jù)包,原始數(shù)據(jù)包的列表如圖2 所示。

(圖2 原始數(shù)據(jù)包列表)
從圖2 中可知,編號1,2,3 的數(shù)據(jù)包是TCP 的三次握手?jǐn)?shù)據(jù)包,第4 個(gè)數(shù)據(jù)包是客戶端
192.168.0.88 發(fā)起的HTTP GET 請求,后面是服務(wù)器端的返回?cái)?shù)據(jù)。從這些數(shù)據(jù)包來看,
感覺通訊是正常的,于是切換到矩陣視圖,查看通訊的節(jié)點(diǎn)情況,如圖3。

(圖3 訪問www.colasoft.com 的矩陣圖)
在圖3 中,發(fā)現(xiàn)了一個(gè)奇怪的地址220.167.29.102,由于我此次的操作僅僅只訪問了
www.colasoft.com,所以是不應(yīng)該出現(xiàn)這個(gè)地址的。這個(gè)220.167.29.102 引起了我的
注意,會不會這個(gè)地址在作怪呢?
7. 再切換到數(shù)據(jù)包視圖,發(fā)現(xiàn)客戶端(192.168.0.88)的確存在和220.167.29.102
的通訊。
奇怪了,為什么192.168.0.88 會主動和220.167.29.102 進(jìn)行通訊呢,會不會是有人在
偽造數(shù)據(jù)包呢?為確定是否存在偽造數(shù)據(jù)包的情況,我強(qiáng)制顯示數(shù)據(jù)包的IP 層摘要信息,
在圖2 所示的數(shù)據(jù)包視圖中,單擊右鍵,在彈出的菜單中選擇“數(shù)據(jù)包摘要->IP 摘要”,
查看這些數(shù)據(jù)包IP 層的信息,如圖4。

(圖4 通過IP 層摘要查看220.167.29.102 的偽造數(shù)據(jù)包)
從圖4 可知,TCP 三次握手的服務(wù)器返回?cái)?shù)據(jù)包(編號2)的生存時(shí)間是48,而第5 個(gè)數(shù)
據(jù)包的生存時(shí)間卻是119,同一個(gè)服務(wù)器返回的兩個(gè)數(shù)據(jù)包生存時(shí)間差別如此之大,表示
它們經(jīng)過的路由存在較大的差異,這與正常通訊的狀態(tài)明顯不符,由此我們懷疑編號為5
的數(shù)據(jù)包可能是某個(gè)主機(jī)偽造的。
查看該數(shù)據(jù)包的解碼(圖4中間,紅色圈住部份),發(fā)現(xiàn)該數(shù)據(jù)包是由220.267.29.102發(fā)
起的,這表示220.267.29.102主動向192.168.0.88發(fā)起了一個(gè)欺騙數(shù)據(jù)包,雙擊第5個(gè)
數(shù)據(jù)包,打開該數(shù)據(jù)包的詳細(xì)解碼窗口,如圖5。

(圖5 220.167.29.102 偽造的數(shù)據(jù)包的詳細(xì)解碼信息)
從圖5解碼信息中可知,該數(shù)據(jù)包的TCP標(biāo)記中,同時(shí)將確認(rèn)位、急迫位、終止位置為1,
這表示這個(gè)數(shù)據(jù)包想急于關(guān)閉連接,以防止客戶端(192.168.0.88)收到服務(wù)器
(www.colasoft.com)的正常響應(yīng),它這樣做的目的是獲取客戶端(192.168.0.88)傳
輸?shù)臄?shù)據(jù)信息,其獲得的信息如圖4中的右下角紅色圈住部份,這是一個(gè)base64的編碼信
息,其具體的信息我會在后面進(jìn)行詳細(xì)說明。
8. 由于客戶端(192.168.0.88)被220.167.29.102 偽造的數(shù)據(jù)包5 欺騙,所以它向
服務(wù)器(www.colasoft.com)確認(rèn)并發(fā)送一個(gè)關(guān)閉連接請求的數(shù)據(jù)包,也就是第6
和第7 這兩個(gè)數(shù)據(jù)包
9. 第9 和第10 這兩個(gè)數(shù)據(jù)包,也是220.167.29.102 偽造的重置連接數(shù)據(jù)包,它的目
的是欺騙客戶端(192.168.0.88)關(guān)閉連接。
10. 接著,客戶端(192.168.0.88)主動向220.167.29.102 發(fā)起TCP 的三次握手,即
第8,11,12 這三個(gè)數(shù)據(jù)包,以和220.167.29.102 建立連接。
11. 13,14,15,17 這幾個(gè)數(shù)據(jù)包,是客戶端(192.168.0.88)和220.167.29.102 之間
的數(shù)據(jù)通訊。從第15 這個(gè)數(shù)據(jù)包的解碼中,可以清楚地看到220.167.29.102 將重
新將訪問重定向到www.colasoft.com,從而讓客戶端( 192.168.0.88 ) 向
www.colasoft.com 再次發(fā)起頁面訪問請求,以讓客戶端(192.168.0.88)完成正
常的網(wǎng)頁訪問,其解碼如圖6。

(圖6 220.167.29.102 向192.168.0.88 發(fā)起的數(shù)據(jù)包)
12. 16,18,19 是客戶端(192.168.0.88)向服務(wù)器(www.colasoft.com)發(fā)起三次握
手?jǐn)?shù)據(jù)包。
13. 20,21,22 是三次握手成功后,客戶端和服務(wù)器正常的HTTP 通訊數(shù)據(jù)包,也就是傳遞
客戶端所請求的頁面,這里是www.colasoft.com。
14. 查看會話,選擇TCP,發(fā)現(xiàn)此次的網(wǎng)頁訪問共連接起了3 個(gè)連接,如圖7。這三個(gè)連
接的TCP 流重組信息分別如圖7,8,9,通過流的重組信息,我們也可以較為清楚地看
到客戶端和服務(wù)器(www.colasoft.com),以及客戶端和220.167.29.102 之間的
數(shù)據(jù)通訊信息。

(圖7 此次網(wǎng)頁訪問產(chǎn)生的三個(gè)TCP 連接及第一個(gè)連接的TCP 流信息)
圖7中,客戶端(192.168.0.88)向www.colasoft.com發(fā)起GET請求,但從服務(wù)器端返
回的數(shù)據(jù)可知,返回服務(wù)器是220.167.29.102,且?guī)Я艘淮産ase64編碼的參數(shù),
“ABcHJvdmluY2VpZD04Jm隨機(jī)刪除部份
MTIwNDExJnNvdXJjZXVybD13d3cuY29sYXNvZnQuY29tLw==”,
對其進(jìn)行反編譯后的內(nèi)容如下:
“provinceid=8&cityid=2&classid=1000541&username=adsl撥號用名
&sourceurl=www.colasoft.com/”
注意:上面的紅色刪除部份和adsl撥號用戶名已經(jīng)過筆者更改。
這里很清楚了吧,220.167.29.102 主動欺騙客戶端讓客戶端告訴220.167.29.102 自己
的相關(guān)信息。客戶端在收到此請求后, 由于不知道被欺騙, 所以它會立即主動和
220.167.29.102 建立連接,并發(fā)送相關(guān)信息給220.167.29.102,從而導(dǎo)致信息被電信
監(jiān)控,讓電信可以輕易的知道我們的網(wǎng)頁訪問情況。

(圖8 220.167.29.102 欺騙客戶端的TCP 流信息)
圖8 即客戶端(192.168.0.88)主動向220.167.29.102 發(fā)起的連接,并告知其相應(yīng)的
信息。在圖中的下面我們可以看到,220.167.29.102 在收到相應(yīng)的信息后,再次強(qiáng)客戶
端的請求重定向到www.coalsoft.com,即用戶需要訪問的頁面。

(圖9 客戶端和www.colasoft.com 第二次連接的TCP 流信息)
圖9 即是客戶端在被220.167.29.102 欺騙后,再次向www.colasoft.com 發(fā)起GET 請
求,且服務(wù)器正常返回?cái)?shù)據(jù)的信息,這讓電信在不知不覺中完成了對用戶網(wǎng)頁訪問的監(jiān)控。
至此,訪問www.colasoft.com 的過程全部分析完畢。從該分析中,我們明白了電信監(jiān)控
我們普通用戶訪問網(wǎng)頁的具體方法,其訪問流程如圖10 所示。

(圖10 客戶端實(shí)際的訪問流程圖)
1. 客戶端主機(jī)(192.168.0.88)向www.colasoft.com 發(fā)起正常的訪問網(wǎng)頁請求。
2. 監(jiān)控服務(wù)器(這里是220.167.29.102,不同地方該服務(wù)器可能不同)就立刻向客戶
端發(fā)起一個(gè)偽造數(shù)據(jù)包,這個(gè)數(shù)據(jù)包的源地址被偽造成客戶端請求的服務(wù)器地址,同時(shí)
該數(shù)據(jù)包的內(nèi)容是預(yù)先設(shè)定好的。
3. 客戶端主機(jī)在收到該數(shù)據(jù)包后,以為是服務(wù)器端返回的,于是它根據(jù)收到的偽造數(shù)據(jù)包
的要求,主動向220.167.29.102 發(fā)起連接,并向220.167.29.102 傳輸一些客戶
端的私人敏感信息,如客戶端的撥號用戶名、訪問的網(wǎng)址、NAT 內(nèi)網(wǎng)主機(jī)數(shù)等信息。
4. 220.167.29.102 再次將訪問重定向的指令發(fā)給192.168.0.88。
5. 客戶端根據(jù)第4 步中收到的指令,再次向www.colasoft.com 發(fā)起正常的訪問網(wǎng)頁請
求。
6. www.coalsoft.com 將客戶端請求的頁面?zhèn)鹘o客戶端(192.168.0.88),讓客戶端成
功完成網(wǎng)頁訪問。
以上便是電信網(wǎng)頁訪問監(jiān)控原理的簡單分析過程,注意實(shí)驗(yàn)的環(huán)境是內(nèi)部通過NAT 方式,
并使用ADSL 撥號上網(wǎng),對于其它的連接方式以及其它的ISP 接入,由于沒有相應(yīng)的環(huán)境,
并未進(jìn)行測試。
CSNA 網(wǎng)絡(luò)分析論壇 菜鳥人飛
2006 年4 月21 日