
Генератор паролей на основе марковской модели на C, который перечисляет кандидатов по вероятности, генерируя наиболее вероятные пароли первыми для взлома хешей через Hashcat или John.
OMEN — это основанный на марковской модели угадыватель паролей, написанный на C. Он генерирует кандидаты в пароли в соответствии с вероятностями их появления, то есть сначала выводит наиболее вероятные пароли. OMEN значительно повышает скорость угадывания по сравнению с существующими решениями. Если вас интересуют подробности того, как OMEN улучшает существующие подходы к угадыванию паролей на основе марковских моделей, обратитесь к OMEN: Faster Password Guessing Using an Ordered Markov Enumerator.
OMEN состоит из двух отдельных программных модулей: createNG и enumNG. createNG
вычисляет вероятности n-грамм на основе заданного списка паролей и сохраняет их
на жёстком диске. На основе этих вероятностей enumNG перечисляет новые
пароли в правильном порядке (по убыванию).
Используйте свежую версию Linux и убедитесь, что у вас установлены git (система контроля версий Git), gcc (GNU Compiler Collection) и make (GNU Make). Установить их в Ubuntu Linux можно так:
$ sudo apt-get install build-essential git
Получите исходный код:
$ git clone https://github.com/RUB-SysSec/OMEN.git OMEN
Перейдите в только что созданный каталог OMEN и выполните:
$ make
Если компиляция прошла успешно, вы найдёте createNG и enumNG в текущем каталоге.
.
├── alphabetCreator
├── createNG
├── docs
│ ├── CHANGELOG.md
│ ├── LICENSE
│ └── screenshots
├── enumNG
├── evalPW
├── makefile
├── README.md
└── src
├── alphabetCreator.c
...
При желании теперь можно удалить папку src и файл makefile, они больше не используются.
Краткое руководство по установке с использованием Cygwin в Windows 10 можно найти здесь.
Прежде чем можно будет сгенерировать какие-либо пароли, необходимо оценить вероятности n-грамм с помощью
createNG. Чтобы вычислить вероятности с настройками по умолчанию, createNG нужно
вызвать, указав путь к списку паролей, на котором следует обучить модель:
$ ./createNG --iPwdList password-training-list.txt
Каждый пароль из заданного списка должен находиться на новой строке. Затем модуль
читает и обрабатывает список, генерируя несколько файлов. Помимо файла конфигурации (createConfig), в котором сохраняются использованные настройки (в данном случае настройки по умолчанию), создаётся несколько файлов, содержащих информацию о граммах и длине пароля. Эти файлы имеют расширение '.level':
Вероятности каждой n-граммы и длины отображаются на уровни от 0
(наиболее вероятный) до 10 (наименее вероятный). После создания этих файлов enumNG можно
использовать для генерации списка паролей, упорядоченных по вероятностям. В настоящее время enumNG поддерживает три режима работы: file, stdout, simulated plaintext attack. В режиме по умолчанию enumNG создаётся список предполагаемых паролей на основе этих уровней. Команда
$ ./enumNG
генерирует 1 миллиард паролей и сохраняет их в текстовый файл, который можно найти
в папке 'results'. Пароли в этом файле упорядочены по уровню (то есть по
вероятности). Поскольку обычные текстовые редакторы не способны обрабатывать такие огромные файлы,
для тестирования рекомендуется уменьшить количество создаваемых паролей. Это
можно сделать с помощью аргумента -m.
$ ./enumNG -m 10000
Будет создан упорядоченный список всего из 10 000 паролей. Если вы хотите вывести пароли в стандартный поток вывода (stdout), используйте аргумент -p.
$ ./enumNG -p -m 10000
Если вы хотите оценить эффективность угадывания на тестовом наборе паролей в виде открытого текста, используйте аргумент -s. Обратите внимание: в этом режиме OMEN выигрывает от адаптивного алгоритма планирования длины, использующего обратную связь в реальном времени, который недоступен (из-за отсутствия канала обратной связи) в режимах file и stdout.
$ ./enumNG -s=password-testing-list.txt -m 10000
Результат этой оценки можно найти в папке 'results'.
Оба модуля предоставляют диалог справки, который можно вызвать с помощью аргумента -h или --help.
Как перейти от $2a$10$HNYF4KajSTqxIP/KoiB5tOCVeKUgvscTh32hhAmppFk4T/USmI2B. к "GoodOMEN!123"?
OMEN был разработан для академических сценариев использования, таких как улучшение вероятностного моделирования паролей, оценка количества попыток или оценка стойкости паролей, в целом — для повышения безопасности паролей. Не злоупотребляйте этим программным обеспечением для нарушения чужой приватности или нарушения закона.
Популярные средства оценки хешей, такие как Hashcat и John the Ripper, поддерживают сотни форматов хешей и шифров и могут быть легко интегрированы благодаря поддержке чтения кандидатов в пароли через стандартный поток ввода (stdin).
$ ./enumNG -p -m 10000 | ./hashcat64.bin ...
или
$ ./enumNG -p -m 10000 | ./john --stdin ...
Для оптимальной эффективности угадывания рассмотрите возможность обучения createNG на распределении паролей, похожем на то, которое вы хотите взломать.
Обратите внимание: использование вероятностного моделирования паролей для взлома паролей в целом следует рассматривать только против медленных хешей (например, bcrypt, PBKDF2, scrypt или Argon2), где количество выполнимых попыток ограничено, либо в очень целенаправленных атаках. Напротив, для очень быстрых хешей (MD5, SHA-1 или NTLM) следует использовать хорошие словари и правила манглинга (например, best64.rule).
Если вам интересна эта тема, рассмотрите возможность прочтения следующих статей и связанных с ними работ (этот список неполный, вы можете помочь, расширив его):
Вероятностные контекстно-свободные грамматики
Марковские модели