sensepost/hash-cracker
GitHub: sensepost/hash-cracker
围绕 hashcat 的 Bash 封装工具,通过交互式菜单将多种精选密码破解工作流自动化,降低使用门槛并集成最佳实践。
Stars: 84 | Forks: 13
# hash-cracker
围绕 `hashcat` 的简单 Bash 封装,用于通过交互式菜单运行一组精选的破解工作流。背景介绍和使用理念在[这篇博客文章](https://sensepost.com/blog/2023/hash-cracker-password-cracking-done-effectively/)中有所介绍。
有用的字典源:
-
-
如果 `hashcat` 输出值为 `$HEX[...]`,请参阅 [hex-to-readable](https://github.com/crypt0rr/hex-to-readable) 或使用 [CyberChef](https://cyberchef.offsec.nl/)。
## 安装
```
git clone https://github.com/crypt0rr/hash-cracker
cd hash-cracker
chmod +x hash-cracker.sh
```
## 要求
### 必要条件
- 必须安装 `hashcat` 且可执行
- 仓库根目录中必须存在 `hash-cracker.conf`
在启动时,`hash-cracker` 会检查:
- `HASHCAT` 指向一个可执行的 `hashcat` 二进制文件
- `POTFILE` 存在,或者可以被创建
- `hash-cracker.conf` 中设置了必需的配置键
### 可选依赖项
这些仅用于特定的菜单选项。
#### Linux
- `python2`
- 选项 `12` (PACK rulegen) 和选项 `13` (PACK mask) 所需
- 工具文本建议对选项 `12` 使用 `python2 -m pip install pyenchant==3.0.0a1`
- `cewl`
- 选项 `18` 所需
- `scripts/extensions/common-substr-linux`
- 选项 `10` 和 `11` 所需
- `scripts/extensions/hashcat-utils-linux/bin/expander.bin`
- 选项 `14` 所需
#### macOS
- `scripts/extensions/cewl/cewl.rb`
- 选项 `18` 所需
- `scripts/extensions/common-substr-mac`
- 选项 `10` 和 `11` 所需
- `scripts/extensions/hashcat-utils-mac/bin/expander.bin`
- 选项 `14` 所需
- `python3`
- 选项 `13` (PACK mask) 使用
注意:
- 选项 `12` 目前在 macOS 上不可用。
- 选项 `13` 使用捆绑的 PACK 脚本,并从现有的 potfile 生成掩码。
## 配置
`hash-cracker.conf` 是必需的,并在每次启动时自动加载。
该文件必须位于仓库根目录,并定义以下设置:
- `HASHCAT` - `hashcat` 二进制文件的路径
- `DEVICE` - 传递给 `hashcat -d` 的值
- `HASHTYPE` - 哈希模式,例如 `1000` 代表 NTLM
- `HASHLIST` - 包含目标哈希的文件
- `POTFILE` - 要使用或创建的 potfile 路径
- `WORDLIST` - 主字典路径
- `WORDLIST2` - 组合器风格工作流使用的辅助字典路径
当前示例:
```
# Hashcat 路径
HASHCAT=(/usr/local/bin/hashcat)
# 要使用的设备 (hashcat -d $DEVICE)
DEVICE=1
# Hashtype
HASHTYPE=1000
# 包含目标 hashes 的文件
HASHLIST=input
# 您要使用的 Potfile
POTFILE=hash-cracker.pot
# Wordlist(s)
WORDLIST=wordlists/ignis-1M.txt
WORDLIST2=wordlists/ignis-1K.txt
```
## 使用方法
从仓库根目录运行:
```
./hash-cracker.sh
```
带标志运行:
```
./hash-cracker.sh [FLAG]
```
帮助:
```
./hash-cracker.sh --help
```
显示模块描述:
```
./hash-cracker.sh --module-info
```
搜索本地哈希类型列表:
```
./hash-cracker.sh --search ntlm
```
## 标志
默认情况下,`hash-cracker` 启用优化内核,启用回环,禁用硬件监控,并在标准输出上显示已破解的哈希。
- `-l`, `--no-loopback` - 禁用回环功能
- `-n`, `--no-limit` - 禁用优化内核
- `--hwmon-enable` - 启用硬件监控
- `-m`, `--module-info` - 打印可用模块的描述并退出
- `-s [hash-name]`, `--search [hash-name]` - 搜索本地哈希类型数据库并退出
- `-d`, `--disable-cracked` - 通过将已破解的哈希写入 `/dev/null` 来禁止在标准输出上显示
## 菜单选项
当工具成功启动时,它会打开一个包含以下选项的交互式菜单:
1. 暴力破解
2. 轻规则
3. 重规则
4. 输入特定单词/姓名/公司
5. 输入特定单词/姓名/公司 (暴力破解)
6. 混合模式
7. 切换大小写
8. 组合器
9. 迭代结果
10. 前缀后缀
11. 常见子串
12. PACK 规则生成
13. PACK 掩码
14. 指纹攻击
15. 字典目录纯文本及随后使用 `OneRuleToRuleThemAll`
16. 用户名迭代 (仅限完整的 NTDS)
17. 马尔可夫链密码生成器
18. CeWL 字典生成器
19. 数字移除器
20. 堆叠器
21. 自定义暴力破解
22. 字典目录纯文本及随后使用 `buka_400k`
## 模块说明
- 选项 `2`、`3`、`6`、`7` 和 `20` 会询问是使用单个字典还是多个字典。
- 选项 `8` 使用配置文件中的 `WORDLIST` 和 `WORDLIST2`。
- 选项 `15` 和 `22` 会要求提供一个包含多个字典的目录。
- 选项 `4` 和 `5` 会提示输入自定义单词或公司名称。
- 选项 `16` 需要一个 NTDS 风格的输入文件,并从 `HASHLIST` 中提取用户名。
- 选项 `17` 可以从 potfile 或选定的字典生成候选者。
- 选项 `18` 会提示输入 URL、输出字典名称、抓取深度和最小单词长度。
- 选项 `21` 会提示输入暴力破解长度以及是否应启用递增模式。
## 示例哈希
示例哈希位于 `example-hashes/` 目录中:
- MD5 (`-m 0`)
- SHA1 (`-m 100`)
- NTLM (`-m 1000`)
对于大型公共数据集,请参阅 [Have I Been Pwned Passwords](https://haveibeenpwned.com/Passwords)。
## 版本日志
参见 [VERSION.md](VERSION.md)。
## 许可证
GNU GPLv3
标签:Bitdefender, CyberChef, DOS头擦除, Hashcat, PACK, VEH, 二进制发布, 交互式菜单, 口令破解, 字典攻击, 客户端加密, 密码破解, 应用安全, 开源工具, 弱口令, 攻击脚本, 数据展示, 爆破, 用户模式钩子绕过, 红队, 网络安全, 网络调试, 自动化, 逆向工具, 隐私保护