Анализ утёкших паролей Gmail, Yandex и Mail.Ru
Совсем недавно в публичный доступ попали базы паролей популярных почтовых сервисов [1,2,3] и сегодня мы их проанализируем и ответим на ряд вопросов о качестве паролей и возможном источнике (или источниках). Так же мы обсудим метрики качества отдельных паролей и всей выборки.
Не менее интересными являются некоторые аномалии и закономерности баз паролей, возможно, они смогут пролить свет на то, что могло служить источником данных и насколько данная выборка является опасной с точки зрения обычного пользователя.
Формально, мы рассмотрим следующие вопросы: насколько надежными являются пароли в базе и могли ли они быть собраны словарной атакой? Есть ли признаки фишинговых атак? Могла ли «утечка» данных быть единственным источником данных? Могла ли данная база быть аккумулирована в течение длительного периода или данные исключительно «свежие»?
Описание данныхДанные из всех трех баз представляют собой набор пар адрес-пароль, разделенные двоеточием. Никаких других «мета-данных» недоступно. Однако данные достаточно зашумленные т.е. в них присутствуют строки не являющимися ни адресами почты, ни допустимыми паролями.
Если мы исследуем особенности данных, то сможем выдвинуть (или опровергнуть) гипотезу о том, в результате какого процесса пароли могли быть получены.
Невалидные пароли и не-паролиСамые простой критерий невалидности пароля — несоответствие длины пароля требованиям почтовых сервисов.
Полученные данные говорят, что пароли из выборки не могли быть получены в результате «внутренней» утечки, так как несколько тысяч паролей не являются валидными паролями в принципе из-за ограничений на длину пароля в шесть символов (а для современных паролей gmail в восемь символов).
Рассмотрим эти аномально длинные (более 60) и короткие пароли (менее 6) в деталях.
ПримерыДлинные пароли представляют собой куски HTML-кода, один из репрезентативных примеров:
Подобные примеры указывают, что одним из источников паролей мог быть фишинг. Запись в базе явно не была проверена человеком и получена автоматически, на фишинг так же указывает тот факт, что в пароле присутствует html-разметка, что довольно нетипично для кражи пароля через заражение.
Краткая выборка слишком коротких паролей:
Еще один индикатор того, что одним из источников мог быть фишинг — отсутствие логина и пароля в записях. Особенно интересно выглядит апостроф без указания пароля. Возможно, потенциальная жертва догадалась о фишинговой форме и попыталась проверить наличие SQL инъекции.
Что можно однозначно утверждать по проверенным данным? Автоматической валидации базы не происходило. Наиболее вероятные гипотезы: фишинг и заражение вирусом.
Для того, чтобы оценить качество всей выборки, мы удалим из неё заведомо неверные пароли длины меньше 6 и больше 60 и рассмотрим всё распределение в целом по нескольким параметрам.
Распределение длины паролейКак видно из графика ниже, большая часть паролей имеет длину в 8 или менее символов. Что может указывать на то, что существенный пласт паролей потенциально неустойчив к различному виду атак переборных атак.
Распределение надёжности паролей- пароль содержит не менее 7ми символов;
- пароль содержит хотя бы одну строчную букву;
- пароль содержит хотя бы одну прописную букву;
- пароль содержит хотя бы одну цифру;
- пароль содержит хотя бы один специальный символ.
Тогда распределение надёжности имеет вид:
Как видно из графика большинство паролей попадают в категорию не-надежные. В качестве примера рассмотрим пароли нулевой надёжности, так как скорее всего это ещё один репрезентативный пример невалидных паролей.
Пароли нулевой надёжностиКак видно из примеров выше, данные пароли не являются валидными (и с точки зрения человека выглядят скорее ошибкой ввода, чем действительным паролем), так как почтовые сервисы не дают зарегистрировать ящик, если считают пароль слишком простым, например, повторением одного и того же символа шесть раз. А значит, что возможно ещё больший пласт паролей не является валидным согласно современным требованиям.
Возможно, что существенная часть базы собрана в течение длительного периода времени, когда требования к паролям были мягче? Иначе довольно сложно объяснить столь большую группу паролей, не соответствующих требованиям современных почтовых систем.
Словарная атакаВ качестве дополнительного аргумента проведем следующий эксперимент: возьмём выборку релевантных словарей паролей из общего доступа, проведем атаку на доступные пароли по этим словарям и оценим какой процент паролей содержится в этой выборке словарей (автор буквально не уходил дальше первых трёх ссылок гугла по запросу [password dictionary]).
Из таблицы выше видно, что существенная доля паролей содержится в словарях, что так же указывает на то, что часть паролей могла быть получена в результате словарной атаки (или какой-то модификации перебора).
Топ паролейПриведем подборку наиболее популярных паролей и заметим, что большая часть сейчас не является допустимыми паролями.
Выборка GmailДействия и данные, описанные и полученные в данной и следующей части, были произведены и переданы другом моего друга, пожелавшего остаться неизвестным.
Задача: проверить валидность (т.е. что пароль действительно подходит) паролей. Действие: по небольшой выборке из
150-200 попробовать получить доступ к ящикам. Из всей выборки в принципе валидными являются
2-3% (через несколько часов появления данных в открытом доступе), и фактически все являются деактивированными на момент проверки. Реально действующими являлись менее 1% ящиков и те заброшены владельцами по крайней мере в течение года.
Выборка RamblerНесложно обнаружить в сети списки «действительно валидных» адресов, составленных широким кругом заинтересованных лиц (ака кулхацкеры).
Что интересно, среди них довольно большой процент адресов рамблера.
Rambler был предупрежден за несколько дней до публикации и был получен ответ, что необходимые меры безопасности будут приняты в ближайшее время.
Что интересно, процент валидных паролей существенно выше и до последнего времени rambler был вне медийного поля событий и не активизировал дополнительных систем безопасности.
Это позволило неизвестному антропологу утечки оценить последние моменты жизни почтовых ящиков. Несмотря на валидность паролей, все ящики являлись заброшенными в течение долгого времени (
1-1.5 года) и заканчивались одним из подобных писем:
Что является еще одним подтверждением гипотезы о фишинге и кумулятивной природе базы.
Анализ открытых источниковВернемся к рассмотрению открытых источников. Активный поиск по паролям-логинам, привел нас к ряду раздач с геймерских форумов:
Оказывается, что часть списка уже в какой-то форме гуляла по сети.
Таким образом данные позволяют отвергнуть гипотезу о единственном источнике данных таком как «внутренняя утечка».
Основная часть используемого кода:
ЗаключениеТаким образом наиболее вероятной выглядит гипотеза, что данная выборка — компиляция различных источников (фишинг, заражение, словарно-переборные атаки, собрание популярных подборок) в течение длительного периода времени. Достаточная часть данных в принципе не является валидными паролями по формальным синтаксическим критериям, что также подтвердила экспериментальная проверка.
С точки зрения пользователя данное событие не несет существенной опасности и скорее выглядит попыткой создания инфоповода.
UPD. Еще одним свидетельством того, что слитые данные — компиляция различный источников является наличие подборки gmail аккаунтов с "+" фичей в базе, когда адрес имеет вид имя+домен\слово at gmail.com (за напоминание про эту фичу спасибо geka) Топ-10 доменов из выборки (весь список тут) 176 xtube 132 daz 88 filedropper 66 daz3d 64 eharmony 63 friendster 62 savage 57 spam 54 bioware 52 savage2 … 11 paygr 11 comicbookdb … Про paygr: пользователь gkond писал, что
при этом «paygr» встречается 11 раз в списке "+" gmail. Возможно их база также была скомпрометирована.