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

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

[复制链接]
发表于 2006-8-23 18:49:01 | 显示全部楼层 |阅读模式
在剑盟看到的帖子,很值得玩味特此转来,建议新手就不用看了。8 @0 ?) t: q5 Q% \. L
9 k% O; @. u( v3 F3 U9 S: a' R

! t# @4 b- S+ I' M............................................................................................................................................/ D8 \2 M6 v# s  F; b$ V" [
8 C1 m# W% X+ N0 @! U2 S
是谁控制了我们的浏览器?
# U( \+ v9 n  A" g; C0 w7 i5 J* Z  R* }
1、现象是什么?# P# w9 X5 y7 [/ ]/ D
  
& t/ [( x7 L+ ]4 a! r5 U大约从今年年初开始,很多人就发现,在浏览一些网站的时候,: A% C6 H, J3 T! l  y* z( K
地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。
+ [8 l1 P7 g8 D9 V( u很多人以为这是网站自己弹出的广告,也就没有在意。
) Y  o1 g9 o- [$ S2 K4 O( Z6 X# Z  
, P5 j5 ]/ M, e5 y5 u. I6 t* p我是属于很在意的那些人之一。
) h2 Z! Z' c: @! ~* W+ @8 p  
2 q/ y' h( ^. \' E) n1 G2、这是怎么回事?8 O% y$ g) }. s- f7 `8 @8 v
  . _/ h+ p& n) q8 P6 Y$ W) n
经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),
2 Q$ M1 l- s$ p% m1 u与使用何种操作系统也无关(linux用户也有相关报告)。
% V$ X# J4 |2 h, d, Q我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。+ D3 y+ f" H# h( m3 ]
  ( W' d0 y( }$ A, K: m  c
那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。* d5 e: i* @2 u( g8 r* ~0 Q7 s
  
& f# c, i# S; \那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,
  `. M3 i# a5 n- i9 E3 _, E  H2 |劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。
' V% _9 e/ w! K  y9 P$ ?  
" l  ]( ?( [1 D) v: [4 g伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。
7 p; p/ E5 q3 Q  
; A9 L$ |, l" O+ O! Q7 w( `9 \为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。/ ~% M( x0 g) G" d- V3 g) {8 y
直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。
  @2 Y% X( d# z# e, }" t  @我写了一个脚本。不断访问这个IP,同时记录进出的数据包。0 A& K4 b" n5 e: _4 n2 W. c0 x
在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:
$ G, Z3 q$ I; Z1 |HTTP/1.1 404 Object Not Found
; N; o2 Y* ?4 l9 TServer: Microsoft-IIS/5.0
" f& ^# E/ K- z0 o. S4 GDate: Mon, 19 Jul 2004 12:57:37 GMT! D0 o! q, G$ g& ]2 y5 V, L
Connection: close
% x6 P4 L: j3 c  S: s+ J% E% n$ z2 AContent-Type: text/html
. p1 L4 V! {5 f0 O* R7 \Content-Length: 111
5 B- g2 r9 V, h; q% j  i〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉9 d3 O- n) _8 K( a
〈body〉No web site is configured at this address.〈/body〉〈/html〉
- V  `# W" l" z  T0 m; G3 M/ z' g  # L4 b  A  o9 \9 [  c
但是有两次,返回了这个:
3 @. j- P- d8 y. g$ SHTTP/1.1 200 OK4 Z% u* ?& b% X( y
Content-type: text/html& T5 @& E2 k+ }4 [
〈html〉4 @) h7 @2 Q, Q0 {2 d0 s
〈meta http-equiv='Pragma' content='no-cache'〉  c. a& y: x. ?
〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉! r$ v7 @; `; n, H  g3 R9 r
〈script〉$ s: q/ B& f, U( S$ b
window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
2 e3 |$ m# U( T2 L$ A3 F! \〈/script〉
4 ~6 c- w% C2 a+ b- h〈head〉
1 h& \3 c) N6 @- o〈title〉〈/title〉+ K. p& ~! Z1 \  m- O5 t  |) r  o& y
〈/head〉. @0 g/ D  L5 l
〈body〉# s" _0 O, |+ @
〈/body〉8 K  y/ X/ [/ s( D# g8 _) G" W
〈/html〉
  L; t/ P& z) l- D6 s& e  
7 `6 L4 ^9 E; c' O6 I2 f; w$ D7 l* k更进一步分析数据包,可知劫持流程如下:
. A) G5 I$ R9 ~$ T  3 s! _8 V: t8 W8 Q
A、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。
7 H. j0 k& S" m; j! P/ \9 b7 s这个设备按照某种规律,对于某些HTTP请求进行特殊处理。
' G+ v, n2 n/ b4 ^' v# @1 S( l  " [8 C; m6 x8 N; }
B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。; k6 r" J9 @* w' Z4 n, w
这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。. h& p: c; U$ D, o  W+ T3 f
而任何正常的服务器都不可能在这么短的时间内做出回应。  W! s2 G$ i; V9 C, x: x! o! b4 c4 s
  
& Y" ^" v9 V; v- @C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。- x7 G( K) ^; z$ e6 Y7 u; p: g+ U& T
  
' Y! H* W% S+ u( S5 jD、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,
. \- `4 |' ]  Y6 S; C  P重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。
7 U) I' C* Z6 n0 Y3 b) f9 o- y  
" C# O# \9 F/ Z: ]$ U9 X在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,3 G8 q7 b: X! o! y$ O
这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。
- x5 d! y9 M1 c, z( x0 {  
- _$ I% e  {9 Y+ F: A' j# g真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。
. C8 W. @8 S) v& l5 y" q  
1 {: s4 }, S1 X4 e3、现在怎么办?
4 N- \: H5 v( l! j2 a  
/ |1 z# R* S; R% Z5 T- A在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:1 h! K! b  a% u2 A4 k2 V2 p
  , [& e; |" Q9 _, ~% {' p+ M2 P
A、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。  \3 F8 |5 T* k  p- `6 c% S
  
+ A2 s3 `) a! m6 t5 ?5 n- nB、在你自己的个人防火墙上,完全封锁211.147.5.121。8 V! U' H9 b( A4 Q' V7 |8 A3 U
  - `2 p7 n/ e) U6 l
C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。
$ J- w6 }* E( @& a  7 _  Q8 L1 C! q3 E8 D+ A
绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。% w6 Q2 i& c0 c8 E  N: U
今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?
# e8 J, V' n  `6 L* k6 W$ M我们的HTTP通信完全控制在别人手里。
" L. D: K1 A, j  9 k3 T( P8 T3 F' R1 }$ M5 g
4、如何把坏家伙揪出来?- F, T& w( G& ~+ W  Y3 V
  
' t" d) B3 U- _2 \, c如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:9 I/ _6 i! E# \7 u9 i% r
  ' h4 x. X# A; h- w4 [0 d
方法1:+ k1 o$ b2 v& H9 l# O6 \
  4 i) ^+ o/ L0 V. ?& r! l; H3 a
伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。" M2 K' b" u0 a* x
以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。( R" G2 I& R/ \/ D
那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。
# N, a6 G) E+ Z只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!) \" H- w1 j$ m) ~4 s4 _
  5 d- {1 C. S+ S
方法2:
) {( p, F$ j; r+ }/ E" K, H0 t  # k3 U$ ]  J/ V- ?, _7 |
假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。4 l, d/ e$ l  \6 V! {) @- U; y
在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。& A: V6 i' y' u
编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来,
& _, h) ^5 o# T  i在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。
% ?2 h. \$ H% C3 f8 ]1 C  
% B/ D! u0 V% R6 n9 b上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,
, Q7 B2 Q7 a5 x9 A那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。
+ ]. y3 |7 E) H$ L6 h; Y例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:
( e7 o  v: j, P/ f* IMyIP-12-13-14-15-65-[89]-15-57-A8 U' }+ D+ h1 {: j4 n9 r
MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B4 d1 r  q% r1 B
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C
& d4 i7 A9 ^" PMyIP-22-25-29-32-65-45-[89]-58-D/ v5 ^  `& G9 V1 Y% B& P2 t
  
' a. s2 r1 x, f显然,inject设备极大可能就在“89”所在的机房。
5 [/ g/ u3 m6 Y" A  S  
1 v" V+ O' {) L$ X! X方法3:, o, Q8 D, i5 t7 |6 e  F
  ! ^" |1 |! m1 ]$ b- [: D
另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:
1 z% M- n/ Z" u0 {2 @( K' Ginetnum: 211.147.0.0 - 211.147.7.255
8 m3 A5 W6 W$ h9 tnetname: DYNEGY-COMMUNICATION
, J0 v, E' g9 Adescr: DYNEGY-COMMUNICATION2 Y, ^5 u6 D4 [! \& v
descr: CO.LTD
3 A9 d$ _2 b5 Bdescr: BEIJING' }2 Q* b6 ^. j2 e+ z0 q
country: CN
8 e( u3 U7 }$ ~! b2 c6 f0 zadmin-c: PP40-AP
/ @8 o, K+ z$ Ptech-c: SD76-AP
. R, v, Y" f1 e9 N0 `; Pmnt-by: MAINT-CNNIC-AP; y2 q6 K8 q" _/ \# A0 S
changed: [email protected] 200111124 O, C- {) x$ ]1 e) d0 J6 Z, L7 E6 P
status: ALLOCATED PORTABLE, E$ t& d; B8 w; ~3 T
source: APNIC
* _: v3 O, Q$ X& O2 ]person: Pang Patrick
/ D/ q! ]7 a2 J1 ]& b0 inic-hdl: PP40-AP
' e7 w9 I) k( R% @. O1 B& Ce-mail: [email protected]
) C8 ?+ Z1 T( [# h/ T2 V% qaddress: Fl./8, South Building, Bridge Mansion, No. 536 [# [7 Y/ m0 R6 `
phone: +86-10-631815135 ]' a& j- i8 z
fax-no: +86-10-63181597
$ y! [1 E2 \4 ~country: CN
! F( c" O; C+ K1 y& D- c7 O; Dchanged: [email protected] 20030304. I$ d) T- ]2 {( |& r4 \& N
mnt-by: MAINT-CNNIC-AP
7 d4 ?! l6 r+ i  e6 bsource: APNIC
( a/ t" R, H% t* e  L1 U/ jperson: ShouLan Du
/ l. _, I, l$ g; jaddress: Fl./8, South Building, Bridge Mansion, No. 53
2 L; i! I0 B# a5 e/ D0 N  [country: CN
# i: Z& I! m2 Q; ~/ G, f% Sphone: +86-010-83160000
1 E) x  B$ q3 d# Pfax-no: +86-010-83155528- [# v# g$ {' P# X; H/ }
e-mail: [email protected]9 l  P3 B0 K' y
nic-hdl: SD76-AP4 X/ |/ f/ s% r( I( }9 u6 W
mnt-by: MAINT-CNNIC-AP. M; Q1 Y8 e0 i8 m6 j) a6 q( s
changed: [email protected] 20020403
! ?, H6 _' C0 }; D* W5 Gsource: APNIC
3 K9 E( v4 `/ w& l* x  
+ A' O% [7 X$ p# F5、我为什么要写这篇文章?4 I1 k7 A. Q& B+ V" P1 |
  & m) k2 @# U; ~# Q. N. k, \+ R
新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;
7 \1 K% R2 F+ {: k! l" Q或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。2 ?" Q0 |# Q" D  [' h' c: E. K
可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。" C+ V1 L* q9 r% q
事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,2 N+ n% s4 f0 M1 M+ Q6 e1 p, i: q
但是现在你既然打搅了我的生活,我就不得不说几句了。! r1 O. T. p( L# E4 l
    i- E7 o* T# Z% B% J
6、我是谁?& k" c: @1 Q/ p1 N+ a# r/ V
  9 Z0 ]& R) N8 s1 {
如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。0 V& }# R/ |# s" C- l/ f
#!/usr/bin/perl -w5 x9 O5 X2 x$ P- s% W7 B4 s9 }
use Digest::MD5 qw(md5 md5_hex md5_base64);
! K# q; |5 }9 @# `! u: [8 Q$name = 'MyName';" E' W' T/ {2 h1 i7 z1 m
$count = MyCount;# G3 F; C, E3 `' ^2 R1 ]9 [
for ($i=0; $i〈$count; $i++)
) Z) N/ W( f$ l9 L{
8 y7 T7 c& X+ Y! z$name = md5_hex($name);
( a3 w' ^' y/ s% R5 v2 x}; Y  }* l" ]5 _" }4 X9 N/ d, x/ z
print $name;
6 U% C$ I- \9 P   
. n3 ~# h, C7 \  t1 Q$ p以下签名,用于以后可能出现的关于此文的交流:! t5 P4 _; m* m
1 6631876c2aea042934a5c4aaeabb88e9
: X( l  C4 A; H1 P* X6 x2 a6a607b3bcff63980164d793ff61d1705 p  k6 V8 I$ ]5 L) k
3 6a58e8148eb75ce9c592236ef66a3448
% J$ d8 `* K0 g+ A' Q& O4 ded96d29f7b49d0dd3f9d17187356310
; C, @  C+ s5 L5 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 | 显示全部楼层
是有点专业了,如果不是对计算机网络的工作流程比较了解的话,很难理解其中许多名次的含义。希望楼主能发一些比较通俗或者容易大家接受的文章,毕竟不是每个人都是研究计算机。/ H6 @- k3 n/ V3 F' T; e9 X
总之非常感谢您提供这篇文章,从文章的内容上来说还是很有帮助的,希望您以后继续支持改版。
回复

使用道具 举报

 楼主| 发表于 2006-8-24 00:36:50 | 显示全部楼层
...抱歉,原作者分析清晰,操作精准,如果有相关基础的话,是很值得学习的。8 b6 c- r& l$ K* D+ k

% T& C6 r2 U( g* P7 O/ k& Xrulingdanny斑竹所说即是,以后注意了,实在抱歉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-2 02:17 , Processed in 0.017861 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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