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

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

[复制链接]
发表于 2006-8-23 18:49:01 | 显示全部楼层 |阅读模式
在剑盟看到的帖子,很值得玩味特此转来,建议新手就不用看了。% }3 C7 R8 h0 `

' b" i0 T0 j6 n& z8 j/ p, o- V' d1 ^. i" p2 F. @3 g  e& F; m* Y  f
............................................................................................................................................8 e# X: h( m0 J3 w) W$ D& B
$ v3 O3 \( w  l. K) B& W+ g/ [
是谁控制了我们的浏览器?. I2 d5 d+ g* B. S8 H6 M" {/ D
1、现象是什么?3 \$ U. K+ u6 I* c
  
0 O. w. t1 |# F, h  H  S- l大约从今年年初开始,很多人就发现,在浏览一些网站的时候,3 a* `- n. b3 t' t  ^
地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。
: Z! U# S. n. N( h6 V$ h很多人以为这是网站自己弹出的广告,也就没有在意。
' M2 b& N8 t0 A5 A; u1 Q5 w7 {  6 e7 Q: [5 U7 ?7 S3 |0 D9 w  e+ Z& n
我是属于很在意的那些人之一。, o9 G% t; s7 D# V  D- b: {) `, S7 E
  ' }6 a8 u0 p7 z: p
2、这是怎么回事?
9 e3 m% w7 d6 u' @5 R1 R/ [0 y  0 U0 N0 ^& |9 i0 M  p
经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),
/ S# R8 [4 v/ }$ g8 _# n与使用何种操作系统也无关(linux用户也有相关报告)。* b1 F% A" B: q4 }
我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。5 V5 E3 g9 m- W% c
  3 L1 f- Z+ ^! N( b: [( z/ L
那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。
# y( }% Y. o/ R0 e9 r. K  
8 U" j3 j3 D/ k那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,+ }* B5 [( [. a# q; r
劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。
( s, @3 i5 ^, w3 S4 d0 T, d  
6 S3 W# D0 x9 V3 ~" _伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。
* c; Q: o. @5 F  & _2 ~* C- C# w
为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。
  |( ~+ _4 _: H直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。- m! G+ d! V# y+ g* p% _
我写了一个脚本。不断访问这个IP,同时记录进出的数据包。
& J1 y* F& y/ D5 Y. i* c7 X在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:! I5 f$ g, d! H# }& {
HTTP/1.1 404 Object Not Found$ J. n9 S3 q: Y1 {$ w
Server: Microsoft-IIS/5.0
$ z- L8 E1 q/ T' r+ i0 h& qDate: Mon, 19 Jul 2004 12:57:37 GMT/ L8 x) w* ]" `% _3 T. p2 J
Connection: close9 K; d" W$ l0 {- l
Content-Type: text/html4 O" M+ H% B  t0 \9 v+ `
Content-Length: 111
8 R  L" W+ q6 q  l〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉
* d: e6 `9 ]9 V7 F0 ]. C8 _" A〈body〉No web site is configured at this address.〈/body〉〈/html〉
( i! E7 X2 n! @* b; G: Q% C( N5 ~  6 S2 i& z: @7 c6 Z
但是有两次,返回了这个:+ z, f3 M0 p# [3 Z) g
HTTP/1.1 200 OK
; e2 D5 L% S1 jContent-type: text/html+ j4 \& Q8 ?0 p9 P% g
〈html〉5 v7 d% ^7 q+ m
〈meta http-equiv='Pragma' content='no-cache'〉; R0 M) B; v% P7 I# P
〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉" E' b2 m4 X( D$ v, E/ h
〈script〉
& N: ~5 N7 D- T( {window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
# r4 R' h: u: U1 H" t5 [  U+ D〈/script〉2 Q9 \6 ^, ?; B1 S  H( \: |" C
〈head〉+ ~8 Z! N, j* E1 r+ ]
〈title〉〈/title〉1 ?( w$ }. G% b
〈/head〉
( Q% w# I- W& i/ K- v" Y: ~5 v〈body〉
  A) _' _. x1 Z" P; r/ N9 [! S0 ?〈/body〉  {# F" _4 Y! \9 n  D: ]5 Z  s
〈/html〉
" I0 K- l; f( }; z  ) l# R) x) K' O- u% y* @' P4 n% @9 [! i
更进一步分析数据包,可知劫持流程如下:! U! E0 y7 |+ U$ E
  
( b. r5 M7 V/ w  y* hA、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。
. h- t/ i# }; I, p$ B' W# h/ r这个设备按照某种规律,对于某些HTTP请求进行特殊处理。
8 x7 U4 g$ I. s9 C7 m: J  ' O3 o' j. }# q# i7 z4 T! y7 }
B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。7 U6 k3 G, P; q+ t% K/ P3 {
这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。
$ K9 o- g( L3 I3 e; [0 ~" I& W而任何正常的服务器都不可能在这么短的时间内做出回应。! m6 W5 @! F6 E, h
  
- X# K2 Q+ P: k" H! }  I1 PC、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。
8 w) F0 k+ W" [, s' Y) V* N0 K  
7 P6 O  N- `1 P- ?. I% bD、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,: ~7 n4 O# `7 b2 b5 y
重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。3 n& ?% r1 _$ _% E, a! r, I  {
  , q* |5 ^( E/ H) \' S) Y: _. _
在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,1 f  E6 w/ r  K. D+ `- [
这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。
' Q3 L; [2 A) V) i. `! y  
, @6 y" ]) \6 A* i' h真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。
  ^; r- T6 H+ p$ o  
% q) x# ~1 @0 L$ Y: G( t: f3、现在怎么办?* |) F8 c+ j. J* O
  
/ x0 \' A; \  C& A/ o* ~+ h2 Q3 @) \) z在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:
! Z$ k: m2 E3 J7 N2 o  
0 q" t! e- \3 U* {- g4 `& OA、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。8 P" F, R& S% t- F: ^) T) N% C$ }
  - J) ^: M% n. K
B、在你自己的个人防火墙上,完全封锁211.147.5.121。2 g/ |% e$ f( o2 o4 f' I2 @; C
  ! ~* G, v6 c, f; _4 P4 n+ |
C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。
' I& \, H/ p7 {+ U  3 F' m% Y/ K- W/ I
绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。1 i3 X) |  f' n! W1 }1 H
今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?! y8 ^" t, K% T8 u, ^4 H! `  b% A% N4 s
我们的HTTP通信完全控制在别人手里。* X6 j" o6 e' g5 Y% x2 f
  
! C% v8 f3 P% e' R4、如何把坏家伙揪出来?; {6 ?' Z( d- J
  4 R% Q: }! s% H% t) u% Q) B
