Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sensepost/assless-chaps
密码破解Wi-Fi审计哈希分析密码学渗透测试
GitHubsensepost/assless-chaps

assless-chaps

使用NT哈希数据库快速破解MSCHAPv2质询/响应

查看仓库
1411928天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

assless-chaps

使用NT哈希数据库快速破解MSCHAPv2/NTLMv1挑战/响应

简介

Assless CHAPs 是一种高效恢复 MSCHAPv2/NTLMv1 交换中使用的 NT 哈希的方法,前提是你拥有挑战和响应(例如,来自 WiFi EAP WPE 攻击)。

它需要一个 NT 哈希数据库。下面提供了如何从现有列表或使用 hashcat 搭配字典和规则生成这些数据库的说明。我包含了来自 SecLists 的示例数据库。你需要对其进行 bunzip2 解压。

技术原理

MSCHAPv2 交换不需要破解明文密码,我们只需要使用的 NThash。

MSCHAPv2 将 NThash 分成三部分,并将每一部分用作不同的密钥,对同一个挑战(由对等方和认证者挑战派生而来)进行 DES 加密。NThash 被分成两个 7 字节密钥和一个 2 字节密钥。这意味着最后一个密钥需要用 NULL 填充,以构成所需长度的密钥。由于 DES 操作的高效性以及密钥空间仅为 65535,可以快速进行暴力破解。一旦我们得到这两个字节,就可以在数据库中查找所有以这两个字节结尾的 NThash。这将提供一个小得多的可能哈希集合。

这是一种空间与时间的权衡,类似于彩虹表。这也是一种 哈希剥壳 的形式。

演示

该工具首次在 Defcon 29 的 RF Hacking Village 上展示。幻灯片包含在此仓库中。

速度

以下是三个示例挑战/响应与三个不同字典(一个小型私有字典、rockyou 和 Have I Been Pwned 列表)的对比结果。测试在 2016 款 MacBook Pro 上进行。Hashcat 使用 这个 哈希剥壳内核和两个内置 GPU,以及纯内核而非优化内核(因为后者尚不存在)。Hash3 不在这些列表中,以模拟最差性能。我不包括 hashcat 首次运行构建字典缓存的时间。

Hash1

小型哈希列表:

root@kitploit:~
hashcat 0.50s user 0.27s system 55% cpu 1.405 total (8597.8 kH/s)
assless 0.05s user 0.00s system 294% cpu 0.018 total

Rockyou 哈希列表:

root@kitploit:~
hashcat 2.67s user 0.51s system 93% cpu 3.413 total
assless 0.05s user 0.01s system 281% cpu 0.021 total

HIBP 哈希列表:

root@kitploit:~
hashcat 59.97s user 11.72s system 136% cpu 52.603 total (5620.6 kH/s)
assless 0.05s user 0.00s system 292% cpu 0.018 total

Hash2

小型哈希列表:

root@kitploit:~
hashcat 0.51s user 0.27s system 55% cpu 1.409 total (8704.7 kH/s)
assless 0.03s user 0.00s system 248% cpu 0.012 total

Rockyou 哈希列表:

root@kitploit:~
hashcat 2.20s user 0.46s system 110% cpu 2.409 total (5798.4 kH/s)
assless 0.03s user 0.00s system 231% cpu 0.015 total

HIBP 哈希列表:

root@kitploit:~
hashcat 65.37s user 12.74s system 135% cpu 57.712 total (5768.7 kH/s)
assless 0.03s user 0.00s system 249% cpu 0.013 total

Hash3

Hash3 不在任何哈希列表中,以模拟最坏情况的查找性能。

小型哈希列表:

root@kitploit:~
hashcat 0.67s user 0.34s system 66% cpu 1.526 total (7550.1 kH/s)
assless 0.02s user 0.00s system 211% cpu 0.012 total

Rockyou 哈希列表:

root@kitploit:~
hashcat 2.71s user 0.52s system 94% cpu 3.415 total (5685.4 kH/s)
assless 0.02s user 0.01s system 181% cpu 0.014 total

HIBP 哈希列表:

root@kitploit:~
hashcat 125.19s user 27.62s system 139% cpu 1:49.75 total (5634.9 kH/s)
assless 0.06s user 0.03s system 115% cpu 0.075 total

安装

Rust 版本需要 SQLite 3.6.8 或更新版本。

Python 版本需要 python3、sqlite3 和 pycryptodome。

数据库创建工具需要 python3 和 sqlite3 CLI。

编译

这仅适用于 Rust 版本。你需要 cargo。

安装 cargo 后,只需切换到 assless-chaps-rs 目录,并用以下命令构建: cargo build --release

生成的二进制文件位于 target/release/ 目录中。

用法

Assless 需要挑战、响应和 NThash 数据库。可选地,Python 版本可以使用附带的优化双字节查找文件。最简单的用法如下所示:

./assless-chaps <Challenge> <Response> <hashes.db>

例如:

./assless-chaps 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db

输出应该如下所示:

root@kitploit:~
[-] Two byte lookup file not provided, will brute force instead.
[+] Found in 22636 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

