Анализ учетных записей одного (не)надежного email-сервиса

Статистика

Начало


У меня есть увлечение – коллекционировать слитые в интернет базы и прочий «хлам». Как-то раз решил я пошарить на RGhost в поисках «вкусненького». Часто на файлообменниках обнаруживаю инструкции по подключению к чему угодно с вложенными туда логинами и паролями. В этот раз совершенно случайно наткнулся на 700 MB текстовый файл «dump.txt», в котором красиво лежали пары логин-пароль. Сначала огорчился: «Наверное, это всем доступные, собранные вместе, совсем недавно слитые учетные записи Яндекса, Мейла, Google», — подумал я. Но нет… Немного изучив находку, я обомлел.

Для тех, кто на диалапе: накануне ИБ-сообщество взорвалось от новостей о слитых 5 сентября 1 260 614 адресов от Яндекса, 8 сентября 4 425 522 адресов от Mail.ru и 10 сентября 4 661 763 адресов от Gmail.com. Всего 10 347 899 адресов от 3 сервисов. Все они, по всей видимости, были получены из бот сети и произвели фурор — разве что ленивый не написал тогда об этом статью.

И вот, передо мной лежал файл с 25 929 527 парами логин-пароль от одного российского мейл-сервиса… с рабочими парами! Меня тогда это повергло в шок. 25 млн учетных записей, некоторые с весьма сложными паролями. Это означает, что все они лежали в открытом (или плохо обфусцированном) виде в базе весьма крупного e-mail провайдера. Ведь не сбрутили же хеши, например, от паролей «18101547481590210» или «y4_F3Р7TRf-2U-k». Друзья, пожалуйста, не используйте одинаковые пароли для разных сервисов. Как показывает практика, очень часто владельцы даже крупных сайтов недостаточно заботятся о своих пользователях и хранят пароли в базах в открытом виде.

Вы спросите, как я узнал, что креды именно от этого мейл провайдера? Конечно, проведя небольшой анализ, но обо всем по-порядку.

Откуда слив?


Думаю, любой специалист по ИБ, который занимался составлением своих словарей для брута, ответит на этот вопрос довольно быстро. Конечно же, составив частотный список паролей в Топ 100 обязательно найдется название сервиса. Да, как это ни печально, но люди до сих пор в качестве пароля ставят название сервиса. Например, в Топ 100 слитых паролей от Adobe присутствуют следующие экземпляры: «adobe123», «adobe1» и «adobeadobe». Последний, что называется, «психанул», видимо, система регистрации не принимала в качестве пароля просто «adobe». Вот и в нашем случае на 59 месте из Топ 100 паролей я нашел искомый @SERVICENAME@.

ТОП Паролей


Имея такую базу, решил составить свой список самых часто употребляемых паролей для дальнейшего эффективного брута. Понятно, что данный список будет оптимальным при прочих равных условиях — для русскоязычных сервисов электронной почты. Тем не менее, все равно будет полезным. Составил частотный список и встал вопрос, топ сколько паролей будет оптимальным для наиболее эффективного брута? Для ответа на данный вопрос составил гистограмму. Замахнулся на Топ 1000 паролей:



Видим, что после топ 200 паролей количество их использований несущественно.

Гистограмма для топ 200 паролей:



Опять, же после Топ 50 частота использования паролей остается на низком уровне. Гистограмма для Топ 50 паролей:



Далее я сравнил эффективность использования Топ 50 паролей по отношению к Топ 100 паролей. При использовании списка в Топ 50 паролей мы угадаем пароль с вероятностью в 6,98%, а при использовании Топ 100 паролей вероятность будет 8,72%. При увеличении времени брута в 2 раза эффективность возрастет всего на 1,74%. Субъективно, но список из Топ 50 паролей мне показался достаточным.

Года


Далее мне стало интересно, а насколько актуальна эта база? Когда ее начали заполнять и когда слили? Предлагаю свой вариант ответа на данный вопрос. Я предположил, что смогу получить эту информацию из тех же логин-паролей. Я выделил регулярным выражением (19** ИЛИ 20**) пароли и логины и построил гистограмму:



Что можно сказать, взглянув на график? Очевидно, что 1987 год – самый частый год рождения среди пользователей сервиса. Также можно обнаружить корреляцию с демографической статистикой:


Взглянем на период с 1999 по 2020 год:



Из предположения, что в логине пользователи часто указывают дату регистрации, видим, что логинов с датой 2007 — наибольшее количество, с датой 2008 — чуть меньше, а с датой 2009 — намного меньше. Учитывая ежегодный рост публики, можно сделать вывод, что база перестала заполняться (т.е. была слита) в середине 2008 года. Также можно предположить, что база начала заполняться примерно в 1999 году.

Окончания


Известно, что пользователи любят окончания вроде «123» или «1» для «усиления» своих паролей. Решил окончательно убедится в этом.

Гистограмма по Топ 50 окончаний из паролей:



Эмпирически понятно (да и на гистограмме видно), что имеет смысл проверять только окончания «1» и «123», и то при особых условиях. Например, когда с большой долей вероятности можно сказать, что у пользователя пароль с окончанием. Или когда вы неуспешно попробовали, например, Топ 10000 паролей, тогда можно проверить Топ 100 паролей с окончанием «1» и «123». Также при составлении словаря паролей с окончаниями следует учитывать, что окончания чаще всего добавляют к словарным паролям, например «password123», «qwerty1», но редко «19411945123». В последнем случае не всегда даже будет понятно, что это «окончание», а не «корень» пароля.

Чтобы было понятней — 1% человек использует пароли с окончаниями «123» и «1», всего 5% человек использует в своих паролях окончания из списка Топ 50 окончаний. В общем, дополнительно проверить пароль с окончаниями почти всегда не так эффективно, как просто проверить следующий по частоте пароль.

Интересные факты


1. Эффективность частотного словаря. Интересно, что всего 0,00054% паролей (50 штук) могут взломать 6,98% аккаунтов! Сильно, не правда ли?

2. Имена. Очень удивился, что в Топ 100 паролей входили имена marina (60-й), nikita (86-й) и natasha (98-й). Почему именно эти имена?! То-ли Марины, Никиты и Наташи менее других заботятся о своей ИБ, то-ли все любят Марин, Никит и Наташ. В общем, это для меня осталось загадкой.

3. Слабые пароли. В Топ 50 паролей нашлись пароли «1» и «123», видимо, тогда разрешалась любая длина пароля при регистрации. Их, естественно, не стоит добавлять в список для брута современных сервисов, такие пароли сейчас запрещены почти везде.

4. 1941-1945. В гистограмме паролей с датами присутствует 3 пика 1937, 1941, 1945 года.



Для россиян эти даты Великой Победы весьма близки сердцу, поэтому и указывают их в своих паролях. Порадовался за страну и за патриотизм российских пользователей. Молодцы!

5. Что было в 1937 году? Известная дата? И мне нет. Голову сломал выискивая, что же за событие произошло в этом году, да такое важное, что для россиянина стоит наряду с годами Великой Отечественной Войны. Гугл тоже не помог. Что-же произошло? Решил, просто удобная комбинация для набора на NumPad-e, т.к. аналогичный пик найден в 8246, 2846 году и подобных. Но в комментариях Anton-K и bobermaniac напомнили — конечно произошел Большой террор. Солженицын в «Архипелаг ГУЛАГ» об этом весьма подробно написал. Советую прочитать. Террор не ограничивался 1937-1938 годами, однако в этот период носил исключительный характер.

6. Про Марин. По просьбе StopDesign и ilrandir добавляю подробную статистику по аккаунтам с именем «marina»:
25929527 аккаунтов всего
93547    аккаунтов с логином содержащим "marin" в различном Casing-е
Из них (процент от 93547):
    1593  (1.7  %)     с паролем "marina"
    95    (0.1  %)     с паролем "Marina"
    42    (0.04 %)     c паролем "MARINA"
    7     (0.007%)     с паролем "marina" в Suffle-Casing-е ("mArINA", "MaRiNa", "MARINa")

    658   (0.7  %)     с паролем формата /marina\d+/ ("marina43")
    43    (0.05 %)     с паролем формата /Marina\d+/ ("Marina51236")
    18    (0.02 %)     с паролем формата /MARINA\d+/ ("MARINA8734")

    651   (0.7  %)     с паролем с содержанием "marina" ("marinaiii", "17marina77", "Hrayr & Marina")