如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:
/ z0 W+ L- Z) B; v; O6 O  6 [7 K- T7 |) X/ M7 k4 W
方法1:
- Y5 Z3 }, ]5 A% w& J* v  
! W8 {) P' _* _4 ~8 p伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。& D& E9 `0 U9 Z1 n$ k
以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。
  r3 {* d" Q+ n那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。
2 }: T: q& D! m. l只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!3 F4 r# Y) F* x& w7 }" T; G" |
  
1 f& V0 a/ b/ S  L6 j! m; E方法2:
3 s! L; k: o1 _& x4 ~. K9 h1 R" r  
% i. w7 h$ A4 `假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。/ G# ?- E, G3 p$ \% ]) f( F
在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。! M3 V$ G/ G, W1 t1 ?
编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来,, ]6 U1 a, o: T& W- H  t' U
在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。
3 Y9 u8 T$ [+ w. B6 x& x  ( n% _- q2 q4 t4 O% X' \, [& R  b
上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,
! l( O1 B5 R* D% }& F) Q3 q) c那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。
) m* R$ t7 F* \0 |" t+ W例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:
" G8 C( Q3 \2 x5 c, S- ?' ZMyIP-12-13-14-15-65-[89]-15-57-A
& N( s( k. i4 Q0 t. }MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B1 t% E5 c7 {" J6 i" u2 ?
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C& H8 g, y7 W8 U. D  z  G0 p
MyIP-22-25-29-32-65-45-[89]-58-D4 l+ x( e8 ?3 B9 E( P' N
  2 K# \  l7 U' w3 ^
显然,inject设备极大可能就在“89”所在的机房。
) k. @* H: e" n: x. N& B  7 c- v6 U: F, f5 k- ]
方法3:
8 D# V7 o/ j6 P8 U& m  , q3 p. \; c( [
另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:* P5 r  ^3 z, X# J0 s  h: [  T
inetnum: 211.147.0.0 - 211.147.7.255
6 w+ z4 U- d! h( e; Q2 l* e( Pnetname: DYNEGY-COMMUNICATION+ {% p8 l0 `7 T# K5 t  |+ ]
descr: DYNEGY-COMMUNICATION- g2 v3 |& y) D5 y( @2 M, q
descr: CO.LTD. G9 ~" D0 s, X- S* [& y7 d
descr: BEIJING. B1 I# B3 O7 C5 C: ^, c7 o
country: CN3 `2 a: e8 c8 R9 R; z/ W
admin-c: PP40-AP
0 h0 e- S5 ~. a: atech-c: SD76-AP6 l+ ~' S/ ]- r7 ~. a1 O& A! x
mnt-by: MAINT-CNNIC-AP, p# r( s# Z+ U) L1 ^' @1 U+ g/ o
changed: [email protected] 200111123 G2 Y1 l& U6 y. u5 Q
status: ALLOCATED PORTABLE; v& q1 X: N( e; v$ C+ h
source: APNIC& o' l8 \5 \' ]
person: Pang Patrick
9 M& ~8 S1 m" ^* C4 s% k6 ynic-hdl: PP40-AP
5 Z  p) t: Y! `# X2 Ne-mail: [email protected]7 ]3 S$ b7 ]& E; G# f
address: Fl./8, South Building, Bridge Mansion, No. 53
8 E% ]1 m' c% m2 X1 x6 Xphone: +86-10-63181513
- C5 @& a/ B6 Q2 _/ Vfax-no: +86-10-63181597
( J/ J8 E) `; Y0 ]& Dcountry: CN) a$ R2 n4 d  t) Y, n
changed: [email protected] 20030304
$ v$ W* d8 W9 u4 ]$ J% Amnt-by: MAINT-CNNIC-AP( F* d6 j  j3 k) w% z2 Z( J
source: APNIC
- a) o1 e: P, {2 P, D* Kperson: ShouLan Du# m% z9 J- |3 U& u4 }! \/ c
address: Fl./8, South Building, Bridge Mansion, No. 53
' q8 |. t2 F: L* Y, ~8 N; h/ q' Ocountry: CN5 u' @. T2 f% R8 C$ ]5 M0 a* u. l
phone: +86-010-83160000/ {3 @7 f7 g) S& p8 |, J
fax-no: +86-010-831555288 Y# \- D, F, [  Q+ n  S1 y+ `
e-mail: [email protected]
" l5 n3 H1 d5 l2 r6 Znic-hdl: SD76-AP0 J5 V) h3 _$ m7 t+ E* P
mnt-by: MAINT-CNNIC-AP6 l+ P. S4 i7 F) \- @7 z$ x
changed: [email protected] 20020403$ ~9 I6 V& {" B4 S! k
source: APNIC9 Y8 v6 M5 q. z' Y' `
  
+ a! T4 r: w# H5、我为什么要写这篇文章?
8 o) N, G' T1 y9 ]  , _1 n5 ~# G# e. |/ z
新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;
( q- R! p  t/ B0 [2 W( ?9 C6 e3 M1 ]9 V或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。( p2 c" @0 k8 l8 F" }$ K
可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。6 a8 j/ s4 T' I7 T6 P4 M# F* A
事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,
5 S  E% I0 U1 f* `: q3 a9 ]但是现在你既然打搅了我的生活,我就不得不说几句了。0 |! e4 S: y* a$ @  S/ B
  ( G% M. T0 @: S$ \8 S
6、我是谁?
; _- R( F2 a, n  
2 w, \5 y7 f0 v, ~7 J, Y1 o如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。
# F/ ?/ J# @( B! z1 A. k#!/usr/bin/perl -w- U# K3 k3 P  c# l0 S$ O
use Digest::MD5 qw(md5 md5_hex md5_base64);
$ N/ w7 I, ?6 G' o9 x+ t$name = 'MyName';! n9 P+ ?4 g: \
$count = MyCount;2 J% H; Q$ t6 x8 o
for ($i=0; $i〈$count; $i++); z% }' a" d8 w( Y7 a
{
2 N) g- E5 T$ u6 S' ?; R5 O0 e6 F$name = md5_hex($name);, I. g, P3 U" A2 s
}
# f& M9 ~$ u5 ?+ C- W, Rprint $name;
& K7 g( q0 n" d8 s2 R9 r. [   
6 C; H  J$ d- n+ ?以下签名,用于以后可能出现的关于此文的交流:
+ {3 H5 Q# t/ M1 p1 6631876c2aea042934a5c4aaeabb88e9
$ v( n) Q4 ]/ n, S* a$ b# O6 k2 a6a607b3bcff63980164d793ff61d170: n4 B. R& N& K: b
3 6a58e8148eb75ce9c592236ef66a3448- o. k# h' M( [5 E0 Y+ J, s
4 ded96d29f7b49d0dd3f9d171873563106 o3 P, Y6 T  [5 v5 i+ `
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 | 显示全部楼层
是有点专业了,如果不是对计算机网络的工作流程比较了解的话,很难理解其中许多名次的含义。希望楼主能发一些比较通俗或者容易大家接受的文章,毕竟不是每个人都是研究计算机。
. ?, C# Q0 q$ ?$ z总之非常感谢您提供这篇文章,从文章的内容上来说还是很有帮助的,希望您以后继续支持改版。
回复

使用道具 举报

 楼主| 发表于 2006-8-24 00:36:50 | 显示全部楼层
...抱歉,原作者分析清晰,操作精准,如果有相关基础的话,是很值得学习的。
) N3 z4 f  Y9 S& }4 i8 c+ |) f: S/ b5 f( D+ N/ d+ C
rulingdanny斑竹所说即是,以后注意了,实在抱歉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-8 17:26 , Processed in 0.056241 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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