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

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

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

9 r) B6 M# ?. D6 V+ }5 ~+ G
3 e1 L) X! J) D- S* W............................................................................................................................................
4 Q1 Z3 Z6 K* U2 `% H
4 T6 \$ W) n2 g0 D是谁控制了我们的浏览器?+ h7 B8 R6 a/ C5 Q: j6 B, F
1、现象是什么?
( Q* }, O# t+ r  S* M) [7 `; M* w  
1 e" C9 o0 l4 P( Y; }+ C0 W大约从今年年初开始,很多人就发现,在浏览一些网站的时候,
8 R: ?  Q- ]+ _  G: d, @  \地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。- H) d7 N& e$ ]) _- ^* b- |6 n4 Q
很多人以为这是网站自己弹出的广告,也就没有在意。8 ~1 f0 u, N: h" U! n3 L0 @$ b
  
" V7 o1 I! g  g( a& S3 Z3 l我是属于很在意的那些人之一。
( L1 M( v/ A4 s  
' k+ s0 s; ?) D. p2、这是怎么回事?
; @, B) P, {' y. }0 _9 ?9 T  
  O6 P9 ]. W: N# U( t经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),
, }; v; }  ~  w与使用何种操作系统也无关(linux用户也有相关报告)。
' Y& ^1 E( N0 q' o- d2 p我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。# F$ |2 P9 B! U" S( }' c8 w5 {
  " _/ j! c0 d4 }  j; G2 Z
那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。7 ?4 m" g* f# N( C; L
  / X" i+ F* q8 x
那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,/ w' F9 F) T# m$ B+ i
劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。& X$ \. c* e. ^* Z* g
  9 h4 c* D4 w8 x$ L( _! G
伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。
2 N; R5 }- ~) H. |7 K) x  
! O* F( S. w+ E3 i; \- r为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。
- _0 X9 u" E; ?2 w$ _/ B" a7 d, v直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。3 [) b) j3 w  G2 E
我写了一个脚本。不断访问这个IP,同时记录进出的数据包。7 x* m" q) ?! r1 ]3 g) {5 @/ \
在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:
/ C. \# S  D$ {/ D: U7 b  wHTTP/1.1 404 Object Not Found+ ^" k' }+ w# r* N, R. [( D6 y% M
Server: Microsoft-IIS/5.06 R6 B( g& O4 i. Z% `( Q. s
Date: Mon, 19 Jul 2004 12:57:37 GMT1 g" t& \  m9 v! \
Connection: close+ O3 ^8 t( A9 O; R( z: H
Content-Type: text/html' Z, ~( f- m9 Z  r- }2 i
Content-Length: 111& A" k) L. ]  x
〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉' M6 Y2 b" S; M+ p+ ^
〈body〉No web site is configured at this address.〈/body〉〈/html〉
8 B  @! b" u) w* F: G0 T  r% q' J  
  p, ]9 c( Z2 ]  A# K但是有两次,返回了这个:' z7 D* |( p/ [9 ~3 N1 J8 N
HTTP/1.1 200 OK. f% v8 m* d! r4 C1 B' z! M
Content-type: text/html
7 T* t+ I6 y. N/ d& W4 H% J〈html〉) Z; S& `+ L$ I8 g  M. w) B  c
〈meta http-equiv='Pragma' content='no-cache'〉' H3 c& _4 S8 z( w
〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉
+ g2 N  U/ A( f4 ?; `# Z〈script〉: _9 ^% I& F, y1 [5 A+ T; H2 [
window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
; l! o) A3 w$ {6 {〈/script〉
; ^5 Z& p. X2 N3 e) [' w〈head〉7 I# c) T' e2 ?7 n1 `* S3 V% [3 h
〈title〉〈/title〉" U- m& r$ c% |: r0 |
〈/head〉4 _* l1 y/ C8 s6 T: G
〈body〉0 G6 c4 C! `/ b5 ]: Z$ E
〈/body〉
4 |/ q9 [$ U8 M% [7 ]) l. a〈/html〉8 N+ _' k) J1 Y: A1 q6 y
  ; Q0 d6 h1 V4 Y7 E: u0 m/ r+ ?7 A
更进一步分析数据包,可知劫持流程如下:$ E( B+ F  S) e% g* Y. ]
  0 q& J# ^" w3 c6 p& @
A、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。, v' L+ I) A- R' q& o/ T
这个设备按照某种规律,对于某些HTTP请求进行特殊处理。
6 Z6 K6 x% c5 P* n  
7 |4 D$ l8 E; S, S) z: DB、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。
. H+ g& ~; Z# J6 b$ e/ f) Y这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。9 X3 ~& L  v0 ~, o0 y% S
而任何正常的服务器都不可能在这么短的时间内做出回应。  C+ h3 x' t2 Q# p) C$ e
  9 L0 r6 i: @  E! q
C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。
- d1 e" B8 }- b" ^  - n' h7 e5 M# M, I0 Q. F$ @/ p
D、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,& z5 h( j* X/ c1 G# g
重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。
; o3 z- `% {& o  : A5 ]) [+ E4 R* k' b$ |
在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,  N) ~+ t9 Q1 T# O1 ~7 _$ v" B
这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。
& J- l5 `/ [& r. M  + X1 b0 O! X  D2 P4 `2 Q
真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。
  l) P4 @, f# B& T8 ?  |; I2 o  9 c; y! r. r  _3 M1 t4 ]  x
