Author Archives: nagos

vkontakte и база 500к акаунтов

Периодически в интернете всплывают списки украденных паролей от vkontakte.ru. Кого этим удивишь? Все знают что vkontakte написан плохо, и потерять пароль проще простого.

Очередная база в открытом доступе всплыла тут. База представляет собой email и пароль в открытом виде, полученые с фишинового сайта. Т.е. пользователи сами вводили свои пароли на левом сайте типа vkonkakte.ru, где их просто записывали в файл.

Но в комментариях проскочила еще более интересная база, 500 тысяч cookies, полученные через xss на вконтакте. Сейчас систему проверки пароля и cookies изменили, и эти данные как бы бесполезны (поэтому и опубликованы).
В базе содержится email и md5 сумма пароля, без salt. Вот с этой базой мы и будем сейчас работать, постараемся выжать что то интересное.
Саму базу можно скачать по этой ссылке.
Для начала простой скрипт на python, который достанет из мешанины cookies только md5 сумму пароля.
UPD: Исправлен косяк, спасибо sash-kan

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#parser.py

from re import search

def extract_data(line):
m = search(
r'remixemail=(?P<mail>[\d\w@\.\-]*)', line)
p = search(
r'remixpass=(?P<pass>[\d\w]{32})', line)
if m and p:
return (m.groupdict()['mail'],p.groupdict()['pass'])

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#extract.py

from sys import argv
from parser import extract_data

if len(argv)==2:
f = open(argv[1])
for line in f:
data = extract_data(line)
if data: print data[1]

Дальше запускаем и сортируем

./extract.py 500k.txt |sort > pass_sorted.txt

Если покопаться в этом файле, становится ясно что пароли повторяются! У 25% пользователей стоят повторяющиеся пароли! Вот это да, первые результаты. Когда увидел, я смеялся очень долго :) Я конечно знал что с паролями у людей проблемы, но реальные масштабы поражают.

$ sort -u pass_sorted.txt >pass_uniq.txt
$ wc -l pass_sorted.txt pass_uniq.txt
424252 pass_sorted.txt
313950 pass_uniq.txt
738202 итого

И получаем результат, 110302 повторяющихся пароля.

А теперь составим top-10 самых частых пароля, типа love-god-sex :)

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#most_wanted.py

from sys import argv
from parser import extract_data

plist={}
last_p=''
last_count=1
if len(argv)==2:
f = open(argv[1])
for line in f:
if line == last_p: last_count += 1
else:
if last_p: plist[last_p.rstrip('\n')] = last_count
last_count = 1
last_p = line
p_sort = sorted(plist.iteritems(), key=lambda (k,v): (v,k))
for i in range(10): print p_sort.pop()

Запускаем, и получаем список хешей самых популярных паролей.

$ ./most_wanted.py pass_sorted.txt
('e10adc3949ba59abbe56e057f20f883e', 1250)
('d8578edf8458ce06fbc5bb76a58c5ca4', 891)
('25f9e794323b453885f5181f1b624d0b', 615)
('96e79218965eb72c92a549dd5a330112', 338)
('f379eaf3c831b04de153469d1bec345e', 302)
('d9d1b168eac8f197e0576b56cfc23ece', 287)
('c8837b23ff8aaa8a2dde915473ce0991', 268)
('e807f1fcf82d132f9bb018ca6738a19f', 249)
('fcea920f7412b5da7be0cf42b8c93759', 222)
('dc0fa7df3d07904a09288bd2d2bb5f40', 222)

Мы точно знаем что эти числа — просто md5 сумма пароля. А для взлома md5 есть куча методов. Самый простой в данной ситуации зайти на online-поисковик, например http://md5cracker.tk и по одному скормить ему все эти суммы.

Результаты
В базе 500 тысяч записей, это 10-50% активной аудитории vkontakte.ru. Эту базу можно считать репрезентативной выборкой, имеющей те же свойства что и база всех пользователей. Пароли получены через XSS, и от квалификации пользователя тут мало что зависит (в отличии от фишинговой базы).
При разборе базы было обнаружено что 25% пользователей имеют неадекватный пароль. Пароль "как дата рождения" тут не учитывается. Если учесть, то половина наберется в легкую.
Вот список самых популярных паролей. Да, love-god-sex отдыхает :)

# Пароль Количество
1 123456 1250
2 qwerty 891
3 123456789 615
4 111111 338
5 666666 302
6 gfhjkm 287
7 123321 268
8 1234567890 249
9 1234567 222
10 7777777 222

Единственный пароль, который не понятен с ходу — gfhjkm, но через пару минут до меня дошло что это слово "пароль" набранное в английской раскладке клавиатуры.

Как избежать подобных проблем в будущем

  • vkontakte.ru заботится только о зарабатывании денег, но не о безопасности. Пароли хранятся в открытом виде, а передаются почти в открытом. Тут уже ни чего не поделаешь.
  • Регулярно менять пароли, потому что от попадания в базу, до рассылки спама проходит не меньше месяца
  • Внимательно следить, на каком сайте вводите пароль. vkontakte.ru конечно же не использует ssl, и проверить подлинность сайта невозможно
  • Использовать нормальные пароли, например из программы pwgen. Даже если украдут md5 сумму, то получить исходный пароль будет невозможно.

Но до тех пор, пока сам vkontakte.ru что то не сделает, все эти "советы" практически бесполезны для большинства пользователей.

Continue reading

Posted in linux, vkontakte.ru, web | Комментарии отключены