35,2
рейтинг
15 сентября 2014 в 09:38

Разработка → Анализ утёкших паролей Gmail, Yandex и Mail.Ru

Совсем недавно в публичный доступ попали базы паролей популярных почтовых сервисов [1,2,3] и сегодня мы их проанализируем и ответим на ряд вопросов о качестве паролей и возможном источнике (или источниках). Так же мы обсудим метрики качества отдельных паролей и всей выборки.

Не менее интересными являются некоторые аномалии и закономерности баз паролей, возможно, они смогут пролить свет на то, что могло служить источником данных и насколько данная выборка является опасной с точки зрения обычного пользователя.

Формально, мы рассмотрим следующие вопросы: насколько надежными являются пароли в базе и могли ли они быть собраны словарной атакой? Есть ли признаки фишинговых атак? Могла ли «утечка» данных быть единственным источником данных? Могла ли данная база быть аккумулирована в течение длительного периода или данные исключительно «свежие»?

Структура статьи:

  1. Описание данных
  2. Невалидные пароли и не-пароли
  3. Распределение длины паролей
  4. Распределение надёжности паролей
  5. Словарная атака
  6. Топ паролей
  7. Выборка Gmail
  8. Выборка Rambler
  9. Анализ открытых источников
  10. Заключение


Описание данных


Данные из всех трех баз представляют собой набор пар адрес-пароль, разделенные двоеточием. Никаких других «мета-данных» недоступно. Однако данные достаточно зашумленные т.е. в них присутствуют строки не являющимися ни адресами почты, ни допустимыми паролями.



Если мы исследуем особенности данных, то сможем выдвинуть (или опровергнуть) гипотезу о том, в результате какого процесса пароли могли быть получены.

Невалидные пароли и не-пароли


Самые простой критерий невалидности пароля — несоответствие длины пароля требованиям почтовых сервисов.



Полученные данные говорят, что пароли из выборки не могли быть получены в результате «внутренней» утечки, так как несколько тысяч паролей не являются валидными паролями в принципе из-за ограничений на длину пароля в шесть символов (а для современных паролей gmail в восемь символов).

Рассмотрим эти аномально длинные (более 60) и короткие пароли (менее 6) в деталях.

Примеры

Длинные пароли представляют собой куски HTML-кода, один из репрезентативных примеров:



Подобные примеры указывают, что одним из источников паролей мог быть фишинг. Запись в базе явно не была проверена человеком и получена автоматически, на фишинг так же указывает тот факт, что в пароле присутствует html-разметка, что довольно нетипично для кражи пароля через заражение.

Краткая выборка слишком коротких паролей:



Еще один индикатор того, что одним из источников мог быть фишинг — отсутствие логина и пароля в записях. Особенно интересно выглядит апостроф без указания пароля. Возможно, потенциальная жертва догадалась о фишинговой форме и попыталась проверить наличие SQL инъекции.

Что можно однозначно утверждать по проверенным данным? Автоматической валидации базы не происходило. Наиболее вероятные гипотезы: фишинг и заражение вирусом.

Для того, чтобы оценить качество всей выборки, мы удалим из неё заведомо неверные пароли длины меньше 6 и больше 60 и рассмотрим всё распределение в целом по нескольким параметрам.

Распределение длины паролей


Как видно из графика ниже, большая часть паролей имеет длину в 8 или менее символов. Что может указывать на то, что существенный пласт паролей потенциально неустойчив к различному виду атак переборных атак.



Распределение надёжности паролей


Для того, чтобы проверить эту гипотезу, рассмотрим простую метрику надежности пароля основанную на
стандарте PCI.
Пусть за удовлетворение одного из следующих условий пароль получает условный балл:
  • пароль содержит не менее 7ми символов;
  • пароль содержит хотя бы одну строчную букву;
  • пароль содержит хотя бы одну прописную букву;
  • пароль содержит хотя бы одну цифру;
  • пароль содержит хотя бы один специальный символ.

Если пароль получает 4/5, то мы называем его надежным (очень надежным за 5/5), соответственно 3/5 назовем средним, а 2/5 слабым (0 или 1 балл назовем очень слабым). Код на языке R приведен ниже.

Функция надежности
library("Hmisc")
strength <- function(password){
  # must contain at least 7 characters
  score = 0
  if (nchar(password) >= 7){
    inc(score) <- 1
  }
  # at least one digit
  if(grepl("[[:digit:]]", password)){
    inc(score) <- 1
  }
  # at least one lowercase letter 
  if(grepl("[[:lower:]]", password)){
    inc(score) <- 1
  }
  # at least one uppercase letter 
  if(grepl("[[:upper:]]", password)){
    inc(score) <- 1
  }
  # at least one special symbol
  if(grepl("[#!?^@*+&%]", password)){
    inc(score) <- 1
  }
  # 0-1 very weak
  # 2 - weak
  # 3 - medium
  # 4 - strong
  # 5 - very strong
  return(score)
}


Тогда распределение надёжности имеет вид:



Как видно из графика большинство паролей попадают в категорию не-надежные. В качестве примера рассмотрим пароли нулевой надёжности, так как скорее всего это ещё один репрезентативный пример невалидных паролей.

Пароли нулевой надёжности



