CSDN等网站泄漏口令数据分析报告

(2012年1月)
安天实验室 Liveck

1      泄漏口令数据分析

数据爆炸的今天,我们经常说宇宙一般的海量数据,对宇宙的研究需要不断地观察与总结。此次泄漏事件,到编写本文时据说已经有近30个用户数据库、超过20亿用户帐号信息在网上流传。此次分析仅是选取了其中较易获取到的一部分数据。在进行统计之前,我首先剔除了仅采用md5方式保存密码的数据;其次根据数据量和在中国网民中的流行度,选择了8个数据库作为分析的主要对象,并选取了1个数据库作为分析的对比对象;最后笔者用自己的帐号和一些朋友的帐号对上述的数据库做了抽样验证以确保数据的基本正确性。

2      初步分析

此次分析的数据共涉及9个站点(命名为站点A到站点I,其中站点DCSDN)共计用户数量超过1亿、口令数量超过3306万,不可不谓之壮观。

数量

比例

站点D用户数量

比例

用户数量

111775213

100.00%

6428632

5.75%

消重后的口令数量

33060578

29.58%

4037919

62.81%

口令中含有特殊字符的用户

3923457

3.51%

237675

3.70%

纯数字口令的用户

63214212

56.55%

2893401

45.01%

纯字母口令的用户

12141004

10.86%

79365

1.23%

纯小写字母口令的用户

11655558

10.43%

748554

11.64%

纯大写字母口令的用户

583986

0.52%

30396

0.47%

用户名作为口令的用户

4195863

3.75%

292662

4.55%

用户名一部分作为口令的用户

3678526

3.29%

188873

2.94%

用户名加一些字符作为口令的用户

1642673

1.47%

129390

2.01%

1口令分布情况表

用户与口令的数量比约为1:0.2958,也就是说,每四个用户,就有一个用户的口令是其他用户用过的。而理想的安全状态应该是一用户一口令,即用户与口令的比例为1:1。这个比例值可以作为衡量站点口令安全情况的一个参考。一般一个有效的强口令应该由大小写字母、数字和特殊符号组成,而依照上表所述,中国过半的用户使用纯数字口令。这一习惯可能与普遍的银行卡、手机密码都仅允许使用数字有关。3.29%的用户名与口令是一样的,也就是说,超过367万用户的口令形同虚设。如果说中国有4.85亿网民 [1] ,那么大约有1500万网民是门户大开的。如果说网站的帐号是家,口令相当于开门的钥匙,那么这些网民的家就等于连锁都没有,谁都可以进去参观一下。

从图1中不难发现用户对68有着偏爱,也再一次证明了神奇的七正负二 [2] 原理。多数用户的口令长度都是59,更长的口令更安全,但是也意味着更难记忆。

1 口令长度分布

而从图2中,我们则可以发现用户更愿意选择数字作为口令。

2口令按键分布

每次用户口令泄漏的时候新闻报道者总是喜欢总结用户最常用的口令,当我们看到国外的用户喜欢用什么“iloveu”做口令的时候,我们总是嘲笑人家老外并乐此不疲。那么现在来看看国人自己的TOP吧。

排行

口令

用户数量

比例

1

123456

7516122

6.72%

2

123456789

1980576

1.77%

3

111111

1631232

1.46%

4

123123

807392

0.72%

5

12345678

746450

0.67%

6

000000

641088

0.57%

7

5201314

557722

0.50%

8

0

516282

0.46%

9

123321

326256

0.29%

10

11111111

291804

0.26%

11

111222tianya

265240

0.24%

12

a123456

264812

0.24%

13

666666

244262

0.22%

14

1234567

229292

0.21%

15

1314520

224386

0.20%

16

7758521

210072

0.19%

17

888888

201940

0.18%

18

123

193206

0.17%

19

1234567890

192456

0.17%

20

654321

174456

0.16%

21

woaini

161956

0.14%

22

112233

148884

0.13%

23

123123123

146106

0.13%

24

a321654

143898

0.13%

25

88888888

143648

0.13%

26

12345

136164

0.12%

27

123654

127012

0.11%

28

520520

125930

0.11%

29

aaaaaa

125162

0.11%

30

121212

121990

0.11%

31

00000000

121648

0.11%

32

789456

116758

0.10%

33

123456a

115594

0.10%

34

111222

112028

0.10%

35

5211314

110446

0.10%

2 口令TOP35

表中列出了所有使用比率在千分之一以上的口令。按比例推算,有超过3259万人在使用“123456”做口令。如果把这个比例和银行卡信息 [3] 放在一起看,也许更可怕,犯罪者用1亿银行卡号与“123456”口令去试,结果发现有672万张卡可以取出钱来。即使每张卡只有100元,这也将是一个庞大的数字,超过了1亿元人民币。“123456”、“woaini”、“654321”、“5201314”、“5211314”看到这些口令笔者都忍不住咆哮:“这些口令都弱爆了,有木有!有木有!!!”

