Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   DefBrute - система распределенного перебора хешей. (https://forum.antichat.xyz/showthread.php?t=129632)

c0n Difesa 13.07.2009 18:42

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

Компьютер не является исключением из этого правила. Только он не способен осознавать, насколько сложна поставленная перед ним задача, поэтому процесс ее выполнения может растянуться на долгий срок. Другое дело кластер – своего рода коллектив компьютеров, работающих над общей задачей и каждый из которых делает то, на что способен. Однако и здесь нужен сервер, который будет распределять задачу…

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

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


Гвоздь программы.

DefBrute – система распределенного перебора строк для MD5-хешей. Особенности ее функционирования и процесс создания были детально описаны в статье "Система распределенных вычислений. Грид-сеть." . Там же можно найти исходные коды программного обеспечения, лежащие в основе рассматриваемой системы, с подробными комментариями.

Система состоит из серверной и клиентской частей.


Сервер.

Серверная часть (DefBrute v1.0.exe) выполняет функции генерации, учета и передачи диапазонов строк клиентам.

Генерация диапазонов основана на множестве символов (Char Set) (из которых, как предполагается, состоит пароль) и длины пароля (Password Length). Процесс генерации представляет собой простую инкрементацию числа из n-ричной системы счисления. Каждому числу соответствует биективное (взаимно-однозначное) отображение из множества строк. За подробностями генерации обращайтесь к статье многоуважаемого ZaCo «Разделение диапазона перебора паролей» . Далее сгенерированный диапазон строк передается клиенту с помощью технологии .NET Remoting.

Главное (и единственное) окно программы состоит из нескольких областей. Рассмотрим эти области детальнее.

Область Connect Settings содержит в себе опцию: Server Port, которая (как нетрудно догадаться) отвечает за номер порта, который будет открыт на сервере и который также необходимо указать клиенту.

Следующая область объединяет все опции для перебора. Поле User CharSet позволяет пользователю задать множество символов, которые, по его предположению, могут быть использованы в пароле.

Preset - предустановленные множества символов (латинские в верхнем регистре, в нижнем регистре, цифры и специальные символы). Думаю, тут все понятно.

Enemy Hash - поле в котором указывает целевой MD5-хеш.

Password Length - предполагаемая длинна пароля. Незнаем? – указываем с запасом.

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

Range Brute Progress - прогресс-бар, отображающий процесс перебора диапазона всех возможных строк.

Collision - область, в которой выводится строка, соответствующая целевому MD5-хешу.


Клиент.

Клиент представляет собой консольное приложение, формат запуска которого: defbc.exe <server ip> <server port>.

Возможно, кому-то покажется, что программа далека от совершенства, о чем могут свидетельствовать необработанные исключения и т.п. Для искушенного пользователя, а также для любителей оптимизировать и подгонять все «под себя», в архиве с программой присутствуют исходные коды на C# в виде проекта (Solution) для Visual Studio 2008.

DefBrute v1.0 *

* Требуется наличие .NET Framework 2.0 или выше.

(c) c0n Difesa (defec.ru)

schwarze 14.07.2009 12:56

Переборщик лично твой? Или ты чей-то взял?

c0n Difesa 14.07.2009 16:01

Цитата:

Сообщение от schwarze
Переборщик лично твой? Или ты чей-то взял?

Лично мой.

P.S. Главное окно программы содержит копирайты.

c0n Difesa 18.08.2009 14:21

Особенности генерации диапазона строк.
 
Рассмотрю некоторые детали функционирования системы, чтобы материал не накапливался и не разрастался до объема статьи, которую нет времени писать.

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

Предположим, пользователю требуется перебрать всевозможные комбинации (строки), составленные из символов:

Код:

str = “skz!&#”
Пронумеруем каждый символ:

Код:

s(1); k(2); z(3); !(4); & (5); #(6)
Всего символов n=6, значит работать будем в n-ричной системе счисления.

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

Код:

Число              Соответствующая ему строка
 
1                    s
2                    k
3                    z

6                      #

(Т.к. система 6-ричная, то если число >6 переходим в следующий разряд)

7                      s#
8                      k#
9                      z#

И т. д.

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

ErrorNeo 18.08.2009 14:43

http://ru.wikipedia.org/wiki/Коллизия

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

2. находить MD5 хеш методом прямого перебора с использованием CPU, пусть даже распределённо - не есть тру, потому как даже одна видеокарта с поддержкой технологии CUDA или Bars способна выдавать скорость перебора, равную 100(!) мощностям обычных процессоров.

Если же задумка в том, чтобы раздавать клиентскую часть скрытно тысячам юзеров, и грузить их процы не более, чем не 5-10%... то даже в этом случае 1 единственная видеокарта сможет заменить 1000-2000 таких ботов.

:(
в общем и целом всё красиво, интересно, любопытно....
но бесполезно. не совсем понимаю, зачем именно ты это сотворил)

хотя за старания все равно плюс) будет тебе от этого хоть какая-то польза :D

