萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 氣憤 到底是誰控制了我們的浏覽器?

氣憤 到底是誰控制了我們的浏覽器?

  大約從今年年初開始,很多人就發現,在浏覽一些網站的時候,地址欄的url後面會被莫名其妙地加上“?curtime=xxxxxxxxxx”(x為數字),並且彈出廣告窗口。很多人以為這是網站自己彈出的廣告,也就沒有在意。

  1、現象是什麼?

  大約從今年年初開始,很多人就發現,在浏覽一些網站的時候,地址欄的url後面會被莫名其妙地加上“?curtime=xxxxxxxxxx”(x為數字),並且彈出廣告窗口。很多人以為這是網站自己彈出的廣告,也就沒有在意。

  我是屬於很在意的那些人之一。

  2、這是怎麼回事?

  經過測試和分析,我們發現,上述現象與使用何種浏覽器無關(我們測試了各種流行的http客戶端),與使用何種操作系統也無關(linux用戶也有相關報告)。我對出現該現象的IE浏覽器進程進行了跟蹤調試,沒有發現任何異常。可以斷定,並不是系統被安裝了adware或者spyware。

  那麼是不是那些網站自己做的呢?後來發現,訪問我們自己管理的網站時也出現了這種情況,排除了這個可能。

  那麼剩下唯一的可能就是:有人在某個或某幾個關鍵網絡節點上安裝了inject設備,劫持了我們的HTTP會話——我實在是不願相信這個答案,這個無恥、龌龊的答案。

  偉大的謝洛克·福爾摩斯說過:當其他可能都被排除之後,剩下的,即使再怎麼不可思議,也一定是答案。

  為了驗證這個想法,我選擇了一個曾經出現過上述現象的網站附近網段的某個IP。直接訪問這個IP的HTTP服務,正常情況下是沒有頁面的,應該返回 404錯誤。我寫了一個腳本。不斷訪問這個IP,同時記錄進出的數據包。在訪問進行了120次的時候,結束請求,查看數據。120次請求中,118次返回的都是正常的404錯誤:

  HTTP/1.1 404 Object Not Found   Server: Microsoft-IIS/5.0   Date: Mon, 19 Jul 2004 12:57:37 GMT   Connection: close   Content-Type: text/html   Content-Length: 111

  〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉   〈body〉No web site is configured at this address.〈/body〉〈/html〉   但是有兩次,返回了這個:

  HTTP/1.1 200 OK   Content-type: text/html

  <html>   <meta http-equiv='Pragma' content='no-cache'>   <meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'>   <script>   window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');   </script>   <head>   <title></title>   </head>   <body>   </body>   </html>

  更進一步分析數據包,可知劫持流程如下:

  A、在某個骨干路由器的邊上,躺著一台旁路的設備,監聽所有流過的HTTP會話。這個設備按照某種規律,對於某些HTTP請求進行特殊處理。

  B、當一個不幸的HTTP請求流過,這個設備根據該請求的seq和ack,把早已准備好的數據作為回應包,發送給客戶端。這個過程是非常快的。我們的 HTTP請求發出之後,僅過了0.008秒,就收到了上面的回應。而任何正常的服務器都不可能在這麼短的時間內做出回應。

  C、因為seq和ack已經被偽造的回應用掉了,所以,真正的服務器端數據過來的時候,會被當作錯誤的報文而不被接受。

  D、浏覽器會根據〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉這一行,,重新對你要訪問的URL進行請求,這一次,得到了請求的真正頁面,並且調用window.open函數打開廣告窗口。

  在google中以“php?curtime”、“htm?curtime”、“asp?curtime”為關鍵字搜索,出現的基本上是國內網站,這表明,問題出在國內。用於inject的設備插在國內的某個或某幾個大節點上。

  真相大白。我們被愚弄了,全中國的網民都成了某些人的賺錢工具。

  3、現在怎麼辦?

  在壞家伙被捉出來之前,我們要想不受這個玩意的騷擾,可以考慮下面的方法:

  A、請各單位的網絡管理員,在網絡的邊界設備上,完全封鎖211.147.5.121。   B、在你自己的個人防火牆上,完全封鎖211.147.5.121。   C、如果你的浏覽器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“*”丟到彈出窗口過濾列表中去。

  絕不只是廣告那麼簡單,這涉及到我們的選擇,我們的自由,這比垃圾郵件更加骯髒和無恥。今天是廣告,明天就可能在你下載軟件的時候給你加個adware或者加個病毒進去,誰知道呢?我們的HTTP通信完全控制在別人手裡。

  4、如何把壞家伙揪出來?

  如果你是一個有權力調查和處理這件事的人,從技術上,可以考慮下面的手段:

  方法1:

  偽造的回應數據中並沒有處理TTL,也就是說,我們得到的回應數據中TTL是和inject設備位置相關的。以我收到的數據包為例,真實的服務器端回應 TTL是107,偽造的回應TTL是53。那麼,從我們這裡到被請求的服務器之間經過了21(128-107)個節點,從我們這裡到inject設備經過了11(64-53)個節點。只需要traceroute一下請求的服務器,得到路由回溯,往外數第11個節點就是安插inject設備的地方!

  方法2:

  假如壞家伙也看到了這篇文章,修改了TTL,我們仍然有辦法。在google上以下面這些關鍵字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量訪問時會被inject的網址。編寫腳本反復訪問這些網址,驗證從你的ip訪問過去是否會被 inject.將確實會被inject的結果搜集起來,在不同的網絡接入點上挨個用traceroute工具進行路由回溯。分析回溯的結果。

  上面我們已經說明了,壞家伙是在某個或者某些重要節點上安插了inject設備,那麼這個節點必然在被inject的那些網址到我們的IP之間的某個位置上。例如有A、B、C、D四個被inject到的網站,從四個地方進行路由回溯的結果如下:

  MyIP-12-13-14-15-65-[89]-15-57-A   MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B   MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C   MyIP-22-25-29-32-65-45-[89]-58-D

  顯然,inject設備極大可能就在“89”所在的機房。

  方法3:

  另一方面,可以從存放廣告業面的211.147.5.121這個IP入手,whois查詢結果如下:

  inetnum: 211.147.0.0 - 211.147.7.255   netname: DYNEGY-COMMUNICATION   descr: DYNEGY-COMMUNICATION   descr: CO.LTD   descr: BEIJING   country: CN   admin-c: PP40-AP   tech-c: SD76-AP   mnt-by: MAINT-CNNIC-AP   changed: [email protected] 20011112   status: ALLOCATED PORTABLE   source: APNIC

  person: Pang Patrick   nic-hdl: PP40-AP   e-mail: [email protected]   address: Fl./8, South Building, Bridge Mansion, No. 53   phone: 86-10-63181513   fax-no: 86-10-63181597   country: CN   changed: [email protected] 20030304   mnt-by: MAINT-CNNIC-AP   source: APNIC

  person: ShouLan Du   address: Fl./8, South Building, Bridge Mansion, No. 53   country: CN   phone: 86-010-83160000   fax-no: 86-010-83155528   e-mail: [email protected]   nic-hdl: SD76-AP   mnt-by: MAINT-CNNIC-AP   changed: [email protected] 20020403   source: APNIC

  5、我為什麼要寫這篇文章?

  新浪為我提供桃色新聞,我順便看看新浪的廣告,這是天經地義的;或者我安裝某某網站的廣告條,某某網站付給我錢,這也是天經地義的。可是這個 211.147.5.121既不給我提供桃色新聞,又不給錢,卻強迫我看廣告,這就嚴重傷害了我脆弱而幼小的心靈。事實上,你可以敲詐克林斯·潘,強奸克裡奧·佩德拉,咬死王陽明,挖成吉思汗墓,我都不會計較,但是現在你既然打攪了我的生活,我就不得不說幾句了。

  6、我是誰?

  如果你知道MyName,又知道MyCount的話,那麼,用下面這段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。

  #!/usr/bin/perl -w

  use Digest::MD5 qw(md5 md5_hex md5_base64);

  $name = 'MyName';   $count = MyCount;

  for ($i=0; $i〈$count; $i )   {   $name = md5_hex($name);   }

  print $name;

  以下簽名,用於以後可能出現的關於此文的交流:

  1 6631876c2aea042934a5c4aaeabb88e9   2 a6a607b3bcff63980164d793ff61d170   3 6a58e8148eb75ce9c592236ef66a3448   4 ded96d29f7b49d0dd3f9d17187356310   5 cc603145bb5901a0ec8ec815d83eea66

copyright © 萬盛學電腦網 all rights reserved