浅议密码强度与密码破解(2)

作为撞库研究、密码破解、社工库的系统文章第二篇

本文皆在讨论密码强度和密码心理学的关系、密码的强度的定义、怎么样生成一个强密码、以及它们和密码破解的关系。希望能对密码学攻防领域的朋友有所帮助,同时能引发大家的共同讨论

在上一篇文章中我们学习了当前密码破解使用的常见技术、以及相应的工具

http://www.cnblogs.com/LittleHann/p/3541989.html

 

1. 相关学习资料

http://www.cnhonkerarmy.com/archiver/?tid-69942.html&WebShieldSessionVerify=WXfBMNCWj1MSdmMCisFH
http://www.objectif-securite.ch/ophcrack.php
http://www.project-rainbowcrack.com/
http://www.91ri.org/5904.html
http://www.91ri.org/7626.html
http://w.baike.com/ea49a016f2d748e68c881592fd99b20e.html
http://www.xinli001.com/info/3571/
https://my.bluehost.com/cgi/help/418
http://blog.csdn.net/thinkerabc/article/details/599112
http://hi.baidu.com/306211321/item/7efd5759cbbb7f9508be1759
https://www.microsoft.com/zh-cn/security/pc-security/password-checker.aspx

 

2. 文章主题

密码心理学
密码强度的定义、以及怎样生成一个强密码
撞库在密码破解中的应用

 

3. 密码心理学

觉有有句话说的很好: "作为一个黑客不要老把自己框在攻击者的立场去思考问题,有时候灵活的使用逆向思维,在做一件事的时候转换思维,想想如果是其他人会怎么做"。比如你在做渗透,攻击的方式并不仅仅局限于SQL注入、XSS、溢出等"常规"手段,有时候咱们可以适当的转换思维,现象如果我是站长会做什么,如果我是小白用户我会做什么,如果我是服务供应商我会做什么,从不同的角度去渗透它(可能涉及到社工的范畴了)。有时候可能会有意想不到的收获,而密码心理学我觉得就是一个很好的思维方式,理解它的原理在我们进行密码破解工作的时候能起到很大的帮助。

我不是学心理学专业的,也不敢妄谈什么心理学,所以就老老实实做一个搬运工好了,把我收集到的资料中的好的东西都整理出来给大家,也顺便谈谈自己的感想。 

第一部分:十大基本规律
1. 绝大多数人都高估了破译密码的难度和低估了自己密码存在的风险,因而,往往把能够破解密码的人当成神秘人物,同时基本很少有修改自己密码的习惯。
2. 绝大多数人一生常用的密码通常不会超过3个,如果你破解了某人的QQ密码,很可能你也破解了他的论坛密码、邮箱密码、游戏账号密码……
3. 从性别上看,男性的密码比女性的要更加难破;从年龄层面上看,年轻人的密码比35岁以上的人群的密码更加难破;从受教育层度上看,大专以上学历的人群相对于 以下学历人群,
  密码破解难度更大,且大专、本科、硕士学历的人群密码破解难度基本上没有什么区别;从专业角度上看,理科生的密码比起文科生要难破一些,计算机相关专业的学生密码破解难度最大。
4. 绝大多数人的密码,基本上都是有确定含义的,随机乱码组成的密码极度罕见(应该说我从来没有遇到过,不过如果是这种密码,我这种基于心理的思路,可以确定毫无办法)。 5. 大多数人的密码要么纯粹用数字组成,要么纯粹用小写字母组成,要么用数字加字母组成,只有很少人会采用下划线,极少数的人字母区分大小写。 6. 密码所采用的字母中,很多都是姓名拼音、名字拼音的全部或首字母缩写,某一图腾的英文单词(通常是名词)——图腾的含义后面会提到,某一单位名的首字母缩写,以及某一地名的拼音或英文
  及其缩写。
7. 密码所采用的数字中,很多有关日期,且该日期对密码所有人拥有极其重要的意义,还有很多与地名和电话号码有关。 8. 使用下划线的密码,下划线通常只出现一次,一般这类密码的主人密码保护意识很强,其密码往往还包含数字和字母,这种密码的下划线的位置通常处在数字和字母的分隔处;字母区分大小写
  的密码,大写通常只出现一次,并且很多时候都出现在密码的开头,极少数出现在结尾。