Как видно из примеров выше, данные пароли не являются валидными (и с точки зрения человека выглядят скорее ошибкой ввода, чем действительным паролем), так как почтовые сервисы не дают зарегистрировать ящик, если считают пароль слишком простым, например, повторением одного и того же символа шесть раз. А значит, что возможно ещё больший пласт паролей не является валидным согласно современным требованиям.

Возможно, что существенная часть базы собрана в течение длительного периода времени, когда требования к паролям были мягче? Иначе довольно сложно объяснить столь большую группу паролей, не соответствующих требованиям современных почтовых систем.

Словарная атака


В качестве дополнительного аргумента проведем следующий эксперимент: возьмём выборку релевантных словарей паролей из общего доступа, проведем атаку на доступные пароли по этим словарям и оценим какой процент паролей содержится в этой выборке словарей (автор буквально не уходил дальше первых трёх ссылок гугла по запросу [password dictionary]).



Из таблицы выше видно, что существенная доля паролей содержится в словарях, что так же указывает на то, что часть паролей могла быть получена в результате словарной атаки (или какой-то модификации перебора).

Топ паролей


Приведем подборку наиболее популярных паролей и заметим, что большая часть сейчас не является допустимыми паролями.



Выборка Gmail


Действия и данные, описанные и полученные в данной и следующей части, были произведены и переданы другом моего друга, пожелавшего остаться неизвестным.

Задача: проверить валидность (т.е. что пароль действительно подходит) паролей. Действие: по небольшой выборке из ~150-200 попробовать получить доступ к ящикам. Из всей выборки в принципе валидными являются ~2-3% (через несколько часов появления данных в открытом доступе), и фактически все являются деактивированными на момент проверки. Реально действующими являлись менее 1% ящиков и те заброшены владельцами по крайней мере в течение года.

Выборка Rambler


Несложно обнаружить в сети списки «действительно валидных» адресов, составленных широким кругом заинтересованных лиц (ака кулхацкеры).



Что интересно, среди них довольно большой процент адресов рамблера.

Rambler был предупрежден за несколько дней до публикации и был получен ответ, что необходимые меры безопасности будут приняты в ближайшее время.

<юмор></юмор>

Что интересно, процент валидных паролей существенно выше и до последнего времени rambler был вне медийного поля событий и не активизировал дополнительных систем безопасности.

Это позволило неизвестному антропологу утечки оценить последние моменты жизни почтовых ящиков. Несмотря на валидность паролей, все ящики являлись заброшенными в течение долгого времени (~1-1.5 года) и заканчивались одним из подобных писем:



Что является еще одним подтверждением гипотезы о фишинге и кумулятивной природе базы.

Анализ открытых источников


Вернемся к рассмотрению открытых источников. Активный поиск по паролям-логинам, привел нас к ряду раздач с геймерских форумов:



Оказывается, что часть списка уже в какой-то форме гуляла по сети.

Таким образом данные позволяют отвергнуть гипотезу о единственном источнике данных таком как «внутренняя утечка».

Основная часть используемого кода:
Анализ данных и визуализация
source("multiplot.R")
source("password_strength.R")
library("ggplot2")
print("loading yandex data")
yandex <- read.csv("yandex.txt", header = FALSE, sep = ":", quote = "", stringsAsFactors = FALSE)
print("loading mailru data")
mailru <- read.csv("mail.txt",   header = FALSE, sep = ":", quote = "", stringsAsFactors = FALSE)
print("loading gmail data")
gmail  <- read.csv("gmail.txt",  header = FALSE, sep = ":", quote = "", stringsAsFactors = FALSE)
##testing if data loaded correctly
print("testing, if loaded correctly")
print(head(yandex))
print(head(mailru))
print(head(gmail))
##changing names
names(yandex) <- c("email", "password")
names(mailru) <- c("email", "password")
names(gmail)  <- c("email", "password")
print("computing lengths of passwords and adding to the datasets")
yandex$pass_length   <- sapply(yandex$password, nchar)
mailru$pass_length   <- sapply(mailru$password, nchar)
gmail$pass_length    <- sapply(gmail$password,  nchar)
print("number of invalid passwords by length")
print(nrow(yandex[yandex$pass_length <  6,]))
print(nrow(yandex[yandex$pass_length >  60,]))
print(nrow(mailru[mailru$pass_length <  6,]))
print(nrow(mailru[mailru$pass_length >  60,]))
print(nrow(gmail[gmail$pass_length <  6,]))
print(nrow(gmail[gmail$pass_length >  60,]))
print("removing invalid passwords by length")
yandex <- subset(yandex, pass_length >= 6 & pass_length <= 60)
mailru <- subset(mailru, pass_length >= 6 & pass_length <= 60)
gmail  <- subset(gmail , pass_length >= 6 & pass_length <= 60)
#print("checking that they are removed")
print(nrow(yandex[yandex$pass_length <  6,]))
print(nrow(yandex[yandex$pass_length >  60,]))
print(nrow(mailru[mailru$pass_length <  6,]))
print(nrow(mailru[mailru$pass_length >  60,]))
print(nrow(gmail[gmail$pass_length <  6,]))
print(nrow(gmail[gmail$pass_length >  60,]))
print("visualizing distribution of password lenghts by provider")
gmailcolor  <- "deepskyblue"
yandexcolor <- "orangered1"
mailrucolor <- "limegreen"
 pgmail <- ggplot(data=gmail, aes(x=pass_length)) + scale_x_discrete(limits=seq(6, 20, 1), breaks=seq(6, 20, 1), drop=TRUE) + geom_histogram(colour="black", fill=gmailcolor, aes(y=..density..)) + coord_cartesian(xlim=c(5,21.5)) + xlab(expression("Длина пароля"))+ ylab(expression("Доля"))+ggtitle("Gmail")
 pyandex <- ggplot(data=yandex, aes(x=pass_length)) + scale_x_discrete(limits=seq(6, 21, 1), breaks=seq(6, 21, 1), drop=TRUE) + geom_histogram(colour="black", fill=yandexcolor, aes(y=..density..)) + coord_cartesian(xlim=c(5,21.5)) + xlab(expression("Длина пароля"))+ ylab(expression("Доля"))+ggtitle("Yandex")     
 pmailru <- ggplot(data=mailru, aes(x=pass_length)) + scale_x_discrete(limits=seq(6, 20, 1), breaks=seq(6, 20, 1), drop=TRUE) + geom_histogram(colour="black", fill=mailrucolor, aes(y=..density..)) + coord_cartesian(xlim=c(5,20.5)) + xlab(expression("Длина пароля"))+ ylab(expression("Доля"))+ggtitle("Mail.ru")     
 multiplot(pgmail, pyandex, pmailru, cols=3)

