Страницы

Анализ утёкших паролей Яндекс и Мэил.ру

В начале сентября произошла массовая публичная утечка паролей почтовых сервисов Yandex, Mail.ru и Google. Большая часть специалистов считает, что сервера Яндекса и Мэил.ру никто не ломал, а пароли утекли от самих пользователей через кейлоггеры, фишинговые сайты и кросс-чек (использование одинаковых паролей на разных сайтах). В пользу альтернативной точки зрения - сервисы Яндекса таки поучаствовали в раздаче - говорят некоторые комментарии с Хабра и мнение руководителя Роскомнадзора, хотя он вряд ли в теме. 
Александр Жаров, вообще говоря, в этой истории отличился, подарив индульгенцию всем дырявым Интернет-сервисам и компаниям.
Но вернёмся к нашим паролям.

Ознакомится с утекшими базами, если вы это до сих пор не сделали, можно на весьма любопытном сайте contentik.ru.

Работать с базой удобней всего через cygwin - эмулятор командной строки Linux в Windows среде.

Вот самые распространенные команды:
cat yandex.txt mailru.txt  - вывести содержимое файла на экран
sed -e 's/^[^:]*[:]//g' - убрать из каждой строки символы ДО знака ":" и само двоеточие. Нужно чтобы выделить пароли из файла
sed -e 's/[:][^:]*//g' - убрать все что после ":". Нужно чтобы получить из файла логины
sort -n - отсортировать по возрастанию
uniq - оставить только уникальные значения. Флаг "-i" - игнорировать регистр букв, флаг "-c" - посчитать количество уникальных строк и вписать в начало строки.
> output.txt    - вывод в файл.

Например, эта команда создаст очень удобный словарик всех паролей, рассортированных по алфавиту.

cat Yandex.txt Mailru.txt | sed -e 's/^[^:;]*[:;]//g' | sort | uniq > YandexMailrupasswords_sorted.txt

В этом словарике стоит поискать свои любимые пароли, и если они там найдутся - обязательно их поменять. Имейте ввиду: найти хороший словарь - это уже половина работы по подбору пароля. Поэтому не стоит недооценивать подобные утечки, так как они формируют базы для быстрого подбора паролей при утечке хэшей с других сервисов (в том числе и из корпоративной Активной Директории ;)). Эта первая крупная отечественная утечка, что делает её уникальной и очень ценной, так как среднестатистический отечественный пользователь использует совершенно другие пароли, чем, скажем, американский или европейский юзер.

Вот что я заметил, проанализировав немного базу.

cat mailru.txt yandex.txt | sort | uniq -i | sed -e 's/[:][^:]*//g'  | sort > logins.txt     делаем спам-лист из 5,5 миллионов аккаунтов :)
cat logins.txt | sed -e 's/^[^@]*[@]//g' | sort | uniq -c       выбираем только доменное имя (т.е. то что идет после "@"), группируем и сортируем. Ух ты... 
Очевидно, что утечка несколько шире, чем освещалось в СМИ. Видимо, бот дергал откуда то логины и приписывал к ним "@mail.ru" или "@yandex.ru". Иногда он "мазал" и прикреплял домен туда, где он уже был. На самом деле кроме mail.ru, inbox.ru, list.ru, bk.ru в утечке присутствует примерно 50 других доменов, типа lenta.ru, live.ru, kovrov.ru и так далее.

Теперь проверим теорию с кросс-чеком между доменами. 
Составим список уникальных логинов Яндекса и Мэилру по отдельности:
cat yandex.txt | sed -e 's/[@][^@]*//g'  | sort | uniq -i > yandex_logins.txt
cat mailru.txt | sed -e 's/[@][^@]*//g'  | sort | uniq -i > mailru_logins.txt
Теперь составим список уникальных логинов Яндекса и Мэилру вместе:
cat mailru.txt yandex.txt | sed -e 's/[@][^@]*//g'  | sort | uniq -i > all_logins.txt

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

Проанализировав дальше дампы, я обнаружил, что:

~5% базы Яндекса - дубликаты ящиков и паролей, набранных в разном регистре. Это говорит о том, что пароли, вероятно, доставались из форм ввода паролей, где пользователь забывал выключать Caps Lock.
~5% базы Маилру - так же дубликаты. 4 ящика в базе Мэилру имеют разные пароли (схожие), это говорит о том, что база собиралась какое-то время, и часть пользователей успела сменить пароль.

cat YandexMailrupasswords_sorted.txt | awk '{print length, $0}' | sort -n > pass_with_length.txt - рассортируем пароли по длинне.

Почти 35000 паролей в общей базе имеют менее 6 символов в длину. Это очень странно, так как такие пароли уже давно запрещены правилами парольной политики почтовых сервисов. Опечатки? Мусор? Очень старые аккаунты?

В базе 70 тысяч паролей длиннее 15 символов. Есть пароли длиной 39 символов и со сложным алфавитом. Это исключает версию с брутфорсом.

Выводы:
1. Представленная база скорее всего составлена из нескольких дампов, в том числе старых;
2. База вероятно является выборкой из бОльшей базы (на это указывает ~50 других доменов, "замаскированных" ошибочно скриптом под mail.ru);
3. Ряд серьезных пользователей с Хабра очень сомневаются в том, что эту базу можно было сформировать обычными троянами и фишингом.

Поэтому активируйте двух факторную аутентификацию, если вы этого ещё не сделали, и запасайтесь попкорном!

[Update] Часть из этих 50 доменов - Яндекс почта для домена и такой же сервис от Mail.ru, другая часть - ящики украинских бесплатных почтовых сервисов и ящики провайдеров Сибири. Как они туда все попали и почему с префиксом @mail.ru ?

Комментариев нет:

Отправка комментария