找回密码
 加入华同
搜索
黄金广告位联系EMAIL:[email protected] 黄金广告[email protected]
查看: 1819|回复: 5

是谁控制了我们的浏览器?

[复制链接]
发表于 2006-8-23 18:49:01 | 显示全部楼层 |阅读模式
在剑盟看到的帖子,很值得玩味特此转来,建议新手就不用看了。
/ h/ x9 _' L# R2 ^0 m/ X) I2 v# u

/ _& a$ c- c. r; I3 d2 @............................................................................................................................................
2 @5 D" w5 u4 W: ^1 g: ^; C# j; V6 J/ i4 z
是谁控制了我们的浏览器?
6 j! L% v1 u6 j, U- F9 ?
1、现象是什么?7 x# v" Y2 t( N7 p% O
  
- m) g" S; m, R! ]. `/ k, \9 p; U大约从今年年初开始,很多人就发现,在浏览一些网站的时候,
( E7 y& d6 J: H' y地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。) f7 J; \* |; M4 ?2 a
很多人以为这是网站自己弹出的广告,也就没有在意。7 y8 T' l9 E7 `- H
    s: ~6 o( D* }9 V- r# @  \
我是属于很在意的那些人之一。+ b7 h) P" [% P1 D$ @
  0 s# ]. ~2 U9 |- D
2、这是怎么回事?
7 B* w0 g6 Y; M: m; S9 \5 L  
: e4 Z! ]( W: E( Y0 Y# u经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),9 b# z1 P  k  x' O: z; `) f9 |5 [
与使用何种操作系统也无关(linux用户也有相关报告)。
/ x% R) a5 i9 Z" l/ \+ L我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。
8 p; I' d5 B! z! L. h6 `9 _, W& S  " b3 P& c! E  C; a8 Z% d. ~
那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。0 R7 |" x8 ?) _, m9 U
  7 A, M& X9 b3 i) A( b* ]
那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,
' k. T4 `+ M$ B9 j劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。
: |: F+ c5 J6 Q; K$ P  " j- O7 ^$ Q  i, L  H1 X4 s
伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。
1 l% B7 w2 a4 o) X  
0 x1 z3 D1 h% a. Z+ g% @为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。; e) `4 e6 K7 |; I9 M: X
直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。
  U' {9 @* }8 M我写了一个脚本。不断访问这个IP,同时记录进出的数据包。
3 Q/ f3 ?1 `) p* N在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:, f+ W) s9 \( o& c9 m/ X& D: ?( ~
HTTP/1.1 404 Object Not Found- a, i+ Z2 x7 E+ B. S) n0 s
Server: Microsoft-IIS/5.02 z* C/ ^+ B6 F1 r! k7 a. s
Date: Mon, 19 Jul 2004 12:57:37 GMT
8 ]) T* H$ j) [( BConnection: close
) Y4 U/ R% {3 e$ QContent-Type: text/html: `2 A4 N( X, k( z2 g4 |! ]/ D
Content-Length: 111' `" S9 y3 R8 Y: k
〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉
* I! n; l& A& ^% j5 _〈body〉No web site is configured at this address.〈/body〉〈/html〉6 k8 n! b0 K4 v! B, x) ?: ?; A
  $ t; X- ?* G2 K  v5 t5 U
但是有两次,返回了这个:$ `6 }0 Z8 x3 d! G
HTTP/1.1 200 OK
: \# ?) |+ m) k7 B( XContent-type: text/html8 O; P. a" _3 {8 m  Y3 i4 [
〈html〉
, m5 b, c/ E6 N) f# B& t〈meta http-equiv='Pragma' content='no-cache'〉
* Z5 F. N- h. z4 j5 i〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉
5 x' u2 e! B5 V2 U* M〈script〉
- o. q; X* h( ~window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
4 }9 M* r% j" n2 X' R& k〈/script〉
/ M: e; G& ]! a. T〈head〉* c" S- f( I. |; j- o1 h; u; n
〈title〉〈/title〉! y3 W8 v4 A3 m" m7 a7 o% e; q
〈/head〉7 {+ S" C# l5 q; X( `
〈body〉/ u3 S: v9 @* d2 l* H
〈/body〉( ]  v2 v7 M: t2 N  I5 L
〈/html〉& J. J9 T9 Y, w) f/ F
  3 X' ?# U, I3 t