print("computing strength of the passwords")
yandex$strength <- sapply(yandex$password, strength)
mailru$strength <- sapply(mailru$password, strength)
gmail$strength  <- sapply(gmail$password,  strength)
 print(head(yandex))
 print(head(mailru))
 print(head(gmail))
scale <- scale_x_discrete(limits=c(1,2,3,4,5), breaks=c(1,2,3,4,5), drop=TRUE, labels=c("Очень\nслабый", "Слабый", "Средний", "Надежный", "Очень\nнадежный"))
pgmail <- ggplot(data=gmail  , aes(factor(strength))) + geom_bar(colour="black", fill=gmailcolor) + xlab(expression("Надежность"))+ coord + ylab(expression("Доля"))+ggtitle("Gmail") + scale
pyandex <- ggplot(data=yandex, aes(factor(strength))) + geom_bar(colour="black", fill=yandexcolor, binwidth=0.5) + xlab(expression("Надежность"))+ coord + ylab(expression("Доля"))+ggtitle("Yandex") + scale
pmailru <- ggplot(data=mailru, aes(factor(strength))) + geom_bar(colour="black", fill=mailrucolor, binwidth=0.5) + xlab(expression("Надежность"))+ coord + ylab(expression("Доля"))+ggtitle("Mail.ru") + scale    
multiplot(pgmail, pyandex, pmailru, cols=3)
 print("Zero strength passwords")
 print("GMAIL")
 print(head(gmail[gmail$strength == 0,]))
 print("YANDEX")
 print(head(yandex[yandex$strength == 0,]))
 print("MAILRU")
 print(head(mailru[mailru$strength == 0,]))

table_gmail  <- sort(table(gmail$password) , TRUE)
table_yandex <- sort(table(yandex$password), TRUE)
table_mailru <- sort(table(mailru$password), TRUE)

print("gmail most frequent")
print(head(table_gmail, 100))
print("yandex most frequent")
print(head(table_yandex,100))
print("mailru most frequent")
print(head(table_mailru,100))

only_pass_gmail  <- gmail[ ,2] 
write.csv(only_pass_gmail,  "only_pass_gmail",  row.names = FALSE)
only_pass_yandex <- yandex[,2] 
write.csv(only_pass_yandex, "only_pass_yandex", row.names = FALSE)
only_pass_mailru <- mailru[,2] 
write.csv(only_pass_mailru, "only_pass_mailru", row.names = FALSE)