3、现在怎么办?
# _( z  E1 _/ ?' L' v  ; V0 |, N3 r5 y
在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:
1 @6 Q. I7 Y9 Y9 T3 r1 u  4 D) f0 m( L( f7 V" K  O
A、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。8 C+ V7 J' T- G4 w# v$ @  ^
  
. K8 N9 z: D. |& H2 a/ iB、在你自己的个人防火墙上,完全封锁211.147.5.121。1 U3 D& W$ y3 ~; I) A6 E1 p
  
7 @" S' e: K& n( OC、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。
3 U4 v6 a0 t" u2 v( R7 b+ X/ a% b  + I. |& ?  a! o: ]- i$ w
绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。. }; Y6 d7 @% g5 \) A
今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?4 V% P+ z) b; {& }& E
我们的HTTP通信完全控制在别人手里。
) v+ K# X0 d0 f4 s& u. f  . v+ Y7 V2 E! p$ z) f% J
4、如何把坏家伙揪出来?
' h* D  b/ P% M+ ]! y& ~$ t  % Z7 c6 P9 V$ H% e
如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:
. n6 S0 w3 z! @. i& s  , S- v  A  j% I# `
方法1:8 L+ E7 @) E4 |* y
  
. Z3 Z4 K/ W0 C2 p- z9 e# ?伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。  a5 o! P2 m7 O
以我收到的数据包为例,真实的服务器端回应 TTL是107,伪造的回应TTL是53。" }5 o0 J# J6 _' T
那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。
7 ]/ D; k6 c7 t. @& Y7 T5 N5 `只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!7 J9 f. Z( `: U
  5 l: @% G: |4 W# `* S0 b2 P
方法2:
2 n) d1 s1 d* u! O# y/ Q9 O  6 Z8 \  K3 y3 P: i' [
假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。
$ P' ?: L. V, D+ P2 V6 }) `在google上以下面这些关键字搜索:php?curtime,htm? curtime,asp?curtime,可以得到大量访问时会被inject的网址。- s  e( r! o3 L1 q$ ?, i; o
编写脚本反复访问这些网址,验证从你的ip访问过去是否会被 inject.将确实会被inject的结果搜集起来,7 w: g; X7 F" J5 s! e2 f# z6 F' ~9 o
在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。
' z/ O% \/ k9 U% Y" I  / A2 d1 Z/ [0 x0 C! B
上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,
4 u. j5 g" W9 b4 b/ \那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。
4 t* ~" P) h/ y! {! r( s% F例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:4 T1 Y$ g- H+ ?9 H: J. U
MyIP-12-13-14-15-65-[89]-15-57-A1 a% u2 t2 t8 h$ K' B) f) t
MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B2 [6 F. L% H  V' |3 N# K
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C
. `3 v2 [2 q3 w2 @+ GMyIP-22-25-29-32-65-45-[89]-58-D# y3 j* `3 n' B- E. P
  
; N0 N8 F, J/ D( G7 H8 w, h8 I  p显然,inject设备极大可能就在“89”所在的机房。$ \; ?& a" o  h/ v
  + ~. x  A0 p! c) _
方法3:
1 H$ g9 Q' j3 U& G: o/ M. u  % _4 w" q, D: C) L0 U/ L2 s# ^
另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:
* f9 {8 c0 A0 ]' Qinetnum: 211.147.0.0 - 211.147.7.255" W% c  O5 W2 I' T9 s5 H# ^
netname: DYNEGY-COMMUNICATION1 q6 b4 n. |: z" A. t1 S* V' R9 J! ^
descr: DYNEGY-COMMUNICATION
# M7 b' c; R8 @6 t! mdescr: CO.LTD2 H* t! x4 v2 W5 b, s
descr: BEIJING5 ]* O: q5 v2 m9 F
country: CN7 m0 f) n0 O4 e  A# p3 H/ v  w
admin-c: PP40-AP# |8 U3 R( a7 J1 M
tech-c: SD76-AP
' t, O: n. A; }9 E  J# nmnt-by: MAINT-CNNIC-AP
$ N) Q0 ?" B7 Y: N; I0 ^changed: [email protected] 20011112
0 L. h, T$ j4 D1 m# C. Kstatus: ALLOCATED PORTABLE! y: Z0 C. ]* E% ?/ l6 D
source: APNIC3 M* b6 ~- Y$ k
person: Pang Patrick3 M1 `) e# C. o* r$ g9 H/ s/ ^
nic-hdl: PP40-AP
, o# }& K6 V! \e-mail: [email protected]
) T' D4 @7 S; v) saddress: Fl./8, South Building, Bridge Mansion, No. 532 _6 o* R0 u8 c1 Z: n2 k
phone: +86-10-63181513
: h5 \. d) R+ l/ a$ {fax-no: +86-10-63181597
6 L' J' I8 }7 A5 R  e7 T! Tcountry: CN
6 p$ D, f, o, J( \3 A/ V4 Rchanged: [email protected] 20030304$ L4 a& ~. ~2 W  f. P' o2 s
mnt-by: MAINT-CNNIC-AP
6 j, p8 J: H; s# X4 hsource: APNIC
# q- ^7 ^3 Q) z: N9 z7 [! x$ Dperson: ShouLan Du
- J. e+ ^* c8 \address: Fl./8, South Building, Bridge Mansion, No. 53) W3 p0 \4 ]' K' o6 i
country: CN
# p$ t7 x  C% Yphone: +86-010-831600006 `/ `% U7 J3 K4 g/ {! @3 d
fax-no: +86-010-83155528
5 I/ i; K2 b/ V* S: T* qe-mail: [email protected]( ?+ Z& m  d& {# B: J# ?0 K+ J0 g1 L. l
nic-hdl: SD76-AP
/ j7 {0 |2 n( \mnt-by: MAINT-CNNIC-AP
8 L. m. d- n8 c5 G3 U" W+ M7 p/ D' D* Schanged: [email protected] 20020403
9 |0 b& P3 J, q$ W% Y4 Ssource: APNIC1 p1 p) a* Y# W+ ?. W& ]) X
  
" R9 l6 o  h9 |, }, ~) z5、我为什么要写这篇文章?
' w) W4 I5 n2 @$ k4 P& b$ ]  
5 U% F; A( x9 A5 M6 S新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;
) y/ d( y# a+ Q5 s5 I或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。
) ?0 z; C7 e2 W3 D, b可是这个 211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。8 c- h/ P" E2 O; ^" c# P2 Z% h
事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,
" h" ~3 v) F0 }5 b但是现在你既然打搅了我的生活,我就不得不说几句了。/ Z* J- W. G4 {5 H% h$ B
  - G+ H2 K- w  `) j