更进一步分析数据包,可知劫持流程如下:
4 `! {' F+ n6 ]! B& t" O5 J  , T; j) B/ M  X, Y& i8 \
A、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。
# d9 m4 h6 F; \5 V这个设备按照某种规律,对于某些HTTP请求进行特殊处理。
9 P; d6 E; h5 ^8 N( _( _7 Z8 i$ `  ) Q* y& y! n% R: Q7 l
B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。$ A8 Q  x. x- q; A* P# \# e5 R
这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。  C* c' H7 E+ x. Y7 a+ d
而任何正常的服务器都不可能在这么短的时间内做出回应。. I3 R. ~( q9 z1 f  v
  3 T3 b! H8 b: `6 J0 X
C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。! |& }( }9 N  R- _
  / S- q& L2 T+ |9 j9 z
D、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,
" I0 k% C5 u  F' b6 Z重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。
( Q3 a* X: N- s. D+ Z# E6 _  1 A4 k' h% Z# Q" b
在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,6 y- T* F( e0 d: o
这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。2 }( D- L+ i! U  X$ F+ }; r
  
% H" h6 i, y( H% h: b真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。
# f/ E" z- B4 I1 z2 G' Z  
  C7 \; N+ ?8 K1 P3 y' h; r) f3、现在怎么办?0 q# R$ a) }9 }$ p0 b# A: s4 o
  
; s5 O) U* M5 P( g; l在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:( o' m* r5 E; u) P" R5 d
  
' s3 ~8 L( l9 g" _/ m0 VA、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。
) V/ q- f$ B, @: s4 q* l3 d  9 D: i) _' N2 Y2 e& _
B、在你自己的个人防火墙上,完全封锁211.147.5.121。
( ^7 Q% G1 r# v. K6 h( y  
" v9 O- x- `1 r% m  oC、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。2 ]" M3 o. A1 e& T
  
2 d4 H3 [' o* M/ p3 ]( l绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。. |. q4 A6 d1 {: i& ~. Y# R+ ]
今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?
" `- Y2 n( z6 i' w  a  k我们的HTTP通信完全控制在别人手里。2 y4 s9 T( o$ L$ {0 s0 X6 O8 U4 Z
  . w6 m& f6 \+ b' u4 }
4、如何把坏家伙揪出来?
* Y* t' l. X6 o3 _  ! m+ g7 P- _' z2 B9 ^
如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:, U3 e. l& A& {) E
  
" C6 B% [' ]' ^6 x% a- Q7 N方法1:
8 p# M6 l) j2 r8 y' ]6 _' _  
! `9 D6 n1 G: @1 G' |伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。2 I& H- t  S% c. w9 ~# K1 w  g  }
以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。
1 D9 v$ t- i9 P% T8 @) \3 s5 c; p那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。0 K; s. H& W; {- U6 r- E
只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!
6 Q# _' I- L* A/ {! e' t  ) F! C+ b* C; M! d
方法2:
+ r( p: r2 V; Z3 I& J  
; x( D% }/ B2 z5 {' i假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。
6 P% |' v. E, X$ u7 Q在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。* D% ?9 e6 x  B
编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来," \. e0 {7 V. A$ m8 d2 T
在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。6 j4 K" B% T6 C8 P) s: _3 s. z
  - [9 K3 P7 S) `8 t5 ?/ b# @
上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,
* {' z% w2 _" y8 ~& G那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。8 d  q4 ~8 T. ]6 e" m! G! K
例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:
% L% @  K* D3 h8 h6 Q( YMyIP-12-13-14-15-65-[89]-15-57-A
" y3 g' p) i& E2 y# f1 f: BMyIP-66-67-68-69-85-[89]-45-68-84-52-44-B
' ]' O/ [, {( q, y& UMyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C2 s) M! u$ X$ N6 h2 s- K) c2 V
MyIP-22-25-29-32-65-45-[89]-58-D
: q! S7 ]+ q6 S3 m* x6 A  ) r8 Z6 f3 H2 i4 {  C# s
显然,inject设备极大可能就在“89”所在的机房。7 _3 p. s. E# D8 a7 p9 o
  
; G7 a% u% f) r1 k" r# i, B方法3:8 I$ |3 x3 U2 s2 _0 o- e+ T+ B
  2 L4 c6 _3 m6 T) T4 M# ~0 I! _
另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:
! G9 L0 W. z4 k# a8 V; i4 Oinetnum: 211.147.0.0 - 211.147.7.255
7 T* n4 j1 I0 q8 r" j+ Q# lnetname: DYNEGY-COMMUNICATION7 s0 u+ D% Z9 n, U
descr: DYNEGY-COMMUNICATION
9 N% L0 \5 t  _4 D& {6 m- [descr: CO.LTD
0 E- d9 K4 P- J2 f$ Adescr: BEIJING) i8 B8 g( M5 P6 @8 m) m
country: CN2 w* a' z; l& t8 B' l5 Q: I
admin-c: PP40-AP" o  T+ F( H$ S- {7 T2 E
tech-c: SD76-AP5 j, {. ?3 Y# o/ _' y0 ~
mnt-by: MAINT-CNNIC-AP
3 b6 w: g6 F( zchanged: [email protected] 20011112
$ Q- ?, ?" ?5 t1 Z' N6 B# W- istatus: ALLOCATED PORTABLE4 J! z% `8 k) Q. x4 b7 d: W: o+ o
source: APNIC/ i5 i! C' P2 y/ s, ~& A
person: Pang Patrick! I  w( |* r8 G2 f5 M0 A
nic-hdl: PP40-AP
6 ?( n, D0 \; |6 ]6 x; Me-mail: [email protected]
  R; }' ?2 A7 s6 f: C& \8 Iaddress: Fl./8, South Building, Bridge Mansion, No. 53% F$ b" A% o% v3 z
phone: +86-10-63181513- M3 G3 M) h6 K! f! O/ E
fax-no: +86-10-63181597+ F* \. L9 E. d0 d# d: m0 X! \
country: CN
1 w0 x" R' S5 c, `9 c; O( {changed: [email protected] 20030304
7 c$ |4 d' U7 m, T* G: O$ Smnt-by: MAINT-CNNIC-AP# ^/ {/ p  p! [  ]/ H0 L3 S5 {
source: APNIC7 h# O. k$ q, p
person: ShouLan Du
# N. ^) O' l( S; Gaddress: Fl./8, South Building, Bridge Mansion, No. 53
% j  u$ |, h8 w' fcountry: CN5 L! Z' f, P* E, m! ]# D! w( `
phone: +86-010-83160000( t- U" i3 Q3 K) D; y# L) m* o
fax-no: +86-010-83155528, U3 n8 m$ a7 G4 q8 X) ^) C7 h5 P* X
e-mail: [email protected]  i0 s6 E. X- n: i: O4 V6 E
nic-hdl: SD76-AP
% ^" D& H% m+ ?2 V# nmnt-by: MAINT-CNNIC-AP
: H5 s9 n) ]* r6 U; \/ x5 W8 vchanged: [email protected] 20020403. O3 f8 V/ ^' b7 T
source: APNIC  j6 V% J* L" C' d- Y! i2 i9 {* ^
  
