Один из самых популярных способов аутентификации - это вход по имени пользователя и паролю. Он самый простой с точки зрения реализации, поэтому до сих пор является самом популярным. Делов то, написать проверку на соответствие введенных данных на записи в БД.
Однако, несмотря на свою простоту, данный способ является самым уязвимым. Для взлома аккаунта нужно иметь логин (который не является секретом) и пароль, который можно получить различными способами.
В данной статье мы рассмотрим получение пароля через брутфорс хешей.
С какого-то момента люди решили, что хранение в памяти паролей в открытом виде - это не самая лучшая идея, ведь если злоумышленник получит доступ к базе данных, все учетные записи попадут в его руки. Вот яркий пример, в котором 30 миллионов паролей превратились в самый популярный словарь, используемый в CTF-соревнованиях и, реше при реальных атаках. На данный момент подавляющее большинство баз данных хранят пароли в закрытом виде - через алгоритмы шифрования или хеш-функции.
Хеш-функция - это математическая функция, преобразующая входные данные произвольного размера в выходную строку конкретной длины. Помимо этого, хеш-функции также имеют следующие свойства:
md5('qwerty') = d8578edf8458ce06fbc5bb76a58c5ca4
md5('qwerty1') = 6dbd0fe19c9a301c4708287780df41a2
Хеш-функции применяются в самых различных областях, например для вычисления контрольных сумм, в качестве цифровой подписи или хранения паролей в виде хешей, о чём мы дальше и будем говорить.
Существует простая формула для определения количества всех комбинаций:
$$ p=n^{m} $$
Где m - длина пароля, n - все применяемые символы
К примеру, если при использовании букв английского алфавита в любом регистре, цифр и некоторых знаков длина пароля составляет 93:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!"#$%&'()*+,-./:;<=>?@[\\\\]^_{|}~
Тогда, при генерации 6-ти последовательностей их получится ровно 646990183449.
Попробуем сгенерировать md5 хеш от пароля j2A!lc и взломать его. Из-за огромного числа комбинаций, а еще из-за высокой энтропии самого пароля, полный перебор займёт достаточно много времени.
