发新话题
打印

破译Foxmail密码天书

破译Foxmail密码天书


笔者最常用的邮件客户端软件是Foxmail5.0,相信许多人也在用它,因为它的界面简洁、功能强大。在使用Foxmail的过程中发现一个问题,即Foxmail邮箱密码不够安全!而且这个问题在Foxmail 4.x和5.0正式版(包括测试版)中都存在,在这里提醒大家注意保管好自己的密码。2 s2 l/ T5 e$ b# y; g- z

# x* t% w, e; t0 j; o* l1 n
0 n' H! c6 E9 M2 I* {% Z
& m% v. q) N2 T1 V5 YFoxmail邮箱加密密码保存在哪里; q: K$ S5 m7 `) t5 C
8 ]5 G8 K. ~5 P+ S& Z( Y6 U2 l
+ e; H+ c9 x/ O7 Z" [) X

& h8 G  `& Q% H+ i) v2 r$ A7 ]4 v' `在正式开始以前,先说说在Foxmail中邮箱口令保存在哪里。右键点击你的账户(假设账户名为abcde),在弹出菜单中选择“属性”,然后点击“邮件服务器”,在这里你会看到以“*”号显示的邮箱密码(图1)。
, Y/ [) G* X) Y6 M1 [
6 D4 R4 q$ i& H3 u$ q; ]
; j: j# K2 K- ^1 o$ R( W" b2 i% L' _6 N9 \) F* U$ x2 H
& E# \% p9 l9 p" M