最终完整的哈希 8846f7eaee8fb117ad06bdd830b7586c 是 password 的 NT 哈希。

双字节查找——仅限 Python

我曾花时间构建了一个包含所有 65535 个可能双字节值的列表,按在大型密码语料库中的出现频率排序。此文件作为 twobytes 包含在内。你可以将其作为第四个参数传递给 assless。

这通常可以节省几轮 DES,但速度提升不大。如果你要处理大量哈希,可能会更有用。

python3 assless-chaps.py 5d79b2a85966d347 556fdda5f67d2b746ca3315fd8b93adcab5c792790a92e87 rockyou.db twobytes

root@kitploit:~
[+] Found in 65533 tries: 586c
[-] Found 222 hashes ending in 586c
[+] Found hash: 8846f7eaee8fb1
[-] Found after 186 hashes.
[+] Found hash: 17ad06bdd830b7
[+] Full hash: 8846f7eaee8fb117ad06bdd830b7586c

创建你自己的哈希字典

mksqlitedb.py 文件将帮助将 CSV 哈希文件转换为数据库。

python3 mksqlitedb.py <数据库名称> <CSV文件>

CSV 文件需要三列:

  • 哈希的最后两个字节(最后四个 ASCII 字符)
  • 前 7 个字节(前 14 个 ASCII 字符)
  • 第二个 7 字节(第 15-29 个 ASCII 字符)

例如,哈希 8846f7eaee8fb117ad06bdd830b7586c 将变为:

586c,8846f7eaee8fb1,17ad06bdd830b7

一个示例正则表达式转换如下: echo 8846f7eaee8fb117ad06bdd830b7586c | sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\)$/\3,\1,\2/"

你可以使用现有的哈希列表(例如 Have I Been Pwned 列表)或使用 hashcat 和你喜欢的字典/规则组合自己生成。

使用 Have I Been Pwned

HIBP 密码列表已经以 NT 哈希形式提供,只需从文件中移除计数并将其转换为 CSV 格式即可导入数据库。

可以使用标准 Unix 工具 sed 完成,如下所示:

sed "s/^\(.\{14\}\)\(.\{14\}\)\(.\{4\}\):.*/\3,\1,\2/" pwned-passwords-ntlm-ordered-by-hash.txt > hibp.csv

之后可以使用 mksqlitedb.py hibp.db hibp.csv 导入。

将字典转换为哈希列表

要将纯文本字典转换为 nthashes 的哈希列表,你可以使用 nthasher,它能够快速处理大型字典。生成的哈希需要按照上述方法转换为所需的 CSV 格式。

本仓库中包含一个更慢的 nthasher,它可以直接输出所需 CSV 格式的哈希,简单运行:

python3 nthash-from-clear.py <字典文件> > hashlist.csv

如果你想通过规则扩展字典,请参阅下一节关于使用 hashcat 的内容。

使用 hashcat 从字典和规则创建哈希 CSV 文件

你需要对 mode 1000 的 OpenCL 模块做一个小代码修改,使其输出所有哈希,而不仅仅是匹配破解候选的哈希。默认情况下,它将以所需 CSV 格式生成哈希。

  • 切换到你的 hashcat OpenCL 目录:cd hashcat/OpenCL
  • 应用补丁:patch < m01000_a0-pure.cl.patch
  • 准备一个不可能破解的 NT 哈希文件,例如 echo 11111111111111111111111111111111 > impossible_hash
  • 正常破解,但禁用 potfile 并将输出重定向到文件:hashcat -m1000 impossible_hash rockyou.txt -r best64.rule --potfile-disable --quiet > rockyou.csv
  • 创建你的哈希数据库:python3 mksqlitedb.py rockyou.db rockyou.csv

关于磁盘空间和文件大小的说明

SQLite 数据库通常比用于创建它的 CSV 文件大 61%。根据文件大小,创建数据库也可能需要一些时间。请相应地准备你的文件系统需求。

以下是一个使用 rockyou 字典的示例:

  • 基础 rockyou 字典 129M
  • hashcat 生成的 rockyou.csv 462M
  • 生成的 SQLite 数据库 rockyou.db 746M
  • 最大压缩的 BZip2 rockyou.db.bz2 339M

你可以通过动态转换和插入每个哈希来节省空间,从而避免中间 CSV 文件。

NTLMv1 SSP

NTLMv1 将以完全相同的方式工作,除非它使用了 SSP。如果 LM 响应以一堆零结尾,你就知道使用了 SSP。你可以使用包含的 ntlm-ssp.py 来生成 assless 所需的服务器挑战。

像这样运行: python3 ntlm-ssp.py <LM响应> <挑战>

例如,如果我们使用来自 hashcat 示例哈希 的 NTLMv1-SSP 挑战响应: u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c

你可以像这样传递 LM 和挑战:

python3 ntlm-ssp.py 338d08f8e26de93300000000000000000000000000000000 cb8086049ec4736c

并获得以下响应:

The server challenge is: 724edf24aea0d68b

然后可以像往常一样使用 assless-chaps 破解:

./assless-chaps 724edf24aea0d68b 9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41 hashes.db

下载工具