Начало
У меня есть увлечение – коллекционировать слитые в интернет базы и прочий «хлам». Как-то раз решил я пошарить на 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
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