9. 除非所登录系统有严格的位数限制,否则密码的位数通常是8位到11位,7位以下的密码和12位以上的密码较为少见。而且现在很多的网站在用户注册的时候都会要求用户设定的密码必须符合
  一定的"要求"(6位以上、包含数字+字母+1个特殊字符、不能数字开头等) 10. 公共网络的密码通常很少包含个人信息,大多数是单位名称的全部或某一部分的中文或英文全称(例如CMCC、CHINA-NET),或者英文或拼音的首字母缩写,外加拥有特定含义的数字,这种
  数字 通常是电话号码或者门牌号,另外,有些密码是上述特定字母或其缩写的简单重复,如:12341234、abcabcabc;个人密码则很少出现上述简单重复的情况。

上面这些基本规则仔细看看真的挺有道理的,我们遵循这些规则去构造字典库,覆盖率能达到相当的高度。仔细回想一下自己身边的或者以前遇到过的密码,是不是都有这些规则的影子呢?

第二部分:五大规律隐含的心理学特性
1. 惰性
从上述很多条规律都可以看出人或多或少存在惰性,比如很少人会定期修改密码;再如很少人密码会区分大小写,因为这样的话必须进行至少一次大小写切
换(一般如果出现大小,都是使用了TAB键,即全部大小、或全部小写)。再如各种不同账号使用同一密码都是人存在惰性的有力证明。
2. 自我意识 自我意识很多时候体现在使用名字的密码上,通常,自我意识较为强烈的人,很看重自己的名号或者名誉,因而,其密码一旦使用自己的名字,往往就是名字的全拼, 较少使用缩写,
更不会省略自己的姓氏,或者使用自己的网名,微博ID等,另外,这类人也有很大一部分使用的是某一图腾的英文单词,例如某人非常崇拜某一偶像,那么,这个偶像就是他的图腾,
其密码很有可能与这个图腾有关(例如JAY等)。
3. 自我保护意识 从公用密码很少包含个人信息这一点很容易印证自我保护的问题,一般来说,当某一网管或其他特定工作性质的人需要为某公用账号设置密码时,首先需要考虑的是密码易为别人所理解和记忆,
然而,一个人在考虑秘密之类的东西时,首先联想的是他自己身上的东西,由于这些东西涉及其个人隐私,因而很容易被他的潜意识所排除。
4. 爱与责任感 不少人的密码会使用伴侣和孩子的姓名或生日、结婚纪念日、自己公司成立日期等诸如此类的信息,这很明显地体现了爱和责任感。 5. 完美主义倾向 完美主义倾向在密码中主要体现在对称与平衡上面,这从名字加日期的组合式密码和带下划线的密码可以很容易看出来,例如,某人叫做张三,生日是1980年1月1日,那么,如果采用前者,
其密码往往是zhangsan19800101或者zhangsan8011,不大可能设置成 z1h9a8n0g0s0a1n01这种类型;如果使用下划线密码,则很大可能会采用zhangsan_19800101
或者zhang_san_19800101,不大可能采用_zhangsan19800101或者z_hangsan19800101这种类型。

接下来是性格对一个人设置密码的影响,我自己印证了一下,虽然不能100%准确,但是无疑,性格对一个人的行为是会造成很大的影响的,而密码的设置也只是其中的一个方面而已。

