Pull to refresh

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

Reading time4 min
Views28K
Есть темы, по которым очень мало статей по специальности 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
Comments36

Articles