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

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

[复制链接]
发表于 2006-8-23 18:49:01 | 显示全部楼层 |阅读模式
在剑盟看到的帖子,很值得玩味特此转来,建议新手就不用看了。7 K. y  L: c! D; C2 M) K; n- b
5 f- N9 [6 l3 b
- D3 m/ E" K8 l9 a
............................................................................................................................................4 S& b' d1 ]# M: Y1 x1 T- J
% B  {) L$ O; X9 i! |  H) F4 U+ ]
是谁控制了我们的浏览器?) \4 I& m; }, m' G( {# D# `1 ~
1、现象是什么?2 E9 F6 _9 t/ r  k. h3 H2 a6 R$ i
  
+ C6 |9 C2 s8 i大约从今年年初开始,很多人就发现,在浏览一些网站的时候,
/ D0 K: t/ c6 |4 h) D7 D地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。1 N, J' e( N7 H# n
很多人以为这是网站自己弹出的广告,也就没有在意。, Y% t. \! y* l) A" m4 }9 J
  0 E5 {  f$ v! a1 q/ h% E
我是属于很在意的那些人之一。: V; I( Z! Q$ w  e6 l; U, ~
  8 P; l  _, D7 {/ ?" ?2 \
2、这是怎么回事?
8 b7 |* B) ?1 C& v  / |$ K6 q% n/ G& M
经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),# q3 z# q3 J# x8 C8 f+ i9 z- T+ w- _4 J
与使用何种操作系统也无关(linux用户也有相关报告)。! s( m) H! l" @4 g
我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。$ \6 m$ j9 ^* j/ B0 N) x$ p
  
  U* ]1 z+ J2 ]9 {( j那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。& U# N% b+ x& u5 \0 V) \! `% E$ Q
  ' c5 k( u! k4 Y( L, t$ Z, }$ d6 E+ b
那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,0 O0 f, [6 H. C$ n, g; T+ |% H
劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。
: ]. E  {- y# _* F( K* ?4 U) z3 |3 k  7 o; l2 h! |9 S' |* g" ~7 H+ s
伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。, ]+ G# |0 J6 B4 g# b5 [
  
) `: J# Q6 s) d/ r8 \9 r为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。! q. v6 ~) r/ h" m
直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。
  ?- B6 a& u% y7 m2 |' r我写了一个脚本。不断访问这个IP,同时记录进出的数据包。+ m' I+ K. M5 i
在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:
; p: }1 r' C& K) T4 _) ]# RHTTP/1.1 404 Object Not Found
* t* \& p% q  X; P, @: D8 vServer: Microsoft-IIS/5.0
( A8 {# Z# G* C! O& GDate: Mon, 19 Jul 2004 12:57:37 GMT* V6 h/ k! m7 V% n& m! P; Z
Connection: close3 V2 K; P  K  Q7 d. R
Content-Type: text/html
8 v! C4 ^- Y4 l& aContent-Length: 111
/ _( Q& b+ a3 t2 S2 y* Y〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉* z# }2 @: A0 {7 ~" |8 i
〈body〉No web site is configured at this address.〈/body〉〈/html〉
$ p) {# `6 s% v3 z( `' R3 ]0 g  
/ {1 G# \3 k. t, U0 g# @; P* ]* T但是有两次,返回了这个:
8 z  S6 B1 J+ q8 M4 [/ h# r6 x% Q' uHTTP/1.1 200 OK1 ~0 o2 Y- ^  P
Content-type: text/html
2 `5 s2 p+ Z7 [$ R& E6 ^& _〈html〉
+ i  J2 {* \* x〈meta http-equiv='Pragma' content='no-cache'〉
5 x, h; i  |; E3 p7 ^' W〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉
& Y7 @9 g! f" J) W* a〈script〉& `$ E3 I3 J& D0 O6 @2 `
window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');+ B5 a- Q) k: @$ B
〈/script〉6 f% U5 v: h* y1 \  J. o0 r
〈head〉, Z6 d: G, s6 M1 n, i9 R  B5 m
〈title〉〈/title〉  s7 r; C* r  c; d7 J
〈/head〉
1 g/ h0 b+ \* j/ T〈body〉6 I% H$ L5 D$ X; n/ @/ t& \
〈/body〉
$ r# d9 ?' V& u$ Y〈/html〉
: V8 d: \4 l! l& l& U" S  ' ]1 r+ t! `' t0 ^
更进一步分析数据包,可知劫持流程如下:
2 U, P; d' W! z/ G1 r) d2 F  
3 U& H' q+ S5 B3 eA、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。: a, t) G* V* X6 |! c8 V# q
这个设备按照某种规律,对于某些HTTP请求进行特殊处理。' I8 b' {. ~. m7 o& p  V" W  a
  9 t+ W4 y9 {& g
B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。8 g$ _1 Q1 ^: B& e
这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。1 b9 X5 E6 `+ M* v: e- e: d9 H# k
而任何正常的服务器都不可能在这么短的时间内做出回应。  u' T! V  z4 s; ^- ^2 {
  . v- a$ |7 f/ k: B2 o3 E  [1 V
C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。0 D/ X! B9 Z- q
  & b6 ^. i" B6 d$ P# }9 o
D、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,2 a3 }* Q) i2 Y* ~. v3 z1 O0 v
重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。; E  j# y1 m! j  c: m9 w6 z8 n* |
  7 z* x' _5 B7 F: t
在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,' T- [) [1 W  R2 [: V2 V
这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。) C5 A, ^" h( ~; U% L
  " M! n6 G* _3 R3 g  R% I
真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。
2 r% u# f4 I; c  5 I, v* }( n# r# t9 \; @* M% ~
3、现在怎么办?' R- e8 u" `7 v! U+ g& \
  
, d% e% g8 y# n* j  Y) o1 V在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:
# U2 m. b' Z; D5 M  
; ?7 f, p$ s& l7 OA、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。
+ B" n% Q! W) l1 {# u  - E/ P# g& r- W$ i5 y$ K' h( a4 T
B、在你自己的个人防火墙上,完全封锁211.147.5.121。
' Q0 o9 u) @0 c0 x, n& O  # \$ Z" @1 T& W8 g) f, P
C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。/ Q' `8 Y( a: s; h
  
( u! \) z- u6 V# R8 y; g绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。" n6 _& U2 |2 v" k$ Z$ |
今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?3 d: j" V0 P$ E& y
我们的HTTP通信完全控制在别人手里。
9 t& j5 Z* p. Q5 W  
. ]4 d& _& F1 e( v; @0 ]4、如何把坏家伙揪出来?- {1 i' d1 H  h$ N  s& j
  
2 K/ K- h) |" Z; P9 i如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:$ W: Z# O4 A! R. X! @
  1 k: F$ L2 x3 R2 ]8 Y
方法1:$ q: }. f& g8 Y7 d- H
  
# R/ B" k% }+ V% z2 }# A% U伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。
% ~) A: M5 s! l9 y以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。
; {/ u+ y/ s5 d* I那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。8 U. y) y6 x! y/ c% j0 [3 F7 c
只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!
& [0 _6 b, Q0 z; y  
8 W) B; w' H* K  ]+ V) x8 y8 }3 Q方法2:* r8 W$ i! j- S2 b
  ; p% L+ w1 D0 _8 _  ~# F% w! k
假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。
+ N; R" n$ l) D& u; m- [% K" E1 G% p在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。! u1 g* f0 K5 K$ t# |# g" S7 x/ E% v
编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来,
: M! ~2 `- R# F6 H- @在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。- G* x# C3 A; b2 A1 \& v
  # j: Q5 H3 c" V- {
上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,1 b$ @# Y) {! w& C7 m' W$ j+ a4 }' M- {
那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。6 D# Y1 R: V2 U0 E+ z
例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:
# q' A% V4 ?8 t0 h1 B/ iMyIP-12-13-14-15-65-[89]-15-57-A  C8 I  m5 z2 K& E9 w; F
MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B8 y; [7 N6 s8 Z% G  N, n0 d/ q
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C
9 N5 s  Z; \4 v6 Y! a2 dMyIP-22-25-29-32-65-45-[89]-58-D
9 O, ]0 D# P2 p% r  $ I) Y+ b8 P0 E2 P4 a8 z$ B
显然,inject设备极大可能就在“89”所在的机房。4 s9 i/ D! g" F* Z$ m
  
7 ]$ A% l3 y1 K5 r: y方法3:
" q- A+ t$ T! Q( j! G! h& B+ F  1 t' T+ q# |- ~" u
另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:
1 ~( J6 O: c' `7 ainetnum: 211.147.0.0 - 211.147.7.255
# X; h  P! J* v; {netname: DYNEGY-COMMUNICATION) b6 e# \$ n- W
descr: DYNEGY-COMMUNICATION
) F  S+ P$ c& z/ d5 w" O+ w; o/ Qdescr: CO.LTD1 ^( O- u$ E' U6 Q- v. U& ?  u
descr: BEIJING7 i  r% ?* D$ p2 N
country: CN! E2 k" m. N6 @; a5 G$ z6 T% S
admin-c: PP40-AP
' h; o5 G5 ^7 p' |; Z, C- xtech-c: SD76-AP
) j; c" I* x6 gmnt-by: MAINT-CNNIC-AP
2 e  l" C+ X$ _- T% N1 ]7 f: x1 lchanged: [email protected] 20011112  d; D3 p# T9 M$ I5 H
status: ALLOCATED PORTABLE
" K3 e- J5 x0 E  Y/ ~source: APNIC' R) b6 v0 \, Z5 y+ ]. {# R
person: Pang Patrick
* ~% H$ U" P: G8 [5 B! B% K6 z0 xnic-hdl: PP40-AP
3 |6 j' s3 ^) H( b7 R( s1 Fe-mail: [email protected]) `# p0 c1 F  B# B3 H" Z! q5 C& u6 R
address: Fl./8, South Building, Bridge Mansion, No. 53
6 T0 X" ^3 Y; s5 Xphone: +86-10-63181513; @+ @7 L# E1 U/ M1 ~% w& }% W
fax-no: +86-10-63181597
) M6 E- j6 h% L- Ycountry: CN
: O, w* j; O0 _5 Tchanged: [email protected] 20030304! F0 ~( I+ S. _5 U$ O, s! f
mnt-by: MAINT-CNNIC-AP' S6 ?, M% E# l
source: APNIC
& [, o6 ~# {4 Y; J6 Y1 j3 Q' Hperson: ShouLan Du
5 {2 x' {9 O1 q% o, k- d1 ?address: Fl./8, South Building, Bridge Mansion, No. 53
  b% }+ _+ D4 u# h* @0 Pcountry: CN! d3 ]8 f. X) Y- r' V9 ?
phone: +86-010-83160000
% e. b0 u; h8 l; ^fax-no: +86-010-831555283 F( Q* p  E. L' w0 W" ~" q- z; Z
e-mail: [email protected]
$ ?; q1 d. A  unic-hdl: SD76-AP
1 W+ Z7 C7 b5 @$ }" ?mnt-by: MAINT-CNNIC-AP. _) s6 m. V+ p0 X! g* s
changed: [email protected] 200204038 [7 E5 }+ e5 y3 t5 [, Z/ U4 l$ ?) y
source: APNIC
0 `% P- H9 P% j  
' j" a! T8 W$ }! P5、我为什么要写这篇文章?
# Y( M- |; a; x: @; @  
  x  E$ @: R0 E7 l3 ]7 I2 X新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;
) l9 M6 S& k) @, p或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。1 B/ s8 _" r+ K* \
可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。, C: i4 n! @: p' B, F9 m# C# Z
事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,6 U4 g7 ]8 S! W! _* G& t
但是现在你既然打搅了我的生活,我就不得不说几句了。
1 o5 `  t2 G9 l: }& ]! R  
7 ^8 e6 P* T9 X. h  o$ _& W6、我是谁?
9 m# y/ b0 _3 w( I- N  `9 |  4 ^- [3 M9 C6 m' s; c
如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。
! ]# g& j) V* y( h3 F' G#!/usr/bin/perl -w
, e* }6 k, X& ouse Digest::MD5 qw(md5 md5_hex md5_base64);
2 v9 b& j; ?, G  F$name = 'MyName';; ]- l8 m! l: ^& s1 c
$count = MyCount;: @: K( B3 ^1 z  n2 ?1 r
for ($i=0; $i〈$count; $i++)
- G& R. v6 C4 e2 c; M$ v/ ?{
3 e+ _4 l4 J- f4 @$name = md5_hex($name);
) n6 y; T9 H' x1 M+ j}% e/ `* k* ~5 ^0 O
print $name;
6 \. A) p: `$ }- k& G) C. J1 L    / B/ Z) h" ?, D0 h" c# m1 R
以下签名,用于以后可能出现的关于此文的交流:
! J3 t+ P1 D( A1 6631876c2aea042934a5c4aaeabb88e9
' `  s8 T7 C' l/ D5 `5 U0 h2 a6a607b3bcff63980164d793ff61d170+ n& ~  _, _( }! k& _. F
3 6a58e8148eb75ce9c592236ef66a34487 h, a1 F$ y. x4 d7 T# h5 S
4 ded96d29f7b49d0dd3f9d17187356310) e& _6 [; o, l0 J
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 | 显示全部楼层
是有点专业了,如果不是对计算机网络的工作流程比较了解的话,很难理解其中许多名次的含义。希望楼主能发一些比较通俗或者容易大家接受的文章,毕竟不是每个人都是研究计算机。
& X: K$ j* ]+ u4 P8 H+ L6 |* @# A总之非常感谢您提供这篇文章,从文章的内容上来说还是很有帮助的,希望您以后继续支持改版。
回复

使用道具 举报

 楼主| 发表于 2006-8-24 00:36:50 | 显示全部楼层
...抱歉,原作者分析清晰,操作精准,如果有相关基础的话,是很值得学习的。; W$ S: T: P  T8 d
1 |7 r1 p, `) `
rulingdanny斑竹所说即是,以后注意了,实在抱歉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-17 06:38 , Processed in 0.060168 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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