Мы взломали 40000 паролей при помощи Python. Один из них может быть вашим

Помните старые добрые времена, когда вы раздавали любовные записки в аудитории?Скорее всего, вам нужно было передать эту записку своему другу, ему другому другу, а потом еще одному другу до того, как она попадет вашей любви. А друзья были, мягко говоря, не самыми честными. Вы никогда не могли бы доверить им свое секретное сообщение или важный пароль. Поэтому вы, вероятно, заранее установили какой-то шифр между вами и вашей любовью. Послание несет смысл для вас обоих, но для людей, которые его передают, кажется бессмысленным.

Это то, что мы называем шифрованием

ВНИМАНИЕ

Шифрование и хеширование, по своей сути являются одним и тем же – превращают слова в бред. Разница лишь в том, что шифрование обратимо, а вот хеширование (почти) необратимо. Поэтому для паролей используется хеширование.

Как компании хранят ваш пароль

  1. Простой текст (можно услышать, как мы цокаем языком).
  2. Хешированные пароли.
  3. «Соленые» хешированные пароли.

Ответственные компании хешируют ваши пароли.  Они берут пароль, который вы вводите на своей странице регистрации, делают его бессмысленным, а затем сохраняют эти бессмысленные слова в своей базе данных. В случае, если хакер флиртует с администратором вашей базы данных и обманным путем получает доступ к базе данных, все, что он увидит — это просто чепуха. Он не может просто скопировать ваш бессмысленный пароль и вставить его на страницу входа в систему, потому что набор символов превратится в другое бессмысленное слово. Сейчас продемонстрируем:

Еще более ответственные компании солят ваши пароли. Это означает, что они «добавляют случайные символы в случайной позиции» к вашим паролям перед отправкой на хеширование. Например, вы вводите самый худший пароль — «Пароль». При «засолке» алгоритм, возможно, добавляет к нему несколько символов, пока он не станет похож на такой «xyzПароль123». «Пароль» есть в словаре, а «xyzПароль123» — нет. Это делает угадывание фактического пароля намного сложнее.

Рушим ваши ожидания

В следующей части этой статьи мы собираемся показать вам, как хакеры «расшифровывают» хэшированные пароли (ну, на самом деле они не дешифруют, лишь угадывают). Затем мы собираемся показать вам, как это делается в Python. Прежде чем продолжить, мы хотели бы отметить, что цель этой статьи — показать вам общую картину; Мы не станем показывать всю техническую часть. Если увидите что-нибудь техническое, вы услышите, как мы извиняемся. Кажется, мы прояснили многие вещи здесь. Здорово? Поехали.

Как работают атаки по словарям

Короче говоря, атака по словарю (извините!) — это взлом пароля, основанный на словах, которые существуют в словаре. Необходимо выполнить 3 шага при атаке по словарю.

  1. ДОСТУП  к (хешированному) списку паролей
  2. ХЕШИРОВАНИЕ  всех слов найденных в словаре английского (чаще всего) языка
  3. СРАВНИТЬ  (хэшированные) английские слова с (хэшированными) паролями

ЭТАП 1: ДОСТУП

Позвольте привести пример. Допустим, я познакомился с администратором базы данных компании и сумел получить доступ к следующим трем хешированным паролям:

  • 5f4dcc3b5aa765d61d8327deb882cf99
  • 9b4609b17fea63f3f3f067fc2f465c6e
  • 24ebcd0fd5d6b86649fb187d75f80ad0

ЭТАП 2: ХЭШ

Используя программирование, мы хэшировали все 350 000+ английских слов. Мы будем использовать метод хеширования под названием «md5» (извините!). Существует много способов хеширования — MD5, SHA1, SHA2, SHA3 (извините, извините, извините, извините) и т. д.

ЭТАП 3: СРАВНЕНИЕ

Затем мы прочесываем чуть более 370 000 (хэшированных) английских слов (то есть все). Если найдем совпадение, бинго! Это пароль. Все еще в замешательстве? Ниже мы представляем 20-секундный фильм-блокбастер, чтобы вы могли увидеть, как это работает:

Атака по словарю (при использовании Python)

