Java Key Store (JKS) 是 Java 在文件中存储一个或多个用于非对称加密的加密私钥和公钥的方式。虽然存在多种密钥库格式,但 Java 和 Android 仍然默认使用 JKS 文件格式。JKS 是 Java 密钥库的文件格式之一,但令人困惑的是,JKS 也被用作通用 Java 密钥库 API 的缩写。本项目包含有关 JKS 文件格式安全机制以及如何破解私钥密码保护的信息。由于 JKS 的非同寻常的设计,所开发的实现可以忽略密钥库密码,直接破解私钥密码。由于它忽略了密钥库密码,此实现可以攻击所有 JKS 配置,而大多数其他工具则无法做到。通过利用 JKS 中私钥的基于密码加密方案的一个弱点,可以非常高效地破解密码。到目前为止,还没有公开工具利用这一弱点。该技术已在 hashcat 中实现,以通过在 GPU 上更快的破解速度来提高算法效率。
要了解理论部分,请参考本仓库中包含的 POC||GTFO 文章 "15:12 Nail in the Java Key Store Coffin",该文章位于第 0x15 期(pocorgtfo15.pdf)中,或者可以在像这个漂亮镜像站点上获取:https://unpack.debug.su/pocorgtfo/
在您提问之前:JCEKS 或 BKS 或任何其他密钥库格式(尚)不支持。
答案是为此构建你自己的破解硬件 ;) 。但让我们更实际一些,所以答案是使用你的 GPU:``` : _____________ : v3.6.0 ____________ _\ |_ /___ \ |____ _ / ______ | _ | __ \ / _ | /_ __ |/ | | | \ ___ / | | \ / \ | | || |__/ / /| |/: | |_:-aTZ!/_/ |: /__:
你只需要运行以下命令:```
java -jar JksPrivkPrepare.jar your_JKS_file.jks > hash.txt
如果你的hash.txt文件为空,说明JKS文件中没有私钥,或者你指定的不是JKS文件。
然后将hash.txt文件输入到hashcat(版本3.6.0及以上,但为了安全起见并确保能破解非常长的密码,请至少使用版本4的hashcat!),例如这样:
hashcat -m 16500 -a 0 hash.txt password_list.txt --force
$ ./hashcat -m 15500 -a 3 -1 '?u|' -w 3 hash.txt ?1?1?1?1?1?1?1?1?1 hashcat (v3.6.0) starting...
Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Applicable optimizers:
Watchdog: Temperature abort trigger set to 90c Watchdog: Temperature retain trigger set to 75c
$jksprivk$D1BC102EF5FE5F1A7ED6A63431767DD4E1569670...8test:POC||GTFO
Session..........: hashcat Status...........: Cracked Hash.Type........: JKS Java Key Store Private Keys (SHA1) Hash.Target......: $jksprivk$D1BC102EF5FE5F1A7ED6A63431767DD4E1569670...8test Time.Started.....: Tue May 30 17:41:58 2017 (8 mins, 25 secs) Time.Estimated...: Tue May 30 17:50:23 2017 (0 secs) Guess.Mask.......: ?1?1?1?1?1?1?1?1?1 [9] Guess.Charset....: -1 ?u|, -2 Undefined, -3 Undefined, -4 Undefined Guess.Queue......: 1/1 (100.00%) Speed.Dev.#1.....: 7946.6 MH/s (39.48ms) Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts Progress.........: 4014116700160/7625597484987 (52.64%) Rejected.........: 0/4014116700160 (0.00%) Restore.Point....: 5505024000/10460353203 (52.63%) Candidates.#1....: NNVGFSRFO -> Z|ZFVDUFO HWMon.Dev.#1.....: Temp: 75c Fan: 89% Util:100% Core:1936MHz Mem:4513MHz Bus:1
Started: Tue May 30 17:41:56 2017 Stopped: Tue May 30 17:50:24 2017
因此,从这个仓库你基本上只需要 JksPrivkPrepare.jar 来运行破解会话。
# 从 John The Ripper 格式到 hashcat 格式