Помните старые добрые времена, когда вы раздавали любовные записки в аудитории?Скорее всего, вам нужно было передать эту записку своему другу, ему другому другу, а потом еще одному другу до того, как она попадет вашей любви. А друзья были, мягко говоря, не самыми честными. Вы никогда не могли бы доверить им свое секретное сообщение или важный пароль. Поэтому вы, вероятно, заранее установили какой-то шифр между вами и вашей любовью. Послание несет смысл для вас обоих, но для людей, которые его передают, кажется бессмысленным.
Это то, что мы называем шифрованием
ВНИМАНИЕ
Шифрование и хеширование, по своей сути являются одним и тем же – превращают слова в бред. Разница лишь в том, что шифрование обратимо, а вот хеширование (почти) необратимо. Поэтому для паролей используется хеширование.
Ответственные компании хешируют ваши пароли. Они берут пароль, который вы вводите на своей странице регистрации, делают его бессмысленным, а затем сохраняют эти бессмысленные слова в своей базе данных. В случае, если хакер флиртует с администратором вашей базы данных и обманным путем получает доступ к базе данных, все, что он увидит — это просто чепуха. Он не может просто скопировать ваш бессмысленный пароль и вставить его на страницу входа в систему, потому что набор символов превратится в другое бессмысленное слово. Сейчас продемонстрируем:
Еще более ответственные компании солят ваши пароли. Это означает, что они «добавляют случайные символы в случайной позиции» к вашим паролям перед отправкой на хеширование. Например, вы вводите самый худший пароль — «Пароль». При «засолке» алгоритм, возможно, добавляет к нему несколько символов, пока он не станет похож на такой «xyzПароль123». «Пароль» есть в словаре, а «xyzПароль123» — нет. Это делает угадывание фактического пароля намного сложнее.
В следующей части этой статьи мы собираемся показать вам, как хакеры «расшифровывают» хэшированные пароли (ну, на самом деле они не дешифруют, лишь угадывают). Затем мы собираемся показать вам, как это делается в Python. Прежде чем продолжить, мы хотели бы отметить, что цель этой статьи — показать вам общую картину; Мы не станем показывать всю техническую часть. Если увидите что-нибудь техническое, вы услышите, как мы извиняемся. Кажется, мы прояснили многие вещи здесь. Здорово? Поехали.
Короче говоря, атака по словарю (извините!) — это взлом пароля, основанный на словах, которые существуют в словаре. Необходимо выполнить 3 шага при атаке по словарю.
Позвольте привести пример. Допустим, я познакомился с администратором базы данных компании и сумел получить доступ к следующим трем хешированным паролям:
Используя программирование, мы хэшировали все 350 000+ английских слов. Мы будем использовать метод хеширования под названием «md5» (извините!). Существует много способов хеширования — MD5, SHA1, SHA2, SHA3 (извините, извините, извините, извините) и т. д.
Затем мы прочесываем чуть более 370 000 (хэшированных) английских слов (то есть все). Если найдем совпадение, бинго! Это пароль. Все еще в замешательстве? Ниже мы представляем 20-секундный фильм-блокбастер, чтобы вы могли увидеть, как это работает:
>>> Вы можете скачать весь код на Python здесь.<<<
Мы начали с двух текстовых файлов: english.txt и 1MillionPassword.txt.
В декабре 2009 года компания Rockyou столкнулась с утечкой данных, в результате которой было раскрыто 32 миллиона учетных записей пользователей. Что еще хуже, 14 миллионов паролей были раскрыты в виде простого текста! Да, 1MillionPassword.txt получен из этих 14 миллионов.
В этой статье мы собираемся хэшировать пароли rockyou с помощью хэширования md5(то есть, мы предполагаем, что rockyou хешировали 14 миллионов паролей перед взломом). Имеется в виду, что нам нечего будет взламывать, если пароль будет показан нам в виде простого текста … ¯ \ _ (ツ) _ / ¯
Есть библиотека Python, называемая hashlib, с ней вы можете конвертировать текст в хэшированные символы. Мы также использовали библиотеку concurrent.futures для запуска параллельных потоков, чтобы наш код работал быстрее. Да, мы работаем на своих 4 процессорных ядрах. Будем использовать Macbook с процессором Intel Core i7 с тактовой частотой 3,1 ГГц и графическим процессором Intel Iris Graphics 6100 на 1536 МБ.
Мы создали 2 файла на Python: createHash.py и crackPassword.py.
Всего паролей взломано: 40,288 менее чем за час.
Вы: «Окей, Шерлок; тогда как обойти максимально допустимые попытки входа? Хм? Вы не можете просто перебирать прямо на сайте.»
Мы: конечно. Хакеры, вероятно, не заинтересованы в доступе к только что взломанному аккаунту. Они, скорее всего, больше заинтересованы в более ценных учетных записях, таких как ваш адрес электронной почты. Зачем? Потому что, если им удалось скомпрометировать вашу электронную почту, они могут попробовать «забыть пароль» на всех других ваших учетных записях. Они могут начать взламывать вашу учетную запись Facebook и начать лайкать фотографии вашего краша 5 лет назад. Никакое оправдание не может спасти вас от этого смущения, теперь вы для него «сталкер».
Вы: эм, но как они узнали бы пароль от моей электронной почты?
Мы: чаще всего, люди используют один и тот же пароль для всех аккаунтов. Это серьезная проблема.
Вы: да ну, вряд ли на свете так много людей, которые так делают. Все же понимают, что следует использовать разные пароли для разных аккаунтов.
Мы: ну, вполне возможно. Не существует статистики, которая показывает, сколько человек повторно используют один и тот же пароль в разных учетных записях. Проблема в том, что если хакер сможет получить доступ хотя бы к одному-двум электронным ящикам, он сможет отправить вредоносное письмо друзьям своих жертв. Далее это будет распространяться как вирус. Люди, как правило, доверяются письмам от друзей, считая их дружественными источниками. А на самом деле процесс будет выглядеть так:
«Жертва» отправляет электронное письмо > Несколько друзей открывают его > Загружается вредоносное ПО > Их компьютеры подвергаются риску > Начинается распространение среди других друзей.
Вы: окей, а как насчет двухэтапной проверки?
Мы: слава богу, у нас есть хоть это. Погодите, вы же точно включили двухэтапную проверку???
Защита от киберпреступности – это все равно что покупать страховку. Люди не думают об этом, пока это зло не поразит их самих. У нас есть 4 совета, чтобы защитить себя и своих близких.
Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…
Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…
В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…
В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…
При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…
В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…