微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何暴力破解已多次哈希的密码?

如何解决如何暴力破解已多次哈希的密码?

| 昨天我问了一个有关安全哈希的问题,这让我开始思考如何破解使用自定义哈希算法创建的密码。我当前(非常不安全)的密码脚本在密码上使用了sha1的迭代,然后在该哈希生成的哈希值上以3位数的盐开头。
$hash = sha1($pass1);

//creates a 3 character sequence
function createSalt()
{
    $string = md5(uniqid(rand(),true));
    return substr($string,3);
}

$salt = createSalt();

$hash = sha1($salt . $hash);
现在,我作为该服务器的管理员,可以完全访问源代码和密码表,加上管理工具可以简单地将用户的密码重置为我想要的任何密码,但是为了更好地了解安全性,我好奇如何以黑客的方式去做。我有一个名为cain&abel的程序,该程序会针对特定的哈希算法进行强力攻击,但是我该如何做一些事情,例如获取每个尝试的密码,对其进行共享,将其连接到(已知的)salt,然后再次对其进行共享?这似乎很简单,但是我从来没有使用过像C ++这样的语言进行编程,并且我认为这是必需的。 编辑: 我应该指定以下内容: 这是离线暴力攻击。 我的数据库充满了哈希和它们各自的盐。 这些盐是针对每个用户的,但我只想一次攻击一个用户的密码。 具体来说,我想问的是如何使用一系列自定义的哈希算法(例如我上面显示的哈希算法)来蛮力破解密码: 伪代码
$hash = sha1( \'password\' );
$salt = \'3Sf\';
$hash = sha1( $salt.$hash);
我认为可以使用任何方法执行此操作,也可以使用暴力破解使用已知算法散列的密码,例如:
$hash = sha1( \'password\' );
$salt = \'3Sf\';
for($i; $i<1000; $i++){
    $hash = sha1( $salt.$hash);
}
因此,我并不是专门要求CODE做第一件事,而是要问我可以通过哪种方法针对定制的哈希算法(如上面列出的2)运行蛮力程序。 注意:我绝不表示自己可能会遇到这种情况,但是我想知道它是如何完成的。     

解决方法

        据我所知,尚无广泛使用的哈希破解工具支持此功能。 但是,正如您所说,编写一个足够时间破解哈希的程序将非常简单。 如果攻击者已经知道您计算加盐散列的方式,我们可以安全地假定他可以访问您的数据库(也必须存储盐),将其转储或访问您的应用程序与客户端之间的纯文本通信。 为了破解散列,他只需复制您的sha1($ salt。$ hash)函数并开始向其提供通用密码。与纯粹强行强制所有可能的组合相比,这将节省时间。他会从您的数据库中获取$ salt,然后将哈希哈希值密码的结果与存储在同一数据库中的盐渍哈希值进行比较。 如果生成的哈希匹配,则密码已“破解”。 通常,为每个用户使用单独的盐是一个好主意,因为这会增加破解整个数据库DB密码表的时间。他将不得不针对数据库中每个哈希散列的PW运行整个单词表,而不是针对带有单个盐的单个哈希函数运行一个单词表。 就是说,如果攻击者足够深入您的系统以实际获取哈希/盐,那么对他来说,更改您的代码以将其首先登录的用户凭据的纯文本副本发送给他将更加容易。     ,        一个问题太简单了。一篇文章中有很多要考虑的事情,太多的事情都无法解决,但这里有一些。 1)黑客有密码存储吗?如果是这样,由于没有其他缓解因素可以阻止暴力攻击继续进行,因此暴力攻击可能会更加成功。 2)黑客能够入侵您的系统并泄露您的盐/哈希系统吗?这将使暴力攻击更加容易,特别是如果1为true。 3)如果1和2为假,是否设有缓解系统来防止/减缓暴力攻击,例如在连续输入多个错误密码后锁定帐户等。 总体而言,网络钓鱼,尤其是鱼叉式网络钓鱼在维护良好/受保护的系统上比暴力更有可能成功,尽管暴力也是实现DOS的一种好方法。有一个基于该主题的整体学科,还有更多需要考虑的方面。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。