>>> Вы можете скачать весь код на Python здесь.<<<

Мы начали с двух текстовых файлов: english.txt и 1MillionPassword.txt.

  • english.txt — текстовый файл, содержащий английские слова
  • 1MillionPassword.txt — это текстовый файл, содержащий  1 миллион паролей,  которые люди используют в реальном мире.

А теперь к новостям

В декабре 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 МБ.

Создание скрипта на Python

Мы создали 2 файла на Python: createHash.py и crackPassword.py.

  • createHash.py – Хеширует 370 000 слов в english.txt и 1MillionPassword.txt, используя md5 (извините!).
  • crackPassword.py – Разбивает 1 миллион паролей на 4 списка. Каждое ядро ​​процессора возьмет список и сравнит английское слово (хэшированное) с паролем (хэшированным).

Результат

Итого

  • Ядро 1: 26826/250000 паролей было взломано. Прошло 72,49 минут.
  • Ядро 2: 8138/249999 паролей было взломано. Прошло 74,19 минут.
  • Ядро 3: 4671/249999 паролей было взломано. Прошло 74,38 минут.
  • Ядро 4: 653/249999 было взломано. 74,59 минут прошло.

Всего паролей взломано: 40,288 менее чем за час.

Часто задаваемые вопросы

Вы: «Окей, Шерлок; тогда как обойти максимально допустимые попытки входа? Хм? Вы не можете просто перебирать прямо на сайте.»

Мы: конечно. Хакеры, вероятно, не заинтересованы в доступе к только что взломанному аккаунту. Они, скорее всего, больше заинтересованы в более ценных учетных записях, таких как ваш адрес электронной почты. Зачем? Потому что, если им удалось скомпрометировать вашу электронную почту, они могут попробовать «забыть пароль» на всех других ваших учетных записях. Они могут начать взламывать вашу учетную запись Facebook и начать лайкать фотографии вашего краша 5 лет назад. Никакое оправдание не может спасти вас от этого смущения, теперь вы для него «сталкер».

Вы: эм, но как они узнали бы пароль от моей электронной почты?

Мы: чаще всего, люди используют один и тот же пароль для всех аккаунтов. Это серьезная проблема.

Вы: да ну, вряд ли на свете так много людей, которые так делают. Все же понимают, что следует использовать разные пароли для разных аккаунтов.

Мы: ну, вполне возможно. Не существует статистики, которая показывает, сколько человек повторно используют один и тот же пароль в разных учетных записях. Проблема в том, что если хакер сможет получить доступ хотя бы к одному-двум электронным ящикам, он сможет отправить вредоносное письмо друзьям своих жертв. Далее это будет распространяться как вирус. Люди, как правило, доверяются письмам от друзей, считая их дружественными источниками. А на самом деле процесс будет выглядеть так:

«Жертва» отправляет электронное письмо > Несколько друзей открывают его > Загружается вредоносное ПО > Их компьютеры подвергаются риску > Начинается распространение среди других друзей.

Вы: окей, а как насчет двухэтапной проверки?

Мы: слава богу, у нас есть хоть это. Погодите, вы же точно включили двухэтапную проверку???

Заключительные мысли

Защита от киберпреступности – это все равно что покупать страховку. Люди не думают об этом, пока это зло не поразит их самих. У нас есть 4 совета, чтобы защитить себя и своих близких.

  1. Защитите ваш основной адрес электронной почты для максимальной безопасности. Используйте надежный пароль, не используйте его повторно и включите 2FA.
  2. Не используйте пароль, который можно найти в словаре. Мы только что показали вам, как его легко взломать. «Пароль» и «P@$$w0rd» одинаково уязвимы.
  3. Используйте парольные фразы, а не сложные пароли. Это означает, что не используйте Tr0ub4dor&3, используйте что-то вроде лошадь-корректно-обогнула-византию; он дольше и проще запоминается. (Только не додумайтесь использовать этот же пароль.
  4. Вложите немного денег в менеджер паролей, чтобы разнообразить ваш пароль; Мы используем  1Password  из-за его безопасности и красивого интерфейса. Он стоит $2,99/месяц (это дешевле, чем чашка латте в Starbucks).