Словари для атак

Содержание:

Как комбинировать более двух словарей

Далее показан пример комбинации трёх словарей — суть в том, что каждое новое полученное слово состоит по одному слову из каждого из трёх словарей:

# создание промежуточных словарей, получаемых комбинацией каждой пары словарей
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

Как оценивали удобство для пользователей

Теперь перейдем к измерениям удобства. На первом этапе все участники эксперимента должны были придумать пароль в специально разработанном “паролеметре”. Парольная политика выбиралась случайно из всех комбинаций, которые проверяли исследователи. 

  1. Участники эксперимента получали список рекомендаций, вводили пароль и в реальном времени наблюдали, как меняется индикатор сложности пароля. 

  2. Как только минимальные требования были выполнены, “паролеметр” давал рекомендации для усиления пароля:

    Рекомендации меняются по мере того, как мы добавляем другой регистр и цифры. Запись демо с сайта CMU.

    Пока пользователь придумывал пароль, “паролеметр” фиксировал, с какой попытки удалось выполнить требования и сколько времени понадобилось на создание правильного пароля.

  3. Все созданные пароли проверяли с помощью нейронных сетей и предсказывали, сколько попыток потребуется для подбора.

  4. Через 2 дня ученые просили пользователей принять участие во втором этапе и вспомнить созданный пароль. Если пользователи не отвечали через 5 дней, они выбывали из эксперимента. Для остальной выборки фиксировали долю тех, кому удалось вспомнить пароль. Исследователи анализировали все сопутствующее поведение участников: могут ли они воспроизвести пароль по памяти или записывают его, сколько времени и попыток нужно на воспроизведение.

  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 имена авторов — их тоже можно использовать в качестве имён пользователей для брут-форса.

Установка CeWL в Kali Linux

Программа предустановлена в 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 млн попыток.

Гипотезы по совместному использованию методов. Исследователи использовали разные комбинации политик, чтобы ответить на вопросы:

  1. Как проверка по словарю сочетается с политиками вида 1c8 и 3c8?

  2. Как разные варианты проверок по словарю сочетаются с политикой вида 1с8?

  3. Насколько разные политики по длине и классам от 1с8 до 3с12 выполняют требование надежности на уровне NN6?

  4. Насколько проверка по словарю сочетается с проверкой с помощью нейронных сетей?

  5. Насколько успешна проверка надежности на уровне NN8 и NN10 при разных требованиях только к длине пароля?

  6. Как проверка по словарю сочетается с разными требованиями к числу классов символов (от 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% вычислений во время брут-форса были бы бессмысленными, поскольку проверяли бы заведомо неподходящие пароли.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector