问题标签 [dictionary-attack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
15392 浏览

security - 为什么盐使字典攻击“不可能”?

更新:请注意,我不是在问什么是盐,什么是彩虹表,什么是字典攻击,或者盐的目的是什么。我在问:如果你知道用户salt和hash,计算他们的密码不是很容易吗?

我了解这个过程,并在我的一些项目中自己实施。

在您存储的数据库中:

我见过的每个加盐的实现都会在密码的末尾或开头添加盐:

因此,来自值得他的盐(哈哈)的黑客的字典攻击将简单地针对上面列出的常见组合中存储的盐运行每个关键字。

当然,上面描述的实现只是为黑客增加了另一个步骤,而没有真正解决根本问题?有什么替代方法可以绕过这个问题,还是我误解了这个问题?

我唯一能想到的就是有一个秘密混合算法,将盐和密码以随机模式结合在一起,或者将其他用户字段添加到散列过程中,这意味着黑客必须能够访问数据库和代码才能结合他们进行字典攻击以证明卓有成效。(更新,正如评论中指出的那样,最好假设黑客可以访问您的所有信息,所以这可能不是最好的)。

让我举一个例子,说明我建议黑客如何使用密码和哈希列表来破解用户数据库:

来自我们被黑数据库的数据:

常用密码字典:

对于每个用户记录,循环常用密码并对它们进行哈希处理:

我希望这能更好地说明我的观点。

给定 10,000 个常用密码和 10,000 条用户记录,我们需要计算 100,000,000 个哈希来发现尽可能多的用户密码。这可能需要几个小时,但这不是一个真正的问题。

开裂理论更新

我们将假设我们是一个损坏的虚拟主机,它可以访问 SHA1 哈希和盐的数据库,以及混合它们的算法。该数据库有 10,000 条用户记录。

该站点声称能够使用 GPU 每秒计算 2,300,000,000 次 SHA1 哈希。(在现实世界的情况下可能会更慢,但现在我们将使用引用的数字)。

(((95^4)/2300000000)/2)*10000 = 177 秒

给定 95 个可打印 ASCII 字符的完整范围,最大长度为 4 个字符,除以计算速率(变量)除以 2(假设发现密码的平均时间平均需要 50% 的排列)为 10,000用户需要 177 秒才能计算出长度为 <= 4 的所有用户密码。

让我们稍微调整一下以适应现实。

(((36^7)/1000000000)/2)*10000 = 2 天

假设不区分大小写,密码长度 <= 7,只有字母数字字符,解决 10,000 条用户记录需要 4 天,并且我将算法的速度减半以反映开销和非理想情况。

重要的是要认识到这是一种线性蛮力攻击,所有计算都是相互独立的,因此它是多个系统解决的完美任务。(IE 很容易设置 2 台计算机从不同端运行攻击,执行时间减半)。

考虑到对密码进行 1000 次递归散列以使该任务的计算成本更高的情况:

(((36^7) / 1 000 000 000) / 2) * 1000 秒 = 10.8839117 小时

这表示最大长度为 7 个字母数字字符,执行速度低于一位用户引用的数字的一半。

递归散列 1,000 次有效地阻止了全面攻击,但对用户数据的针对性攻击仍然容易受到攻击。

0 投票
2 回答
268 浏览

spring-security - Spring security 2.0.3 和字典攻击

我正在运行spring security 2.0.3,我需要实现一个简单的字典攻击块,植入很简单,当他有X次错误登录时,添加一个userstatus属性和一个blocked值自上次登录以来的尝试次数。问题是如何通过spring security重定向到适当的页面,甚至更好地
重定向到login.jsp并通过一些会话标记阻止输入(这只是JS块,但我仍然需要它),spring security的UserDetailService接口定义了一个loadByUserName方法使我能够抛出我自己的 BadCredentialsException 扩展,但 ExceptionTranslationFilter 不允许我使用它,是否有内置的方法来使用 spring 或者我必须破解一些东西?谢谢

0 投票
2 回答
3027 浏览

passwords - 字典攻击多字密码

又一个密码问题,恐怕……

我一直在阅读密码强度等内容,如果女士们先生们愿意回答,我有一个关于密码字典攻击的问题。

据我从我一直在阅读的文档中可以看出,只需将密码散列与从单词列表生成的散列进行比较,并进行额外的修改,例如 o-0、1-1 e-3 替换和外壳变化。

现在,如果我错了,请纠正我,如果我在单词前面加上盐,那么这会使密码变得足够复杂,以至于字典攻击不太可能成功。

更进一步,如果我创建一个密码,该密码由一个长列表中的两个随机选择的单词组成,其中散布着随机数字和标点符号,我应该有一个人类相对容易记住的强密码,还是我在这里胡言乱语?

例如,我的密码生成器创建了一个密码“14Simplified%^Cheese96”,您必须同意它比“sl&TcReq!/U9K6%-SN$8Ca”更容易记住。

现在,在我找到并可以访问的所有密码强度检查器中,两个密码都被评为“强”、“非常强”,或者,在 Microsoft 检查器的情况下,“最佳”,但第一个密码有多好鉴于它是基于两个词?

0 投票
4 回答
609 浏览

security - 在数据库中存储盐+密码哈希并防止密码攻击

请帮助我理解。另外,我不是在谈论 SSL 或 DH 密钥交换。由于盐存储在数据库中并且是攻击者的秘密,仅用于保护用户原始密码(彩虹表),以防攻击者获得实际数据库本身。那么你将如何防范基于暴力/字典的攻击。再一次,记录错误的请求并拒绝许多错误请求的 IP 是众所周知的,我在这里谈论的是密码学。由于user1的密码相同,攻击者是从其他网站获取的,salt在这里是如何保护的。我猜不是,那么阻止此类攻击的最佳解决方案是什么。假设数据非常重要,例如信用卡号 + CVV(我知道不存储 CVV,但这不是问题)。

编辑:顺便说一句,我想出了一些愚蠢的想法,它看起来像是一种已知的阻止字典攻击的方法。阅读更多这个问题:高成本加密,但解密成本低

也许我们可以在这里讨论一些其他方法,以防止暴力/字典/社会工程密码攻击

0 投票
1 回答
493 浏览

cryptography - 使用字典攻击在 UNIX 中查找所有用户密码的预期时间是多少?

我正在阅读 UNIX 密码算法的设计者使用 12 位盐来修改 unix 散列函数(DES)的 E 表。假设我有一个有 2^(24) 个用户的系统?

用户字典攻击有可能吗?如果是这样,需要多长时间?年??

我对计算机安全真的很陌生

抱歉编辑:我不确定我想我必须根据我的代码假设每分钟字节数是多少单位时间?

我问的原因是一个项目,其中一个问题是:“考虑一个有 2^24 个用户的系统。假设每个用户都被分配了一个均匀随机分布的盐,并且任何人都可以读取密码哈希和盐用户。” 使用字典攻击找到所有用户密码的预期时间是多少?”

非常感谢

0 投票
4 回答
20641 浏览

python - Python - 如何从特定长度的给定字符生成单词表

我想执行字典攻击,为此我需要单词列表。如何从特定长度的给定字符(或从最小长度到最大长度的单词长度)生成单词列表?我试过itertools.combinations_with_replacementsand itertools.permutations,但它没有帮助。他们没有应该返回的所有单词列表。任何帮助将不胜感激。谢谢你。

0 投票
2 回答
728 浏览

python - 如何对文件中的所有单词执行异或

我想转换标准字典中的所有单词(例如:unix机器的/usr/share/dict/words)整数并在字典中的每两个单词之间找到XOR(当然在将它们转换为整数之后)并可能存储它在一个新文件中。

由于我是 python 新手,而且文件很大,所以程序时不时地挂起。

0 投票
2 回答
440 浏览

security - 蛮力攻击真的可以实现吗?

我正在尝试对我的一个网站进行渗透测试。我不知道用户名和密码。我正在尝试使用暴力攻击破解用户名和密码。

虽然,这个策略应该是直接的,因为我需要每次都生成一个可变长度的新字母数字组合,并使用一些自己编写的程序发布它。

但是这种策略需要大量的处理时间和能力。我的简单疑问是,这种策略是否足以破坏用户名和密码,或者预计会完成其他一些任务。

我听说过很多关于字典攻击的信息,但这也需要预定义和预先预期的用户名和密码列表。

我应该选择 brutus(但它对我不起作用)还是自己编写的程序?获取用户名和密码的正确方法是什么?

0 投票
1 回答
1003 浏览

python - Python xmpp蛮力脚本不起作用

我已经使用 xmpppy 编写了一个(非常)简单的 python 脚本来尝试制作一个 xmpp(jabber)帐户暴力破解器,但是当我尝试运行它时,我得到:

第 5 行打印“语法:xsend JID 文本”语法错误:语法无效。

任何想法我做错了什么?

0 投票
1 回答
571 浏览

javascript - 在字典攻击期间检查尝试是否成功

我正在做一个项目,我必须在其中进行字典攻击。我正在运行一个脚本,该脚本发布到登录页面将发布到的页面(比如 members.php)。输入正确的用户名和密码后,服务器端唯一发生的事情就是设置了 cookie。Cookie 具有用户名和密码的 sha 值。(是的,我可以访问源代码)。

我在 members.php 中硬编码了一个脚本,这样每次有人登录时都会检索 cookie 的值并将其存储在我服务器的文本文件中。因此,我将能够跟踪谁曾经成功登录。

我正在尝试将以下脚本发布到 members.php 以尝试查看逻辑是否有效:

显然它不起作用。我知道 jasmine 作为密码和用户名是正确的(此处为 user_name[0] 和 pass_word[0])。即使那样,我在 members.php 中硬编码的脚本也没有捕获成功的登录尝试。

我也试图打破它

每次提交后。这也行不通。我想不出另一种方法来检查登录尝试是否成功。

任何帮助将不胜感激。谢谢!