! P$ g, b$ R7 z* u5、我为什么要写这篇文章?- n: N  t. A9 ?) x7 p! _
  
/ |8 l# C! l* ?$ \5 M7 T6 w; g1 v新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;
2 D1 i, s; R3 ]4 M8 v或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。/ y* u  R' X4 j+ B8 U
可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。$ |: ]+ Y3 m6 I7 p3 w! `
事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,0 b  s2 w. b% b1 f
但是现在你既然打搅了我的生活,我就不得不说几句了。
4 Q4 h. r! {5 [    r9 l& H. t: z1 T* }
6、我是谁?
) C  g+ ^( s( m  {# K+ x: U# Z  $ U% i% C- R0 H( U! M
如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。
8 G0 {$ k; R3 m3 t#!/usr/bin/perl -w8 K# r5 |; }' l( f, h
use Digest::MD5 qw(md5 md5_hex md5_base64);: [  ]  f' D- r, {
$name = 'MyName';
0 R2 p( z. k) ~9 @4 W% V$count = MyCount;% P. b; y( q  s5 T
for ($i=0; $i〈$count; $i++)
, e4 `0 D3 g# e6 o1 }8 R& L{4 J4 f! n. ~) z2 B" R. X  Y3 J
$name = md5_hex($name);. m% Q) h7 Z: J. W
}
* I2 S( e7 p2 o4 I2 a" C) eprint $name;
2 o, F/ B4 |- x5 n* h    ( q' a/ D$ e" D: B# t5 \/ i3 @
以下签名,用于以后可能出现的关于此文的交流:
% H2 k# D3 X' t: c) B4 M1 6631876c2aea042934a5c4aaeabb88e91 O" c2 A4 }8 Q3 G( y9 l
2 a6a607b3bcff63980164d793ff61d170
. e6 w+ l# Y5 @- S1 R4 T3 6a58e8148eb75ce9c592236ef66a3448
4 H' m, g' }" l" I; n8 C) ~4 ded96d29f7b49d0dd3f9d17187356310
* o( A' p2 [  s1 T' a. k8 T$ k% w5 cc603145bb5901a0ec8ec815d83eea66
发表于 2006-8-23 21:15:27 | 显示全部楼层
回复

使用道具 举报

发表于 2006-8-23 21:41:56 | 显示全部楼层
我有点看不懂?我太菜了。
回复

使用道具 举报

发表于 2006-8-23 23:40:54 | 显示全部楼层

谢谢版主,非常有用!

谢谢版主, 所言甚是,非常有用,稍后我将按照版主所教的方法来做!
回复

使用道具 举报

发表于 2006-8-23 23:40:58 | 显示全部楼层
是有点专业了,如果不是对计算机网络的工作流程比较了解的话,很难理解其中许多名次的含义。希望楼主能发一些比较通俗或者容易大家接受的文章,毕竟不是每个人都是研究计算机。: q' |; J* `& `2 k
总之非常感谢您提供这篇文章,从文章的内容上来说还是很有帮助的,希望您以后继续支持改版。
回复

使用道具 举报

 楼主| 发表于 2006-8-24 00:36:50 | 显示全部楼层
...抱歉,原作者分析清晰,操作精准,如果有相关基础的话,是很值得学习的。# j6 A1 Y- t- ~2 r

) e$ O2 p; N) j& \3 Hrulingdanny斑竹所说即是,以后注意了,实在抱歉。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入华同

本版积分规则

Archiver|手机版|小黑屋|华人同志

GMT+8, 2026-10-25 08:35 , Processed in 0.018360 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表