如何使用 JTR 破解 `salt + SHA256(salt + password)` 哈希?

信息安全 密码破解 开膛手约翰
2021-08-15 04:31:50

我有一组密码哈希。

这是一个例子:

9e74437e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806

从生成此哈希的应用程序的源代码中,我了解到盐被添加为前 6 个字符,产生哈希的整体算法是:

salt + SHA256(salt + password)

知道上述哈希 ( helloworld) 的明文密码后,我能够确认我从 Linux 命令行 (command + result) 上的源代码中收集的假设:

printf 9e7443helloworld | sha256sum
7e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806  -

现在正如我所说,我有一组这些哈希值,我想设置 John The Ripper 对抗它们并使用字典攻击。我想这可以使用--rules标志并提供带有自定义规则的自定义配置文件来完成。但我不确定这是正确的方法,也不熟悉 JTR 的修改规则。

你能告诉我用 JTR 实现我的目标的方法吗?

2个回答

据我所知,该--rules选项仅允许您为用户可能使用的密码定义规则(例如,、、foobarfoobar123f00bar

该参数--format对应于哈希的格式。许多预定义的规则,因此您可以将文件修改为 format salt:md5(salt+password),例如:

9e7443:7e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806

并找到username:md5(username+password)例如处理的格式。

另一种选择是使用动态脚本这种方法会更棘手,但也更灵活。

解决方案是使用预定义的动态格式。使用我的问题中的示例,我以以下格式将其保存到 hashes.txt 中:

username:7e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806$9e7443

然后使用预定义的动态格式:

john --format=dynamic_61 hashes.txt

使用 JTR-jumbo 列出所有动态格式的命令:

john --list=subformats