Код эксперимента 'словарная атака'
#!/bin/bash
data=sample_mailru
dict=saved_dict_mailru
> $dict
j=0
while read p; do
  ((j++))
  echo -n $j
  if grep -q "^$p$" dictionary/*; then
    echo " in "
    echo $p >> $dict
  else
    echo " out " 
  fi
  if (("$j" > 10000)); then
    break
  fi
done <$data



Заключение


Таким образом наиболее вероятной выглядит гипотеза, что данная выборка — компиляция различных источников (фишинг, заражение, словарно-переборные атаки, собрание популярных подборок) в течение длительного периода времени. Достаточная часть данных в принципе не является валидными паролями по формальным синтаксическим критериям, что также подтвердила экспериментальная проверка.

С точки зрения пользователя данное событие не несет существенной опасности и скорее выглядит попыткой создания инфоповода.

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.com, в далеком мае 2011 года.

при этом «paygr» встречается 11 раз в списке "+" gmail. Возможно их база также была скомпрометирована.

Но самое важное, что comicbookdb признали, что их база была действительна украдена вместе с паролями (за ссылку спасибо EnterSandman): www.comicbookdb.com/hacked.php
Сергей Парамонов @varagian
карма
257,2
рейтинг 35,2
Data Scientist
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (106)

  • +57
    Через блюр все равно видно адреса
    • +12
      Когда вставляют @#$ в матерное слово — оно тоже остаются понятным. Традиции, сэр…
      • +2
        > Когда вставляют @#$ в матерное слово — оно тоже остаются понятным.

        Можно по-разному вставлять: т#кое слово вы поймете, а %!#$&@#$ — нет.
        • +14
          Почему «нет»? Там написано «хабртобр»
          • +1
            «такое»?
  • –7
    А мне сразу бросилось в глаза, что все пароли из списка очень быстро разбираются через перебор хэша на GPU, то есть они выглядят так, будто их ломали гибридным методом(словарь+набор правил) через взлом хэшей. При беглом осмотре не увидел ни одного пароля, который был бы не по зубам быстрому перебору hashcat, с другой стороны для онлайн атак с крайне низкой производительностью пароли были сложноваты. Если бы это был фишинг, то были бы явно невскрываемые брутом пароли в списке, но я таких не заметил, хотя конечно я и 1% паролей вручную не проверил, может они там и есть.
    • +11
      Думаете, что кто-нибудь обладающий паролем вида tN9m0mN7eS9iAfj8 попался бы на фишинг-страничке? :)
      • +1
        Есть поговорка «И на старуху бывает проруха». Из десятка миллионов утекших учеток такие 100% должны бы попадаться. Хотя бы не такой сложный, но 3 группы символов в хотя бы 10 несловарных знаков.
        • 0
          Я хотел намекнуть на то, что обычно качество пароля прямопропорциональна доверчивости пользователя.
          • +5
            Поэтому качественных паролей должно быть меньшинство в списке, но они должны быть — все люди ошибаются, а при такой огромной выборке даже малый процент ошибок опытных пользователей должен прослеживаться.
          • 0
            Практика, когда пароль придумывает один человек (внук), а пользуется другой (бабушка) весьма распространена.
            Бабушка жалуется подругам, что пароль очень неудобно вводить и всегда жмёт галку «запомнить меня», но сменить пароль не умеет.
            Сегодня бабушек во одноглазниках очень много, и очень мало кто из них там самостоятельно зарегистрировался.
      • +5
        Была слита БД сайта 123rf.com
        Это я вычислил по паролю, который был в списке. 90% паролей у меня рандомые.
        • +1
          Никогда этим сайтом не пользовался, а пароль мой в слитой базе был.
          • +1
            Значит было много сайтов, откуда слили пароли.
            • +1
              я ниже написал что это скорее всего были дампы
        • 0
          О, спасибо мил человек. И мой пароль кажись оттудова.
    • 0
      А как он справляется с солеными хешами, для которых неизвестна соль?
      • +1
        Никак. У меня есть теория происхождения этих баз паролей. Я думаю, что утекли хэши с какого-то не связанного с почтой ресурса: торрент-треккера, развлекательного портала, сайта знакомств или соцсети. Чтобы не подсвечивать точку слива — отобрали те аккаунты, у которых пароли так же подходили к почте регистрации(такое часто случается) и выложили в сеть. Это могло быть всего-лишь доказательством факта слива, а более полная база продается за деньги. Если такая версия хоть немного верна, то полная база должна быть несколько десятков миллионо аккаунтов, а это очень крупный ресурс, которых в рунете единицы(а жертвы слива — именно русскоязычные пользователи).
  • +3
    Вспомнилось сразу из «Космических яиц»:

    Дрист: — Какой пароль?
    Роланд: — Пишите… один… два… три… четыре… пять!
    Лорд Шлем: — Это самый идиотский пароль, из всех которые я когда либо слышал!
    Дрист: — Прикажите сменить код на моих чемоданах!
  • +2
    На самом деле как минимум у яндекса раньше не было требования по длине пароля, и после его введения старые пароли вполне работали. До всей этой истории у моего яндексовского ящика (которому лет 9 уже примерно) был пятизначный пароль. И он так и работал, никто его сменить не просил.
    • +1
      У мейл.ру то же самое. Лет так 10 назад вообще отсутствовало ограничение по длине пароля — можно было из 1 символа составить.
  • 0
    А зачем вы заблюриваете текстовые скриншоты, когда есть регекспы?
    • 0
      Не более чем защита от дурака — базы же в открытом доступе, кому нужно, тот точно найдет.
      • +5
        Я намекал на то, что набрать s/\S+@/*****@/ гораздо проще, чем скриншотть, а потом фотошопить.
        • 0
          Потому что это красивая иллюстрация в статье, а не кусочек текста.
          • +2
            Ну тогда надо было уже зелёным по чёрному, и в фон положить какойнить юникод :)
            image
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                вставлять анимированные иллюстрации к статье было бы уже чересчур :)
                • НЛО прилетело и опубликовало эту надпись здесь
            • –1
              .
              • 0
                Ы!
  • 0
    Данные из всех трех баз представляют собой набор пар адрес-пароль

    Уже неверно. У меня утекла почта гмаил, а вместе с ней номер телефона(правда без кода страны и оператора). Телефон в качестве пароля я никогда не использую.
    • 0
      И в каком формате в базе хранятся телефоны?
      • 0
        Я не знаю в каком формате хранятся телефоны и откуда произошла утечка. Я лишь сказал что в этих списках моя почта записана вместе с телефоном, а не с паролем. Утечка могла быть у гугла, что маловероятно, либо на одном из нескольких китайских сайтов где я совершал покупки. Нигде больше эта пара(почта-телефон) не использовалась.
        • +1
          То есть пароля там нет? Если так, то для стороннего наблюдателя ваш телефон выглядит, как пароль, так как у базы нет никаких метаданных (это CSV с сепаратором в виде ":" и даже без имен столбцов).
          • 0
            Да мне без разницы на стороннего наблюдателя. Нам дали базу мыло: пароль(якобы), но увести могли и другие данные. В моем случае, кроме телефона, могли увести и номер кредитки вместе с защитным кодом…
  • +2
    Если включить теорию заговора, то вполне можно предположить, что затем будут нагибать яндекс, гугль и других за «нарушение» ФЗ о личных данных.
    • +1
      Роскомнадзор заявил, что не будут, т.к. это не относится к персональным данным.
      • 0
        что имеется в виду под
        При этом, по мнению Роскомнадзора, ведомство не намерено осуществлять утечку паролей почтовых сервисов, так как они на относятся к персональным данным.?

        и… почему теги не работают? это всё потому что я чёрный с отрицательной кармой?
  • 0
    Дали бы ссылку на базы что ли, чтоб честной народ мог посмотреть входимость себя в оные.
    • 0
      Проверка на наличие адреса в базе доступна и описана вот тут:
      habrahabr.ru/post/236283/
      • 0
        А спамом потом не замучают?
  • –3
    зачем замазывать, так что от этого никакого толку?
    спойлер
  • 0
    Не рассмотрен вариант кросс-чека и ещё множество других. Например, как насчёт прослушки трафика на стороне почтовика?

    В любом случае мне кажется, что правильнее было бы найти как можно больше жертв из списка (даже здесь по Хабру полно), опросить и попробовать проанализировать, каким образом могли утечь пароли. Могут найтись интересные пересечения. А выложенные базы вполне возможно были захламлены умышленно.

    Очень режет по тексту это «в течениИ», исправьте пожалуйста. Когда речь идёт о времени, правильно писать «в течениЕ».
    • 0
      Кросс-чек с невалидными паролями? Как одна из версий возможно, но она не объясняет всех данных — ручная или даже автоматическая валидация паролей явно не проводилась для существенной части базы.

      Прослушка трафика — опция безусловно, но как бы это объяснило невалидные пароли? Пустые адреса? Собирали всё подряд и не проверяли, что подходит? Но прослушка сразу четырех провайдеров почты — это довольно сильное утверждение, у меня нет никаких доказательств в подтверждение. Есть идеи, как это можно технически проверить?

      А выложенные базы вполне возможно были захламлены умышленно.

      Это какая-то теория заговора, попытка объяснить неподходящие под гипотезу данные злым умыслом. Довольно долго бегал по данным, не похоже чтобы кто-то специально сидел и вставлял всякую чушь: она очень разнообразная и в неплохих количествах; еще и измеряемые метрики заранее нужно было бы знать. Еще по части данных мне удалось узнать, что это валидные пароли — но они устарели (почтовые сервисы иногда выдают для них специальные ошибки).
      • 0
        Объясню, я пытаюсь найти место утечки собственного пароля, ящик не был заброшен, пароль сложный, вероятность вируса/кейлоггера крайне мала, т.к. никогда не ввожу пароль в Винде и вообще пользуюсь ею только на виртуалке для некоторых мелких проверок, вероятность фишинга также крайне мала, т.к. никогда не ввожу пароль руками, только через автозаполнение браузера, соответственно если бы браузер не ввёл пароль сам, то я бы сразу насторожился.

        Основная рабочая версия у меня — это кросс-чек, но тогда под подозрение попадает крайне малый список достаточно серьёзных контор. Через какую из них могла произойти утечка пока ищу. Вторая рабочая версия — публичный WiFi с прослушкой.

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

          Пока слабо себе представляю, какие я смогу предоставить доказательства, что ресурс Х был слит, кроме показаний условного Васи. Было бы здорово придумать некоторый технический метод проверки, что база определенного ресурса была слита.
          • 0
            Об этом я и говорил с самого начала, нужно собрать некоторое количество жертв, способных предоставить список сервисов на которых использовался такой же пароль и отстортировать сервисы по количеству пересечений, если в топе будет сильный скачок, то можно будет делать выводы.
            • 0
              Это же работа для настоящих хабра-детективов! :-)
              • 0
            • 0
              Давайте начнем с меня. У меня утекла пара гмыло: телефон. Кроме гугла эта пара использовалась на нескольких китайских сайтах:
              alibaba.com
              aliexpress
              pandawiil
              dx.com
              focalprice.com
              • 0
                Давайте продолжим с меня.
                citibank.com
                mail.ru
                linode.com
          • +1
            Например, такой технический метод подойдет?
            • 0
              Это действительно даёт хороший список кандидатов, например, пользователь gkond писал, что
              Нашел свой е-мейл в дампе. Пароль, которой рядом с ним указан автоматически сгенерировал мне сервис paygr.com, в далеком мае 2011 года.

              при этом «paygr» встречается 11 раз в списке "+" gmail (доступном, например, тут). Это индикатор, что их база могла быть скомпрометирована. Но представьте, если им об этом заявить, то они скажут в ответ, что пользователи подхватили вирус и он украл эту комбинацию логин-пароль из браузера (или расскажут другую версию про фишинг или перехват трафика пользователей) и это как-то нужно опровергнуть или показать маловероятность этого сценария.
              • +2
                а еще там встречается comicbookdb — и вот они сами пишут www.comicbookdb.com/hacked.php
                • 0
                  О, вот это уже выглядит солидным. Пожалуй утащу в апдейт к статье.
  • 0
    Не знаю насчет фишинга. Тут не все однозначно. У меня утащили пароль от почти не используемого ящика на Mail.ru. При этом у меня Linux, мозг есть и на предложения из Нигерии не откликаюсь. Почту с мейла забирает Гугл.
    • 0
      Никогда не было заходов на почту с других компьютеров? Заходов через публичный WI-FI? Пароль старый? В смысле, он был установлен недавно или не менялся вот уже много лет? Этот пароль больше нигде с почтой вместе не использовался?
      • 0
        С других машин не заходил — аккаунт был заведен, насколько я помню, одноразово ради облачного хранилища по акции. Пароль не менялся с момента установки. Вживую я туда около 7-8 месяцев назад заходил.
    • –1
      Нигде не регистрировались с комбинацией ящик+пароль? Мне кажется имеет место слив базы с какого-то крупного ресурса и просто отобраны сочетания почта+пароль, которые справедливы и для ресурса слива, и для почты жертвы.
      • 0
        С этого ящика точно нет. Пароль использовался ещё кое-где, но связать с ящиком маловероятно.
      • +2
        Вполне возможно что комбинировали как то данные. У меня акк на gmail был в базе, пароль там очень простой, типа qwerty, но данный пароль у меня не использовался в gmail, возможно при регистрации лет 5 назад, и то маловероятно. А использоваться такой простой пароль мог для одноразовой регистрации на каком то проходном ресурсе.
        • 0
          Хорошо вписывается в версию о слитой группе баз сторонних ресурсов. Про это в UPD написано.
  • +3
    Вот смотрите
    У меня где-то валяется несколько десятков дампов взломанных сайтов… одним моим знакомым.
    Если всё отфильтровать — получится точно больше 1 млн
    Собраны путём вытаскивания с разных сайтов через sql-инъекций
    Соответственно база скажем какого-нибудь форума. Уверен что >30% акканутов мыло: пасс будут подходить к ящикам. Еще какая-то часть к соцсетям. Еще процент к Steam
    Если я отсортирую аккаунты по доменам и выложу в сеть — эти данные станут сенсацией? =)

    Тут был либо фишинг, либо, более вероятно, такие же дампы
    И да. Со знакомым тем не общаемся — он уже давно уехал в Британию. Жесткий диск с этими дампами я раскрошил молотком и скинул в жерло вулкана, предварительно пройдя 3 фильма. Нет у меня этих данных, короче.
    • 0
      Смысл поста во многом в том, чтобы проверить гипотезу — является ли выложенная база смесью разных коллекцией (или источник один) и оценить качество базы. Во многом похоже, что это подборка из кучи разных мест. Скорее всего она включает в себя дампы разных ресурсов и, в принципе, не представляющая собой никакой угрозы. Поэтому логичным был бы вопрос: кто и зачем это выложил?

      Если я отсортирую аккаунты по доменам и выложу в сеть — эти данные станут сенсацией? =)

      Не знаю, а это можно заранее и наверняка предсказать? (Ну кроме случая с iCloud.)
      • 0
        я позже ради интереса сбегаю к тому вулкану и посмотрю, вдруг там остались остатки названий сайтов
        • 0
          Да, еще было бы здорово попросить Гендальфа проверить пересечение утёкших баз и тех, которые канули в Ородруин вместе с Винтом Всевластья.
          • 0
            Пробегали говорящие мыши и сказали что было 87 632 430 байт — это только на одном из винтов. часть html, часть в md5
            если представить что там куча дубликатов. возьмем треть — 22мб и пусть средняя длина мыло+пароль — 32 байта… около ляма кануло в вулкан
            вечером попрошу эльфов собрать всё в кучу и отсортировать.
            дальше можно будет анализировать
            единственное — данные реально нескольких 2-3 летней давности, но совпадения полюбому будут
            точно знаю что такие вещи скупались пачками по доллару за 100к
  • 0
    Возможно, потенциальная жертва догадалась о фишинговой форме и попыталась проверить наличие SQL инъекции.

    Совершенно уверен, что те кто попадают на фишинговые страницы, абсолютно не знаю, что такое SQL, а уж «SQL инъекции» нее более чем звук, при чем окончание его очень знакомое и уж конечно никто ничего не проверял… А если речь все же тех кто специально ищет там SQL инъекции, то называть их потенциальными жертвами как то не правильно.
    • +2
      пришло вам письмо на айфон от друга с ссылкой на мылору, вкладочка открылась с Mail.ru и возникло подозрение что что-то здесь не так.
      вы ему кавычку, а он вам mysql error
      вы потенциальная жертва с техническими знаниями
      • 0
        Но если я увидел mysql error, значит моя пара логин-пароль в базу не записалась?
        • +1
          вообще лучше не фигарить логин-пароль в сомнительные формы
          ошибка вылезет в случае если владелец совсем дебил — не обрабатывает входные данные и еще ошибки выводит =)
          тут могут быть вариации:
          -данные пишутся в файл
          -данные экранируются и заносятся в базу
          -ведется лог обращений к базе — в базу оно не попало, но в логе ваш insert into lohi values(vas'ya@mail.ru, lamer) будет светиться
  • +1
    > Пусть за удовлетворение одного из следующих условий пароль получает условный балл:
    > пароль содержит не менее 7ми символов;
    > пароль содержит хотя бы одну строчную букву;
    > пароль содержит хотя бы одну прописную букву;
    > пароль содержит хотя бы одну цифру;
    > пароль содержит хотя бы один специальный символ.

    Меня всегда этот стандарт мягко говоря… бесил. Надо не считать эти пункты, а считать энтропию на основании множества используемых символов и длинны строки. Мой пароль в gmail-е состоит из одних только словарных слов в lower case (английских), слитых в одну строку без пробела. Но он длинной более 40 символов (по сути — придуманная ничего не значащая рандомная абстрактная фраза на английском) — не думаю что он менее безопасно чем какой-нибудь «A^h2@!%», а все подобные системы, когда я пытаюсь зарегаться, говорят что это «weak password» (хорошо что хоть гугл считает нормальным образом).
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        xkcd.com/936/ — простое объяснение в картинках, почему вы не правы.
        • НЛО прилетело и опубликовало эту надпись здесь
          • +2
            В моём пароле 9 слов английского языка. Даже если ограничился средним словарным запасом non native speaker-а, составляющим около 7000 слов в минимуме (так сказать базовый разговорный минимум), получается 7000^9 = 4.03*10^34 паролей.

            Приведенный мной выше пример — 7 символов по 100 вариантов каждый, 100^7=1*10^14 паролей.

            Так что если бы вы могли перебором сломать 7-ми символьный за 0.0001 секунду, то на перебор моего пароля по словарю у вас уйдёт 1279604484 лет при той же скорости перебора.

            И это ещё не говоря о том, что native speaker может воспользоваться куда большим словарным запасом, что ещё порядков на 10 может увеличить стойкость такого пароля (тем кто не знает английского — можно и русский язык использовать).
  • +1
    Долго у Вас, наверное, этот код на R считал сложность)
    А вообще я рад, что об этом языке на Хабре вспоминают. Красивая штука.
  • 0
    Более 200 страниц соцсети «ВКонтакте» заморожены из-за утечек почты Яндекс, Mail и Google
    Для статистики интересно было бы понять, сколько из этих аккаунтов были реально живые.
  • 0
    Позволю себе слить аккаунт и дать ссылку на tvoe.moe/threads/stealed-accounts.76/

    Кто-то пришёл и оставил архив.
    Мыла отдельно, пароли отдельно, отсортированы — можете проверять свои и анализировать
    около 500к записей
    из них mail.ru bk.ru list.ru inbox.ru >300k
    около 90k яндекса

    надеюсь, мыла давно невалидные
    • 0
      По ссылке нужно регистрироваться, нельзя куда-нибудь залить без регистрации?
      • –1
        ну, честно говоря, я надеялся что это хоть чуть-чуть задержит пользователя на сайте… дайте хоть немного траффика ^_^
        вам сейчас куда-нибудь залью персонально
      • –1
        всё. разрешил гостям забирать аттачи без регистрации
  • 0
    Интересно было бы посмотреть на TOP надежных и очень надежных паролей по классификации PCI.
    • 0
      Ок, сделаю вечером, как доберусь до компьютера.
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Top надежных и очень надежных паролей — это самые популярные пароли, удовлетворяющие требованиям, то есть самые простые среди «надежных». В алгоритме использовал упрощенную версию PCI без всяких там словарных проверок, поэтому шедевры в духе Qwerty1& встречаются среди «очень стойких» паролей.

      Вот собственно и топ по схеме пароль и количество совпадений:

      Yandex Оч надежные

      1qaz!QAZ 7
      9966Look_In**joy 4
      Qwerty!2 3
      100%DimZey7747S 2
      10Q7*maid.O 2
      11HarmOny% 2
      11Troglodit! 2
      123qweR% 2
      1qazZAQ! 2
      1tsAfuck! 2
      230Krasa& 2
      AaBb01!# 2
      Bl-a-4_*-A 2
      Bnm123# 2
      Cbcflvby#1 2
      CfIf666^ 2
      CFT^&7ygv 2
      f0uL#e1L9 2
      free!O_0*r1de 2
      ghGH56%^ 2

      Yandex надежные

      Nhbujyjvtnhbz212 99
      Noob572 50
      sZCdu6he 36
      1702Alex1991 31
      tyAnna11 29
      R15mO5I1g23sh8P1A7pE 26
      Ghfgjhobrivfnrj007 22
      Qwerty1 22
      SK9dbf277 20
      Dkfcnm13 18
      Qwerty123 18
      Sorbonne2011 17
      b6v5vU3fFL 16
      Dimabilan515 16
      IditbBpopy13 15
      Masha11 14
      ITechnology12 12
      1986nnNN 11
      6270Nypi 11
      a111111B 11

      Mailru Оч надежные

      1qaz!QAZ 20
      !QAZ1qaz 7
      !QAZ2wsx 7
      ZAQ!2wsx 7
      !4PolskaViza$ 6
      zaq1ZAQ! 4
      !QAZxsw2 3
      ZXC123asd! 3
      121609Dd+++ 2
      123qweR% 2
      1qazZAQ! 2
      200_LeT_tomu_NazaD! 2
      234/Manturovo*31 2
      25N*nata.25 2
      2w3e1q*I(O 2
      535xBB# 2
      AaZz1956** 2
      AGVD23!!sv 2
      ATOSmoroz*-+14 2
      AvaL2205! 2

      Mailru Надежные

      Hd764nW5d7E1vb1 195
      12e3E456 150
      Qwerty123 64
      Ghbr0k73 58
      Jhnjgtl12 58
      F64579820f 50
      Vlad7788 47
      Qwer1234 42
      W1408776w 40
      Shock123 39
      Aa123456 38
      Q1w2e3r4 38
      kMNopr10s 37
      DeSire3302 35
      0L8KCHeK 34
      Tk3281022 34
      123qweASD 32
      m7N56xO 31
      Qwerty1 31
      0K1o2V3a4L5e6V7 30

      Gmail оч надежных нет, есть только надежные

      p@ssw0rd 507
      zaq1@wsx 155
      p@$$w0rd 78
      @lthebest1 58
      pass@123 44
      abc@123 40
      1qaz@wsx 36
      p@55w0rd 36
      password@123 35
      pass@1234 32
      india@123 31
      password@1 31
      admin@123 30
      p@55word 22
      p@ssword1 22
      data@123 20
      wipro@123 19
      upps@l@3 18
      abcd@1234 17
      asd123@# 16
      • 0
        Спасибо. Я так и думал. Оказывается, очень надежные пароли могут быть ненадежными :)
        • 0
          p@ssw0rd это надёжный пароль??
          • 0
            По классификации PCI — вполне да.
            • +1
              Это, кстати, очень важный момент, что любая попытка заставить пользователей устанавливать только стойкие пароли — это такая игра: система устанавливает правила, а пользователи пытаются выставить самый просто запоминающийся (~= простой) пароль подходящий под эти правила. Поэтому условный «Qwerty!2» это намек, что какие бы правила не устанавливались всегда будет лазейка, чтобы их обойти.
      • 0
        Cbcflvby#1 забавен

        А вот эти довольно странные из-за своей популярности.
        Nhbujyjvtnhbz212
        Jhnjgtl12
        Ghbr0k73
        • 0
          Тригонометрия212
          ортопед12
          прик0л73
          • 0
            ну я это заметил. странно то, что тригонометрия, да еще и 212, используется в 99 случаев.

            подход правда стремный. на наших-то сайтах точно, так как от словаря это не избавит.
            • 0
              вероятно, что это часть авторега
  • 0
    Самые простой критерий невалидности пароля — несоответствие длины пароля требованиям почтовых сервисов.


    В рассчет не брался тот факт, что требования к паролю могли меняться, и ящики могли быть созданы до их последнего изменения?

    Возможно, что существенная часть базы собрана в течение длительного периода времени, когда требования к паролям были мягче?

    Опять же, не база была собрана раньше, а ящик зарегистрирован
    • 0
      Во многом справедливое замечание, но разве пароли из 4х символов когда-то были валидны? Да и задача в основном состоит в том, чтобы найти аномальные пароли и понять, как они могли попасть в базу. Пароли из 300+ символов всегда вызывают подозрение, особенно когда они содержат куски HTML-кода, как и пустые пароли или из 3-4х символов.

      Безусловно, мы не можем знать, когда были созданы пароли — поэтому в тексте и было написано «по современным критериям». Короткие и слабые пароли — это индикатор того, что определенные атаки могли быть ответственны за часть данных в базе.
      • 0
        Судя по комментариям выше — были

        Но вообще да, это я просто занудствую
        • 0
          Не, это справедливое замечание, но сложно представить, что это 5 миллионов паролей 10 летней давности от Mail.ru (у них тогда вообще было столько пользователей?) и они не менялись всё это время.
  • 0
    У меня в начале года ломанули mail.ru а потом сразу и угнали steam-акк. Пароль восстановил, steam-акк вернули. Как угнали mail.ru я так и не понял.
    В начале рассылали спам через magent
  • 0
    Было бы еще интересно оценить какое кол-во угнанных паролей принадлежит госструктурам России.
  • 0
    Таким образом наиболее вероятной выглядит гипотеза, что данная выборка — компиляция различных источников (фишинг, заражение, словарно-переборные атаки, собрание популярных подборок) в течение длительного периода времени. Достаточная часть данных в принципе не является валидными паролями по формальным синтаксическим критериям, что также подтвердила экспериментальная проверка.


    Однако, вопрос о том, почему публикация произошла в течении нескольких дней и чего добивались люди этой публикацией остаётся открытым… я понимаю если бы перед выходом на IPO яндекса это было бы сделано, но сейчас… может как то замести следы…
    • 0
      Да всё просто. У кого-то была собранная годами база. Он решил её проверить на валидность. Но, чтобы не привлекать к себе и своему IP внимание, выложил её в сеть, а разные сообщества типа Хабра её проверили. А разделение по мыло-провайдерам сделал для пущего привлечения внимания, просто так резонанс выше.
      • 0
        Странный способ «не привлекать внимание», да и теперь база гарантировано умерла, адреса в основном заблокированы…
        • 0
          Мне кажется, он догадывался, что там очень мало живых адресов. Вон, в ответе Гугла говорят, что там всего 2% валидных было. Короче, это был скорее троллинг, чем что-то серьезное.

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