不同人格类型的人群使用密码的习惯
1. 责任感型
责任感通常来源于自信以及对家人强烈的爱,这种人通常在社会上比较成功,对社会现象有特定的判断标准,且其看法不容易为别人所动,体现在生活习惯上,他们选择工作时通常比较谨慎而且
目标明确,日常生活较为单一,除了工作以外,他们会花很多的时间陪家人,赚来钱通常花在家人身上或者交给爱人保管。这种人群的密 码通常包括以下的要素:爱人的姓名、昵称或生日,
结婚纪念日,孩子的姓名、昵称或生日,老家的电话号码,父亲或母亲的生日。
2. 洁癖型 此处指精神意义上的洁癖,这种人的思想中存在一个特定的界限,这个界限是无论自己还是别人都不允许逾越的禁区。这种人要么特别成功,要么整天抱怨;要么像个 外交家,要么极度孤僻;
同时他们别人的某些行为或者社会想象拥有常人所难以理解的评判标准,这种人的自我意识通常很强,而且对某种理想的人事或者生活拥有 强烈的向往,在他们的内心深处,通常埋藏着一段失
败但又刻骨铭心的情感经历。这一类型的人,其密码最大的可能是使用图腾。
3. 两肋插刀型 这一类人通常具备很强的领袖气质,而且极度自信,他们通常有很多的朋友,而且非常好动,属于坐久了屁股就会长疮的人,他们隔三岔五就会带一大群朋友回家吃饭 或者睡觉,也经常夜不归
宿,朋友需要帮忙的时候,他们通常会二话不说地伸出援手,也经常路见不平,他们通常自我意识强烈,很少对人设防。其密码的类型通常 不是无脑型就是自己的姓名加上出生年月,且姓名必
定是姓氏加名字的全部字母,极少使用简写,顶多加上一两位的防盗码,有时也会使用亲人的信息。
4. 幻想型 幻想型通常存在于花季少女,这种人的QQ空间、博客和微博通常带有炫目的色彩,通常使用一些童话、神话或幻想世界中才有可能存在的事物,他们追求时尚,爱看 偶像剧,常会做出孩子气
的行为,对小动物通常非常呵护,有不少人有养宠物的习惯,她们通常家庭条件较好,从小受惯长辈的宠爱,她们内心深处通常非常自私, 尽管外表并非如此。这种人的密码类型通常使用图腾,
且该图腾一般是某个白马王子的姓名或者生日,或者宠物的名字,或者某种她幻想中的理想事物。
5. 好斗型 所谓好斗型,并非指表面上爱与人争吵或者打架,而是指表面上不懂声色,但却在暗处与你暗暗较劲的人,例如某次你考了第一名,而他考了第三名,在别人都恭维 你,要你请客吃饭的时候,
他会找借口不去,或显得心事重重,私底下会更加卖力学习,期望下一次考试超越你。这种人通常自我意识强烈,拥有让人难以忍受的自 负,妒忌心也很强。这类人的密码通常与他自己有关,
其使用的密码,通常要么包含自己的昵称、姓名、手机号码或生日,也有很大几率使用图腾,且这个图腾极有 可能是他在孩提时代或青春期对他成长产生强烈影响的事物。
6. 事业领袖型 这种人通常也具备很强的责任感,但与责任感型的人相比,他们的责任感的重心更多的放在工作上,他们严格要求自己,更加严格地要求自己的下属和亲人,有时会 让人觉得无法忍受,工作起来,
这种人是废寝忘食的,当他投入工作的时候,决不允许别人打扰他,说话的时候,一旦被人打断或者听到不想听的话,就会直接质问 对方,这种人的密码,很多时候会使用自己的名字或者昵称,
且很多时候会使用缩写或者不包括姓氏的名字拼音,或者与他公司或者事业有关的名称或号码,有时也 会使用图腾,且该图腾要么是他认为别人绝对意想不到的事物。
7. 完美主义者 其实每个人或多或少都有完美主义的倾向,对于完美主义倾向比较显著的人来说,他们未必注重自己着装的品位,但是他们会追求有品质的事物;他们崇拜的对象通 常都是人格、智力都看上去
完美无缺的人;他们的房间通常物品摆放整齐,有时出门走到半路,想起家里某个物品没有摆放好,甚至会跑回来把他放到让自己看起来 安心的位置;他们通常喜欢自己整理自己的房间,不喜
欢让别人插手,因为,在他们看来,由别人经手的东西都是不完美的;这种人通常严于律己,洁身自好,而且 在道德上有种让一些小人难以忍受的优越感;这类人也许也会讲脏话,但在他们内
心深处,对纯洁的爱情却极度向往,大多数这方面的男性拥有处女情结,女性则通 常向往王子公主式样的爱情。这类人的密码,一旦使用名字,则名字很大几率是全名,或者是某一特定的单词
(如love,great等具有美好意义的形容词) 加上全名的简称,一旦使用日期则日期通常是20120101这样的格式,很少会选择1211或120101这种格式,一旦使用电话号码,则电话号码通常
包 含区号,他们手机的电话簿,每个人的人名通常是全名,极少会忽略姓,也很少使用昵称;一旦使用下划线,则下划线的位置通常是能够高度体现对称美的。
8. 现实主义者 现实主义者体现在思想上,不相信奇迹,他们行为上不容易走极端,但思想上却非常极端,例如,他们相信某个名人的成功是难以复制的,尤其是他身边的人;他们认 为官员中没有好官,
娱乐圈的女性每个都被潜规则过,有时候和他们交谈,你会忍受不了他们满口的大道理。这类人的密码,一旦使用姓名,通常是简写,日期则以 简约型的居多,如果使用下划线,他们对于
对称没有什么要求,有时下划线会出现在第一位,字母区分大小写的在这一类型的人中最为常见。

 

