Pull to refresh

Черная археология дата майнинга

Reading time 4 min
Views 28K
Есть темы, по которым очень мало статей по специальности 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 count
GMAIL 2308234
MAILRU 1978822
YANDEX 1640733
OTHER 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:

пароли
123456
262626
12345
lopata
prodigy
qwerty
qwe123
udacha
1234
svetlana
1q2w3e4r
azsxdcfv

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

Articles