Словари для атак
Содержание:
- Как комбинировать более двух словарей
- Использование сгенерированных в Hashcat паролей в Aircrack-ng
- Создание словарей в tmpfs
- На чем брутить пароли WiFi?
- Взлом Wi-Fi в Aircrack-ng с генерируемыми на лету паролями в Crunch
- Как создать комбинированный словарь, содержащий имя пользователя и пароль, разделённые символом
- Взлом WPA паролей с Aircrack-ng в Windows
- Как создать словарь по маске с переменной длиной
- Как оценивали удобство для пользователей
- Как при помощи Hashcat можно сгенерировать словарь хешей MD5 всех шестизначных чисел от 000000 до 999999
- Составление списков слов и списков имён пользователей на основе содержимого веб-сайта
- Утёкшие пароли
- Словари DIRB
- Подборка словарей с сайта WirelessHack.org [Словари для взлома Wi-Fi]
- Списки слов от Metasploit
- Как составляли и проверяли политики
- Отбор паролей, соответствующих определённой политике
Как комбинировать более двух словарей
Далее показан пример комбинации трёх словарей — суть в том, что каждое новое полученное слово состоит по одному слову из каждого из трёх словарей:
# создание промежуточных словарей, получаемых комбинацией каждой пары словарей hashcat -a 1 --stdout dict1.txt dict2.txt > tmp12.txt hashcat -a 1 --stdout dict2.txt dict1.txt > tmp21.txt hashcat -a 1 --stdout dict1.txt dict3.txt > tmp13.txt hashcat -a 1 --stdout dict2.txt dict3.txt > tmp23.txt hashcat -a 1 --stdout dict3.txt dict2.txt > tmp32.txt hashcat -a 1 --stdout dict3.txt dict1.txt > tmp31.txt # создание промежуточных словарей, получаемых комбинацией каждой пары «исходный словарь-комбинированный словарь». В результате будут созданы словари, являющиеся комбинацией всех трёх hashcat -a 1 --stdout dict12.txt dict3.txt > tmp123.txt hashcat -a 1 --stdout dict21.txt dict3.txt > tmp213.txt hashcat -a 1 --stdout dict13.txt dict2.txt > tmp132.txt hashcat -a 1 --stdout dict31.txt dict2.txt > tmp312.txt hashcat -a 1 --stdout dict23.txt dict1.txt > tmp231.txt hashcat -a 1 --stdout dict32.txt dict1.txt > tmp321.txt # собираем все полученные слова в один словарь: cat tmp123.txt tmp213.txt tmp132.txt tmp312.txt tmp231.txt tmp321.txt | sort | uniq > full.txt
И… в этом месте я вспомнил о программе combinator3. Она поставляется в пакете hashcat-utils. Эта команда служит для комбинации трёх словарей (для комбинации двух словарей используйте combinator).
Использование:
combinator3 file1 file2 file3
Эта программа умеет комбинировать по 3 указанных словаря, но опять же — если словарь идёт третьим, то слова из него всегда будут в конце.
Чтобы получить все возможные комбинации из трёх слов в любом порядке, то нужно использовать следующие команды:
combinator3 file1 file2 file3 > full.txt combinator3 file1 file3 file2 >> full.txt combinator3 file2 file1 file3 >> full.txt combinator3 file2 file3 file1 >> full.txt combinator3 file3 file1 file2 >> full.txt combinator3 file3 file2 file1 >> full.txt
Использование сгенерированных в Hashcat паролей в Aircrack-ng
Для того, чтобы не взламывать пароли, а только показать кандидаты, в Hashcat есть опция —stdout
Также нам нужно указать режим взлома (опция -a) и саму маску.
# | Режим ===+====== 0 | Прямой 1 | Комбинированный 3 | Брут-форс 6 | Гибридный словарь + маска 7 | Гибридный маска + словарь - - ? | Набор символов ===+========= l | abcdefghijklmnopqrstuvwxyz u | ABCDEFGHIJKLMNOPQRSTUVWXYZ d | 0123456789 h | 0123456789abcdef H | 0123456789ABCDEF s | !"#$%&'()*+,-./:;<=>?@^_`{|}~ a | ?l?u?d?s b | 0x00 - 0xff
В итоге команда для показа паролей выглядит так:
hashcat --stdout -a 3 pattaya?l?l?l?l
Здесь:
- —stdout означает только показывать кандидаты в пароли
- -a 3 выбран режим брутфорса/атаки по маске
- pattaya?l?l?l?l — сама маска. Все создаваемые пароли в начале слова будут иметь pattaya, а далее будут идти четыре маленькие буквы. Рекомендуется ознакомиться с правилами составления масок для Hashcat: https://kali.tools/?p=578
Команда передачи сгенерированных паролей из hashcat в aircrack-ng для моих данных выглядит так:
hashcat --stdout -a 3 pattaya?l?l?l?l | aircrack-ng -w - -e dlink dlink-02.cap
Создание словарей в tmpfs
tmpfs — это виртуальная файловая система, располагающаяся в оперативной памяти. Больше подробностей о ней в разделе «».
Файловая система tmpfs имеет следующие свойства:
- Файловая система может использовать пространство подкачки, когда этого требует физическая нагрузка на память.
- Файловая система потребляет столько физической памяти и пространства подкачки, сколько требуется для хранения текущего содержимого файловой системы.
- Во время операции повторного монтирования (mount -o remount) размер файловой системы может быть изменён (без потери существующего содержимого файловой системы).
Если файловая система tmpfs размонтирована, её содержимое теряется (удаляется)
Это очень важно — скопируйте из неё все данные перед тем как выключить компьютер, иначе всё будет потеряно.. Хотя это очевидно, но на всякий случай: поскольку все данные располагаются в оперативной памяти, у вашего компьютера должно быть достаточно ОЗУ, чтобы хранить те данные, которые вы хотите поместить в tmpfs.
Хотя это очевидно, но на всякий случай: поскольку все данные располагаются в оперативной памяти, у вашего компьютера должно быть достаточно ОЗУ, чтобы хранить те данные, которые вы хотите поместить в tmpfs.
Создадим точку монтирования:
mkdir /tmp/mytmpfs
Создадим виртуальную файловую систему размером 20 Гигабайт в оперативной памяти:
sudo mount -t tmpfs -o size=20g tmpfs /tmp/mytmpfs
Переходим в неё:
cd /tmp/mytmpfs
Для создания словаря воспользуемся программой maskprocessor. Следующей командой мы создаём словарь на 5 символов (большие и маленькие буквы, цифры):
time maskprocessor -1 ?l?u?d ?1?1?1?1?1 > dic.txt
Перед maskprocessor поставлена ещё одна команда — time, она измеряет время работы программы.
Создание словаря заняло около 6 секунд.
В Системном мониторе можно увидеть, что на время работы программы для создания словаря одно из ядер процессора было загружено полностью. Также видно, что выросло потребление оперативной памяти.
А теперь для примера создадим такой же словарь на жёстком диске:
time maskprocessor -1 ?l?u?d ?1?1?1?1?1 > dic.txt
На жёстком диске эта операция занимает от 20 секунд до одной минуты (видимо, зависит от занятости самого диска).
В качестве эксперимента, возьмём команду преобразования словаря по Правилу из этой статьи:
john --rules=lud5 --wordlist=dic.txt --stdout > lud5.txt
На жёстком диске она завершилась за 43 секунды, а в оперативной памяти за 41 секунду. Причина таких результатов в том, что в этом случае узким местом является производительность одного ядра процессора (процесс создания и преобразования словарей выполняется в один поток).
На чем брутить пароли WiFi?
Локально перебирать пароли лучше на десктопном компе с мощной видюхой, а если его нет, воспользуйся онлайновыми сервисами. Бесплатно в них предлагаются ограниченные наборы, но даже их порой достаточно.
Взлом двух паролей WiFi онлайн
Еще один интересный вариант — использовать сеть распределенных вычислений. Сделать это позволяет, например, Elcomsoft Distributed Password Recovery. Эта универсальная программа понимает десятки форматов паролей и хешей, включая .cap, .pcap и .hccapx. Над одной задачей в ней одновременно могут работать до десяти тысяч компьютеров, объединяя ресурсы своих процессоров и видеокарт.
Распределенный брут хешей WPA
Плюс у нее очень продвинутый подход к словарной атаке. Можно использовать маски, приставки и мутации, фактически расширяя объем словаря в несколько раз.
Почему выполняют атаку по словарю вместо брута?
Ключ WPA(2)-PSK генерируется длиной 256 бит. Число возможных комбинаций (2^256) таково, что даже на мощном сервере с графическими ускорителями потребуются годы для их перебора. Поэтому реалистичнее выполнить словарную атаку.
Обычно Wifite2 делает это сам. После захвата хендшейка он проверяет его качество. Если все нужные данные в нем сохранились, то автоматически запускается атака по словарю wordlist-top4800-probable.txt. Как нетрудно догадаться, в нем всего 4800 самых распространенных паролей.
Он удобен тем, что быстро срабатывает даже на стареньком ноутбуке, однако с большой вероятностью искомой комбинации в этом словаре не будет. Поэтому стоит сделать свой.
Как составить свой словарь?
Сначала я собрал коллекцию словарей из разных источников. Это были предустановленные словари в программах для перебора паролей, каталог /usr/share/worldlists/ в самой Kali Linux, базы утекших в Сеть реальных паролей от разных аккаунтов и подборки на профильных форумах. Я привел их к единому формату (кодировке), используя утилиту recode. Дальше переименовал словари по шаблону dict##, где ## — счетчик из двух цифр. Получилось 80 словарей.
Объединение 80 словарей, пропуская одинаковые записи
На следующем этапе я объединил их в один, удалив явные повторы, после чего запустил утилиту PW-Inspector для очистки объединенного словаря от мусора. Поскольку пароль для WiFi может быть от 8 до 63 символов, я удалил все записи короче 8 и длиннее 63 знаков.
cat * > alldicts | sort | uniq pw-inspector -i alldicts -m 8 -M 63 > WPAMegaDict
Затем я подумал, что получился слишком большой файл, который можно сократить сильнее без явного ущерба для эффективности перебора. Вы видели в реальной жизни пароли Wi-Fi длиннее 16 символов? Вот и я не видел.
pw-inspector -i WPAMegaDict -m 8 -M 16 > WPADict_8-16
На файлообменнике Кима Доткома можно (647 Мб в ZIP-архиве, 2,8 Гб в распакованном виде).
Взлом Wi-Fi в Aircrack-ng с генерируемыми на лету паролями в Crunch
Crunch — генератор словарей с паролями, в которых можно определить стандартную или заданную кодировку. Crunch может создать список слов со всевозможными комбинациями и перестановками в соответствии с заданными критериями. Данные, которые выводит crunch, могут быть отображены на экране, сохранены в файл или переданы в другую программу.
Простой пример использования:
crunch <минимальная-длина> <максимальная-длина>
Вообще, Crunch очень гибкая программа, и чтобы использовать её на 100% нужно изучить её опции и ознакомиться с примерами. Разнообразные примеры использования crunch вы найдёте на странице: https://kali.tools/?p=720
Для моего случая можно было бы сделать так:
crunch 11 11 -t pattaya@@@@ | aircrack-ng -w - -e dlink dlink-02.cap
Или так:
crunch 11 11 -t @@@@@@@@@@@ | aircrack-ng -w - -e dlink dlink-02.cap
Как создать комбинированный словарь, содержащий имя пользователя и пароль, разделённые символом
Теперь возвращаемся к комбинированным словарям, содержащим одновременно имя пользователя и пароль.
В качестве примера посмотрите на фрагмент словаря (файл auth_basic.txt) программы Router Scan by Stas’M — в нём учётные данные разделены символом табуляции:
admin <empty> admin admin admin 1234 admin password Admin Admin <empty> admin root <empty> root admin root root root toor root public
А это пример комбинированного словаря, в котором имя пользователя и пароль разделены двоеточием:
admin:admin admin:1234 admin:password root:root root:toor
Чтобы создать комбинированный словарь, используйте команду вида:
hashcat -a 1 --stdout -j '$РАЗДЕЛИТЕЛЬ' users.txt passwords.txt
В этой команде:
- users.txt и passwords.txt — словари, из которых будут взяты имена пользователей и пароли и будут составлены все возможные комбинации.
- РАЗДЕЛИТЕЛЬ — символ, которым будут разделены логин и пароль
Например, в следующей команде разделителем является двоеточие:
hashcat -a 1 --stdout -j '$:' users.txt passwords.txt
Кстати, если в качестве разделителя нужно вставить символ табуляции, то нажмите Ctrl-v + Tab:
Кстати, если вы попытаетесь разобраться в приведённой выше команде hashcat, то выясните, что одновременно используется Комбинаторная атака и добавлено правило из Атаки на основе правил.
Рассмотрим частный случай: как создать файл парный словарь логинов и паролем такого типа: логин всегда постоянный, затем табуляция и пароль.
superadmin Zte531zTE@fn18131 superadmin Zte531zTE@fn18132 И т.д.
Конечно, в качестве первого словаря можно создать файл с одним текстовым полем — логином. Но есть и другой вариант с помощью мощнейшей команды sed:
sed -e 's/^/superadmin\t/' pass.txt > login_pass.txt
В этой команде:
- superadmin — строка, которую нужно вставить перед каждым паролем
- \t — символ табуляции, который будет разделять логин и пароль
- pass.txt — файл, откуда считывать пароли
- login_pass.txt — новый файл, куда будут сохранены пароли
Если не хотите создавать новый файл, а хотите изменить имеющийся, то уберите перенаправление и добавьте опцию -i:
sed -i -e 's/^/superadmin\t/' pass.txt
Взлом WPA паролей с Aircrack-ng в Windows
Перейдите в каталог, где размещён исполнимый файл aircrack-ng-avx.exe (у вас путь будет другим):
cd C:\Users\Alex\Downloads\aircrack-ng-1.2-rc4-win\bin\64bit\
Пример запуска взлома:
aircrack-ng-avx.exe -w D:\newrockyou.txt -e dlink dlink-02.cap
Где:
- -w D:\newrockyou.txt – это путь до словаря;
- -e dlink – выбранная для взлома точка доступа
- dlink-02.cap – файл с захваченным рукопожатием, размещён в той же папке, что и исполнимый файл.
Кстати, вы найдёте три схожих файла:
- aircrack-ng-avx.exe
- aircrack-ng-avx2.exe
- aircrack-ng-sse2.exe
Попробуйте их все – у них будет разная производительность, а некоторые могут не запуститься.
Как создать словарь по маске с переменной длиной
Рассмотрим генерацию списков слов различной длины на примере Hashcat и maskprocessor.
Удлиняющиеся пароли в Hashcat
Для того, чтобы генерировались пароли различной длины, имеются следующие опции:
-i, --increment | | Включить режим приращения маски | --increment-min | Числ | Начать прирост маски на X | --increment-min=4 --increment-max | Числ | Остановить прирост маски на X | --increment-max=8
Опция -i является необязательной. Если она используется, то это означает, что длина кандидатов в пароли не должна быть фиксированной, она должна увеличиваться по количеству символов.
Опция —increment-min также является необязательной. Она определяет минимальную длину кандидатов в пароли. Если используется опция -i, то значением —increment-min по умолчанию является 1.
И опция —increment-max является необязательной. Она определяет максимальную длину кандидатов в пароли. Если указана опция -i, но пропущена опция —increment-max, то её значением по умолчанию является длина маски.
Правила использования опций приращения маски:
- перед использованием —increment-min и —increment-max необходимо указать опцию -i
- значение опции —increment-min может быть меньшим или равным значению опции —increment-max, но не может превышать его
- длина маски может быть большей по числу символов или равной числу символов, установленной опцией —increment-max, НО длина маски не может быть меньше длины символов, установленной —increment-max.
Итак, команда запуска для генерации паролей, которые имеют длину от шести до десяти символов:
hashcat -a 3 -i —increment-min=6 —increment-max=10 —stdout ?l?l?l?l?l?l?l?l?l?l
Удлиняющиеся пароли в maskprocessor
В maskprocessor имеется следующая опция приращения:
-i, --increment=ЧИСЛО:ЧИСЛО Включить режим приращения. Первое ЧИСЛО=начало, второе ЧИСЛО=конец Пример: -i 4:8 интересующая длинна 4-8 (включая)
Следующая команда составит словарь из чисел от 1 до 9999:
maskprocessor -i 1:4 ?d?d?d?d
Как оценивали удобство для пользователей
Теперь перейдем к измерениям удобства. На первом этапе все участники эксперимента должны были придумать пароль в специально разработанном “паролеметре”. Парольная политика выбиралась случайно из всех комбинаций, которые проверяли исследователи.
-
Участники эксперимента получали список рекомендаций, вводили пароль и в реальном времени наблюдали, как меняется индикатор сложности пароля.
-
Как только минимальные требования были выполнены, “паролеметр” давал рекомендации для усиления пароля:
Рекомендации меняются по мере того, как мы добавляем другой регистр и цифры. Запись демо с сайта CMU.
Пока пользователь придумывал пароль, “паролеметр” фиксировал, с какой попытки удалось выполнить требования и сколько времени понадобилось на создание правильного пароля.
-
Все созданные пароли проверяли с помощью нейронных сетей и предсказывали, сколько попыток потребуется для подбора.
-
Через 2 дня ученые просили пользователей принять участие во втором этапе и вспомнить созданный пароль. Если пользователи не отвечали через 5 дней, они выбывали из эксперимента. Для остальной выборки фиксировали долю тех, кому удалось вспомнить пароль. Исследователи анализировали все сопутствующее поведение участников: могут ли они воспроизвести пароль по памяти или записывают его, сколько времени и попыток нужно на воспроизведение.
-
Участников обоих этапов просили заполнить опросник и описать в нем опыт участия в эксперименте: насколько сложно создать пароль, как сильно выбранная парольная политика раздражала пользователя.
Для каждой комбинации условий ученые фиксировали объективные показатели эксперимента: количество участников, долю выбывших на втором этапе, фактическое время создания пароля, фактическое время на воспроизведение пароля, долю успешных попыток подбора пароля. Помимо этого указывались и субъективные ощущения участников из опроса: насколько создание пароля кажется им сложным и раздражающим, насколько легко его вспомнить.
Получилась такая таблица:
Как при помощи Hashcat можно сгенерировать словарь хешей MD5 всех шестизначных чисел от 000000 до 999999
Hashcat может делать радужные таблицы, но только для Wi-Fi.
Зато с помощью PHP эту задачу можно решить несколько строк:
<?php for ($i = 0; $i <= 999999; $i++) { echo md5 (str_pad( "$i", 6, "0", STR_PAD_LEFT )) . PHP_EOL; }
Время выполнение — 1-4 секунды. За это время будут сгенерированы все md5 хеши для строк 000000…999999.
Сохраните приведённый выше код в файл md5-rb-gen.php, запускать так:
php md5-rb-gen.php
Чтобы сохранить полученные хеши в файл:
php md5-rb-gen.php > md5.txt
Смотрите, кстати «Как запустить PHP скрипт без веб-сервера».
Интересное наблюдение о скорости достижения задачи.
Следующие две команды делают ровно то же самое:
maskprocessor ?d?d?d?d?d?d > 6.txt cat 6.txt | while read -r line ; do echo -n $line | md5sum | awk '{print $1}'; done > md5.txt
Но на среднем компьютере выполнение команд займёт до часа. PHP оказался быстрее, чем нативные Linux команды…
Составление списков слов и списков имён пользователей на основе содержимого веб-сайта
Ещё в комплекте с программой идёт утилита FAB, которая извлекает из уже скаченных документов Word и PDF имена авторов — их тоже можно использовать в качестве имён пользователей для брут-форса.
Программа предустановлена в Kali Linux.
В минимальных версиях программа устанавливается следующим образом:
sudo apt install cewl
Установка в BlackArch
sudo pacman -S cewl gem install mime mime-types mini_exiftool nokogiri rubyzip spider
В карточке программы описаны дополнительные нюансы установки — рекомендуется ознакомиться.
Примеры запуска CeWL
Запуск сбора слов со страниц сайта https://site.ru, используя только страницы, ссылки на которые будут найдены на указанном адресе (-d 1), для составления словаря, который будет сохранён в файл dic.txt (-w dic.txt):
cewl https://site.ru -d 1 -w dic.txt
cewl https://site.ru -d 2 -w words.txt -a --meta_file meta.txt -e --email_file emails.txt -c
Запуск FAB, при котором будут проверены все документы *.doc в директории /home/mial/Downloads/, из метаинформации этих документов будет извлечено поле, содержащее имя автора документа, данные будут выведены на экран:
ruby /usr/share/cewl/fab.rb /home/mial/Downloads/*.doc
Утёкшие пароли
Утёкшие или украденные с сайтов пароли. Из списков намеренно удалены имена / почтовые адреса и т.д.
Лучшее их применение – это генерация или тестирования списков словарей.
Примечание: Даты приблизительные.
Имя | Название файла / ссылка на скачивание | Дата | Примечание |
---|---|---|---|
Rockyou | rockyou.txt.bz2 (60,498,886 bytes) | 2009-12 | Лучший из доступных списков; огромный, украдены в незашифрованном виде |
Rockyou со счётчиком | rockyou-withcount.txt.bz2 (59,500,255 bytes) | ||
phpbb | phpbb.txt.bz2 (868,606 bytes) | 2009-01 |
Отсортированы по частоте использования Взломаны Brandon Enright из md5 (покрытие 97%+) |
phpbb со счётчиком | phpbb-withcount.txt.bz2 (872,867 bytes) | ||
phpbb с md5 | phpbb-withmd5.txt.bz2 (4,117,887 bytes) | ||
MySpace | myspace.txt.bz2 (175,970 bytes) | 2006-10 | Получены фишингом |
MySpace — со счётчиком | myspace-withcount.txt.bz2 (179,929 bytes) | ||
Hotmail | hotmail.txt.bz2 (47,195 bytes) | Неизвестно | Не до конца понятно, как они были украдены |
Hotmail со счётчиком | hotmail-withcount.txt.bz2 (47,975 bytes) | ||
Faithwriters | faithwriters.txt.bz2 (39,327 bytes) | 2009-03 | Религиозные пароли |
Faithwriters — со счётчиком | faithwriters-withcount.txt.bz2 (40,233 bytes) | ||
Elitehacker | elitehacker.txt.bz2 (3,690 bytes) | 2009-07 | Часть из zf05.txt |
Elitehacker — со счётчиком | elitehacker-withcount.txt.bz2 (3,846 bytes) | ||
Hak5 | hak5.txt.bz2 (16,490 bytes) | 2009-07 | Часть из zf05.txt |
Hak5 — со счётчиком | hak5-withcount.txt.bz2 (16,947 bytes) | ||
Älypää | alypaa.txt.bz2 (5,178 bytes) | 2010-03 | Финские пароли |
alypaa — со счётчиком | alypaa-withcount.txt.bz2 (6,013 bytes) | ||
Facebook (Pastebay) | (375 bytes) | 2010-04 |
Найдены на Pastebay; судя по всему, украдены зловредным ПО. |
Facebook (Pastebay) — со счётчиком | (407 bytes) | ||
Unknown porn site | porn-unknown.txt.bz2 (30,600 bytes) | 2010-08 | Найдены на angelfire.com. Неизвестно, откуда они, но определённо с порно сайта. |
Unknown porn site — со счётчиком | porn-unknown-withcount.txt.bz2 (31,899 bytes) | ||
Ultimate Strip Club List | tuscl.txt.bz2 (176,291 bytes) | 2010-09 | Спасибо Mark Baggett за находку! |
Ultimate Strip Club List — со счётчиком | tuscl-withcount.txt.bz2 (182,441 bytes) | ||
(14,457 bytes) | 2010-09 | Спасибо Andrew Orr за наводку | |
Facebook Phished — со счётчиком | (14,941 bytes) | ||
Carders.cc | carders.cc.txt.bz2 (8,936 bytes) | 2010-05 | |
Carders.cc — со счётчиком | carders.cc-withcount.txt.bz2 (9,774 bytes) | ||
Singles.org | singles.org.txt.bz2 (50,697 bytes) | 2010-10 | |
Singles.org — со счётчиком | singles.org-withcount.txt.bz2 (52,884 bytes) | ||
Unnamed financial site | (reserved) | 2010-12 | |
Unnamed financial site — со счётчиком | (reserved) | ||
Gawker | (reserved) | 2010-12 | |
Gawker — со счётчиком | (reserved) | ||
Free-Hack.com | (reserved) | 2010-12 | |
Free-Hack.com со счётчиком | (reserved) | ||
Carders.cc (second time hacked) | (reserved) | 2010-12 | |
Carders.cc со счётчиком (second time hacked) | (reserved) |
Словари DIRB
DIRB — это сканер веб-контента. Он ищет существующие (возможно, скрытые) веб-объекты. В основе его работы лежит поиск по словарю, он формирует запросы к веб-серверу и анализирует ответ.
Т.е. словари DIRB предназначены, в первую очередь, для поиска разнообразных файлов и папок веб-сайтов и веб-приложений, веб-серверов.
tree /usr/share/wordlists/dirb /usr/share/wordlists/dirb ├── big.txt ├── catala.txt ├── common.txt ├── euskera.txt ├── extensions_common.txt ├── indexes.txt ├── mutations_common.txt ├── others │ ├── best1050.txt │ ├── best110.txt │ ├── best15.txt │ └── names.txt ├── small.txt ├── spanish.txt ├── stress │ ├── alphanum_case_extra.txt │ ├── alphanum_case.txt │ ├── char.txt │ ├── doble_uri_hex.txt │ ├── test_ext.txt │ ├── unicode.txt │ └── uri_hex.txt └── vulns ├── apache.txt ├── axis.txt ├── cgis.txt ├── coldfusion.txt ├── domino.txt ├── fatwire_pagenames.txt ├── fatwire.txt ├── frontpage.txt ├── hpsmh.txt ├── hyperion.txt ├── iis.txt ├── iplanet.txt ├── jboss.txt ├── jersey.txt ├── jrun.txt ├── netware.txt ├── oracle.txt ├── ror.txt ├── sap.txt ├── sharepoint.txt ├── sunas.txt ├── tests.txt ├── tomcat.txt ├── vignette.txt ├── weblogic.txt └── websphere.txt
Подборка словарей с сайта WirelessHack.org [Словари для взлома Wi-Fi]
На сайте WirelessHack.org собраны словари, которые уже некоторое время болтаются здесь и там.
В том числе, там словари:
- BIG-WPA-LIST-1 (размер 247MB)
- BIG-WPA-LIST-2 (размер 307MB)
- BIG-WPA-LIST-3 (размер 277MB)
- Darkc0de.lst (размер 17.4MB) — это был дефолтный словарь в Backtrack 5
- Rockyou.txt (размер 133MB) — дефолтный словарь в Kali Linux
- Names (размер 3.7MB) — имена и варианты имён
Кроме них ещё довольно много словарей, в общей сложности на 8.5 Гигабайт. Если вы нечасто используете словари, то рекомендуется их сжать для хранения — они представляют собой обычные текстовые файлы, которые очень хорошо сжимаются — после архивации они будут занимать примерно в 10 раз меньше места.
magnet6c89df058f71559dec6c5c7c9f2cb419182b3294&dn=Collection+of+Wordlist+%28Dictionaries%29+for+cracking+WiFi+WPA/WPA2&tr=udp%3A//tracker.leechers-paradise.org%3A6969&tr=udp%3A//zer0day.ch%3A1337&tr=udp%3A//tracker.coppersurfer.tk%3A6969&tr=udp%3A//public.popcorn-tracker.org%3A6969
Торрент файл прикреплён внизу этого поста.
Списки слов от Metasploit
Названия словарей имеют говорящие названия. В основном эти словари предназначены для брут-форса удалённого входа в различные службы, имеются неплохие универсальные словари с именами пользователей и паролями.
tree /usr/share/wordlists/metasploit /usr/share/wordlists/metasploit ├── adobe_top100_pass.txt ├── av_hips_executables.txt ├── av-update-urls.txt ├── burnett_top_1024.txt ├── burnett_top_500.txt ├── cms400net_default_userpass.txt ├── common_roots.txt ├── db2_default_pass.txt ├── db2_default_userpass.txt ├── db2_default_user.txt ├── default_pass_for_services_unhash.txt ├── default_userpass_for_services_unhash.txt ├── default_users_for_services_unhash.txt ├── dlink_telnet_backdoor_userpass.txt ├── hci_oracle_passwords.csv ├── http_default_pass.txt ├── http_default_userpass.txt ├── http_default_users.txt ├── http_owa_common.txt ├── idrac_default_pass.txt ├── idrac_default_user.txt ├── ipmi_passwords.txt ├── ipmi_users.txt ├── joomla.txt ├── keyboard-patterns.txt ├── malicious_urls.txt ├── multi_vendor_cctv_dvr_pass.txt ├── multi_vendor_cctv_dvr_users.txt ├── namelist.txt ├── oracle_default_hashes.txt ├── oracle_default_passwords.csv ├── oracle_default_userpass.txt ├── password.lst ├── piata_ssh_userpass.txt ├── postgres_default_pass.txt ├── postgres_default_userpass.txt ├── postgres_default_user.txt ├── root_userpass.txt ├── routers_userpass.txt ├── rpc_names.txt ├── rservices_from_users.txt ├── sap_common.txt ├── sap_default.txt ├── sap_icm_paths.txt ├── scada_default_userpass.txt ├── sensitive_files.txt ├── sensitive_files_win.txt ├── sid.txt ├── snmp_default_pass.txt ├── tftp.txt ├── tomcat_mgr_default_pass.txt ├── tomcat_mgr_default_userpass.txt ├── tomcat_mgr_default_users.txt ├── unix_passwords.txt ├── unix_users.txt ├── vnc_passwords.txt ├── vxworks_collide_20.txt └── vxworks_common_20.txt
Как составляли и проверяли политики
Количество и классы символов. В основе всех политик лежали требования к длине пароля и числу классов: это буквы верхнего и нижнего регистра, цифры и специальные символы. Каждую политику исследователи обозначили формулой вида:
Эта политика требует пароль, который содержит три класса символов из четырех.
Все протестированные политики включали длину пароля не менее 8 символов. Получился примерно такой список политик: 1с8, 3c8, 4c8, 1с10, 1с12, 2с12, 3c12, 1с16.
Проверка по словарю. Требования к символам помогают генерировать более сложные пароли. Но некоторые пользователи могут соблюдать требования и все равно придумать слабый пароль. Например, для политик 4c8 и 1c16 можно создать предсказуемые варианты: 1Password! и passwordpassword. Чтобы этого избежать, политики часто комбинируют с поиском по словарям.
Для словарной проверки нужен список часто используемых, предсказуемых или скомпрометированных паролей, а также сам алгоритм поиска по словарю. Например, можно искать точные совпадения в списке, а можно использовать нечеткий поиск, который найдет совпадения с разницей в регистрах или отдельных символах. Допустим, в словаре есть password. Нечеткий поиск также посчитает “словарными” пароли типа pa$$word или Passw0rd.
В эксперименте использовались словари Xato и Pwned, а также разные алгоритмы поиска:
-
поиск полного совпадения со строками словаря без учета регистра – case-insensitive full-string comparison (cifs);
-
поиск полного совпадения со строками словаря с учетом регистра – case-sensitive full-string comparison (fs);
-
отделение цифр и специальных символов и последующий регистронезависимый поиск точно таких же строк в словаре (strip-cifs);
-
регистронезависимый поиск любых 5-символьных совпадений словарных фрагментов с фрагментами пользовательского пароля (ciss).
В сочетании с разными словарями получились такие варианты для проверки: Pwned-fs, Xato-cifs, Xato-strip-cifs, Xato-ciss и так далее.
Количество попыток перебора. Один из методов оценки надежности пароля – сколько попыток сделает злоумышленник, прежде чем подберет пароль. Для такой проверки используются разные модели, в том числе нейронные сети. Минимальные требования к количеству и частоте попыток зависят от многих факторов, например, используемых средств защиты или характера атаки. В своей работе CMU рассматривают 2 вида атак:
-
при онлайн-атаках хакер может перебирать пароли только при взаимодействии с сервером. Если отрубить доступ, продолжить попытки не получится.
-
при офлайн-атаках хакер может подбирать пароли без обратной связи от сервера, то есть дольше. Это возможно, если у злоумышленников есть краденая база с хэшами паролей.
Для оценки надежности в CMU использовали модели машинного обучения. С помощью базы данных скомпрометированных паролей нейронную сеть обучили предсказывать, какова вероятность подобрать пароль. Степень надежности определяли по количеству необходимых попыток и записывали формулой:
В этом случае считаем пароль надежным, если нейронка не угадала его за 1 млн попыток.
Гипотезы по совместному использованию методов. Исследователи использовали разные комбинации политик, чтобы ответить на вопросы:
-
Как проверка по словарю сочетается с политиками вида 1c8 и 3c8?
-
Как разные варианты проверок по словарю сочетаются с политикой вида 1с8?
-
Насколько разные политики по длине и классам от 1с8 до 3с12 выполняют требование надежности на уровне NN6?
-
Насколько проверка по словарю сочетается с проверкой с помощью нейронных сетей?
-
Насколько успешна проверка надежности на уровне NN8 и NN10 при разных требованиях только к длине пароля?
-
Как проверка по словарю сочетается с разными требованиями к числу классов символов (от 1с8 до 4с8)?
Получилась такая таблица проверки разных условий:
Отбор паролей, соответствующих определённой политике
К примеру, известно, что в организации установлена следующая политика требований к паролям: в пароле должны быть как минимум одна большая буква; как минимум одна маленькая буква; как минимум одна цифра и как минимум один специальный символ. Длина пароля не может быть меньше 8 символов.
Задача: подготовить словарь для взлома хеша, в котором учтена политика требований к паролям и убраны не подходящие под критерии пароли.
Для этого нам понадобится два правила:
- /?C — означает отклонить слово, если оно не содержит символа в классе C.
- >N — означает отклонить слово, если оно не превышает N символов
Обратимся к таблице «».
Этот набор правил отклоняет пароли в которых нет хотя бы одного из символов: строчная буква, прописная буква, цифра, знаки пунктуации:
/?l /?u /?d /?p
Поскольку в паролях могут быть другие специальные символы, то нужно составить ещё один набор правил:
/?l /?u /?d /?s
Этот второй набор правил отклоняет пароли в которых нет хотя бы одного из символов: строчная буква, прописная буква, цифра, специальный символ.
Внутри одной строки действует логическое «И», то есть будут отбросаны все пароли, в которых отсутствует хотя бы один класс символов.
Но между строками действует логическое «ИЛИ», то есть будут пропущены все пароли, которые соответствует критериям первой строки или критериям второй строки.
Также добавим правило, удаляющее слова, короче восьми символов, получаем:
/?l /?u /?d /?p >7 /?l /?u /?d /?s >7
В файл /usr/share/john/john.conf добавим следующие строки (набор правил назван StrongPass):
/?l /?u /?d /?p >7 /?l /?u /?d /?s >7
Для проверки их работоспособности, скачаем словарь:
wget -U 'Chrome' https://kali.tools/files/passwords/leaked_passwords/rockyou.txt.bz2 7z e rockyou.txt.bz2
Проверим в нём количество паролей:
cat rockyou.txt | wc -l 14344391
То есть в файле 14.344.391 (четырнадцать миллионов) паролей.
А теперь проверим, сколько паролей будет отфильтровано:
john --rules=StrongPass --wordlist=rockyou.txt --stdout | wc -l
Вывод:
Using default input encoding: UTF-8 Press 'q' or Ctrl-C to abort, almost any other key for status 50785p 0:00:00:01 100,00% (2020-11-29 17:08) 35764p/s *7¡Vamos! 50785
Осталось всего 50785 кандидатов в пароли, подходящие под указанные условия! Это 50785÷14344391×100 = 0,35% от всего словаря!!! То есть если бы мы не использовали эту оптимизацию, 99,65% вычислений во время брут-форса были бы бессмысленными, поскольку проверяли бы заведомо неподходящие пароли.