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

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

[复制链接]
发表于 2006-8-23 18:49:01 | 显示全部楼层 |阅读模式
在剑盟看到的帖子,很值得玩味特此转来,建议新手就不用看了。9 g5 y* n+ _' y5 U  Q; c
6 H# e* u% l9 ^+ g- W0 _

  I" g* w$ }- C  f- p............................................................................................................................................. C+ j! l9 q& _
4 n, J  I1 J% N# h1 e
是谁控制了我们的浏览器?
) }  K3 U4 H$ K- S5 K7 Q" d/ p- \
1、现象是什么?2 ~' N- [3 E9 q0 e5 r( I8 H  r3 U
  
2 K- G2 P) |0 p1 @大约从今年年初开始,很多人就发现,在浏览一些网站的时候,1 {7 u: A1 V$ v. q* o- I& L! B2 X6 j' F
地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。
# }+ N0 q" T' ~* ^很多人以为这是网站自己弹出的广告,也就没有在意。/ u6 x6 \. N; s
  
9 c% \$ C& Q& F0 u) E; W! v我是属于很在意的那些人之一。+ R, K; y/ U6 Y. ]4 f5 [
  ; o5 [+ W  E1 ^& f+ w  S( o
2、这是怎么回事?8 U& _/ o5 q5 j- _  u
  
! g5 i! d9 V3 l经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),& \# y% ]7 H. G7 X
与使用何种操作系统也无关(linux用户也有相关报告)。$ D6 s' j4 |! H- `9 O
我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。
1 W1 b1 @% \9 l  
/ v$ M: d( n( Y' {8 R- |那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。( i5 \& R# R1 K3 w; q2 V
  ( \& @; ?6 X: j6 H- s4 n6 C
那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,
! s6 D2 H, T6 q& q7 V6 p; N劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。
: E$ }3 q) f4 O9 ]$ z8 o+ B  : n( m4 P* q/ I/ M
伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。: G3 Z5 z& F! b  H4 ]: F) l
  
6 Y1 i2 m! o+ |# C; Z为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。9 h" P! R' G# s& M5 J0 b) e  i
直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。
9 e) A) ?% ~+ U9 x) H* o" b$ C我写了一个脚本。不断访问这个IP,同时记录进出的数据包。4 ?# _& a* q" Z6 j0 l; o
在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:
6 S* F3 M  O- Z5 q4 ]- \HTTP/1.1 404 Object Not Found
& ?1 E! d# f' s! H/ L8 V  qServer: Microsoft-IIS/5.0) A( r2 t' I5 J
Date: Mon, 19 Jul 2004 12:57:37 GMT
% D2 L- J& _( Q% mConnection: close
9 j1 F6 O- u  v% ?Content-Type: text/html
3 G* S* m% Y; @3 [9 @8 o5 l2 A& hContent-Length: 111$ N2 W$ F$ j2 {3 _4 W
〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉8 k; \, A8 B1 p, M$ l6 N9 z
〈body〉No web site is configured at this address.〈/body〉〈/html〉2 J- A0 B9 d, P
  
. L. e- x% u* E  y- L8 m) X但是有两次,返回了这个:; i) u. V" b! I/ h
HTTP/1.1 200 OK8 S7 D- R. @/ }9 F
Content-type: text/html, h' z5 [& K" }2 @+ a0 q. V
〈html〉8 H0 ]& d1 k( Q1 g2 u# E
〈meta http-equiv='Pragma' content='no-cache'〉
/ r( m2 [7 l& g* K( Z〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉
, h1 G9 y: i) \$ T% g+ Q〈script〉
* l6 V6 u. s( f4 u/ c& }window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
4 ]5 r1 R' w- p% F. r〈/script〉' U( V* l9 D- D$ ?5 {5 S) t
〈head〉- O+ _' q* K) N$ G
〈title〉〈/title〉# {6 M; y$ \) ^2 C5 Y* ]  B0 q* I
〈/head〉! e9 v3 v1 y" c+ ]: N8 X
〈body〉
+ g; y& E( K$ z; |" P# i: t〈/body〉. z% M% H, e6 G% w' b5 g
〈/html〉
9 J$ b1 t# O9 d3 b% h4 ~4 N  ' y; M; b$ E" J; m& i7 M4 a& C
更进一步分析数据包,可知劫持流程如下:1 f. `6 d0 z, s8 N( p
  
5 i  \6 u% p, U7 E2 T5 HA、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。+ k9 [4 e9 m3 i- j  B
这个设备按照某种规律,对于某些HTTP请求进行特殊处理。1 c- D4 `8 o) u  }4 w2 P  y7 g! k+ F
  
6 r9 h4 w! D5 C$ O# g( l0 BB、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。* ?6 y/ `% C$ l+ ^, \% u
这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。6 c  }/ _/ k8 Y# H8 s6 q) H6 P& V
而任何正常的服务器都不可能在这么短的时间内做出回应。/ g1 X0 X( q, g# g$ a( Z
  
0 t( w  g7 }. E/ c( J4 eC、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。* p* g( W" Q0 N: R
  / y' t; D. H- U0 B% U
D、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,# t& C* V7 @  n8 f7 k: O
重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。, K8 P$ _/ v# p8 I
    Q8 @; k8 n8 H4 `! ?: j
在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,, j. k2 ]& C5 M# h3 _# I- ?8 q$ X/ q
这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。
; e: y/ ]9 h( J. d$ I  . d  n% Q* D6 C4 W3 C# ?+ L
真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。, K! [/ P- ?# X4 A6 G0 d
  9 F! F1 X8 R* |
3、现在怎么办?
6 v* x4 Y: j6 @8 j& _  0 n/ D" t+ W( F$ x3 g. U& Z% b
在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:
6 C+ f3 L2 L; n  
4 S' K0 M& l; I: a  T1 T2 `& b7 Q0 OA、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。7 F- x1 N) t& _0 z. R% K
  & I" M7 B; I0 f3 [; J
B、在你自己的个人防火墙上,完全封锁211.147.5.121。  y+ Q% o% S4 S% _# V" q/ M
  1 F  c; p! F  X$ X
C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。' M& x; o- H3 \
  
9 a- D: Q% [( |2 K" z绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。+ F/ S! a* C, u1 ?
今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?. z. h9 u: ~2 |+ A( z
我们的HTTP通信完全控制在别人手里。
7 U$ M0 z# `9 j6 U! y  $ {" @. `! c' b+ d; @
4、如何把坏家伙揪出来?+ I5 }# y/ Z4 a% ~
  
8 d1 p: p& p. H4 c. I如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:- _' c6 J1 w  @* F/ V2 v
  
) N7 C: K) i  l% G0 t方法1:
# ^3 K9 ]4 `0 O  6 k1 y" H, c  I; T
伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。2 |% T! D/ Z/ S5 ^# `$ `6 G6 S: L) ?
以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。
& Y3 N# ^; ~7 d0 l9 s# q那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。+ L, F0 t% S8 b& h" h
只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!: }+ R5 ], j/ h* g0 R7 D
  - g- E, G6 Y+ T5 X. p
方法2:
7 X5 C1 D) a0 f0 y' n) T4 g  ( d2 c% I6 ]4 P1 s6 E
假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。4 ^) a; ?; j0 Q3 L7 f
在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。# x- G5 w& S! k
编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来,4 G, T4 k3 p0 B5 a6 p! I3 {
在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。. {5 T4 R5 m) h2 V" k3 ^
  
% C* F! T# z) W' d  U2 T6 t上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,
5 T8 B5 Z# Y5 m! P那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。
; `  _& |; ^) d1 W: z" |4 P; W. L例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:
( v" ~( o/ r) _MyIP-12-13-14-15-65-[89]-15-57-A
! \. c; Y5 l1 YMyIP-66-67-68-69-85-[89]-45-68-84-52-44-B! g5 O  k$ |1 w" d& I6 Q6 p
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C& E0 a* z% ]! ]* a3 e
MyIP-22-25-29-32-65-45-[89]-58-D6 E, j  X, ?. x7 x& B
  & C; M) y3 z# @. N
显然,inject设备极大可能就在“89”所在的机房。! `7 z4 S$ `; y$ T& r- L
  
  o, v" f3 m1 V/ ?方法3:# @* B8 o1 Q0 U* @. ]  m. ~7 c/ o
  
' `& L. S# c4 t, t! [. j另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:
" F% y( m9 B- Pinetnum: 211.147.0.0 - 211.147.7.255) ?" P% P( _3 m1 X2 x( I
netname: DYNEGY-COMMUNICATION
( _0 F/ [! ^4 l/ kdescr: DYNEGY-COMMUNICATION
6 b: S* E! W/ M  C0 vdescr: CO.LTD% }5 V. N2 z& T1 k2 z
descr: BEIJING$ i0 q. h$ g  @) g
country: CN
2 s2 y2 d+ l# e' K3 Kadmin-c: PP40-AP' q6 m$ [3 Z+ K1 z' {$ D
tech-c: SD76-AP
" o2 _. j+ y) D1 amnt-by: MAINT-CNNIC-AP4 x& l5 q8 N9 Q
changed: [email protected] 20011112  [3 \. H4 r6 A) Y; L! p
status: ALLOCATED PORTABLE$ Q% ^; `+ i! K
source: APNIC. O& |! M: V. y2 E: d! V
person: Pang Patrick
: Y4 z, ]2 J- c6 Q8 Znic-hdl: PP40-AP
  x  `7 Y  Y0 @$ p6 |e-mail: [email protected]: z' `* a+ q. H$ K5 x  O
address: Fl./8, South Building, Bridge Mansion, No. 53# e2 n: l6 Y1 N" u" O
phone: +86-10-63181513- N# g7 K$ Y4 G! m
fax-no: +86-10-63181597% A* v8 X; y6 S# s* o- R
country: CN
, H$ H9 e: G( ~+ g9 u( cchanged: [email protected] 20030304
' L$ ]& U" q; ymnt-by: MAINT-CNNIC-AP
! {8 h7 L/ f) P& @" E4 Msource: APNIC
! C' E7 A9 d' _person: ShouLan Du& d9 t) y+ @1 ^6 }
address: Fl./8, South Building, Bridge Mansion, No. 53% Q/ ~% H2 ~8 g; Z7 W0 Z8 j+ G
country: CN
3 x1 ?. i. k: J3 r; ^. Fphone: +86-010-83160000
. T0 f) K7 s3 ?9 Ffax-no: +86-010-83155528; n/ V# o2 N7 t
e-mail: [email protected]
1 `! a8 E6 l! R2 Qnic-hdl: SD76-AP
+ S0 P( j/ W  J& zmnt-by: MAINT-CNNIC-AP
3 Z/ Q6 @1 C1 W$ O; ~! R2 Kchanged: [email protected] 200204033 J! ~$ @' A+ z2 l, P% ?0 {# A
source: APNIC
4 e1 m; {# ?7 D9 o; v  $ l4 E, z" w; C7 S3 t9 i! X3 U
5、我为什么要写这篇文章?
& u& W; ?2 ~9 M' G2 h  
3 ~  a% k- s8 G. x新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;" t' ]* _- |. Q! r, R9 _8 L
或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。
' B7 _& s" y% ~' }0 }: S( P可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。, f4 |9 |; L3 H3 ~$ D
事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,
6 g; g+ e5 `# V2 ]/ B但是现在你既然打搅了我的生活,我就不得不说几句了。
7 F! k3 E; {7 C  
& @. {/ D2 U' s  G) X6、我是谁?
' q# [8 T* P& f+ I% ^  0 c+ o% l1 O( a( C
如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。
# x/ M! L4 {% V4 T  \4 ?" i# @#!/usr/bin/perl -w* x+ z. c) O# B4 G" c; A, n# H: ?
use Digest::MD5 qw(md5 md5_hex md5_base64);- }3 n6 h! u+ L5 @
$name = 'MyName';( r, k  ?6 H$ T7 \+ o6 Z+ V* t
$count = MyCount;% \7 U5 Z8 x  r4 O2 t
for ($i=0; $i〈$count; $i++): f. e* x6 L- T0 }' P$ @6 _
{5 ?/ t+ Q9 \* q" }  ^
$name = md5_hex($name);+ ?! C. D  x8 M  v3 x
}6 _  e$ E( T, L/ D
print $name;
1 A1 g7 ^0 h! W, W* k    6 U1 N' c6 g  r: p
以下签名,用于以后可能出现的关于此文的交流:
, z+ o/ A: |6 x' i( t1 6631876c2aea042934a5c4aaeabb88e9
+ k5 p+ U0 E& {* v8 G2 a6a607b3bcff63980164d793ff61d170. D' ]- c9 D  p. _2 z# z3 f; w
3 6a58e8148eb75ce9c592236ef66a34489 a  ^9 ]8 \& \7 R
4 ded96d29f7b49d0dd3f9d17187356310( @* V: g( m5 J  M( y
5 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 | 显示全部楼层
是有点专业了,如果不是对计算机网络的工作流程比较了解的话,很难理解其中许多名次的含义。希望楼主能发一些比较通俗或者容易大家接受的文章,毕竟不是每个人都是研究计算机。
, A  @/ I: M! b+ X3 b) u总之非常感谢您提供这篇文章,从文章的内容上来说还是很有帮助的,希望您以后继续支持改版。
回复

使用道具 举报

 楼主| 发表于 2006-8-24 00:36:50 | 显示全部楼层
...抱歉,原作者分析清晰,操作精准,如果有相关基础的话,是很值得学习的。. Z2 C) F/ s5 E; l$ F. K3 Z! r
+ D& y: ]- t% d( g" [4 L
rulingdanny斑竹所说即是,以后注意了,实在抱歉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-1 16:54 , Processed in 0.011594 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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