c0n Difesa 18.08.2009 14:57

Цитата:

1. если ты реализуешь нахождение коллизии заданного MD5 хеша с произвольным другим (на современных компьютерных мощностях) - тебе как минимум дадут нобелевскую премию
Из той же Вики:
Цитата:

Коллизия хеш-функции в информатике и криптографии — это равенство значений хеш-функции на двух различных блоках данных.
Отсюда: коллизия – равенство. В принципе, считаю уместным использовать данное понятие в качестве равенства двух хешей (Целевого и Найденного).

Цитата:

2. находить MD5 хеш методом прямого перебора с использованием CPU, пусть даже распределённо - не есть тру, потому как даже одна видеокарта с поддержкой технологии CUDA или Bars способна выдавать скорость перебора, равную 100(!) мощностям обычных процессоров.
Факт. Однако не все видеокарты работают с той же CUDA, что существенно сокращает "доноров".

Программа разрабатывалась в целях самообразования и ознакомления с платформой .NET и С# в частности, поэтому я не ставил цель написать брутер «бест оф зе бест», что упоминал в своей статье, посвященной данной системе.

ErrorNeo 18.08.2009 17:11

коллизия - это 2 одинаковых хеша от двух разных исходных блоков данных.
Иными словами, это - если ты сломаешь хеш 2 раза, и полуичишь при этом разные пароли.
Это - чёткий термин. Называя же им простой подбор пароля ты лишь вводишь тех, кто знает его значение, в заблуждение, и усложняешь понимание тем, кто его не знает)

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

как я уже написал - в любом случае молодец, что старался, и надеюсь, что твоё следующее творение будет более полезным с практической (а не только теоретической) точки зрения :-)

c0n Difesa 18.08.2009 17:30

Цитата:

Это - чёткий термин. Называя же им простой подбор пароля ты лишь вводишь тех, кто знает его значение, в заблуждение, и усложняешь понимание тем, кто его не знает)
Примите извинения за отсутствие строгости к употребляемым терминам. Спасибо за замечание.

Цитата:

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

diehard 18.08.2009 18:56

Цитата:

Сообщение от ErrorNeo
Если же задумка в том, чтобы раздавать клиентскую часть скрытно тысячам юзеров, и грузить их процы не более, чем не 5-10%... то даже в этом случае 1 единственная видеокарта сможет заменить 1000-2000 таких ботов.

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

ErrorNeo 18.08.2009 19:22

gold-goblin, "прикрутить куду" это ты жостко сказал.
Если есть реальное желание - напиши сначала свой брутер под неё))
А сделать распределение, это уже, прямо скажем, не особенно то и сложно.

diehard, для единичных распределенных атак в брутерах есть функция "начинать брут с такого-то пасса". Таким образом менее, чем на 10 машинах, сделать это - совершенно не сложно. Нужно всего лишь скинуть 10 людям в аську стартовый пароль а им - нажать 3 кнопки, чтобы вставить этот пароль в настройки программы.
Более того, реализовать "такое" программно - проще простого.

То, что сделал автор - свой полноценный брутер - это.. да, это не тривиально.
Более того, это - какое-то количество дней работы. А работу, любую, нужно уважать:)
Мой коммент касался лишь того, что этот брутер, хотя и потребовал вложения сил и времени, но совершенно бесполезен в реальной жизни именно как брутер.
Как образец кода - да, вполне возможно, что это действительно кому-то может и пригодиться)

О распределенном же "куда-брутере", diehard, я ничего не говорил.
В определенной степени это могло бы быть полезно... хозяину ботнета из куд :DD


Время: 05:58