6、我是谁?2 p; ~) `, `4 {5 e
  
  |2 B' Q. V; }如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。
$ w% c. K( D8 n1 d1 b0 }( T#!/usr/bin/perl -w. S7 x5 A' t* k4 h' W0 ?
use Digest::MD5 qw(md5 md5_hex md5_base64);- ]" D- S2 f# I7 O9 B1 K7 w
$name = 'MyName';
$ c- C$ K1 w5 l1 P+ c8 ?$count = MyCount;: S* {$ Z$ m# A/ H. g' d9 o
for ($i=0; $i〈$count; $i++)
. D5 j& n& a8 j: D( x3 H5 z{
7 W, n% v- c! D8 N$name = md5_hex($name);( k- B% d% I6 J" T# c% y! D. M2 J
}% f' h5 k& Z$ t
print $name;
; g. h  Q  _* n+ v- k* x$ p1 j    6 G" y, ]& r, u! T) j  s6 ~
以下签名,用于以后可能出现的关于此文的交流:( u4 m4 U0 u+ {
1 6631876c2aea042934a5c4aaeabb88e9
# x$ n' D8 e4 Z  R& L# L2 a6a607b3bcff63980164d793ff61d1705 d7 G7 M( [; ^, P
3 6a58e8148eb75ce9c592236ef66a3448
# e! W( n/ v( _4 ded96d29f7b49d0dd3f9d171873563107 g( c5 L0 j$ w2 ~3 k& |; D
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 | 显示全部楼层
是有点专业了,如果不是对计算机网络的工作流程比较了解的话,很难理解其中许多名次的含义。希望楼主能发一些比较通俗或者容易大家接受的文章,毕竟不是每个人都是研究计算机。" y" t1 ]$ |4 z% Q( v. d% j# _
总之非常感谢您提供这篇文章,从文章的内容上来说还是很有帮助的,希望您以后继续支持改版。
回复

使用道具 举报

 楼主| 发表于 2006-8-24 00:36:50 | 显示全部楼层
...抱歉,原作者分析清晰,操作精准,如果有相关基础的话,是很值得学习的。
- L- C  o; L. ~* T: O' T! h$ x- a
. D9 @$ S& D# I4 W) Drulingdanny斑竹所说即是,以后注意了,实在抱歉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-18 05:23 , Processed in 0.063654 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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