3      换位思考,破解口令

最常用的口令破解方法有三种:

Ÿ   字典破解;

Ÿ   暴力破解;

Ÿ   混合破解。

那么如果使用现有的数据作为基础效果会怎么样呢?

类型

总用户比例

站点C

站点D

站点E

站点F

站点G

站点I

TOP100口令

21.72%

21.32%

26.52%

21.34%

20.47%

22.37%

15.06%

特定模式弱口令

1.79%

3.13%

1.62%

0.45%

0.65%

3.03%

2.22%

用户名作为口令

3.75%

4.04%

4.55%

2.09%

2.45%

1.02%

1.53%

总计

27.26%

28.49%

32.69%

23.88%

23.57%

26.42%

18.81%

3简单字典可以破解的口令比例

27.26%的用户可以通过TOP100口令尝试、特定模式弱口令(后续会针对特定模式弱口令进行分析)尝试、用户名作为口令尝试达到破解口令的目的。这是多么惊人的数字,超过1/4的用户的口令可以在201次尝试之内破解。再算一次刚刚的帐,1亿银行卡的话有27.26%可以轻易破解,每张卡100元也就是总计27.26亿元。也许转100元怕被发现,那么(按照好莱坞大片的情节)转1块钱,也能造就一个千万富翁(总计2726万元)。

除了表格中外,如果作为一个计算资源富裕的攻击者,还可以尝试穷举以下数据:

类型

总用户比例

站点C

站点D

站点E

站点F

站点G

站点I

手机号码口令

0.07%

0.06%

0.14%

0.00%

0.00%

0.06%

0.07%

mmddyyyy

0.06%

0.06%

0.12%

0.02%

0.13%

0.09%

0.01%

yymmdd

10.57%

7.53%

0.31%

10.45%

8.24%

16.59%

2.91%

yyyymmdd

6.35%

5.47%

10.69%

6.01%

4.77%

7.09%

2.86%

19002099

0.06%

0.02%

0.01%

0.04%

0.30%

0.05%

0.02%

电话或78位数字

21.66%

27.15%

6.93%

19.14%

20.02%

19.65%

14.36%

email

0.01%

0.00%

0.00%

0.00%

0.04%

0.00%

0.02%

总计

38.78%

40.29%

18.20%

35.67%

33.50%

43.52%

20.24%

4适合穷举法破解的口令比例

虽然比较耗时,但是这些方法的效果也不错,只要肯用时间就能破解38.78%的帐号。好莱坞大片中的黑客总是能在几天、几小时、几分钟甚至几秒钟之内入侵一个系统,那么根据上述的数据我们可以粗略推算一下他的成功率大约是55.46%。当然要想提高对特定目标成功的成功概率还需要社会工程学 [4] 的知识。著名的黑客米特尼克在他的著作《欺骗的艺术》中对社交工程学进行了描述。

从上述的表格中可以发现,一些有趣的事实,例如:站点D和站点I的口令对抗穷举方面有显著优势;而且站点I相对较少TOP口令、特定模式弱口令、用户作为口令。据来源信息站点I是一款网页游戏、站点DCSDN、站点CEFG则为非IT专业论坛社区。在不断盗号的洗礼下,游戏用户的口令一般质量较高要强于其他用户,而IT技能较强的用户相对较少的使用数字、手机号、电话号、生日之类的作为口令。

总比例

站点C

站点D

站点G

站点I

消重后的口令数量/总用户数

29.58%

28.43%

62.81%

43.27%

65.20%

口令中含有特殊字符的用户

3.51%

0.41%

3.70%

4.56%

1.32%

纯数字口令的用户

56.55%

51.91%

45.01%

62.05%

36.37%

纯字母口令的用户

10.86%

10.24%

1.23%

9.97%

6.67%

纯小写字母口令的用户

10.43%

10.01%

11.64%

9.65%

6.49%

纯大写字母口令的用户

0.52%

0.13%

0.47%

0.17%

0.12%

用户名作为口令的用户

3.75%

4.04%

4.55%

1.02%

1.53%

用户名一部分作为口令的用户

3.29%

6.85%

2.94%

1.81%

3.96%

用户名加一些字符作为口令的用户

1.47%

0.65%

2.01%

3.18%

0.83%

5各站点口令对比

从表中可以看到各站的用户口令比,站点D1:0.6281,站点I1:0.6520,由此映证了用户口令比可以在一定程度上体现站点的口令安全情况。