4. 密码强度的定义、以及怎样生成一个强密码

密码强度是一个相对的概念,更准确地说应该是"投入-产出比",即一个黑客如果要破解一个密码,他破解后获得的收益如果不能远大于(或适当大于)所付出的金钱+时间。

例如: 你截获到了一个美国在海湾战争中的通信密码,却需要花20年去破解,那即使20年后你破解出来了,这个密码为你带来的"收益"已经远远不及你付出的劳动了

则这样的密码就叫强密码。而另一种判定密码强度的算法: 位数+字符范围要大+字符组合至少3种以上。其实本质的原理也是一样的。都是基于一种产出-收益平衡原理。

典型的强密码的特征
1. 使用更长的密码
2. 使用一个对自己有意义的、易于记忆的短语作为密码: LittleHannisagoodman。这比单纯的密码安全性要高
3. 尽量使用多的字母组合(数字、字母、特殊字符)
4. 使用复杂的密码,并将它记在纸张上妥善保管之,比保存在WEB系统中要来的安全,这是一个信任对象的问题,信任自己以及室友,比信任网络要好

 步骤

创建一个强密码步骤:
1. 选定一个自己易于记忆的短语,例如: My son Aiden is three years old
2. 看目标WEB系统是否支持保存空格:
    2.1) 支持空格: 直接使用这个短语作为下一步的输入
    2.2) 不支持空格: 则将空格删除,并单词首字母大写: MySonAidenIsThreeYearsOld
3. 对密码短语增加复杂性,增加复杂性有以下几种思路:
    3.1) 字母交换: swapping字母顺序逆过来写、每个单词逆过来写
    3.2) 拼写错误(mispelling): 利用一些字母和数字的相似性进行替换: T-7、I-1... : My S0N Ayd3N 1s 3 y3eRs 0ld
    3.3) 拼写错误: 利用一些字母之间的相似性: r-y.. : MyS0NAyd3N1sthreey3@Rs0ld
    3.4) 等价替换: 利用同义词间的相似性进行替换: three-3.. : MyS0NAyd3N1s3y3eRs0ld
    3.5) 畸形字符插入: 将一些字母替换为特殊字符、或直接插入特殊字符: M$S0NAyd3N1s3y3#Rs0ld 
https://www.microsoft.com/zh-cn/security/pc-security/password-checker.aspx
避免使用的密码:
1. 重复、有序的字符组合: 111123456、abcd
2. 避免简单的"字符替换",例如M1cr0$0ft、P@ssw0rd这种密码,对一个有经验的黑客来说,这也是很容易破解的。但是这可以作为"纵深防御"的一个手段之一。"字符替换"是一种很好的
  强化密码的手段,和扩展长度和"misspellings"结合起来可以构成强度更好的密码 3. 避免在密码中使用和个人基本信息相关的数据,例如: 姓名、身份证、生日、工号等等。因为这些信息往往是黑客在"社工"你的时候第一个获取到的信息 4. 避免在密码中出现字典中的常用词、高频词。因为黑客大多数情况下会优先使用一些高频词字典对你的密码进行破解 5. 尽量在不同的地方使用不同的密码,当然这是你在的记忆允许的情况。在不同的网站使用不同的密码,可以防止遭到黑客的"撞库攻击" 6. 避免将你的密码保存在"网上"。例如云盘、云笔记中,这样做等于是在增大你的信息泄漏风险

 

