星星电脑技术论坛's Archiver

李宜超 发表于 2007-8-26 09:12

[分享]到底是谁控制了我们的浏览器?

[size=14px]1、现象是什么? !t l4s'G4F.}'Dj

(P0t0TT)d5n   大约从今年年初开始,很多人就发现,在浏览一些网站的时候,地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。很多人以为这是网站自己弹出的广告,也就没有在意。
"mf*sq5r)t)[
Fvd6B&v0q^;\   我是属于很在意的那些人之一。 ~sf2`K1],f\

/H_9l*dY   2、这是怎么回事?
@a0~s+P ~qZ T#aU6[N N`3x'm
  经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),与使用何种操作系统也无关(linux用户也有相关报告)。我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。
9v"NLsU
+DrLS:rJ   那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。 {oxk$SkiT(M

A&x$Os4`_   那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。 zh5tI:F;Y0x B8{[%T

9k#n J6zX0r8P*st   伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。
RWu!Krl 2i#S-Q&U9P`
  为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。我写了一个脚本。不断访问这个IP,同时记录进出的数据包。在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误: ElG_(Xs1M7T
2l3E:\;R0R F:G6X
HTTP/1.1 404 Object Not Found
cE*V)V:q @Ia Server: Microsoft-IIS/5.0
lY"x%OH6a%u| Date: Mon, 19 Jul 2004 12:57:37 GMT
g oW5W;{vS Connection: close %F)`ex&n5o(pr4_l
Content-Type: text/html gO'JQ8`#fg(J
Content-Length: 111 \|oUk/z U%_5R
1H+Tx P*h
〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉 !O2dJ.u.\^
〈body〉No web site is configured at this address.〈/body〉〈/html〉
&Z f;nEg3WJ _ 8{RYx:c1V
  但是有两次,返回了这个: %X k+BGeN t/tU
n6HR4}| }
HTTP/1.1 200 OK
hvRK@q_N,R:\ Content-type: text/html
&S?b$oW-m
/YT]#A T3K(h,T <html>
? ]tn? C1m'x <meta http-equiv='Pragma' content='no-cache'> z b'x't ]!K9S;{N2c
<meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'>
Z%FM%fil4K#\ <script>
B m-c[@c4VXhD window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
^ V,hi:X0JO e </script>
z$V mR%\"o @s <head> 8t7M,P1w;DDWm
<title></title>
.npsc5l </head>
@2VTK2T.b!n <body> -vV+qhj![7g!p1QX
</body> GKG*P#C g+_neo
</html>
jXB$zGitU !u4jz Aq2d9N0K @M
  更进一步分析数据包,可知劫持流程如下: "zte,y$[7k c

3}#V [ b/r8xH9yn(jR   A、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。这个设备按照某种规律,对于某些HTTP请求进行特殊处理。
~3cTV](|,g&H
g8t:D H+Gc   B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。而任何正常的服务器都不可能在这么短的时间内做出回应。
%]5U$Xuq ~ N0QK2Z
3V2v-L DI   C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。 ,g nZrl7sn'G
Cdxj)p"gH-v:FY
  D、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。 "Pb Aw"iZ$i.Z2^E'F
2Z+J#\4WT2h/Gh+a
  在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。
)z!Q7]t m *UoY1K+x"m(`^
  真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。 /r3iE_"Q j
I&A)g'X5Y
  3、现在怎么办?
p B%Gz*L9e&Ej
yG(e ]*D,o#_'V6Wq/T   在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法: 3v6g?#|&s

(|v jJ!|G9x   A、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。
.HBe'N2t   B、在你自己的个人防火墙上,完全封锁211.147.5.121。 9E*Y!u8o-B
  C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“[url=http://211.147.5.121/][color=#0000ff]http://211.147.5.121/[/color][/url]*”丢到弹出窗口过滤列表中去。
}*_U-` B8X.g'i
-{Z,s,Ii{+u[   绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?我们的HTTP通信完全控制在别人手里。 :JG4SSGJaX
:P }2_%bu9|;wiw
  4、如何把坏家伙揪出来? 7d p(r v.`m$^[,P@

EreG%l j&\E3}   如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段: 2Rt@z YP1^W0xc
mP)wq;i `
  方法1:
2v _a"WH Bu4@7mF IK'p@
  伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方! D#\A_Jy

0^ F"]%h~W1Zz3G   方法2: I#k8@3Y4KbP
6LJx&DuEz7l]'o.K
  假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来,在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。
4Io2PC2^Naf&B
ET2~ yb*{d ^uS   上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:
%s(P2U3Gy;L f}
"e7t4M(@1E MyIP-12-13-14-15-65-[89]-15-57-A V#Gq(B~R#{/J B
MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B
P u$bm^1G MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C
7^;G.j3~^-` MyIP-22-25-29-32-65-45-[89]-58-D M/R%{}h"CNM lo