* Q8 _) [/ `* O0 E; X' O: e; H: }; `( ]; M4 o

& c6 I  b3 R8 W: M9 g4 K" L7 }) k
1 @7 ^+ E; W: N. M

. i2 q+ z7 |  Y) j% m- [& R7 V图1
1 k4 O/ c& m' s: H& T
: ?$ k" {4 m7 {8 w( t. d; j. D8 q
3 p1 u& t0 n0 g( {) G0 z) C
5 t- E# C. u# _+ d$ `  D. o. Y5 m用任意一款密码查看软件就可以发现“*”号中是什么内容。其实,即便不使用查看*号工具也可看到Foxmail的密码!
: W" M0 T/ r# u# U1 {# y5 p9 g0 u6 j3 @( V
" b5 C6 Q" n( z2 r. r+ Z' q
- p& G: L# D; x* x  b1 D
当选择保存邮箱口令后,邮箱密码加密后的密文保存在一个文件中,这个文件位于Foxmail安装目录下的Mail文件夹(如果采用默认安装方式,一般在C:\ProgramFiles\Foxmail下),那里有个以你的账户名为名字的文件夹(如账户名为abcde,则Mail文件夹下有个abcde文件夹),其下有个accounts.cfg文件,打开它就会看到你的邮箱密码密文。0 A$ t  _. X5 _1 s

* `9 \( g' P" r# S! F) m3 j" c
, u9 Y0 h8 U7 ?5 D2 Y
$ I) j0 {# C3 {& Z再现一个众所周知的Foxmail漏洞
: N$ B8 ^: ~" q# h# O+ {
' X  O% M/ O5 O5 `* u2 z' u, b6 i% [( w; `8 g# O# J* Q# p( g2 o, @

' E! s* v* i( l  G  M/ m
: M! _( L+ i& \
- U( ?* H; F  W3 l  c, t! B大家都知道,打开“资源管理器”或“我的电脑”,找到Foxmail文件夹,打开里面的“Mail”文件夹,你会发现这里有许多以账户名命名的文件夹,进入Mail文件夹下你想侵入的账户对应的文件夹,将其中的account.stg文件更名或删除,然后运行Foxmail,你会发现该信箱上原来的小“锁头”不见了(加有口令的账户会带有红色小“锁头”标志)!此时不需要任何密码就可以看到被保护的信件!/ J+ e4 r( Q: G
, m! X4 l, K& P) W, U+ ^
8 E3 {3 J" C5 z$ |$ P
8 {! b' H6 d7 J
3 F- W# Y: n( n* F" g4 n; }; L

  f! c" d! u$ f; o- S! ]为什么将Account.stg这个文件复制到别人的账户文件夹下,就有这么大的“威力”呢?用“记事本”打开该文件看看就明白了(图2)!" d. B( w' Y) e: {& `/ Z. ^3 T

# x+ V" s) g( L# S/ }: f
. O& \: [* w  C# }4 Z/ j: r$ B' T& B5 S( D

$ w6 m5 o8 G: X- o( Q2 L7 l8 ~+ k3 X  W/ k3 S

9 u' ~, J3 M7 D+ v) Z
) k+ {2 m4 [5 {# W4 I  w3 k
' U& W- {  Y, W% X6 z9 R图2  l1 K( a5 j7 [

6 i5 M& `( r2 u' c6 k. c& p
5 b+ L) S, ]% j2 W% O+ u1 s# p
事实上,你在Foxmail的“帐户→属性”菜单中设置的所有内容几乎都包括在其中了(如果你细心的话,会发现“属性”中的“模板”并没有包含在内),其中也包括了经过加密的信箱密码密文,也就是“POP3Password=”后面的部分。下面我们就谈谈这个令人感兴趣的话题。
0 O7 L6 J) Z/ \6 w: G
9 t* X; t' [0 v3 n2 T9 N! {: ^1 a& J. Y  ~3 y

; h- a- C, p1 {8 e2 WFoxmail漏洞分析
: g# p1 i' Q/ d( X/ i5 q1 b: ]3 _, k, ~! R7 b9 D, C
% y2 S3 K3 Y- s5 x7 a

3 F0 {( f3 r2 i1 F4 M+ @先假设你在Foxmail中有且仅有一个账户:abcde,它的E-mail地址是abcde@163.net,这个信箱的密码是12345。
( J0 n$ x! |8 `$ L! U8 ?
6 q+ k+ H* [* A2 F* C- q6 r" `* K; _+ \8 g) |
1 E1 T4 f3 s1 r& k$ r9 W
用记事本打开accounts.cfg文件,一开始是一些乱七八糟的内容,再往下你会看到如下所示内容:
/ l9 t, o+ x' d# J/ Z3 q9 n/ u3 Y8 K
  b8 y/ c, x2 ?& }- v
# _5 _# p9 v6 M' W' b5 Y8 ~3 W
MailAddress=abcde@163.net //这是邮件地址# Z4 S3 G% g8 }9 b1 i% i
; H0 g9 o+ I, R1 Y2 J$ T

6 ~0 s9 i4 l' O$ B/ H- Y7 d4 S! V. Q8 K4 ^
………………………………% O) d3 T5 g' d) ^7 \' M  R
/ ?3 l/ L7 O, N3 f! y. @+ b

3 m, i, n) S1 ]! N  O+ ?1 I5 R4 S# \0 c+ s
  a0 d3 u, p7 t& s* l( I

9 Q0 Z9 N' x$ P% U  {0 \POP3Account=abcde4 [" u  o+ ]% E; ^0 b2 C! W9 y
# p+ i! U6 L" D& D4 v

0 g* U- g9 d0 l3 P7 {5 ~
! Y% A9 ^' h4 S1 ]7 c3 bPOP3Host=pop.163.net //POP3服务器地址" e2 C+ r! X3 a, T: d+ u2 y
9 l( W$ w" L- Q
$ @" Y( E% l$ _* r
/ R8 ^# Q' E, z  f& [6 v1 G" u
POP3Password=BB6DFB5DF061 //邮箱密码加密后显示的密文7 c( d9 d, Z" e/ @( r: W

  D! L' t. j. r4 h$ c- Q+ O* a- p& D& c! |0 v5 F9 H

$ R! ]" `3 h9 y1 p3 y* hPOP3Port=110 //POP3服务器端口" ~$ q5 h4 V, D: M* R+ V

  ~7 q2 R) O  r2 n
* W9 ]( \* {! x. t7 p
1 ~: C# D9 w- \( ~4 q! f+ \' j$ Y. j* D$ B

& r9 w7 T" a2 E# B3 }# r9 KPrintFont=宋体,99 Y# W* |7 |! l- z, o9 S: u& _
- s; q* D$ M+ ]" m
2 e$ y) {  N2 ~- @7 j
2 c4 L6 R) T5 U

( R  n9 c2 e- e* {. m9 m' K2 R6 a4 i7 T+ j+ |( O4 M
ReplyAddr=
* p5 I9 d. m  b7 _' L' T4 ^, v
& _5 }% Q. G. ]1 I) J( u7 K6 g% y: Y" Z7 \
% p7 G# P8 {6 h% C
ReplyFormat=17 }3 I  z* b% Z" L0 r* B' \
8 ~3 G0 B% e, O

$ ~/ i9 N; n2 r4 C/ I' {& f7 p6 f$ M, D9 i' q8 z% }' i- W6 x) _( a# X
SameWithPop=1
9 \: |' F  P4 p% |: F7 A/ ~  g! U, b1 p4 O/ q, N, f( n5 w8 U

! o0 H& ]0 {; Q9 K: A1 T7 E' X! H0 {3 L2 E
. e/ Z8 f6 }* L9 Q8 I' f+ z
, {" J4 k6 Y# K+ r
SMTPHost=smtp.163.net //SMTP服务器地址
- |% J3 t5 C0 e; X& ]  C( e8 ~- o' n$ j( D. J1 J2 W# z$ R% b

5 k+ P+ n: H: C2 E3 o6 V, E" e* u1 L0 W+ E! _2 A+ d. }% ^+ j
SMTPPort=25 //SMTP服务器端口8 ^/ |7 K$ y) S6 U
& Y9 w$ i! c0 P, n6 b+ {
; b: I0 v7 F  a# C8 S! S
  e* H0 n& M9 K/ C* H3 ~5 |: F+ h
……
: I" R8 g3 `# i% M8 Q, v, w- ]) K0 _/ M

- T  ~3 O$ X7 d% g( W
' @: ^" N  `5 R( p在计算Foxmail邮箱密码明文之前,请你先记住一个单词:"draGon"(注意要区分大小写),它是Foxmail邮箱密码的加密密钥。记住后我们开始行动:
! V0 Y2 Q: I% o# F* l3 ^) u0 `1 R9 B4 Z! p' K7 v# R$ R
% d; f3 x0 c  ?) [. I! @8 h- e

1 V- e* l4 D( [# |. |第一步:下载一个十六进制文件编辑器UltraEdit,这是一套极棒的文字、Hex、ASCII码编辑器,内建英文单字检查、C  及VB指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。其并且附有HTML Tag颜色显示、搜寻替换以及无限制的还原功能;一般大家常会用其来修改EXE或DLL文件。大家可以在这里下载到它:http://software.wx88.net/down/cuedit1010b.exe。安装完毕,运行UltraEdit,在它的文件编辑状态下输入“"draGon"”这个单词(没有引号),然后单击“Edit”(编辑)菜单下的“Hex Edit”(16进制编辑),可以查到这个词的16进制编码(图3),为:7E 64 72 61 47 6F 6E 7E,分别记为a1,a2,a3,a4,a5,a6,a7,a8,我将它们称之为Ai。6 C8 S) S% `9 c" @( R2 l5 U: o
0 L% K- b- d" A9 e
0 y. r. r: y( Q3 a& D6 `( D1 g
5 K" z& t- M! Y' s+ ]4 h  D
% P/ Y5 r% F: }, b$ f

2 V( ~1 i7 q. [; B- s- i/ v6 y& C! @5 X
, _) \/ n# z& x. u7 U* u

! X; x7 G9 i; S' T图3
3 x2 J0 I1 O5 O  d0 j# H! M
, p5 N1 ~" q4 W+ i4 E0 `
& k2 r+ Q3 O1 |3 T1 y: I
% k( q$ q- n, I, ?第二步:再记住一个恒定的值:5A(其实也是由上面的a1~a8计算而来,具体方法就不多说了),记为C0,这个C0我们在下面会用到8 g& O. ]- a( g  G0 V% i( |: K

2 V& s# j! g. w- K3 H7 R) R0 k/ j5 r! D$ [
7 J, A6 ]5 ^3 y2 ?0 @
第三步:取邮箱密码加密后的密文,在本例中为:BB6DFB5DF061,将它们两两分开,得到:BB,6D,FB,5D,F0,61,分别记为b1,b2,b3,b4,b5,b6。由于此加密密文的总长度为12,所以我们可以判断邮箱真正地密码长度为12÷2-1=5,即邮箱密码为5位。
7 W* E$ g$ z3 G3 E4 N9 [0 v) h1 h4 c

; R. o. {" a/ C1 \6 M
8 G7 F3 r; p$ N* Z- g/ p) V5 v0 W+ T第四步:计算Ci的值(Ci为一系列数的总和,即C1,C2,C3,C4,C5……)。其中,C1由C0(即16进制的0x5A)和第一位密文(即b1,也就是我们这个例子中的BB)经异或运算得来。由于C0=0X5A,所以C1=C0^0XF9=0xE1,其中“^”代表异或运算。大家可以使用Windows自带的计算器来进行计算,点击“开始→程序→附件→计算器”即可打开计算器(图4),计算器中的“XOR”就代表异或运算。由此得到:
- ]; I- }6 o* u' Z0 ^. }. l: ?0 b6 ~0 d

9 I/ S* u& @1 L3 Z! }+ P+ }4 L& T5 y8 C$ K* `8 p, d

+ W" m: s% |0 e' k) |2 F! j; P3 f/ }6 [  B! u9 b3 m3 B/ }# f

8 y4 `, N' x. A) N* r4 _' Y  m* `; O% T" h; l0 z

, G3 `1 G( K  y/ [图48 e" }5 A) o/ g: g: j$ ?

# g0 z* O# [) X- s( D$ V% C, Z# M# g' C0 ?4 _" L

" z5 c+ {3 s* i3 V$ yC1为0xE1 0 u+ ?# q& L2 W' c0 s

/ b; A1 u$ y9 p- h# m: ^$ a* J; Y3 G, W. K4 \
( |. Y0 `* H- N$ _5 N! p
C2由b2直接继承得到,为0x6D
7 c: i7 {9 T+ O& f* p0 d  @5 ~, Q
" r/ N' n" V5 S2 z9 `/ u0 @5 P7 v% a( q, {

* p8 C" F. Y8 `( M+ LC3由b3直接继承得到,为0xFB7 ]: X7 {  N3 v; @5 U  v0 v2 _

3 E' r' Y% Z9 Y4 ?0 G
+ ?3 P" Z$ D1 X3 }1 q: g3 f
0 H2 v- @8 N7 ?, n+ m6 }! SC4由b4直接继承得到,为0x5D . C5 S0 z; `: B0 W  x

8 V& ?) m5 E; V: ?" z8 p2 ]$ |0 n* |% C! \) O9 M
" U/ M$ z  J+ m8 z
C5由b5直接继承得到,为0xF02 @8 `" P+ D! P
! Q: o8 a( @* N# t( P

* }" `+ T( `' D
4 ~7 {( j5 j9 D- z( ]) [  U* w7 A9 h这样,我们就得到了至关重要的参数Ci。% L2 q+ a" D, P4 u' r) ~" U

: y+ s" K( Q, A' ?
$ G% r" N& n' T1 c8 j8 h* @0 x  W& @/ J* t1 T6 ~
第五步:下面请大家用从第二位起的密文(即b2)和密钥对应的ASCII码(即Ai)作异或运算,由于我们已经知道密码为5位,所以用a1~a5分别与b2~b6进行异或运算,得到Di(即D1~D5这5位数)。在我们这个例子中,可以得到:# J3 I0 {/ D5 ^' }$ }& p* |

  v; x! q: m! N( i
) I3 b+ m( z! D! K' B
4 i" y# h3 L, k9 ]" g2 Y
0 {" T( L+ a! k' T. S% `/ P0 L
4 o5 `  H/ t1 o; B* PD1=b2^a1=6D^7E=13
% D7 b" Y$ [) ^) f3 L6 [. D1 Z
! f: ^3 u" _; o/ O' n' b1 z! c, v8 d/ e% v# W7 Z

( R. D- g+ c1 q: ~D2=b3^a2=FB^64=9F) P5 p% W& i' E6 e# H8 G

) U+ {* e- P% A8 q: T
8 b2 P" a9 }' r+ T8 ^4 {! |8 V" N
D3=b4^a3=5D^72=2F2 }  C1 i# H5 _" C6 k! ?
" n4 K6 F% t) h! e
& U' J8 o' q0 K3 I: j7 ]

2 O& e/ k  }) t7 k7 ~D4=b5^a4=F0^61=91
" L/ B, ~  b! X. Q& ?6 U5 A7 d, |0 k& \: ~+ z

* i5 v' T+ A1 A& R" {% U2 A: r. R+ `+ R9 D( t
D5=b6^a5=61^47=26
$ A2 F% U( O" n) ]
; Y- D) }- x3 B7 Z) w1 p9 s; K; m% A% d- o* V
7 m$ J3 O3 i) j+ B# F. N, \% k
如果密文很长(Foxmail最多允许18位密码),该怎么办呢?还是用上面所说的方法。只是在计算Di时要循环利用Ai的值。举个例子,假设密文两两分开后有10位这么多(即B1"B10),则计算D8时用B9与A8异或,计算D9则用B10与A1异或。明白了吗?即密文长度大于密钥长度,则循环利用密钥进行计算。
. c! U7 |: n8 z
5 O7 n, C" v  V5 y: v- r0 [7 `! f6 T$ Z0 G1 y
. p: q% Q7 y, p1 Z. M/ P
5 a$ s: \5 G1 p9 ?2 s0 k. Y2 N
/ p6 ^( F2 f- o
第六步:这是最后一步,求解出账户密码明文。用Di-Ci得到Ei,其中Ei就是密文解码后的明文。注意,如果Di小于Ci,则要用Di 0xFF(0xFF为16进制的FF,即十进制的255),然后再减去Ci即可。好了,赶快打开计算器,然后可以得到:! L& G- r3 D8 h: Q6 L2 \" q
& u6 s2 W/ {' ]: C+ ^; T

+ z$ u! O# z- H" T7 Q" v1 x5 ^8 k. a  }
E1=D1-C1=31,转为十进制为1
: c! O6 A6 ]! U2 u+ l& i
7 Q& y2 u3 g# k2 A) R. d/ w3 f1 m! N8 Q/ v9 b5 j4 I. s
9 j9 r) u- ^6 u  `8 n4 m- y
E2=D2-C2=32,转为十进制为2' U% v2 T+ f* _; c  C

% ~0 I7 |1 a) \; Y, k# `. K5 S# {# s: ~. d$ M# {

% Z) `3 L% |) D& A0 {' h, xE3=D3-C3=33,转为十进制为3
3 u8 u; D+ _) g: `, f5 |, w
1 }! [4 X+ h: Z: r
, z/ G/ O& ?! o- W5 n/ i5 H! N: \6 W$ p
E4=D4-C4=34,转为十进制为4
/ u0 a5 Z6 B7 M4 Q! `7 D) i
+ e$ U# I6 o9 s( W, v( U9 h$ l+ G9 s! H6 `& s; p5 u
7 |, ^: E) r; c+ N9 M2 b- U
E5=D5-C5=35,转为十进制为5
' \1 S: W( y) }4 P0 m, z/ }$ J2 u+ v: ~
- _1 \: Z8 u" \& y; T3 H

; W" L3 r) _1 ?5 e, V将上面的结果串联起来,就是12345,而这正是我们当初设定的邮箱口令!怎么样?Foxmail的密文不安全吧!
; l* a$ k! H3 s8 u( t
: F7 R6 W, r% W$ D
) S7 O& @4 c) G3 Y& G; s+ Q
/ Z$ b2 w" n0 }% L* b  a: F, v2 w
4 o) k# G+ T; }* W2 S
9 E. {; ]! c* Z; U面的过程说起来麻烦,而且好像不容易理解,将上述Ai、Bi、Ci、Di列个表(图5),然后再按上面说的自己动手试试就很容易搞清楚了!与我们事先设定的完全一样!从此可以推断"draGon"就是Foxmail的密钥!仔细想想,从Foxmail的原作者“张小龙”的名字不难推断到这个结论,因为“龙”字的英文单词为“dragon”。那么我是如何发现“"draGon"”这个单词呢?用UltraEdit打开Foxmail的主程序Foxmail.exe,点击“搜索→查找”(或直接按Alt F3),输入dragon,在UltraEdit中搜索到的第一个词就是“"draGon"”!5 ?5 k! ]  K6 J8 L0 B

& \. x- m8 {" w) O' A1 U# \( L* z  D

. W" h7 J4 Q. H  q/ [3 x" ^9 b! W. z) x( Z) [) ^0 w

! @$ R) s6 U8 l; {9 [5 o
8 ?6 _; q9 k/ n  L8 M
1 c) I7 B. v9 K. U& O
6 n  X$ a; Y# l  Q图5
' |2 @& L/ U2 G+ A/ B4 z, k' |5 r$ ]5 n$ M5 e

. d- _6 S6 @$ t& b" S4 D! \% G1 ~2 \$ u0 ]/ v$ h
注意,上文中提到的Ai、Bi、Ci、Di和Ei都是十六进制数值,大家一定要搞清楚,不要弄混了。对了,得到了Ei之后,不要忘记按位分别转化为十进制,这才是真正的邮箱密码!另外,即便是同一个邮箱,在更改了密码并保存之后,下一次再改回原来的密码,你在accounts.cfg文件中看到的邮箱密码密文也会不一样,但用本方法计算下来之后结果不会变,也就是说你仍能用本方法得到你的密码。  ^) I% E6 }+ V  r

5 q7 G8 g5 Y: R7 X- O: K5 w9 z# u5 A- h: F4 G

' z+ [2 u: o+ I+ ^! {* P: }, Q2 B1 M; R6 r6 Y) U( ]! i' m+ k# r
5 a( l/ y  {  y
防范方法' {9 f( v* m0 J3 N3 D! [
- u" L2 S5 ~2 r& P& s

0 _, z) u6 q+ q4 D$ y) L
6 S5 B0 S% D9 u+ @5 W# t# @- w8 N上面介绍了Foxmail密码的破解,方法非常的简单,所以在大家共用一台电脑的场所,建议不要将自己的邮箱密码保存下来,如果已经保存下来,可以采用下面的解决方法:在新建账户时不要选择保存密码,如果已经选择了,可以右击账户,在弹出菜单中选择“属性”,会出现“账户属性”窗口,选择“邮件服务器”,然后,将“密码”栏中的密码清除即可。这样,当你再打开account.stg文件时,会发现“POP3Password=”后面是空空如也,这样就不怕别人发现你的密码了。同时,建议Foxmail的开发商能改变加密算法,使得软件能更安全。
! v1 C* N5 N$ M' }2 s5 w4 t8 v1 d. s6 \1 j0 h: h% x, ^7 x

  u3 E* M1 f: k2 @- C% M; m: ~4 z% |) ~2 M  J  Y
最后提醒大家不要用本文所涉及的内容干破坏,这不是笔者的初衷,切记:己所不欲,勿施于人!



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题