5. 撞库在密码破解中的应用

我们在上一篇文章(1)中学习了基于PreComputation的字典破解技术、以及彩虹表破解技术。

"撞库攻击"本质上还是一种基于字典的攻击方式,只是这种字典比较特殊,它并不是简单的字母空间、或所谓的高频词,而是使用历次"脱库事件"泄漏出来的"社工库",这种数据库相比普通的字典用用更好的命中率,因为破解率更高。

下面是我总结的一些密码破解的场景:

用户系统面临的风险大体包括
1:弱口令扫描(密码本身符合弱口令的特性: 长度、字符空间、组合情况、规律性、个人信息性等)
2:注入(SQL注入获取密码)
3:侦听(内网抓包)
侦听要特别强调一下,不但存储要注意安全,在传输和用户录入过程中的安全也非常关键:
    3.1) 这也是类似支付宝,银行网关等产品经常要安全控件的原因。这些控件在本地直接对用户输入的密码进行加密,然后把密文通过网络传输给目标服务器,这样保证了传输过程中的安全
    3.2) 除了使用控件进行本地加密,使用js进行本地加密也是一个很好的解决方案
4:爆库(黑客暴力破解: Hydra)
    4.1) 防止爆库要注意是不仅要防止数据库被黑客暴力破解,还要考虑到如果被黑客暴力破解成功后,该怎么把风险降到最低,即"纵深防御原则"
    4.2) 密码明文存储的,100%是死路,可逆加密的,只要黑客用点心,也是死路。不可逆的,很多工程师会以为可以高枕无忧了,但是这就是"碰撞库"的范畴
    4.3) cmd5、xmd5使用了"高频"的字典进行破解,覆盖率有90%以上
        4.4.1) MD5(pass)、MD5(MD5(pass))这种简单的变形方式一般cmd5.com也会考虑在内
    4.4) 如果针对特定的目标,而且是黑客所能掌握的:
        4.4.1) 加密算法被黑客知道
        4.4.2) 比如固定salt被黑客知道
        4.4.3) 加密的轮数被黑客知道
    黑客可以针对这种情况单独构造对应的字典、或者彩虹表。进行针对性的破解,如果投入和产出比够高,黑客肯定会去做。这里要注意的是,这种手段只能针对特定的目标,面对批量
  的HASH数据,一个一个地去单独生成字典(彩虹表)是不可能的,投入
-产出比太小。所以,salt和key stretcing还是很有效的防御字典攻击的技术思路。   注意一点: 爆库不等于密码泄露,爆库+不正确的加密方式才是密码泄露! 5:社工库扫描 / 撞库测试(历次泄漏事件泄漏出的社工数据库,拿待检测的密码到社工库中去一一比对) 社工库有一点需要注意,这次泄漏事件泄漏出来的裤子是否是明文,还是密文的裤子: 1) 如果是密文的裤子,那还是回到了爆库的范畴中了,这些密码需要进行破解后将其转化成明-密文对的形式才可以使用 2) 如果是明文的裤子,那这个社工库就可以直接使用了 关于社工库的撞库,我的理解是这样的,社工库本质上还是一个字典,甚至来说来不如字典全面和规范,正统的字典包含的是所有的明-密文对。而社工库(这里指密码社工库,社工库有很多种,
有些是个人信息型的社工库)拿到的时候,往往并不包含完整的明-密文对,如果我们拿到了明文的裤子,我们需要使用某种算法(MD5、SHA1)去生成相应的密文,将社工库转化成明-密文字典。
同时这个社工型的明-密文字典的破解成功率相当高,它更有可能覆盖到当前网络上常用的用户密码(基于心理学的原理),也就是说,我们在使用这种字典进行密码破解的时候,
有很大的几率能"撞库成功"。 撞库成功有两个定义: 1) 这个待破解的密码破解成功,即能够找到它的明文 2) 这个待破解的密码的明文存在"脆弱性",即它在一些泄漏事件中已经泄漏了,这个裤子有可能被黑客加以利用,从而更快的破解出这个密码,也许它的长度很长、属于强密码,
    但是基于社工库的字典破解攻击完全可以无视这种密码强度

 

 

转载于:https://www.cnblogs.com/LittleHann/p/3543681.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值