9314 аккаунтов с логином НЕ содержащим "marin", но с паролем "marina"


Заключение


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

Бонус


Ну и напоследок выкладываю Топ 100 паролей от русского мейл-сервиса актуальностью, как выяснилось, на 2008-й год ( @SERVICENAME@ — название того самого сервиса):

ТОП 100 паролей
123456
666666
654321
000000
555555
7777777
123321
123123
12345678
1234567890
777777
123
111111
121212
12345
112233
123456789
159753
987654321
123654
999999
222222
gfhjkm
1234567
qazwsx
qwerty
987654
333333
1234
1111111
asdasd
131313
zxcvbn
789456
159357
1
888888
147258
asdasd123
111
asdfgh
11111111
111222
777
zxcvbnm
qwertyuiop
098765
1111
1q2w3e
0987654321
88888888
7654321
147852
123789
444444
ghbdtn
123qwe
12344321
@SERVICENAME@
marina
010203
qwertyu
5555555
1111111111
666
147258369
123123123
101010
135790
252525
789456123
password
samsung
55555
1q2w3e4r
232323
qqqqqq
555
1986
1985
1984
1234554321
1987
qweasd
666999
nikita
159951
qazwsxedc
1983
456123
87654321
134679
999999999
142536
212121
11111
1982
natasha
11223344
124578
Поделиться публикацией
Комментарии 44
    0
    Марина (Никита, Наташа) это реально загадка
    Интересно было бы узнать сколько процентов учеток Марин взламывается паролем marina
      0
      10936 из 25 929 527 пользователей использовали пароль marina = 0.042%
        0
        А сколько из них — Марины?
      +6
      Что было в 1937 году? Известная дата? И мне нет. Голову сломал выискивая, что же за событие произошло в этом году, да такое важное, что для россиянина стоит наряду с годами Великой Отечественной Войны. Гугл тоже не помог. Что-же произошло?

      Можно было просто зайти на Википедию и узнать, что такого случилось в СССР в 1937: Большой террор, вполне сравнимо по важности с ВОВ.
        +3
        Ах ну да, что ж я, почти каждый знает об этом, такая близкая сердцу дата. В 2017 будем всей страной отмечать.
          +6
          Прошу прощения, некорректно выразился. Конечно дата важная, но не думаю, что это именно та причина по которой мы видим на гистограмме пик.
            +2
            Да нет. Среди поколения постарше, кто еще хоть как-то застал СССР — это весьма и весьма известный год.
              +2
              Что верно, то верно, все уши прожужжали с середины 80-х. В конце 80-х в магазинах обоев было не найти, так мы в общаге антисталинскими плакатами стены оклеили. И на каждом втором — 1937.
          +1
          На цифровой части клавиатуры любят составлять последовательности, не задумаясь о смысле. В данном случае последовательность в виде Х.

          upd.: почему-то ответ на подобный вопрос был в ветках ниже
            +1
            Стыдно, конечно… Вроде и Архипелаг ГУЛАГ читал, но никак не связал дату. Сейчас о тех событиях не часто вспоминают, хотя погибло с миллион человек. А сгноили сколько в лагерях. Бабушка моя тоже пострадала, после тюрем с ума сошла последние 20 лет в дурдоме провела. Видимо, действительно на мое поколение не оказывали информационного давления по этому поводу, вот и не отложилось. Значит не Numpad…
              +1
              Я думаю, что все таки это NumPad т.к. лично знаю людей с паролями 1937, 193728 и подобными. Но не отрицаю, что были и те, кто руководствовался историческими причтнами
            +5
            Интересно, много ли в рунете почтовых сервисов с 25 929 527 юзерами?
            Я бы порекомендовал автору все-таки уведомить @SERVICENAME@.
            Я понимаю, что guard@servicename@ — нехорошо.
            Но обычные пользователи тут ни при чем.
              +3
              Уважающие пользователей e-mail провайдеры не хранят пароли в открытом виде и уже связались со мной и готовы получить всю необходимую информацию. Что же касается именно этого @SERVICENAME@ я им сообщил, думаю они в курсе какие пользователи не меняли пароль с 2009 года и заблокируют учетки. Кстати при попытке входа по рабочим кредам пользователям ненавязчиво напоминают о смене пароля. Даже смешно, предложить пользователю сменить его 10-летний пароль «1» с возможностью любезно отказаться.
                +2
                У меня там 15-летний пароль стоит. И что-то не предлагают сменить.
                  0
                  Если мы говорим об одном и том же сервисе, то значит они знали об утечке и все что сделали это предложили пользователю сменить пароль.
                +3
                Речь идет не о Почте Mail.Ru. Мы уже связались с автором и проверяем эту базу на предмет наличия валидных паролей наших пользователей
                0
                Интересно, почти все пароли состоят из цифр, а на западе такая же любовь к цифрам или нет?
                  +1
                  Приведу сравнительную табличку Top20:
                  Заголовок спойлера
                  Adobe      | rockyou   | SERVICENAME
                  -----------------------------------
                  123456     | 123456    | 123456
                  123456789  | 12345     | 666666
                  password   | 123456789 | 654321
                  adobe123   | password  | 000000
                  12345678   | iloveyou  | 555555
                  qwerty     | princess  | 7777777
                  1234567    | 1234567   | 123321
                  111111     | rockyou   | 123123
                  photoshop  | 12345678  | 12345678
                  123123     | abc123    | 1234567890
                  1234567890 | nicole    | 777777
                  000000     | daniel    | 123
                  abc123     | babygirl  | 111111
                  1234       | monkey    | 121212
                  adobe1     | lovely    | 12345
                  macromedia | jessica   | 112233
                  azerty     | 654321    | 123456789
                  iloveyou   | michael   | 159753
                  aaaaaa     | ashley    | 987654321
                  654321     | qwerty    | 123654
                  


                  Как видно русскоязычные пользователи, действительно, не любители использовать словарные пароли. Первый словарный пароль в сливе — «gfhjkm», стоит на 23 месте. Думаю связано с тем, что англоговорящие люди более свободно используют термины для описания объектов мира.
                  +4
                  Что было в 1937 году?… Аналогичный пик найден в 8246, 2846 году и подобных.

                  Да просто эти цифры расположены по углам NumPad'а. Легко запомнить и быстро набрать.
                    +2
                    Читаю Ваш пост и думаю: «Неужели забыл добавить эту инфу?!» Да нет предложением ранее все есть…
                      +2
                      Все-таки произошло. Обновил статью.
                      0
                      Интересно ещё узнать TOP фраз в логине, по принципу:
                      marina_1
                      marina_2
                      marina_3
                      nikita
                      ----
                      marina - 75%
                      nikita - 25%
                      
                        0
                        Выберем всех Наташ, Марин и Никит:
                        grep 'marina' logins.txt > marina.txt
                        grep 'natasha' logins.txt > natasha.txt
                        grep 'nikita' logins.txt > nikita.txt
                        

                        Подсчитаем количество строк:
                        wc -l marina.txt 
                        74501 marina.txt
                        
                        wc -l natasha.txt
                        45156 natasha.txt
                        
                        wc -l nikita.txt
                        23300 nikita.txt
                        


                        Итого:
                        marina  - 52.1$
                        natasha - 31.6%
                        nikita  - 16.3%
                        
                          0
                          Не совсем то. Итого тут получится:
                          52.1 + 31.6 + 16.3 = 100%
                          

                          а я имел ввиду вообще все логины. Понятно что фразы: «marina», «natasha», «nikita» будут в TOP50, но интересно, какие ещё фразы в логине популярны у пользователей.
                            0
                            Как ни странно 25 + 75 тоже 100. К сожалению, не понимаю просьбы.
                              +1
                              Понял, Вы наверное имеете в виду процент Наташ относительно всего числа пользователей?
                                0
                                По какому словарю предлагаете выбирать популярные фразы в 25млн строк?
                                  0
                                  Понял, Вы наверное имеете в виду процент Наташ относительно всего числа пользователей?

                                  Верно
                                  По какому словарю предлагаете выбирать популярные фразы в 25млн строк?

                                  А вот на этот вопрос ответить не могу, но алгоритм выборки примерно следующий:
                                  nik = {
                                      n: 1,
                                      ni: 1,
                                      nik: 1
                                      ik: 1,
                                      k: 1
                                  }
                                  
                                  tik: = {
                                      t: 1,
                                      n: 1,
                                      ni: 1,
                                      nik: 1,
                                      tik: 1,
                                      ik: 2,
                                      k: 2
                                  }
                                  

                                  и т.д. Для последнего логина у нас будут лидеры: «подстроки которые содержатся в максимальном количестве логинов»
                                    +2
                                    То есть если положим на каждый логин в среднем 10 вариантов мы должны будем выполнить grep 250 000 000 раз… «Отличный алгоритм».
                                +1
                                для таких целей можно использовать ключик -c у grep
                                grep -c 'marina' logins.txt
                                grep -c 'natasha' logins.txt
                                grep -c 'nikita' logins.txt
                                  0
                                  Мне кажется, или здесь есть неточность: grep выбрал все строки где в логине есть Марина ИЛИ в пароле есть Марина? Или Вы проводили выборку из файла-списка логинов?
                                    0
                                    Из файла где только логины.
                                    0
                                    а если убрать окончание у всех имён?
                                    Чтобы в выборку попадали «nikitka», «nikitos», «nikitozzzz»,…
                                      0
                                      А зачем, мы же искали процентное соотношение, а при равных условиях к трём кандидатам погрешность будет невысока.
                                      Если считать относительного общего количества пользователей там лучше считать без окончания.
                                  +1
                                  А почему нет сравнения связи логина и пароля? По моему очень интересно тоже. Не говоря уже о простом админ/админ, логинов-паролей по типу masha/masha123 мне кажется было бы тоже не мало.
                                    0
                                    Действительно, добавлю.
                                      +1
                                      Взял за пример «marina»:
                                      25929527 аккаунтов
                                      93547    аккаунтов с логином содержащим "marin" в различном Casing-е
                                      Из них (процент от 93547):
                                          1593  (1.7  %)     с паролем "marina"
                                          95    (0.1  %)     с паролем "Marina"
                                          42    (0.04 %)     c паролем "MARINA"
                                          7     (0.007%)     с паролем "marina" в Suffle-Casing-е ("mArINA", "MaRiNa", "MARINa")
                                      
                                          658   (0.7  %)     с паролем формата /marina\d+/ ("marina43")
                                          43    (0.05 %)     с паролем формата /Marina\d+/ ("Marina51236")
                                          18    (0.02 %)     с паролем формата /MARINA\d+/ ("MARINA8734")
                                      
                                          651   (0.7  %)     с паролем с содержанием "marina" ("marinaiii", "17marina77", "Hrayr & Marina")
                                      
                                      9314 аккаунтов с логином НЕ содержащим "marin", но с паролем "marina"
                                      
                                        0
                                        Спасибо, интересно. В данном конкретном случае получается около 3%. Для полного представления было бы еще интереснее узнать какую-то более полную статистику, хотя бы топ 50 логинов-паролей которые содержат друг друга. В наиболее универсальном формате, типа
                                        /(\w+)\d* \1/i
                                        (если логины-пароли пробелами разделены), а не просто про Марину. Чтобы, например, попала пара «marina1 Marina999».
                                          +1
                                          И вставить это в общий топ 100 паролей, если получится. Типа
                                          1. 123456
                                          2. 666666
                                          3. 654321

                                          a. @@login@

                                          n. /@@login@/i

                                          m. /@@login@/i@50наиболее_частых_окончаний@

                                          x. что-то еще с логином
                                            0
                                            Сорри, намутил там со знаками @, а исправить пока не могу, но, думаю, смысл понятен.
                                      +1
                                      А чем этот сервис лучше mail.ru и прочих, что его название скрыли? Сервис хранящий пароли в открытом виде должен понести репутационные потери, это правильно.
                                        0
                                        Боюсь все не так однобоко. Да и все-таки почти 10 лет прошло.
                                        0
                                        2. Nik1t03, с именами картина слегка другая, если учесть vfhbyf, yfnfif, etc., но дамы остаются лидерами

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

                                        Самое читаемое