4      混淆数据的识别与个站点的TOP100口令

4.1 处理混淆的数据绘制口令图谱

当口令泄漏事件发生后,某些人有目的的放出了一些垃圾数据或用已知的数据进行组合生成数据来混淆大家对特定厂商的关注,例如:站点G和站点H的口令TOP100与特说模式弱口令TOP100几乎完全相同,可以基本断定两份数据其中一份是伪造的。站点G的用户信息中我找到了我熟悉的几位同学,进行了询问,证明确实是早期该知名SNS社区的帐号且口令也正确。但站点H的信息则预期宣称的某知名微博毫无关系,系采用G的数据伪造而来。站点B的数据则更加离谱,口令中大量使用各大邮箱服务提供商的域名,其他口令则基本被站点CFGH覆盖,基本可以断定,这份宣传是某知名网站的数据是由CFGH的数据与部分随机生成数据伪造而成。

具体分析数据的过程是怎样的呢?在处理的过程中首先对数据进行着色,按照总体TOP100依照色轮进行着色。得到一个图谱 [5]

3 口令TOP着色图

从图谱中可以很容易的看到站点FH的情况完全一样,数据等价。借鉴生物科学的基因图谱概念,如果两个生物的基因是类似的那么这两个生物也应该有一定亲缘关系。那么在这里我们可以认为如果两分数据的TOP100图谱是相似的,那么这两个站点也必然有一定亲缘关系。

4.2 口令图谱与用户群

在排除了上述的干扰数据并将一些对分析没有帮助的数据和错误数据删除后,我们可以得到一份干净的图谱。

排行

全体TOP

站点C

站点I

站点D

站点E

1

123456

123456

123456

123456789

123456

2

123456789

111111

123456789

12345678

123456789

3

111111

123456789

a123456

11111111

111111

4

123123

123123

5201314

00000000

123123

5

12345678

5201314

111111

123123123

5201314

6

5201314

a123456

123123

1234567890

789456

7

123321

123321

aaaaaa

88888888

123321

8

11111111

aaaaaa

1314520

111111111

1314520

9

a123456

7758521

q123456

147258369

12345678

10

666666

1314520

12345678

987654321

666666

11

1234567

123456a

123456a

aaaaaaaa

1234567

12

1314520

123

qq123456

1111111111

1234567890

13

7758521

woaini

7758521

66666666

7758521

14

888888

123123123

123

a123456789

888888

15

123

12345678

5211314

11223344

654321

16

1234567890

1234567890

woaini1314

1qaz2wsx

520520

17

654321

1234567

520131

xiazhili

a123456

18

woaini

112233

1234567

789456123

112233

19

112233

11111111

woaini

87654321

123654

20

123123123

5211314

q1q1q1q1

qqqqqqqq

147258369

21

88888888

qq123456

123321

000000000

5211314

22

123654

666666

520520

qwertyuiop

987654321

23

520520

asdasd

9958123

qq123456

147258

24

aaaaaa

7758258

qwe123

iloveyou

88888888

25

121212

123654

1314521

31415926

11111111

6 口令图谱1

根据宣称的来源站点C是游戏门户网站、站点I是网页游戏、站点DCSDN、站点E是论坛类社区,从途中亦可以看到四个站点明显的差异。一定程度上证明了来源信息是基本可靠的。

排行

全体TOP

站点D

站点E

站点F

站点G

1

123456

123456789

123456

123456

123456

2

123456789

12345678

123456789

123456789

111111

3

111111

11111111

111111

111111

123456789

4

123123

00000000

123123

123123

123123

5

12345678

123123123

5201314

5201314

123321

6

5201314

1234567890

789456

12345678

5201314

7

123321

88888888

123321

123

12345678

8

11111111

111111111

1314520

123321

666666

9

a123456

147258369

12345678

1314520

888888

10

666666

987654321

666666

1234567

1234567

11

1234567

aaaaaaaa

1234567

7758521

654321

12

1314520

1111111111

1234567890

666666

121212

13

7758521

66666666

7758521

5211314

789456

14

888888

a123456789

888888

888888

111222

15

123

11223344

654321

11111111

woaini

16

1234567890

1qaz2wsx

520520

654321

112233

17

654321

xiazhili

a123456

520520

1314520

18

woaini

789456123

112233

112233

7758521

19

112233

87654321

123654

woaini

88888888

20

123123123

qqqqqqqq

147258369

123654

11111111

21

88888888

000000000

5211314

1234567890

1234567890

22

123654

qwertyuiop

987654321

88888888

999999

23

520520

qq123456

147258

100200

555666

24

aaaaaa

iloveyou

88888888

147258

123654

25

121212