Vh$LIxO+Vw O-~9{/\   显然,inject设备极大可能就在“89”所在的机房。
6B X+ZQ}`^e1[ k%ju|2vkj
  方法3: +bMxr!G/A4[
k?7uy$_ `7j
  另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下: +G+j!\-U^X%u,M%D
2BRC0_j a
inetnum: 211.147.0.0 - 211.147.7.255
7FIN-i,I Y J netname: DYNEGY-COMMUNICATION phrI ]
descr: DYNEGY-COMMUNICATION
@#E^jY descr: CO.LTD
'q%B%z zlC(i&J;}&d descr: BEIJING
)t sa:DC6o@ country: CN 'T@$E ^ VWd
admin-c: PP40-AP |-[Gd']M|y6~Z
tech-c: SD76-AP "Z}'R `6T1w6z
mnt-by: MAINT-CNNIC-AP gkTKJmI+P:O
changed: [email=hui_zh@sina.com][color=#0000ff]hui_zh@sina.com[/color][/email] 20011112
$r5Wq,_*^c7q ].lZO status: ALLOCATED PORTABLE hO2?q'Nn-K
source: APNIC
c!d AA,i5a p5V I(_
1|*ap y?gGf person: Pang Patrick ]*d/c6UGs6M
nic-hdl: PP40-AP 1_r7f!mfl$Vx
e-mail: [email=bill.pang@bj.datadragon.net][color=#0000ff]bill.pang@bj.datadragon.net[/color][/email]
8Qgr Oe6k:cRt address: Fl./8, South Building, Bridge Mansion, No. 53
G \Mn+B;ce0G phone: +86-10-63181513 b9S|Z{Jo
fax-no: +86-10-63181597 ~y)wS5cT%V_
country: CN a"?~ Xiw\
changed: [email=ipas@cnnic.net.cn][color=#0000ff]ipas@cnnic.net.cn[/color][/email] 20030304
[ Rb {G:_x ~ mnt-by: MAINT-CNNIC-AP
%W{&@'a-d Y source: APNIC
2P2fo)dhxZ
4CC?_NZ person: ShouLan Du fpEYdZ
address: Fl./8, South Building, Bridge Mansion, No. 53 6_j]9[6?9q,Dxe
country: CN
lt T7ab1_ phone: +86-010-83160000
X-G:D"{ce)K6Sfr fax-no: +86-010-83155528
)Zi3{V6D!es e-mail: [email=dsl327@btamail.net.cn][color=#0000ff]dsl327@btamail.net.cn[/color][/email] %uPcn~K/L:eE
nic-hdl: SD76-AP c:\Nv7QP0X
mnt-by: MAINT-CNNIC-AP 1amMftl0d:e@ ^)[
changed: [email=dsl327@btamail.net.cn][color=#0000ff]dsl327@btamail.net.cn[/color][/email] 20020403 *UXr/t*H)T2~/iN
source: APNIC 1d"?Aj {f.X

$w7rrJ+OP.d   5、我为什么要写这篇文章? 9f*_0a[ _8a5`,Q:p

;X&B9@$}\   新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,但是现在你既然打搅了我的生活,我就不得不说几句了。
jx g#D @
2v c4la ^9^)fK   6、我是谁?
_jf&h7C.UznG
3O.^;y;Xo K   如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。
-a,H(^)T Oj#E9T_;l Sq+}c |*L?3[
#!/usr/bin/perl -w -URg;qLu-a
Q `m;}GA
use Digest::MD5 qw(md5 md5_hex md5_base64);
N6O \} r YoO@
_X.au@ kV!l/MJ $name = 'MyName'; 5F(z&i8\ Vd(e^!RlJ
$count = MyCount; 9Q'kh%_*}IWJ.[9[
~;w5d~&`/x
for ($i=0; $i〈$count; $i++) :mWEN)p
{ I#D!w"L&z1f#{n]*WAg
$name = md5_hex($name);
$Z6t1bM:Gw?~ } 0Q A&WGS)@ |/[h

|Y"uv,YnXs!R print $name; t}!zKk&Z3J{G:_'d
3_B)\&A)jb
以下签名,用于以后可能出现的关于此文的交流:
TL u De {{-\ J E;u2TG/DkE
1 6631876c2aea042934a5c4aaeabb88e9
:t'|NV(a'x 2 a6a607b3bcff63980164d793ff61d170 B;`8u!PTE
3 6a58e8148eb75ce9c592236ef66a3448 P]Q:`'G
4 ded96d29f7b49d0dd3f9d17187356310
,Pw2K:m M!Ja zo!a 5 cc603145bb5901a0ec8ec815d83eea66[/size]

页: [1]
手机号码所在地查询:
Google
IP地址:

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.