密码强度的测试方法
程序员文章站
2022-09-12 18:18:48
密码强度的测试方法 大多数密码被破解情景是:攻击者将截获的哈希值变换为纯文字的密码形式,他们使用离线攻击和哈希表或彩虹(rainbow)表数据库。如果想截获密码的哈希值,那么攻击者得事先做很多... 09-06-25...
大多数密码被破解情景是:攻击者将截获的哈希值变换为纯文字的密码形式,他们使用离线攻击和哈希表或彩虹(rainbow)表数据库。如果想截获密码的哈希值,那么攻击者得事先做很多工作。
在多数情况下,攻击者必须具备很高 访问权限(如管理员admin权限或root权限),从而才能得到相应的哈希值;如果他们成功获得哈希值,那么他们能在其他方面给受害者带来更多的破坏。那么,为什么我们只讨论密码破解呢? 除此之外,在windows操作系统的领域里,远程攻击者必须获得计算机的本地管理员访问权限和还要能访问netbios,但是这些行为往往被外围防火墙阻止了。尽管人们普遍乐观,但是在今天的技术条件下,攻击者离开了网络不可能嗅探得到windows系统登录密码的哈希值。
另外,如果攻击者得到了密码的哈希值,他或她还可以进行“哈希值传递”攻击("pass-the-hash" attack),这就省去了在第一时间对该哈希值进行转换的工作。 或许在10年前,一个复杂的、6至8个字符的密码就已经足够保证用户的安全需要了,但放在今天肯定不行,所以不要轻率的认为自己目前的密码很安全。我(指这篇专栏文章的作者)仔细查看过的大多数linux/unix操作系统都没有提供相应的帐户锁定机制。而对windows操作系统来说,真正的管理员(administrator)帐户是不能被锁定的,一些软件程序也不会记录帐户锁定机制。许多公司还都禁用了其帐户锁定机制,以防止能够自动运行的蠕虫(如conficker蠕虫)锁定所有用户的帐户,从而避免造成的间接攻击事件。
此外,大多数企业仍缺乏足够充分的审计制度,不能有效的提醒管理员系统出现的多次失败登录尝试,即便该登录系统的人数超过数十万。因此,远程攻击者可以通过列举出系统所有的外部访问点(如可以访问web的outlook、终端服务器、sharepoint、ftp、ssh、rdp、telnet等等),从而对管理员帐户密码进行猜测,直到密码被破解为止。
尽管如此,如果没有对系统上的这些软件进行密码渗透测试,我很难向客户证明仅有6至8个字符的密码是多么容易被破解。我很喜欢进行这样的渗透测试(通常情况下,我用三天的时间就可以破解大部分的密码),但与客户签订的合同常常规定禁止我这么去做。因此,我决定做一件好事,创建一个基于电子表格的计算器,在这个计算器中你可以输入自己目前的密码策略,从而知道你的密码在一定的时间段内可能会面对多少次来自攻击者的密码猜测。你可以从这里下载该电子表格。 破解公开密码 据我所知,这是目前唯一一个显示现实世界密码猜测攻击成功率的计算器。通常情况下,密码真正的保密强度来自于几个方面的,包括该密码的长度、密码所包含的字符或符号(统称为字符集)数,以及字符选择的随机性。如果你想知道在长度和字符集确定的条件下可能的密码数目,那么只需要计算该字符集字符数目的密码长度次幂(字符^长度)。
这将给你所有可能的密码选择或者说密码空间。 然而,这一理论上的数目只是让用户知道自己可能选择的所有密码(称为完美随机,perfect randomization)。如果要生成所有的密码,所需要相当痛苦的努力,除非拥有一个非常好的用户密码随机生成器。大多数用户选择的密码往往包含几个部分,其中就包括以他们所使用的语言表示的文字和名字。事实上,对大多数用户而言,即使技艺一般的攻击者也可以通过密码猜测,以很好的精度猜测出其密码的各个部分来。
大多数专业的采用密码猜测办法的攻击者都知道存在百分之五十的机会,一个用户的密码将包含一个或多个元音(vowels)字符。如果密码含有一个数字,则通常会是1或者2,而且往往会放在密码的结尾。如果密码包含一个大写字母,通常会放在密码的开始处,之后再跟一个元音(vowels)字符。一般人常用的词汇在5万到15万个之间,这些词汇有可能会被用在密码中。女性往往在密码中使用自己的名字,而男性通常会选择自己的业余爱好,“tigergolf”并非只是公司的ceo们才会想到的词汇。即使你在你的密码中使用了一个符号,攻击者也知道最可能来自以下这些情况: ? , ! , @ , # , $ , % , & ,和 ?。
在多数情况下,攻击者必须具备很高 访问权限(如管理员admin权限或root权限),从而才能得到相应的哈希值;如果他们成功获得哈希值,那么他们能在其他方面给受害者带来更多的破坏。那么,为什么我们只讨论密码破解呢? 除此之外,在windows操作系统的领域里,远程攻击者必须获得计算机的本地管理员访问权限和还要能访问netbios,但是这些行为往往被外围防火墙阻止了。尽管人们普遍乐观,但是在今天的技术条件下,攻击者离开了网络不可能嗅探得到windows系统登录密码的哈希值。
另外,如果攻击者得到了密码的哈希值,他或她还可以进行“哈希值传递”攻击("pass-the-hash" attack),这就省去了在第一时间对该哈希值进行转换的工作。 或许在10年前,一个复杂的、6至8个字符的密码就已经足够保证用户的安全需要了,但放在今天肯定不行,所以不要轻率的认为自己目前的密码很安全。我(指这篇专栏文章的作者)仔细查看过的大多数linux/unix操作系统都没有提供相应的帐户锁定机制。而对windows操作系统来说,真正的管理员(administrator)帐户是不能被锁定的,一些软件程序也不会记录帐户锁定机制。许多公司还都禁用了其帐户锁定机制,以防止能够自动运行的蠕虫(如conficker蠕虫)锁定所有用户的帐户,从而避免造成的间接攻击事件。
此外,大多数企业仍缺乏足够充分的审计制度,不能有效的提醒管理员系统出现的多次失败登录尝试,即便该登录系统的人数超过数十万。因此,远程攻击者可以通过列举出系统所有的外部访问点(如可以访问web的outlook、终端服务器、sharepoint、ftp、ssh、rdp、telnet等等),从而对管理员帐户密码进行猜测,直到密码被破解为止。
尽管如此,如果没有对系统上的这些软件进行密码渗透测试,我很难向客户证明仅有6至8个字符的密码是多么容易被破解。我很喜欢进行这样的渗透测试(通常情况下,我用三天的时间就可以破解大部分的密码),但与客户签订的合同常常规定禁止我这么去做。因此,我决定做一件好事,创建一个基于电子表格的计算器,在这个计算器中你可以输入自己目前的密码策略,从而知道你的密码在一定的时间段内可能会面对多少次来自攻击者的密码猜测。你可以从这里下载该电子表格。 破解公开密码 据我所知,这是目前唯一一个显示现实世界密码猜测攻击成功率的计算器。通常情况下,密码真正的保密强度来自于几个方面的,包括该密码的长度、密码所包含的字符或符号(统称为字符集)数,以及字符选择的随机性。如果你想知道在长度和字符集确定的条件下可能的密码数目,那么只需要计算该字符集字符数目的密码长度次幂(字符^长度)。
这将给你所有可能的密码选择或者说密码空间。 然而,这一理论上的数目只是让用户知道自己可能选择的所有密码(称为完美随机,perfect randomization)。如果要生成所有的密码,所需要相当痛苦的努力,除非拥有一个非常好的用户密码随机生成器。大多数用户选择的密码往往包含几个部分,其中就包括以他们所使用的语言表示的文字和名字。事实上,对大多数用户而言,即使技艺一般的攻击者也可以通过密码猜测,以很好的精度猜测出其密码的各个部分来。
大多数专业的采用密码猜测办法的攻击者都知道存在百分之五十的机会,一个用户的密码将包含一个或多个元音(vowels)字符。如果密码含有一个数字,则通常会是1或者2,而且往往会放在密码的结尾。如果密码包含一个大写字母,通常会放在密码的开始处,之后再跟一个元音(vowels)字符。一般人常用的词汇在5万到15万个之间,这些词汇有可能会被用在密码中。女性往往在密码中使用自己的名字,而男性通常会选择自己的业余爱好,“tigergolf”并非只是公司的ceo们才会想到的词汇。即使你在你的密码中使用了一个符号,攻击者也知道最可能来自以下这些情况: ? , ! , @ , # , $ , % , & ,和 ?。
下一篇: 任务管理器中五个不为人知的应用
推荐阅读
-
PHP生成随机密码的4种方法实例讲解_PHP教程
-
Android获取当前已连接的wifi信号强度的方法
-
######ssh:Junit遇到initializationError(知识点:Junit测试3要素:public、void、无参)==解决:检查所有方法的注解。是否添加正确
-
php怎么生成随机密码的几种方法
-
最好用的mysql密码忘记的解决方法 mysql教育windowslinuxphp
-
phpmyadmin3.4空密码被禁止登陆的解决方法_PHP教程
-
python随机生成指定长度密码的方法
-
PhpMyAdmin 配置文件现在需要一个短语密码的解决方法
-
iOS给密码进行加密的方法
-
iOS手势密码的实现方法