Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
assless-chaps — Быстрый взлом вызовов/ответов MSCHAPv2 с использованием базы NT-хешей. | Kitploit
Инструменты/GitHubGitHub/sensepost/assless-chaps
Взлом паролейАудит Wi-FiАнализ хэшейКриптографияТестирование на Проникновение
GitHubsensepost/assless-chaps

assless-chaps

Быстрый взлом вызовов/ответов MSCHAPv2 с использованием базы NT-хешей.

Репозиторий
1411927 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

assless-chaps

Быстро взламывайте challenge/response'ы MSCHAPv2/NTLMv1 с помощью базы NT-хэшей

Введение

Assless CHAPs — это эффективный способ восстановить NT-хэш, используемый в обмене MSCHAPv2/NTLMv1, если у вас есть challenge и response (например, из атаки WiFi EAP WPE).

Требуется база NT-хэшей, инструкции по её созданию из существующих списков или с помощью hashcat со словарями и правилами приведены ниже. Я включил пример базы из SecLists. Вам нужно распаковать её с помощью bunzip.

Техника

Обмен MSCHAPv2 не требует «взлома» пароля в открытом виде, нам нужен только используемый NThash.

MSCHAPv2 делит NThash на три части и использует каждую часть как разные ключи для DES-шифрования одного и того же challenge (полученного из peer и authenticator challenges). NTHash разбивается на два 7-байтовых ключа и один 2-байтовый ключ. Это означает, что последний ключ дополняется NULL для получения ключа необходимой длины. Его можно быстро перебрать благодаря эффективности DES и пространству ключей в 65 535. Получив эти два байта, мы можем найти в нашей базе все NThash'и, оканчивающиеся на эти два байта. Это даёт гораздо меньшее множество возможных хэшей для проверки.

Это форма компромисса между пространством и временем, похожая на радужную таблицу. Это также форма hash shucking.

Презентация

Впервые это было представлено на Defcon 29's RF Hacking Village. Слайды включены в этот репозиторий.

Скорость

Вот сравнение для трёх примеров challenge/response и трёх разных словарей: небольшого частного, rockyou и списка Have I Been Pwned. Тесты проводились на моём Macbook Pro 2016. Hashcat использует это hash schucking ядро и два встроенных GPU, а также чистое, а не оптимизированное ядро (последнего пока не существует). Hash3 отсутствует в списках для имитации наихудшей производительности. Я не включаю время, которое hashcat тратит на построение кэша словаря при первом запуске.

Hash1

Small hashlist:

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 hashlist:

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 hashlist:

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

Hash 2

Small hashlist:

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 hashlist:

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 hashlist:

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

Hash 3

Hash 3 doesn't exist in any of the hashlists to simulate a worst case lookup performance.

Small hashlist:

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 hashlist:

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 hashlist:

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 и CLI sqlite3.

Компиляция

Это относится только к версии на Rust. Вам понадобится cargo.

Установив cargo, просто перейдите в каталог assless-chaps-rs и соберите с помощью: cargo build --release

Полученный бинарник будет в каталоге target/release/.

Использование

Для assless требуются challenge, response и база 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 — это NT-хэш для password.

Поиск по двум байтам — только Python

Я потратил некоторое время на построение списка всех 65 535 возможных двухбайтовых значений, отсортированных по наиболее часто встречающимся в большом корпусе паролей. Этот файл включён как 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 <database name> <csv file>

CSV-файл требует три столбца:

  • Последние два байта хэша (последние четыре символа ASCII)
  • Первые 7 байт (первые 14 символов ASCII)
  • Вторые 7 байт (15-29 символы ASCII)

Например, хэш 8846f7eaee8fb117ad06bdd830b7586c станет:

586c,8846f7eaee8fb1,17ad06bdd830b7

Пример regexp-трансформации для этого: 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.

Преобразование словаря в список хэшей

Чтобы преобразовать обычный словарь в список nthash'ей, можно использовать nthasher, который быстро обрабатывает большие словари. Полученные хэши нужно будет преобразовать в требуемый формат CSV, как описано выше.

Гораздо более медленный nthasher, который выводит хэши сразу в нужном формате CSV, включён в этот репозиторий, и запускается просто так:

python3 nthash-from-clear.py <wordlist> > hashlist.csv

Если вы хотите расширить словарь с помощью правил, смотрите следующий раздел об использовании hashcat.

Использование hashcat для создания CSV-файла хэшей из словарей и правил

Вам нужно сделать небольшое изменение в коде модуля OpenCL для режима 1000, чтобы он выводил каждый хэш, а не только те, что соответствуют вашему кандидату. По умолчанию он генерирует хэш в правильном формате 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 обычно на 61% больше, чем CSV-файл, использованный для её создания. Создание базы данных также может занять некоторое время в зависимости от размера файлов. Соответственно подготовьте требования к файловой системе.

Вот пример с использованием словаря rockyou:

  • Base rockyou dictionary 129M
  • hashcat generated rockyou.csv 462M
  • Resulting SQLite database rockyou.db 746M
  • BZip2 maximum compression rockyou.db.bz2 339M

You could save space by converting and inserting each hash dynamically and skipping the need for the intermediary CSV file.

NTLMv1 SSP

NTLMv1 будет работать точно так же, если только не используется SSP. Вы узнаете, что используется SSP, если получите LM-ответ, оканчивающийся на множество нулей. Вы можете использовать включённый ntlm-ssp.py для создания серверного challenge, который потребуется assless.

Запустите так: python3 ntlm-ssp.py <lm response> <challenge>

Например, если мы используем пример NTLMv1-SSP challenge response из примеров хэшей hashcat: u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c

Вы передадите LM и challenge следующим образом:

python3 ntlm-ssp.py 338d08f8e26de93300000000000000000000000000000000 cb8086049ec4736c

И получите следующий ответ:

The server challenge is: 724edf24aea0d68b

Который затем можно взломать с помощью assless-chaps как обычно:

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

Скачать инструмент