31415926

11111111

520131

123

7口令图谱2

站点EFG则既有相似又有差异与EG都属于论坛类,而F则属于SNS类的来源信息也可以认为符合。

4.3口令图谱的安全意义

很多网站采用MD5散列值方式保存口令,可以用口令图谱中的口令加快MD5反查的效率。例如前文表中TOP100的口令覆盖了20%以上的用户,那么对于很多网站来说,就会有20%的口令MD5仅仅需要在100个散列值中进行查找。一个完整的口令图谱的绘制将会诞生一个高效的彩虹表 [6] ,大幅提高攻击者的效率。

笔者使用上述站点形成的彩虹表对其他数据库进行了反查测试,效果良好对于一些站点甚至能达到50%以上的命中。

5      特殊模式弱口令分析

在上文中提到了特殊模式的弱口令,这类口令有十分明显的特点:采用用户名的一部分作为口令或者将口令的一部分作为用户名。例如:“a%pwd%”表示用户名为口令前加字母“a”,“%usr%123”表示口令为用户名后加字符串“123”。

排行

站点C

站点D

站点E

站点F

t站点G

1

a%pwd%

a%pwd%

www.%pwd%

www.%pwd%

%usr%A

2

q%pwd%

qq%pwd%

a%pwd%

%pwd%1

a%pwd%

3

qq%pwd%

%usr%%usr%

a%usr%

%usr%%usr%

%usr%A1

4

z%pwd%

%usr%123

qq%usr%

%pwd%2

%usr%A5

5

w%pwd%

q%pwd%

%usr%123

%pwd%0

%usr%A2

6

%pwd%1

w%pwd%

%usr%%usr%

a%pwd%

%usr%A3

7

aa%pwd%

%usr%1

qq%pwd%

%pwd%8

%usr%A4

8

l%pwd%

%pwd%1

w%pwd%

%pwd%3

%usr%A6

9

s%pwd%

z%pwd%

%usr%0

%pwd%4

%usr%A7

10

%pwd%123

%pwd%123

%pwd%123

%pwd%5

%usr%A8

11

%usr%1

l%pwd%

%pwd%1

%pwd%6

%usr%A9

12

asd%pwd%

A%pwd%

%usr%a

%pwd%7

%usr%1

13

x%pwd%

%usr%0

%pwd%2

%usr%1

%usr%123

14

as%pwd%

%usr%520

%usr%1

%pwd%9

%pwd%2009

15

li%pwd%

%usr%00

q%pwd%

%usr%456

%usr%%usr%

16

%pwd%a

s%pwd%

zhang%pwd%

%usr%123

qq%pwd%

17

%usr%0

%usr%11

wang%pwd%

qq%pwd%

%pwd%1

18

%pwd%0

%usr%123456

z%pwd%

%usr%0

%usr%0

19

qwe%pwd%

y%pwd%

%usr%456

a%usr%

q%pwd%

20

y%pwd%

%pwd%2010

%usr%520

%pwd%123

w%pwd%

21

%usr%123

%pwd%2

%pwd%520

q%pwd%

a%usr%

22

c%pwd%

%usr%1314

q%usr%

0%pwd%

z%pwd%

23

h%pwd%

c%pwd%

li%pwd%

%usr%@qq.com

%pwd%123

24

wang%pwd%

%usr%.

%pwd%2008

w%pwd%

%usr%a

25

a%usr%

li%pwd%

liu%pwd%

%usr%520

我是%pwd%

8特殊模式弱口令

表中仅列出了全体中的一部分,其中常见的模式也有不少“姓氏拼音%usr%”、“姓氏拼音%pwd%”、“%usr%”与年份组合、“%pwd%”与年份组合之类,这些与直接用用户名来做口令也基本没有区别。

其中较为奇怪的数据是站点G中有大量类似“%usr%A 且用户数量相当规整,相信该数据均为机器生成,可能与论坛机器人有关。利用一些发帖机器人常用的口令或口令模式作为过滤论坛自动注册机也许可以获得不错的效果。

6      写在最后

分析到此总结一下:

1.         通常人的口令长度是59。如果要加强口令安全请使用字母数字混合且含有大小写字母的口令,如果可以请再添加几个特殊字符。

2.         用户口令比可以用来评估口令的安全情况。如果想要加强用户安全,建议保存口令的散列值,当发现口令散列值重复的时候提示用户请更改口令。或使用一用户一salt的方法,对口令进行混淆以防数据泄漏后根据统计信息或彩虹表破解口令散列值(用同类型网站的口令图谱)。

3.         仅依靠MD5的方式保存口令是不可靠的。

最后是一句话:加强站点自身安全建设,预防胜过任何补救方案。