[Из песочницы] Черная археология дата майнинга

Есть темы, по которым очень мало статей по специальности data science, но которые представляют интерес для специалистов по безопасности. Это статистические исследования логинов и паролей пользователей — данные, добытые «черными археологами» дата майнинга.

image

Мне было интересно посмотреть некоторые закономерности и для этой цели я взял базу данных паролей, утёкших в 2014 году — от Яндекса, Гугла и Мейлру, объемом 6 миллионов записей.

Обработка данных

Добытые данные представляли собой три текстовых файла, в которых в стандартной форме login@domain.ru: passwd содержались логины и пароли от различных почтовых служб. Общее число записей около 6 миллионов.

Обработка такого огромного массива данных представляла нетривиальную задачу: к примеру, любой символ, который я думал сделать разделителем в текстовом файле, встречался среди логинов или паролей. Да, там встречались все виды кавычек, спецсимволы, не имеющиеся на клавиатуре (например такой: §), и даже символы табуляции.

Вообще, так как и в логинах и в паролях встречаются знаки @ и »:», точный парсинг файлов для разделения на поля «логин», «домен» и «пароль» мне придумать не удалось. К примеру, как автоматически распарсить строки такого типа:

user@mail.ru@gmail.com:123123 (здесь первый @ относится к логину, второй к домену)user:123@mail.ru:@123123 (а здесь первый @ относится к домену, второй к паролю)

Данные были сгруппированы по доменам. Всего у меня оказалось 7423 домена. Более миллиона раз встречаются gmail.com, mail.ru, yandex.ru

Из интересного: домен gmail.com777 встречается 295 раз. Много раз встречаются домены gmail.com и несколько семёрок. Причина этого остается для меня загадкой. Почему именно цифра 7 — непонятно.

Далее все домены были сгруппированы в четыре группы: GMAIL MAILRU YANDEX OTHER. В одну группу попали домены, которые принадлежат или принадлежали раньше этой почтовой службе (к примеру, в мейлру попали домены mail.ru, bk.ru, list.ru, inbox.ru и др.) При этом распределение записей стало следующим:

domain countGMAIL 2308234MAILRU 1978822YANDEX 1640733OTHER 158896

После этого я решил, что данные готовы к анализу.

Анализ данных: гипотеза о ботах

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

Первый критерий, который я придумал — это случайная последовательность символов в логине. Для проверки я взял случайную выборку из 6000 логинов, и просто просмотрел её глазами. По скорости работы — это наиболее оптимальный вариант, написание любого скрипта заняло бы больше времени. Критерий не подтверждается — случайных логинов крайне мало. На выборку из 6000 логинов случайно сгенерированных не более двадцати.

Следующий критерий — распределение длин паролей. Посмотрим на рапределение длины логина — это равномерное распределение, чего не скажешь про пароли.

image

image

Явно видны выбивающиеся значения в районе длины 6, 8, и 10 символов. Вероятно, это и есть те самые сгенерированные автоматически пароли, которые могут принадлежать ботам.

Теперь подсчитаем количество таких «выбивающихся» из равномерного распределения величин. Для этого я вычислил ожидаемые значения столбцов 6, 8, 10, просто построив сглаженную кривую –, а затем найшел разницу с реальными величинами.

Результат

Длина 6: 1010907Длина 8: 763313Длина 10: 246115Всего: 2020335

Итог: примерно 2 миллиона (то есть, третья часть) паролей сгенерирована искусственно.

Проверка совпадений пары логин-пароль для различных доменов

Теперь то, ради чего вообще затевалось это исследование: я хотел проверить, насколько часто люди ставят один и тот же пароль для различных почтовых сервисов — и насколько это безопасно.

Разбиваем данные на четыре подгруппы по доменам, и ищем пересечения: по логину, и по паре логин-пароль. Результаты:

Пары доменов Совпадающие логины Совпадающие пары логин-пароль
GMAIL — MAILRU 2362 121
GMAIL — YANDEX 2421 215
MAILRU — YANDEX 42005 33313
GMAIL — OTHER 924 63
YANDEX — OTHER 7075 6732
MAILRU — OTHER 4085 3339

Мы видим, что пересечений между gmail и русскоязычными доменами намного меньше, чем между мейл.ру и яндексом. Также видно, что если для gmail более 90 процентов людей придумывают новый пароль, то для пары яндекс-мейлру наоборот — 80% паролей совпадают!

Проверка безопасности пересекающихся паролей

А теперь посмотрим, что это за совпадающие пароли, насколько они безопасны. Для этого сначала построим топ паролей. Из 6 млн. паролей 3.2 млн. уникальны, остальные хоть раз дублируются. Выберем величину топа: сколько у человека может быть почтовых ящиков? Вряд ли больше 40. Тогда возьмём топ-5000 паролей, нижняя частота как раз 40. Это значит, если ваш пароль попал в топ-5000, то он встречается в слитых данных более 40 раз — и скорее всего, используется ещё кем-то другим. Теперь посмотрим, сколько паролей из пересечений попадают в такой топ.

Для пересечений mailru — yandex (всего 33313 пересечения): топ-5000: 2485 пароля (7.4%)топ-100: 575 паролей (1.7%)

Из интересного: На первом месте из этой выборки пароль 123456. А на втором месте, что странно, пароль natasha. Вообще, женские имена в топе встречаются достаточно часто.

Для пересечений gmail — mailru (всего 121 пересечение)топ-5000: 12 паролейтоп-100: 7 паролей

Вывод: хотя для одиноковых логинов 80 процентов паролей совпадают, из этих паролей 93 процента являются вполне безопасными.

И на закуску — те пароли из пересечений gmail-mailru, которые входят в топ-5000:

пароли

12345626262612345lopataprodigyqwertyqwe123udacha1234svetlana1q2w3e4razsxdcfv

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

© Habrahabr.ru