Содержание

Полный перебор — Википедия

У этого термина существуют и другие значения, см. Перебор.

Полный перебор (или метод «грубой силы», англ. brute force) — метод решения математических задач. Относится к классу методов поиска решения исчерпыванием всевозможных вариантов[en]. Сложность полного перебора зависит от количества всех возможных решений задачи. Если пространство решений очень велико, то полный перебор может не дать результатов в течение нескольких лет или даже столетий.

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

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

Терминология[править | править код]

В английском языке рассматриваемый в данной статье термин «brute-force» обычно относится к классу хакерских атак. При этом более общее понятие, математический метод исчерпывания всевозможных вариантов для нахождения решения задачи, соответствует термину «Proof by exhaustion».

Описание[править | править код]

«Метод исчерпывания» включает в себя целый класс различных методов. Обычно постановка задачи подразумевает рассмотрение конечного числа состояний данной логической системы с целью выявления истинности логического утверждения посредством независимого анализа каждого состояния[1]. Методика доказательства утверждения состоит из двух частей:

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

Характерные задачи, решаемые методом полного перебора[править | править код]

Хотя полный перебор в большинстве прикладных задач (особенно не связанных со взломом шифров) на практике не применяется, есть ряд исключений. В частности, когда полный перебор всё же оказывается оптимальным либо представляет собой начальный этап в разработке алгоритма, его использование оправдано. Примером оптимальности полного перебора является алгоритм оценки времени вычисления цепочечных произведений матриц, который не удаётся ускорить по сравнению с алгоритмом, основанным на методе «грубой силы»[2]. Этот алгоритм используется для решения классической задачи динамического программирования — определения приоритетов вычислений матричных произведений следующего вида: A1A2A3⋯An{\displaystyle A_{1}A_{2}A_{3}\cdots A_{n}}.

Пример использования полного перебора[править | править код]

Исходная задача заключается в вычислении данной цепочки (матричного произведения) за наименьшее время. Можно реализовать тривиальный последовательный алгоритм, вычисляющий искомое произведение. Поскольку матричное произведение является ассоциативной операцией, можно вычислить цепочечное произведение, произвольно выбирая пару элементов цепочки (AiAi+1),i=1..n−1{\displaystyle (A_{i}A_{i+1}),i=1..n-1} и заменяя её результирующей матрицей Ai1:Ai1=(AiAi+1){\displaystyle A_{i}^{1}\colon A_{i}^{1}=(A_{i}A_{i+1})}. Если повторять описанную процедуру n−1{\displaystyle n-1} раз, то оставшаяся результирующая матрица Akn−1{\displaystyle A_{k}^{n-1}} и будет ответом: Akn−1=(Akn−2Ak+1n−2)=…=A1A2A3⋯An,k=1..n−1{\displaystyle A_{k}^{n-1}=(A_{k}^{n-2}A_{k+1}^{n-2})=\ldots =A_{1}A_{2}A_{3}\cdots A_{n},k=1..n-1}. Эта формула может быть проиллюстрирована следующим образом. Рассмотрим матричную цепочку: ⟨A1,A2,A3,A4⟩{\displaystyle \left\langle A_{1},A_{2},A_{3},A_{4}\right\rangle }. Существуют следующие 5 способов вычислить соответствующее этой цепочке произведение A1A2A3A4{\displaystyle A_{1}A_{2}A_{3}A_{4}}:

(A1(A2(A3A4))),{\displaystyle {\color {Violet}(}A_{1}{\color {BurntOrange}(}A_{2}{\color {BrickRed}(}A_{3}A_{4}{\color {BrickRed})}{\color {BurntOrange})}{\color {Violet})},}
(A1((A2A3)A4)),{\displaystyle {\color {Violet}(}A_{1}{\color {BurntOrange}(}{\color {BrickRed}(}A_{2}A_{3}{\color {BrickRed})}A_{4}{\color {BurntOrange})}{\color {Violet})},}
((A1A2)(A3A4)),{\displaystyle {\color {Violet}(}{\color {BrickRed}(}A_{1}A_{2}{\color {BrickRed})}{\color {BurntOrange}(}A_{3}A_{4}{\color {BurntOrange})}{\color {Violet})},}
((A1(A2A3))A4),{\displaystyle {\color {Violet}(}{\color {BurntOrange}(}A_{1}{\color {BrickRed}(}A_{2}A_{3}{\color {BrickRed})}{\color {BurntOrange})}A_{4}{\color {Violet})},}
(((A1A2)A3)A4).{\displaystyle {\color {Violet}(}{\color {BurntOrange}(}{\color {BrickRed}(}A_{1}A_{2}{\color {BrickRed})}A_{3}{\color {BurntOrange})}A_{4}{\color {Violet})}.}

Выбрав правильный порядок вычислений, можно добиться значительного ускорения вычислений. Чтобы убедиться в этом, рассмотрим простой пример цепочки из 3-х матриц. Положим, что их размеры равны соответственно 10×100,100×5,5×50{\displaystyle 10\times 100,100\times 5,5\times 50}. Стандартный алгоритм перемножения двух матриц размерами p×q,q×r{\displaystyle p\times q,q\times r} требует время вычисления, пропорциональное числу pqr{\displaystyle pqr} (число вычисляемых скалярных произведений)[3]. Следовательно, вычисляя цепочку в порядке ((A1A2)A3){\displaystyle ((A_{1}A_{2})A_{3})}, получаем 10⋅100⋅5=5000{\displaystyle 10\cdot 100\cdot 5=5000} скалярных произведений для вычисления (A1A2){\displaystyle (A_{1}A_{2})}, плюс дополнительно 10⋅5⋅50=2500{\displaystyle 10\cdot 5\cdot 50=2500} скалярных произведений, чтобы вычислить второе матричное произведение. Общее число скалярных произведений: 7500. При ином выборе порядка вычислений получаем 100⋅5⋅50=25000{\displaystyle 100\cdot 5\cdot 50=25000} плюс 10⋅100⋅50=50000{\displaystyle 10\cdot 100\cdot 50=50000} скалярных произведений, то есть 75000 скалярных произведений[3].

Таким образом, решение данной задачи может существенно сократить временные затраты на вычисление матричной цепочки. Это решение может быть получено полным перебором: необходимо рассмотреть все возможные последовательности вычислений и выбрать из них ту, которая при вычислении цепочки занимает наименьшее число скалярных произведений. Однако надо учитывать, что этот алгоритм сам по себе требует экспоненциальное время вычисления[2], так что для длинных матричных цепочек выигрыш от вычисления цепочки самым эффективным образом (оптимальная стратегия) может быть полностью потерян временем нахождения этой стратегии[4].

Связь с концепцией «разделяй и властвуй»[править | править код]

В теории алгоритмов известны несколько широко применимых общих концепций. Метод полного перебора является одной из них. Фактически, полным перебором возможно воспользоваться в тех случаях, когда мы имеем дело с дискретной детерминированной системой, состояния которой могут быть легко проанализированы[5].

Другим ярким примером фундаментальной концепции теории алгоритмов является принцип «разделяй и властвуй». Эта концепция применима, когда система поддается разделению на множество подсистем, структура которых аналогична структуре исходной системы[6]. В таких случаях подсистемы также поддаются разделению, либо являются тривиальными[6]. Для таких систем тривиальной является исходно поставленная задача. Таким образом, реализация концепции «разделяй и властвуй» имеет рекурсивный характер.

В свою очередь, рекурсия представляет собой разновидность полного перебора. Так, рекурсия применима лишь для дискретных систем[en][7]. Однако это требование относится не к состояниям данной системы, а к её субструктуре[en]. Последовательное рассмотрение всех уровней дает исчерпывающее решение задачи, поставленной для всей дискретной системы.

По сравнению с другими примерами полного перебора, особенностью метода рекурсии является то, что конечное решение опирается не на одну-единственную тривиальную подсистему. В общем случае решение формируется на основании целого множества подсистем.

Для следующих примеров классических задач, решаемых методом «разделяй и властвуй», полный перебор является либо единственным известным методом решения, либо изначальной реализацией, которая в дальнейшем была оптимизирована:

Компьютер компании EFF для взламывания шифра DES. Имея в распоряжении 1 856 микросхем, взламывал ключ DES всего за несколько суток. На фотографии видна двусторонняя плата «DES Cracker», содержащая 64 микросхемы «Deep Crack». Цена всего вычислительного комплекса — $250 000

В криптографии на полном переборе основывается криптографическая атака методом «грубой силы», или брутфорс[12] (англ. Brute-force attack) — взлом пароля путём перебора всех возможных вариантов ключа. Её особенностью является возможность применения против любого практически используемого шифра[13] (об исключениях, то есть безопасности с точки зрения теории информации см. также шифроблокнот и Теоретико-информационная стойкость). Однако такая возможность существует лишь теоретически, зачастую требуя нереалистичные временные и ресурсные затраты. Если пространство решений очень большое, то такой вид атаки может не дать результатов в течение нескольких лет или даже веков. Наиболее оправдано использование атаки методом «грубой силы» в тех случаях, когда не удается найти слабых мест в системе шифрования, подвергаемой атаке (либо в рассматриваемой системе шифрования слабых мест не существует). При обнаружении таких недостатков разрабатываются методики криптоанализа, основанные на их особенностях, что способствует упрощению взлома.

Устойчивость к brute-force атаке определяет используемый в криптосистеме ключ шифрования. Так, с увеличением длины ключа сложность взлома этим методом возрастает экспоненциально. В простейшем случае шифр длиной в N битов взламывается, в наихудшем случае, за время, пропорциональное 2N[14][15]

. Среднее время взлома в этом случае в два раза меньше и составляет 2N-1. Существуют способы повышения устойчивости шифра к «brute force», например запутывание (обфускация) шифруемых данных, что делает нетривиальным отличие зашифрованных данных от незашифрованных.

Криптографические атаки, основанные на методе «грубой силы», являются наиболее универсальными, но в то же время наиболее медленными. Используются в основном начинающими хакерами. Эффективны для несложных алгоритмов шифрования и ключей длиной до 64 бит. Для современных ключей длиной от 128 бит (иногда для ключа факторизируется большое число из 200 цифр), неэффективны. Любой пароль может быть подобран путём полного перебора. При этом, даже если вычисление целевой функции от каждого конкретного возможного решения задачи может быть осуществлено за полиномиальное время, в зависимости от количества всех возможных решений атака может потребовать экспоненциального времени работы.

Распараллеливание вычислений[править | править код]

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

  • построение алгоритма. Пусть алгоритм можно представить в виде цепочки простейших действий (операций). Пусть N{\displaystyle N} — количество процессоров, в которых запрограммирован порядок. Процессоры выполняют работу:

i{\displaystyle i} -ый процессор выполняет три одинаковые по времени операции:

  1. получение данных от (i−1){\displaystyle (i-1)} -го процессора
  2. выполнение операции
  3. передача данных (i+1){\displaystyle (i+1)} -ому процессору.

Эта операция может занять всего сотую долю секунды. Тогда N{\displaystyle N} соединённых параллельно и синхронно работающих процессоров работают со скоростью v/3{\displaystyle v/3} (так как всего три операции), где v{\displaystyle v} — скорость выполнения одной операции одним процессором.

  • разбивание на множества. Множество всех возможных ключей — K{\displaystyle K} разбивается на непересекающиеся подмножества. Система с Q{\displaystyle Q} процессорами перебирает ключи так, что, например, i{\displaystyle i} -ая машина осуществляет перебор ключей из подмножества Ki,i=1…Q{\displaystyle K_{i},i=1…Q}. Система прекращает работу, если одна машина подобрала правильный ключ. Но если каждый процессор начнёт вычисление не с первого возможного ключа, время перебора может увеличиться, но алгоритм упростится. Среднее число подборов в этом случае составит |K|/Q{\displaystyle |K|/Q}, где K{\displaystyle K} — число элементов во множестве ключей, а Q{\displaystyle Q} — число процессоров.

Обратные атаки «грубой силой»[править | править код]

При обратной атаке с использованием метода грубой силы

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

Пример продолжительности подбора паролей[править | править код]

В таблице представлено оценочное время полного перебора паролей в зависимости от их длины. Предполагается, что в пароле могут использоваться 36 различных символов (латинские буквы одного регистра + цифры), а скорость перебора составляет 100 000 паролей в секунду (класс атаки B, типичный для восстановления пароля из кэша Windows (.PWL файлов) на Pentium 100)

[16].

Кол-во знаков Кол-во вариантов Стойкость Время перебора
1 36 5 бит менее секунды
2 1296 10 бит менее секунды
3 46 656 15 бит менее секунды
4 1 679 616 21 бит 17 секунд
5 60 466 176 26 бит 10 минут
6 2 176 782 336 31 бит 6 часов
7 78 364 164 096 36 бит 9 дней
8 2,821 109 9×1012 41 бит 11 месяцев
9 1,015 599 5×1014 46 бит 32 года
10 3,656 158 4×1015 52 бита 1 162 года
11 1,316 217 0x1017 58 бит 41 823 года
12 4,738 381 3×1018 62 бита 1 505 615 лет

Таким образом, пароли длиной до 8 символов включительно в общем случае не являются надежными. Для современных компьютеров этот показатель гораздо выше. Так, 64-битный ключ (пароль) перебирается на современном компьютере примерно за 2 года и перебор легко может быть распределен между множеством компьютеров.

Средства проведения атаки[править | править код]

Nvidia Tesla C2075 обладает 448 ядрами архитектуры CUDA, 6ГБ оперативной памяти типа GDDR5 и имеет пиковую производительность, равную 1030 Гфлопс при вычислениях с одинарной точностью.[17] Такие параметры делают эту систему подходящей для сложных вычислений, требуемых в «brute force»-атаке.

Современные персональные компьютеры позволяют взламывать пароли полным перебором вариантов с эффективностью, проиллюстрированной в таблице выше. Однако, при оптимизации brute force, основанной на параллельных вычислениях, эффективность атаки можно существенно повысить

[18]. При этом может потребоваться использование компьютера, адаптированного к многопоточным вычислениям. В последние годы широкое распространение получили вычислительные решения, использующие GPU, такие как Nvidia Tesla. С момента создания компанией Nvidia архитектуры CUDA в 2007 году, появилось множество решений (см., например, Cryptohaze Multiforcer, Pyrit), позволяющих проводить ускоренный подбор ключей благодаря использованию таких технологий, как CUDA, FireStream, OpenCL.

Устойчивость к атаке полного перебора[править | править код]

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

  1. повышение требований к ключам доступа от защищаемой информации;
  2. повышение надежности всех узлов системы безопасности.

Таким образом, невозможно достичь высокого уровня защиты, улучшая только один из этих параметров[19]. Существуют примеры того, как система аутентификации, основанная на оптимальной сложности паролей, оказывалась уязвимой для копирования базы данных на локальный компьютер злоумышленника, после чего подвергалась brute force атаке с применением локальных оптимизаций и вычислительных средств, недоступных при удаленном криптоанализе[20]. Такое положение дел привело к тому, что некоторые эксперты по компьютерной безопасности начали рекомендовать более критически относится к таким стандартным инструкциям, призванным обеспечить надежную защиту, как использование максимально длинных паролей[21]. Ниже приведен список некоторых применяемых на практике методов[22][23][24] повышения надежности криптосистемы по отношению к brute force атаке:

Методы оптимизации полного перебора[править | править код]

Метод ветвей и границ[править | править код]

Для ускорения перебора метод ветвей и границ использует отсев подмножеств допустимых решений, заведомо не содержащих оптимальных решений[25].

Распараллеливание вычислений[править | править код]

Одним из методов увеличения скорости подбора ключа является распараллеливание вычислений. Существует два подхода к распараллеливанию[26]:

  • Первый подход — построение конвейера[26]. Пусть алгоритм соотношения Ek (x)=y{\displaystyle E_{k}\ (x)=y} можно представить в виде цепочки простейших действий (операций): O1 ,O2,…,ON{\displaystyle {O_{1}\ ,O_{2},…,O_{N}}}. Возьмём N {\displaystyle N\ } процессоров A1 ,A2,…,AN{\displaystyle {A_{1}\ ,A_{2},…,A_{N}}}, зададим их порядок и положим, что

ru.wikipedia.org

Brute force: Подробный анализ | Безопасность

При освещении в СМИ вируса NotPetya не сообщалось, что он мог наделать еще больше зла. Например, брутфорс на парламент Великобритании. Это является еще одним напоминанием того, что brute force остается глобальной угрозой:


Это также наводит нас на важные вопросы — в первую очередь, как такое могло произойти:


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

На данный момент существуют два основных метода взлома в Сети: использование человеческих ошибок или догадки. Допущенные ошибки лежат в основе множества атак: фишинг (ошибка пользователя), использование недостатков конфигурации (ошибка администратора) или уязвимости нулевого дня (ошибка разработчика). Но на предположениях основан другой тип атак — brute force.

Чаще всего брутфорс атаки используются для подбора учетных данных. Хотя их можно применять для взлома URL-адреса.

Классическая brute force атака — это попытка «угадать» пароль в ПК, когда злоумышленник завладел зашифрованным его значением.

Оно позволяет хакеру использовать мощные компьютеры для тестирования большого количества паролей без риска быть обнаруженным. С другой стороны, такая brute force атака не может быть первым этапом. Для этого злоумышленник должен уже иметь копию зашифрованных паролей.

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

Одновременно подобрать имя пользователя и пароль непросто. Большинство систем при неудачном входе в систему не сообщают, что было введено неверно: имя пользователя или пароль. Первый шаг, который предпринимает злоумышленник — это попытка атаковать известных пользователей.

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

Тем не менее, этот тип классической brute force атаки онлайн является скорее гипотетической. Причина проста: у большинства современных систем и приложений есть встроенная блокировка. Если пользователю не удается войти в систему за несколько попыток, учетная запись блокируется и для ее разблокировки требуется вмешательство администратора.

Сегодня такая защита от брутфорса создает больше головной боли для IT-отделов, чем для злоумышленников. Обработка таких блокировок становится более насущным вопросом, чем обнаружение brute force.

Исключение составляют пользовательские приложения. Хотя традиционный вход в Windows не может быть использован для brute force, новое веб-приложение, разработанное специально для предстоящей маркетинговой кампании, вполне для этого подходит.

В то время как классические онлайн-атаки с использованием brute force, идут на убыль, credential stuffing только набирает обороты.

Credential stuffing — это атака, в которой злоумышленники используют пары имя пользователя / пароль, украденные с общедоступных сайтов, чтобы проникнуть в атакуемую систему.

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

Подбор пароля брутфорсом при Credential stuffing позволяет обойти блокировку, поскольку каждое имя пользователя вводится только один раз. Использование известной пары имя пользователя / пароль увеличивает вероятность успеха с меньшим количеством попыток.

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

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

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

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

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

Часто рекомендуемый метод обнаружения brute force атак связан с определением классических атак. Это обнаружение нескольких неудачных попыток входа в систему для одного пользователя за короткий промежуток времени.

Многие рекомендации для начинающих при создании правил корреляции SIEM (Security Information and Event Management) делают упор на обнаружение brute force атак именно по такому сценарию. Хотя это изящный и простой путь, но он предназначен для определения практически несуществующего вектора атак.

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

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

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

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

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

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

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

В качестве примера возьмем Windows, самый распространенный источник. Событие входа в систему Windows (идентификатор события 4624) и событие неудачного входа Windows (идентификатор события 4625) регистрируются локально на каждом компьютере. Это делает более сложным сбор информации. Это также означает, что злоумышленник, который владеет компьютером, может заблокировать ее получение. Контроллер домена регистрирует событие аутентификации, которое может использоваться как прокси для события входа в систему.

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

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

source="WinEventLog:security" (Logon_Type=2 OR Logon_Type=7 OR Logon_Type=10) (EventCode=528 OR EventCode=540 OR EventCode=4624 OR EventCode=4625 OR EventCode=529 OR EventCode=530 OR EventCode=531 OR EventCode=532 OR EventCode=533 OR EventCode=534 OR EventCode=535 OR EventCode=536 OR EventCode=537 OR EventCode=539) | eval status=case(EventCode=528, "Successful Logon", EventCode=540, "Successful Logon", EventCode=4624, "Successful Logon", EventCode=4625, "Failed Logon", EventCode=529, "Failed Logon", EventCode=530, "Failed Logon", EventCode=531, "Failed Logon", EventCode=532, "Failed Logon", EventCode=533, "Failed Logon", EventCode=534, "Failed Logon", EventCode=535, "Failed Logon", EventCode=536, "Failed Logon", EventCode=537, "Failed Logon", EventCode=539, "Failed Logon") | stats count by status | sort - count

Обнаружение brute force атак является непростой задачей при защите от брутфорса WordPress. Ни один из методов обнаружения, описанных выше, не дает 100-процентной гарантии результата, а злоумышленники в свою очередь постоянно совершенствуют методы противодействия их обнаружению.

Поэтому крайне важно, чтобы любая система, используемая для обнаружения brute force атак, включала в себя нестандартные алгоритмы и, чтобы эти алгоритмы обнаружения постоянно обновлялись.

Данная публикация представляет собой перевод статьи «Brute Force Anatomy of an Attack» , подготовленной дружной командой проекта Интернет-технологии.ру

www.internet-technologies.ru

Лучшие инструменты пен-тестера: брутфорс паролей — «Хакер»

Содержание статьи

У каждого из команды ][ свои предпочтения по части софта и утилит для
пен-теста. Посовещавшись, мы выяснили, что выбор так разнится, что можно
составить настоящий джентльменский набор из проверенных программ. На том и
решили. Чтобы не делать сборную солянку, весь список мы разбили на темы – и в
этот раз коснемся утилит для подбора пароля к различным сервисам.

 

Brutus AET2

Платформа: Windows

Последний релиз программы был в 2000 году. У тулзы давно нет официального
сайта. Но при этом Brutus AET2 по-прежнему является одним самых шустрых и
продвинутых брутфорсеров для основных Интернет-протоколов. Если нужно подобрать
пароль для HTTP (на тех страничках, где используется авторизация по
логину/паролю), произвольному веб-сервису с авторизацией через форму, почтовому
аккаунту, файловому или Telnet серверу, знай: Brutus – отличный вариант.

В общем случае для подбора пароля нужно указать хост и порт сервиса, выбрать
протокол, установить количество используемых потоков (максимум — 60), а также
таймаут. В целях анонимности можно подключить сокс или прокси. В зависимости от
протокола также указывается ряд дополнительных параметров. Например, для подбора
пароля на каком-то сайте (тип брутфорса — HTTP Form), необходимо указать метод
(POST или GET), обозначить параметры формы (в Brutus встроено простое средство
для их анализа), а в случае необходимости подделать cookie, включив
соответствующую опцию.

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

 

Универсальный брутфорсер для протоколов HTTP FORM, TELNET, POP3, FTP.

 

John the Ripper

Сайт:
www.openwall.com/john/
Платформа: Windows, Unix

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

Так что же нет способа отыскать локальный пароль в никсах или Windows? Есть,
если взять в помощники тулзу John The Ripper, которая как раз и занимается
восстановление паролей по их хешам. Основная задача тулзы — аудит слабых паролей
в UNIX системах, но также справляется и с NTLM хешами, которые используются для
хранения паролей под виндой, Kerberos, и некоторыми другими. Причем к программе
можно подключить модули, предоставляющие поддержку MD4 хешей, LDAP и MySQL
паролей.

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

Сама тулза работает через консоль, а настройки для брута передаются с помощью
целого ряда опций и параметров. Впрочем, если не жаждешь разбираться с
многочисленными ключами, то можно немного схалтурить, воспользовавшись
замечательным GUI-интерфейсом от стороннего разработчика. FSCrack v1.0.1
(www.foundstone.com/us/resources/proddesc/fscrack.htm) — классно реализованный
фронт-енд, в котором параметры для взлома задаются через удобное окошко, а он
уже сам составляет команду для запуска Джона и выдает результат работы.

 

Для локального взлома паролей для никсов и винды.

 

L0phtCrack

Сайт: www.l0phtcrack.com
Платформа: Windows

А это программа уже целенаправленно разработана для аудита паролей в Windows.
L0phtCrack восстанавливает пароли от Windows по их хешам, раздобытым с локальной
машины, сервера в сети, контроллера домена или Active Directory. В программе
есть встроенный снифер, который может перехватить зашифрованные хеши по локалке.
Впрочем, помимо виндовых хешей программа отлично управится и с юниксовым Shadow.

Для восстановления пароля используется различные атаки: по словарю, брутфорс,
гибридный способ. В последнем случае можно задать настройки для мутации пароля:
например, dana в Dana99. Разработчики не поленились упростить процедуру по
подбору пароля: теперь прямо на запуске программы появляется специальный мастер,
который последовательно выясняет, что именно ты хочешь сделать.

Интересный факт. После приобретения в 2006 компанией Symantec, поддержка и
развитие программы заглохло, однако, ребята-разработчики выкупили свою
разработку обратно в мае этого года выпустили на свет LC6. Последняя версия
отлично работает под 64-битными система, использует преимущество
многопроцессорный и многоядерных систем. К сожалению, за использование
L0phtCrack разработчики просят почти триста баксов, хотя и предоставляют
триальный срок без ограничений. Но у тулзы есть бесплатные аналоги, например,
консольная Pwdump (www.foofus.net/fizzgig/pwdump/),
а также ophcrack (ophcrack.sourceforge.net),
использующий для взлома Rainbow-таблицы.

 

Восстановление пароля Windows и Unix по его хешу.

 

Cain and Abel

Сайт:
www.oxid.it/cain.html
Платформа: Windows

Об этой утилите мы уже рассказывали, когда составляли нашу
подборку сниферов.
Но вместе с тем это еще и сногсшибательный инструмент для восстановления
паролей. Если не брать в расчет восстановление слабо защищенных паролей
(например, сохраненных в браузере) и просмотр пасса под звездочками, то основная
часть программы заключается во встроенной утилите для взлома 25 различных видов
хешей: начиная от пресловутого MD5 и заканчивая NTLMv2 для восстановления
паролей в винде. Для подбора применяется как атака по словарю, так и тупой
брутфорс.

Взлом 25 различных хешей (пароли Windows, MySQL, MSSQL, Oracle, SIP, VNC,
CISCO, ключи WPA-PSK и т.д.).

 

THC-Hydra

Сайт:
freeworld.thc.org/thc-hydra/
Платформа: Windows, Unix

Аббревиатура THC в названии программы — уже гарант качества. Но этот проект
THC-Hydra надолго войдет в истории хакерского движения, как один из лучших
универсальных брутфорсеров. В основе программы лежит модульная структура,
поэтому проект с самого начала быстро развивался: количество поддерживаемых
протоколов росло как на дрожжах. Сейчас с помощью гидры пароль можно подобрать к
более чем 30 протоколам, включая telnet, ftp, http, https, smb, несколькими
СУБД, и т.д. Кстати, THC-Hydra
брутит и SSH, но для этого требуется наличие библиотеки libssh.

Мощнейший брутер, однако, в виду огромного количества настроек и опций далеко
не всем покоряется с первого раза :). Если со стандартной установкой
«./configure&make&make install» справляют все, то совладать с многочисленными
ключами для запуска не так просто. В качестве примера приведу несколько основных
функций:

  • -R — восстановление сессии после сбоя;
  • -e ns — проверка наличия пустого пасса и пасса, равного логину;
  • -C FILE — брут из файла с записями вида логин:пароль;
  • -o FILE — вывод результатов работы в файл;
  • -f — завершение брута после первой найденной пары логин:пасс;
  • -t TASKS — количество потоков;
  • -w TIME — тайм-аут (30 секунд по дефолту).

Подробнее об использовании Hydra ты можешь прочитать в нашей старой статье
«Брутфорс по-нашему!» (73
номер ][). К счастью, сами разработчики позаботились о графической части
утилиты, но она запуститься только под никсами.

Многопоточный брутфорсер для следующих протоколов: Samba, FTP, POP3, IMAP,
Telnet, HTTP Auth, LDAP, NNTP, MySQL, VNC, ICQ, Socks5, PCNFS, Cisco, SSH, ICQ.

 

TSGrinder

Сайт:

http://www.darknet.org.uk/2008/07/tsgrinder-brute-force-terminal-services-server/
Платформа: Windows

Одна из немного утилит для подбора пароля для подключения к удаленному
рабочему столу винды по протоколу RPD. Задачу такого перебора сильно осложняет
шифрованное соединение и обмен ключами: сымитировать подобный криптообмен
данными достаточно трудно. Вторая загвоздка заключается в отсутствии к RPD
консольного режима. Но умельцы, однако, нашли способ обойти оба ограничения —
использовать стандартные средства для работы по RDP и эмулировать ввод
логина/пароля, как будто это делает сам пользователь.

За одно такое подключение тулза проверяет несколько паролей. TSGrinder может
проверить 5 паролей за одно подключение, переконнетиться и проверить пять
следующих. Одновременно с этим тулза поддерживает несколько потоков.

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

Для работы утилиты необходимо установить Microsoft Simulated Terminal Server
Client tool, которую также называют roboclient. Его можно закачать с сайта

ftp://ftp.microsoft.com/ResKit/win2000/roboclient.zip.

 

Для брутфорса RPD-акков.

 

RainbowCrack

Сайт:
project-rainbowcrack.com
Платформа: Unix, Windows

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

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

RainbowCrack позволяет использовать такой подход. Смысл заключается в том,
что много времени занимает составление таблиц, зато взлом пароле осуществляется
в сотни раз быстрее, чем брутфорс. RainbowCrack поможет как составить таблицы,
так и использовать их для взлома хеша. Кстати говоря, тратить уйму времени на
составления таблиц совсем необязательно — их можно купить и частично скачать из
торрентов.

Чрезвычайно быстрое восстановление пароля по хешу с использованием
Rainbow-таблиц.

 

Md5 Crack Monster v1.1

Сайт:
www.darkc0de.com/c0de/perl/mcm.txt
Платформа: Unix, Windows

Перед тем как лезть на рожон, запуская брутфорс хеша, не поленись пробить его
по онлайн базам. Например, в gdataonline.com содержится более миллиарда
уникальных записей, а это лишь один из многочисленных проектов (некоторые из них
смотри ниже). Чтобы упростить муторное занятие по проверке хеша на различных
сервисах рекомендую тебе классный скрипт Md5 Crack Monster, написанный на Perl.
Он прочекает хеш по солидному списку сервисов и выдаст результат.

 

Поиск значения хеша в онлайн базах.

 

THC PPTP bruter

Платформа: Unix

Кто сказал, что подобрать пароль к VPN-аккаунту невозможно из-за особенностей
авторизации? Чушь! Парни из всемирно-известной хакерской группы THC уже давно
доказали обратное, выпустив public-релиз тулзы THC-pptp-bruter. Данная прога
представляет собой узкоспециализированный брутфорсер для PPTP-протокола
(1723/TCP), который действительно работает! 🙂 Правда, только в том случае,
когда сервер используют авторизацию Microsoft Window Chap V2. Спешу обрадовать:
чаще всего используется именно она, причем как на Windows серверах, так и
серьезных CISCO-системах. Что касается старой Window Chap V1, то ее поддержку
тебе, вероятно, придется реализовать самостоятельно :))

Проблема реализации брутфорса заключается в том, что Microsoft намеренно
реализовала в PPTP-протоколе систему защиты против брутфорса. Если не вдаваться
в подробности, то ее смысл заключался в установке ограничения: «за одну секунду
можно ввести только один пароль». Естественно, что с такой скоростью перебора
хакер далеко не уедет и шансы подобрать пароль будут сведены к нулю. Однако в
реализации по традиции не обошлось без изъянов, которые были опубликованы на
багтраках, а группа THC успешно заюзала их в конкретной программе. С помощью
THC-pptp-bruter можно обойти ограничения, установленные Microsoft, и добиться
скорости более чем 300-400 паролей в секунду. Эта цифра, естественно, сильно
варьируется в зависимости от задержки в доставке пакетов до сервера, так что
наибольшей скорости можно добиться в локальной сети. Огорчает лишь то, что для
работы pptp-bruter необходима пара сторонних библиотек. Без них программа
попросту не скомпилируется.

 

Для брута VPN-соединения.

 

CIFSPwScanner

Сайт:
www.cqure.net/tools/
Платформа: Windows, Unix

Сканнер для аудита стойкости паролей у CIFS/SMB-ресурсов. С его помощью ты
ловко сможешь подобрать необходимые данные для подключения к вражеской шаре в
локалке. Главное — правильно вбить необходимую команду и подготовить словарик
для брута, наполненный самыми разными человеческими мыслями и любовью. Для
CIFSPwS она выглядит так: CifsPwScanner -t server -u users [options]. Остальные
опции ты можешь посмотреть в мане к программе или в интерактивном хелпе.
CIFSPwScanner написан на Java, а поэтому может быть запущен под любой
платформой.

 

Подбор пароля к шарам.

 

piggy 1.0.1

Сайт:
www.cqure.net/tools/
Платформа: Windows

Многопоточный брутфорс Microsoft SQL серверов, реализованный в виде
консольного приложения. Поддерживает диапазонный режим сканирования, когда на
заданный пароль проверяются сразу несколько серверов, хранящих базы. Это
особенно актуально, когда ты произвёл сервисный скан подсети NMAP на порт 1433
(TCP), традиционный для этого сервиса, получил необходимый баннер базы, после
чего скормил полученные адреса piggy. Поскольку халатность администраторов
зачастую поистине безмерна, вероятность улова весьма и весьма велика. Кроме
этого piggy работает с составленными тобой файлами, для проведения атаки по
словарю.

 

Аудит паролей MSSQL-сервера.

 

Хинты по работе со словарями

Отбросить повторяющиеся пароли в файле-словаре можно с помощью стандартных
средство никсов. Для этого понадобится одна единственная команда:

cat words.txt | sort | uniq > dictionary.txt

Если ты знаешь, что политика по установке паролей не позволяет пользователям
выбирать пасс, менее чем в 6 символов длиной и содержащий как минимум одну букву
и цифру, то можно сэкономить немало времени на переборе, если предварительно
отбросить все невозможные варианты. Вместе с THC Hydra идет замечательная
утилита pw-inspector, с помощью которой из существующего словаря легко составить
новый словарик, включающий в себя только «правильные» пароли. В нашем случае это
делается так:

cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt

 

WARNING

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

 

WWW

 

Узкоспециализированные брутфорсеры на Python и Perl:


www.darkc0de.com/bruteforce/

 

Словари для перебора:


www.passwords.ru/dic.htm

 

Онлайн сервисы для взлома хешей:

passcracking.ru

www.hashchecker.com
www.milw0rm.com
www.gdataonline.com
www.md5hood.com



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

xakep.ru

Брутфорс паролей инженерного меню радиостанции / Habr

Что такое инженерное меню и зачем оно нужно? Позволю себе процитировать из wiki:

Недокументи́рованные возмо́жности (англ. undocumented features), НДВ — возможности технических устройств и/или программного обеспечения, не отраженные в документации. Чаще всего недокументированные возможности сознательно закладываются разработчиками в целях тестирования, дальнейшего расширения функциональности. Недокументированные возможности обнаруживаются, обычно, в процессе обратной разработки, но могут быть обнаружены и случайно.
Далее в статье, описание моей попытки подобрать коды к инженерному меню радиостанции.

Введение

Приобрел я однажды радиостанцию KYD-IP620 китайского производства, но под отечественным «брендом». Рекламировать бренд не буду, гугл подскажет. Покрутил в руках, поиграл и забросил. Но недавно наткнулся на нее снова и решил уделить побольше внимания этому чуду техники. Скупое меню на настройки, вынудило меня поискать ПО для работы с этой станцией. Мне казалось, что софт даст больше настроек, чем доступно через меню.

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

Официальный софт перед записью проверял введенную частоту на попадание в выбранный диапазон и запрещал запись вне диапазона. Ладно, запустил сниффер, разобрался с протоколом записи-чтения, набросал на коленке Delphi свою утилиту. Но тут появилась другая бяка. Записать частоту, которую хотел, у меня получилось, но радиостанция на ней тупо молчала. Прием или передача-тишина. Видимо, проверка имеется еще и в МК станции.

Разобрал станцию. На плате нашлась кроме всего прочего 24C64. Это микросхема i2c EEPROM. Ее выпаял, снял дамп, запаял обратно. В дампе не нашлось ничего кроме моих настроек и мною записанных частот. Прицепил сниффер i2c к памяти, гонял запись/чтение официальным софтом, своей утилитой, ничего. Все, что бегало по i2c шине, было в EEPROM, ничего лишнего не читалось и не писалось. Все данные в EEPROM только те, что я записал. Позже уже я доработал протокол записи/чтения и смог читать/писать по всем адресам памяти.

О чем это все?

Предвидя вопрос «зачем мне все это нужно, про что я тут пишу?» попробую описать свою мысль. Гугл дал несколько схем предыдущих и следующих моделей радиостанции. Принципиальную схему своей подопытной, которую описываю в статье, я не нашел, но она на 70% совпадает с ними (выяснил, пока вызванивал нужные ноги). По схеме различия не существенны. Отсюда напрашивается вывод, что для удешевления продукции заказчику, производитель, особенно Китай (с его массовым производством) не будет снова проектировать глобально схемы, писать софт под МК радиостанции и т.д. Зачем когда уже есть готовое, которое нужно немного скорректировать — и отдать. ИМХО легче всего скорректировать программно, причем без применения программатора. Это позволит сделать большую кучу заготовок, которые потом доведут под требования заказчика наименьшими усилиями. После этой мысли я начал искать вход в инженерное меню, и нашел. Сложного ничего не было: требовалось зажать 2-е кнопки и включить радиостанцию.
Вот оно!

Перед входом в меню пишется надпись «SET».

Для дальнейшего доступа к функциям требуется пароль из 6-ти цифр. Перебор вручную утомителен и отпадает. В случае неверного пароля выводится опять надпись «SET». Гугл дал один пароль, который ведет к сбросу на заводские настройки. При его вводе надпись меняется на «ERASE». Вот он-то мне потом при отладке и пригодился. Появилась мысль организовать перебор на МК. Пусть потихоньку крутит себе пароли, а я буду своими делами заниматься.

Приступим

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

Отображение введенных данных: LCD экран. Прикручивать камеру ко всему этому делу и анализировать снимки или видео с нее, мне не хотелось. У нас есть экран, будем использовать его. Изучив чуть подробней внутренности станции, обнаружил, что за LCD дисплей отвечает драйвер HT1621B. Погуглив даташит на драйвер и его распиновку, выяснил необходимые мне пины. Это CS, WR и DATA. Кратко CS – начало передачи, WR-«синхронизация», DATA- данные.Пробуем с этим взлететь. Вызваниваем и подпаиваемся на выводы МК станции, ведущие к ножкам драйвера LCD экрана.

Подключаем логический анализатор и смотрим передаваемые данные на драйвер для надписи «SET» и для надписи «ERASE». Понятно, что данные разные, они нам и понадобятся. Далее подпаиваемся к «органам» ввода. Нам нужно 2-е кнопки с клавиатуры (MENU и F), и энкодер. Ардуины у меня нет, буду делать на том что под рукой. Под рукой оказалась Pinboard с AtMega16, от камрада DiHalt.

Техническое задание

Пишем эмулятор энкодера и эмулятор нажатия кнопок «MENU» и «F» (они нужны для ввода и подтверждения пароля). Анализируем данные, которые отобразились на LCD экране. Считывать данные драйвера LCD будем через прерывания AtMega16. При различных данных драйвера от «эталона» («SET») будем выводить по UART на текущий пароль.В формат данных для драйвера можно не углубляться. Нам нужно отличить, когда не высветилась надпись «SET» после нажатия кнопки «MENU» и когда она светится. Логично, что данные будут разные. Поэтому я буду сравнивать строку полученных байт после последней введенной цифры пароля и нажатия кнопки «MENU». Отловив несколько посылок драйвера LCD для надписи «SET», убедился что они одинаковы, взял эту посылку за эталон. Сравнивая с ней, я откидываю те, которые совпадают, другие передаю в UART, для дальнейшего анализа. Данный алгоритм я проверил с паролем, который ведет к сбросу на заводские настройки, он оправдал мои надежды. Вообще алгоритм ввода пароля выглядит так: горит надпись «SET», приглашение в инженерное меню. Нажимаем кнопку «MENU» и вводим 1-й символ пароля. Далее опять нажимаем кнопку «MENU» для ввода следующего символа. Так повторяем до последнего символа. Когда введен последний символ, нажимаем опять кнопку «MENU». И вот тут или загорится надпись «SET» или что-то другое. Если светится «SET» топаем в начало проведя итерацию пароля, если другое, передаем пароль по UART для анализа. Скрин программы для управления перебором.

Реальность

Реальность такова, что я рассчитывал на большую скорость перебора, но жизнь внесла коррективы. В радиостанции МК обрабатывает энкодер и нажатия клавиш так, как и полагается, с «анти-дребезгом» контактов, с задержками реакции пользователя. Потому в код брутфорса внесены задержки. Да он весь построен на задержках. Набросал утилиту для управления перебором. В случае считывания данных драйвера, отличных от «эталона», в утилиту на компьютер по UART передается пароль при котором это возникло.
Итог

Перебор запустил, и тикает. На данный момент ничего еще не сбрутил. Но я не сдаюсь. Буду терпеливо ждать окончания. Понятно, что с таким подходом могут быть «ложные» срабатывания. Но на общем фоне будущего количества перебранных паролей — это капля в море. Эти «ложные» пароли в дальнейшем можно быстро перепроверить через утилиту. По окончанию перебора обязательно сообщу, чем весь этот брутфорс закончился и что в итоге получилось.

Исходники утилиты, прошивка AtMega16 доступны на гитхабе.

habr.com

это… Описание программы, порядок установки, защита

В мире киберпреступлений ​​брутфорс — это деятельность, которая включает в себя повторяющиеся последовательные попытки попробовать различные комбинации паролей, чтобы проникнуть на любой сайт или разблокировать устройство. Эта попытка осуществляется хакерами, использующими ботов, которых они злонамеренно устанавливают на других компьютерах, чтобы повысить вычислительную мощность, необходимую для запуска таких типов атак.

Итак, что же такое брут-атака?

Брутфорс — это самый простой способ получить доступ к сайту, устройству или серверу (или всему другому, что защищено паролем). Он пробует различные комбинации имен пользователей и паролей снова и снова, пока не случится вход. Это повторяющееся действие подобно армии, атакующей форт.

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

Обычно каждый общий идентификатор (например, admin) имеет пароль. Все, что нужно сделать — это попытаться угадать его. Например, если это двузначная комбинация, у вас есть 10 цифр от 0 до 9. Это означает, что существует 100 возможностей. Можно подобрать их вручную и вводить один за другим.

Но правда в том, что ни один пароль в мире не состоит из двух символов. Даже номера контактов, используемые на мобильных телефонах или в банке, состоят минимум из 4-х символов.

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

Итак, если есть буквенно-цифровой 8-символьный пароль, сколько возможных комбинаций придется подбирать? В английском языке имеется 26 алфавитных букв. Если посчитать их как в верхнем, так и в нижнем регистре, получится 26 + 26 = 52. Затем нужно добавить цифры: 52 + 10 = 62.

Итак, всего имеется 62 символа. Для 8-символьного пароля это будет 628, что сделает 2.1834011 × 1014 возможных комбинаций.

Если вы попытаетесь использовать 218 триллионов комбинаций за одну попытку в секунду, это займет 218 триллионов секунд, или 3,6 триллиона минут. Проще говоря, потребуется около 7 миллионов лет, чтобы взломать пароль с окончательной комбинацией. Конечно, процесс может занять меньше, но это максимальный срок для подбора такого значения. Понятно, что ручной брутфорс – это невозможно.

Тогда как это может произойти?

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

Теперь предположим, что вы разработали программу для разблокировки пароля, которая пробует 1000 комбинаций в секунду. Время сокращается до 7 тысяч лет. Это сделать все равно невозможно, поэтому нужен суперкомпьютер.

Если машина сможет попробовать 1 × 109 попыток в секунду, то всего за 22 секунды все 218 триллионов попыток будут протестированы. Вычислительные ресурсы такого рода недоступны для простых людей. Однако хакеры не являются обычными пользователями. Они могут собирать вычислительные ресурсы различными способами, например путем разработки мощного вычислительного механизма с помощью программного обеспечения и тому подобное.

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

Зачем они это делают?

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

Что же делать?

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

Например, для SSH можно использовать хосты Fail2ban или Deny. Эти программы будут отклонять IP-адрес после нескольких неправильных попыток. Эти инструменты делают хорошую работу. Тем не менее они не всегда могут защитить.

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

Длина пароля

Первым шагом к предотвращению атаки должна быть большая длина пароля. В настоящее время многие веб-сайты и платформы заставляют своих пользователей создавать код доступа определенной длины (8-16 символов).

Сложность паролей

Еще одна важная вещь — создать сложный пароль. Не рекомендуется придумывать их типа iloveyou или password123456. Пароль должен состоять из больших и строчных букв, а также иметь цифры и специальные символы. Сложность задерживает процесс взлома.

Предельные попытки входа в систему

Простое, но очень мощное действие — ограничить попытки входа в аккаунт, если речь идет о сайте или сервере. Например, если сайт получает пять неудачных попыток входа в систему, он должен блокировать этот IP в течение определенного периода времени, чтобы остановить дальнейшие попытки.

Изменение файла .htaccess

Добавление нескольких правил в файл .htaccess может еще более усилить безопасность вашего сайта. Цель состоит в том, чтобы разрешить доступ к wp-admin только определенным IP-адресам, перечисленным в нем.

Использование капчи

Captcha теперь широко используется на многих сайтах. Она не позволяет ботам выполнять автоматизированные скрипты, используемые главным образом в атаке Brute Force. Установка капчи на сайте или блоге довольно проста.

Установите плагин Google invisible reCaptcha и перейдите в свою учетную запись Google. Теперь вернитесь к странице настроек плагина и определите места, где вы хотели бы, чтобы пользователь сначала вводил капчу, прежде чем выполнять фактическую задачу.

Двухфакторная аутентификация

Two Factor Authentication — это дополнительная линия защиты, которая может защитить учетную запись от брутфорса. Шансы на успешное выполнение атаки на охраняемых сайтах 2FA очень малы. Существуют различные способы ее реализации на сайте. Самый простой — использовать любой из плагинов для двухфакторной аутентификации.

Если говорить не о собственном сайте, а о других ресурсах (например, чтобы предотвратить брутфорс роутера), методы могут быть следующими:

  1. Создать уникальный пароль для каждой учетной записи.
  2. Производить частые смены пароля.
  3. Избегать совместного использования учетных данных через небезопасные каналы.

Обратная переадресация

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

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

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

Aircrack-нг

Это популярный беспроводной инструмент для взлома паролей, доступный бесплатно. Он поставляется с WEP/WPA/WPA2-PSK взломщиком и инструментами анализа для выполнения атаки на WI-Fi 802.11. Aircrack NG может использоваться для любого сетевого адаптера, который поддерживает режим необработанного мониторинга.

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

Приложение доступно для брутфорса Windows и Linux. Кроме того, оно перенесено на платформы iOS и Android.

John the Ripper

Это еще один потрясающий инструмент, который не нуждается в какой-либо инструкции. Он часто применяется для долгого брутфорса паролей. Это бесплатное программное обеспечение было первоначально разработано для систем Unix. Позже авторы выпустили его для других платформ. Теперь программа поддерживает 15 различных систем, включая Unix, Windows, DOS, BeOS и OpenVMS. Ее можно использовать либо для определения уязвимости, либо для взлома паролей и нарушения аутентификации.

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

В принципе, программа для брутфорса может выполнять грубую атаку со всеми возможными паролями, комбинируя текст и цифры. Тем не менее ее также можно использовать со словарем.

Rainbow Crack

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

Хорошо, что существуют различные организации, которые уже опубликовали прекомпьютерные таблицы этого ПО для всех пользователей Интернета. Этот инструмент все еще находится в активной разработке. Он доступен как для Windows, так и для Linux и поддерживает все последние версии этих платформ.

L0phtCrack

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

Ophcrack

Еще один инструмент для формования грубой силы, который используется для взлома паролей Windows. Он разбивает пароль, используя хэши LM через таблицы. Это бесплатная программа с открытым исходным кодом. В большинстве случаев он может взломать пароль Windows за несколько минут.

Crack

Это один из старейших инструментов для взлома паролей. Он может использоваться для UNIX-систем, в том числе брутфорса на «Андроиде». Используется для проверки слабых паролей путем выполнения атаки посредством словарей.

Hashcat

Некоторые утверждают, что это самый быстрый инструмент для взлома паролей на основе процессора. Он бесплатный и поставляется на платформах Linux, Windows и Mac OS. Hashcat поддерживает различные алгоритмы хеширования, включая LM-хэши, MD4, MD5, SHA-семейства, Unix-склеп-форматы, MySQL, Cisco PIX. Программа поддерживает различные атаки, включая Brute-Force, Combinator, словари, атаку отпечатка пальца, а также многое другое.

fb.ru

Взлом пароля методом грубой силы. Изучаем bruteforce атаку.

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

Что такое хешкрекинг?

Восстановление паролей к хешам, или хешкрекинг (от англ. hash cracking), — весьма увлекательный процесс, для которого требуются хорошие знания в различных областях — криптографии, комбинаторике, программировании и многом другом. Нужно также отлично разбираться в железе, чтобы обеспечить бесперебойную работу своей фермы в течение многих недель и месяцев при максимaльной загрузке.

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

Большинство хешкрекеров на форумах — этакие робин гуды. Они тратят свое время и ресурсы на то, чтобы помочь сломать хеши другим пользователям, и при этом непрерывно накапливают себе новые пароли и правила их формирования. Для них любые хеши — этo вызов их интеллекту, их опыту, их мастерству. И эти парни находят сложнейшие пароли, которые никто другой восстановить не может. Как у них это получается? Каким софтом и железом они пользуются? Что еще нужно знать, чтобы ломать хеши так же эффективно, как они? Об этом мы и расскажем в нашей статье.

Хеши и пароли пользователей

Софт

Сейчас хешкрекинг в основном производится на видеопроцессорах (GPU). На обычных процессорах (CPU) брутятся только те алгоритмы, которые не реализованы под GPU. Для брута на GPU фактичeски уже стандартом стало использование программы oclHashcat, имеющей сборки как для Windows, так и для Linux, а также поддерживающей все современные видеопроцессоры — и NVIDIA, и AMD. Совсем недавно ее автор перевел программу в разряд Open Source, и теперь она доступна на GitHub, так что каждый желающий может присоединиться к работе над ее новыми версиями.

Для распределения работы этой программы между несколькими компьютерами используется оболочка hashtopus. Другим популярным GPU-брутфорсером остается нестареющий John the Ripper (JtR) в сборке Jumbo, который также имеет множество алгоритмов под все видеокарты, но для получения максимальной эффективности его желательно все-таки пересобирать под каждую конкретную конфигурацию железа.

Для работы на CPU программ гораздо больше, но самыми функциональными остаются все те же hashcat и JtR. Еще можно к ним добавить программу Hash Manager, которая больше заточена под обработку хешей в «промышленных масштабах», то есть очень крупных списков, которые не удается загрузить в другие программы. Все эти программы бесплатные, и каждый решает сам, что выбрать себе для ежедневной работы, только практика показывает, что желательно уметь владеть всем этим софтом — как правило, профессиональные хешкрекеры используют ту или иную программу в зависимости от конкретной ситуации.

Еще нужно учесть, что все эти программы консольные, не имеют встроенного GUI и, чтобы использовать их максимально эффективно, нужно уметь работать в консоли (см. врезку). А в идеале еще нужно уметь программировать командные файлы (BAT или CMD), чтобы максимально гибко настраивать работу программ. Тогда можно однократно составить для себя комплект командных файлов для разных атак, а потом, когда все настроено, весь хешкрекинг сведется к заполнению файла нужными хешами и запуску того или иного командного файла c определенными параметрами.

Консоль — райский дом хешкрекера

Самый продвинутый хешкрекерский софт — консольный и управляется либо через параметры командной строки, либо через редактирование файлов конфигурации. Но тенденция такова, что пользователи все дальше и дальше уходят от консоли, требуют графического интерфейса и наиболее популярный вопрос с форумов по работе с такими программами звучит так: «Я запустил программу, выскочило черное окно и закрылось. Что делать?» Ответ очевиден — изучать консоль.

Скорее всего, линуксоиды и так владеют навыками работы в консоли, а вот для пользователей Windows лучшим выбором будет программа FAR Manager. С ее помощью очень удобно работать со списками хешей и другими файлами. А если ее объединить с дополнительными инструментами (например, из состава программы Hash Manager), то получится просто убойный комплект, позволяющий обрабатывать любые файлы буквально за секунды.

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

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

Железо

Хешкрекеры в плане железа почти ничем не отличаются от майнеров криптовалют и собирают себе такие же фермы на видеокартах. Правда, в них не десятки видеокарт, но наличие нескольких мощных видеокарт — это уже почти норма для брута хешей.

Хорошая настольная ферма для брута хешей на пяти видеокартах

Требования к ферме такие же, как и при майнинге криптовалют, то есть нужно хорошее охлаждение, стабильное электропитание и грамотное размещение видеокарт, чтобы они не нагревали друг друга. До недавнего времени основными видеокартами для брута служили (как и в майнинге) видеокарты на процессорах AMD, так как они были более эффективны по соотношению цена/скорость. Однако после релиза архитектуры sm_50 (Maxwell) от NVIDIA выяснилось, что она лучше для брута, при этом видеокарты с такой архитектурой потребляют гораздо меньше электроэнергии, а также более тихие и холодные. И сейчас эффективнее всего для брута хешей карты NVIDIA GTX 980Ti.

GTX 980Ti — отличный выбор для хешкрекинга

И недаром же на форуме InsidePro все больше и больше хешкрекеров переходят на эти видеокарты (судя по подписям в их сообщениях) — при пиковом потреблении всего 165 Вт на алгоритме MD5 они выдают скорость порядка 15 миллиардов паролей в секунду. Но у них один недостаток — высокая цена, которая практически не снижается, а в связи со скачком курса доллара она поднялась еще больше. Если же основной критерий — цена, а все остальные параметры не важны, то можно взять видеокарты на процессорах AMD и упаковать ими свою ферму. К примеру, обычная цена системы c двумя средними видеокартами составляет около 1200–1300 долларов.

Что касается CPU, то тут все просто — чем больше ядер, выше частота и больше объем кеша, тем быстрее будет идти перебор. Мощный процессор позволит как использовать ферму для перебора паролей на GPU, так и параллельно с ними нагружать CPU второстепенной работой — например, проверкой других хешей по словарям, пока все GPU заняты гибридной или комбинированной атакой. Поддержка новейших наборов команд (SSE и AVX последних версий) также необходима, так как почти все вышеперечисленные программы имеют код, заточенный под эти наборы команд, что существенно увеличивает скорость перебора.

А есть хоть что-то, в чем CPU еще может конкурировать с GPU по скорости брута? При небольших объемах — нет, конечно. Но вот на больших списках хешей в десятки миллионов хешей (особенно соленых) очень часто обработка списка на CPU дает такую же скорость или даже большую, чем на видеокарте. А уж сотни миллионов хешей в GPU часто просто не загрузить физически — остается только разбивать список на более мелкие фрагменты и брутить их по очереди, но это пропорционально увеличивает время атаки, в то время как на CPU можно загрузить и обработать весь список за один заход, если позволяет объем RAM.

И есть еще одна тема, где со временем CPU может обогнать GPU, — это сопроцессор Intel Xeon Phi. Да, его цена пока очень высока, но, возможно, со временем она станет приемлемой, и его можно будет прикупить и задействовать для брута хешей на домашнем компьютере. Вот тогда может получиться очень мощная система, так как в нем присутствует около 60 четырехъядерных процессоров (в зависимости от модели), а это даст нам до 240 потоков для перебора. На тяжелых алгоритмах типа bcrypt (которые очень медленны даже на видеокартах) этот сопроцессор может быть в разы быстрее даже самых топовых видеокарт, так что не зря ребята из команды john-users прозвали его «убийцей bcrypt». Правда, хешкрекерского софта под него в паблике пока нет, но со временем он обязательно появится.

Вычислительные сопроцессоры Intel Xeon Phi, базирующийся на архитектуре Many Integrated Core

Конечно, читатель может возразить — а как же микросхемы FPGA (ПЛИС), выдающие при майнинге того же биткойна огромные скорости? Да, они выдают даже терахеши в секунду, только они запрограммированы под единственный алгоритм SHA-256, который при хешировании обычных паролей пользователей применяется весьма редко (а другой популярный алгоритм майнера — SCRYPT — применяется еще реже). Плюс сама по себе микросхема ПЛИС выдает невысокую скорость, а терахеши получаются путем объединения десятков (а то и сотен микросхем) в матрицы, а это уже недешевое решение. Но главный недостаток всех ПЛИС — они программируются только на брут одиночного хеша. Конечно, на эти микросхемы уже портировано множество алгоритмов, включая MD5, но практической пользы от этого мало — выгодней купить видеокарту. Хотя и Altera, и Xilinx развивают свои линейки ПЛИС весьма активно, и со временем эта тема тоже может стать очень интересной для хешкрекера.

Можно ли заработать на хешкрекинге?

Да, конечно. Как правило, заработать можно в любом деле, главное — быть в этом деле профессионалом. И хешкрекинг — не исключение. На всех хешкрекерских форумах есть платные разделы, где размещаются заказы на взлом хешей. Имея хорошие словари, можно попробовать свои силы во взломе таких хешей. Только надо учитывать, что основное правило на таких форумах — кто первый сломал хеш, тот и получает плату за него. Поэтому мощное железо просто необходимо, чтобы успеть сломать хеш быстрее других хешкрекеров. Как правило, взлом таких хешей и составляет основной доход хешкрекера.

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

 

 

Словари

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

  1. Скачать из интернета готовые словари (погуглив слово wordlist). Это самый простой способ, но и словари эти весьма низкого качества — в них много мусора и искусственно нагенерированных слов, а мало реальных паролей. Так что этот вариант — если только на первое время.
  2. Скачать вложения (аттачменты) к сообщениям о сломанных хешах на форумах InsidePro и HashKiller — там часто размещаются просьбы о помощи при бруте крупных списков, и другие форумчане помогают, выкладывая свои результаты в формате хеш:пароль. А значит, можно накачать себе таких файлов и извлечь оттуда все пароли. Это уже будут очень хорошие словари, но у них будет один недостаток — все пароли из таких словарей лежат в паблике и доступны также и всем остальным хешкрекерам.
  3. Нарабатывать словари самому, постоянно обрабатывая списки невзломанных хешей, которые можно накачать с тех же форумов. Это самый действенный метод, хотя и самый долгий. Однако такие словари — наиболее ценные, так как содержат только реальные, уникальные и часто приватные пароли. У профессиональных хешкрекеров есть даже такой термин, как «майнинг реалпассов», то есть если есть платные хеши — ферма брутит их, если их нет — ферма не простаивает, а сутками брутит списки несломанных хешей с форумов, непрерывно нарабатывая все новые и новые уникальные пароли в копилку хешкрекера.

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

Частотные словари

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

Что это такое? Это обычные словари, но в них пароли отсортированы в порядке убывания частоты их употребления. В таких словарях первыми идут наиболее популярные пароли — см. примеры таких словарей в дистрибутиве программы Hash Manager, файлы Top100xx.dic. Очевидно, что эффективней проверить хеши сначала на самые часто употребляемые пароли, затем — на более редкие и так далее. Это позволит быстро сломать все популярные пароли и существенно облегчить список хешей для последующей работы.

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

Дополнительные инструменты

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

Обычно через хешкрекера проходит множество всевозможных текстовых файлов:

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

В общем, сотни и тысячи подобных разнородных файлов — это еще та головная боль. И все выкручиваются по-разному — кто-то в том же линуксе делает часть работы командами самой ОС (например, grep), кто-то пишет себе скрипты на Perl, кто-то использует различные программы. Но факт очевиден — помимо брутфорсеров, нужны еще инструменты, которые должны работать с текстовыми файлами: сортировать, чистить, конвертировать из одного формата в другой, извлекать или переставлять данные, проверять формат и так далее.

Без этих инструментов работать крайне сложно, и поэтому с каждым брутфорсером обычно поставляется свой комплект различных утилит. И hashcat имеет такой комплект, и JtR тоже, но самый крупный комплект утилит под Windows имеет программа Hash Manager. В ней более 70 инструментов, построенных по принципу одна функция = один файл. Таким образом, из них, как из кирпичиков, можно собрать BAT-файл, выполняющий обработку файлов любой сложности. А 64-битные версии инструментов позволяют обрабатывать файлы неограниченного размера.

Вот пример BAT-файла, демонстрирующий, как из списка, в котором перемешаны хеши разных типов, вытащить только хеши от Magento с двухсимвольной солью:

REM Извлекаем только строки длиной 35 символов ExtractLinesByLen.exe %1 35 35
REM Переименовываем файл с извлеченными строками в файл 2.txt
MOVE /Y %1.Lines 2.txt
REM Проверяем формат хешей IsCharset.exe 2.txt ?h 1
REM Проверяем формат соли IsCharsetInPos.exe 2.txt 33 ':' IsCharsetInPos.exe 2.txt 34 ?l?u?d
IsCharsetInPos.exe 2.txt 35 ?l?u?d
REM Готово! В файле 2.txt остались только хеши от Magento

Алгоритмы хеширования

С одной стороны, набор актуальных алгоритмов хеширования почти не меняется со временем. Причины просты — алгоритмы хеширования паролей пользователей ОС не меняются годами, да и в интернете сотни тысяч ресурсов все еще базируются на устаревших движках, и обновление версий не происходит, несмотря на то что все новые версии форумов и CMS уже поддерживают более надежное хеширование — например, в IPB версии 4 уже сразу стоит алгоритм bcrypt. С другой стороны, небольшие изменения все-таки происходят — все больше начинает попадаться очень тяжелых алгоритмов — различные варианты PBKDF2 и тот же bcrypt, которые брутятся с мизерной скоростью даже на фермах.

Всего же известны уже сотни алгоритмов, примеры их хешей можно посмотреть здесь. Подавляющее большинство алгоритмов хеширования базируется на каком-либо из стандартных алгоритмов — MD5, SHA-1, SHA-256 и SHA-512 или на их комбинациях. Брутфорсеры давно уже поддерживают десятки таких алгоритмов в GPU-версиях и сотни алгоритмов в CPU-версиях.

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

Если же исходников движка нет, тогда нужно заполучить хеш от какого-то заранее известного пароля — например, зарегистрировать пару новых пользователей на форуме, желательно с одинаковым простым паролем вида 123456. Если их хеши будут одинаковы (считаем, что доступ к хешам у хакера есть), значит, при хешировании используется только пароль. Если разные, то к паролю подмешивается еще что-то, уникальное для каждого пользователя, — соль, логин, email. А дальше можно попробовать подобрать алгоритм по имеющемуся паролю и хешу. Например, в программе Hash Manager, в папке Bonus\SearchAlgorithm есть BAT-файл для автоматического поиска алгоритма по всем доступным в программе алгоритмам (около 400), включая проверку паролей в кодировке Unicode, а также соли (или имени пользователя) в шестнадцатеричном виде.

Ну а если так и не удается определить алгоритм, то можно спросить на форуме — например, здесь. Вдруг кто-то уже сталкивался с такими хешами?

По другую сторону баррикады

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

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

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

Например, можно подмешивать к паролю статическую соль (пусть даже одинаковую для всех, но очень длинную — 200–500 символов) и хешировать обычной PHP-функцией md5. Этой соли в БД форума нет (как, например, в движках vBulletin или osCommerce), она прошита только в PHP-коде, доступ к которому получить гораздо сложнее, чем к хешам. Но даже если заполучить эту соль, то почти нет брутфорсеров, поддерживающих работу с такой длинной солью (во всяком случае, на GPU — точно нет).

Другой вариант — циклически хешировать обычный MD5 от пароля этак 50–100 тысяч раз. На скорости авторизации пользователей это почти не скажется, но скорость брута таких хешей будет мизерной (при условии, что еще удастся выяснить количество итераций — опять же, только из PHP-кода). А если не удастся — то их вообще не сбрутить.

Еще можно взять более длинный хеш от другого алгоритма (например, SHA-256 или SHA-512) и вместо цельного хеша хранить в БД его фрагмент размером 32 символа из середины хеша (да еще и байты можно переставить). Хешкрекер, увидев такой хеш, будет уверен, что это MD5 (или его модификация), и будет пытаться сбрутить его, но бесполезно.

В общем, тут фантазия безгранична — автор за годы работы с хешами сталкивался с массой различных хитроумных видов хеширования, но факт налицо — очень много дампов от самописных CMS, или от коммерческих CMS без доступных исходников, или от пропатченных (по-видимому) форумов, и CMS остаются до сих пор несломанными. Что там внутри намешано при хешировании — неизвестно.

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

Конкурсы по хешкрекингу

А где хешкрекер может посоревноваться с другими хешкрекерами в своем умении ломать хеши? Конечно же, на конкурсах! Основные — конкурс Crack Me If You Can, проводимый фирмой KoreLogic в рамках ежегодной конференции DEF CON, и конкурс Hash Runner на ежегодной конференции Positive Hack Days.

Правила этих конкурсов весьма просты — нужно за ограниченное время (как правило, за 48 часов) сломать как можно больше конкурсных хешей и выполнить дополнительных заданий, также связанных с хешами. И так как время сильно ограничено, то на время таких конкурсов хешкрекеры всегда объединяются в команды.

Исторически сложилось так, что с самых первых конкурсов сформировались три основные команды — InsidePro, hashcat и john-users, которые все эти годы стабильно делили меж собой три призовых места в различных комбинациях. Даже по названиям команд уже очевидно, вокруг какого софта или сайта они объединились. В составе каждой из команд есть автор этого софта, и причина этого тоже понятна — на конкурсах всегда встречаются новые или видоизмененные алгоритмы хеширования, и нужно очень быстро модифицировать программу-брутфорсер или добавить в нее новый алгоритм. Тому, кто не имеет возможности быстро (часто за несколько часов или даже минут) перекроить софт под нужные фишки, очень сложно претендовать на приз.

Все отчеты о конкурсах доступны на сайтах команд, а также на сайтах организаторов — например, тут.

Архивное фото — организаторы конкурса по хешкрекингу на DEFCON 2012

К сожалению, других крупных конкурсов по хешкрекингу нет. Иногда бывают небольшие конкурсы на хешкрекерских форумах, но их размах гораздо меньше. А с другой стороны, многие профессиональные хешкрекеры всегда находятся в «режиме конкурса», так как на форумах периодически размещаются хеши стоимостью в сотни и даже тысячи долларов, поэтому сразу после их опубликования хешкрекеры включаются в борьбу за этот хеш, чтобы обойти других, первому сломать пароль и получить «приз», то есть плату за пароль.

Заключение

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

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

Как сломать хеш, если под руками нет ни железа, ни софта?

Для этого можно проверить свой хеш в онлайн-базах хешей типа www.cmd5.ru. Или сразу на сервисах типа www.hashchecker.de, которые проверяют хеш массово в десятках баз, и, может быть, тебе повезет.

Но у таких сервисов есть недостаток — в основном они содержат хеши от искусственно сгенерированных паролей. Пока единственный сервис, где собраны только реальные хеши и пароли пользователей, — Hash Finder. На нем уже накоплено более 500 миллионов таких хешей и паролей — все они были кем-то когда-то реально использованы, поэтому процент найденных паролей на нем гораздо выше, чем на других сервисах.

Еще вариант — разместить свой хеш (или список хешей) на одном из хешкрекерских форумов, где всегда можно получить помощь. Самые популярные форумы: forum.insidepro.com, forum.hashkiller.co.uk, forum.antichat.ru/forums/76.

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

geekmaze.ru

Подбираем пароли с помощью Google Chrome / Habr

Согласно многочисленным исследованиям в области компьютерной безопасности, в ТОП-3 уязвимостей информационных систем входит подбор пароля.

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

В случае, если мы имеем какой-либо портал, где пользователи – это люди, то бОльшую часть уязвимых слабых паролей можно отнести к одной из 4 групп:


  1. Пароли, входящие в топ самых популярных фраз (такие как «123456», «password», и т.п.).
  2. Пароли, представляющие собой сочетание клавиш – так называемые keyboard-walks пароли (например, «qwerty», «qazwsx», и т.п.).
  3. Пароли – искажённые логины («user123», «user321», и т.п.).
  4. Либо использование в качестве пароля популярных русских слов или имён в «перевёрнутой» раскладке («ljcneg», «fylhtq»).

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

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


  1. По данным сервиса haveibeenpwned.com, на сегодняшний день масштаб всеобщих утечек подбирается к цифре 5 миллиардов (вспомните myspace, linkedin, adobe и т.п). На основе части данных утечек можно выделить топ-1000 наиболее распространенных паролей. Например, так:
    cat antipublic/ exploitin/ | sed -rn ‘s/[^:]+:(.)/\1/p’ | sort | uniq -c | sort -n -r | head 1000 > top1000.txt*
  2. Чуть больше года назад от создателя инструмента hashcat появилась замечательная утилита kwprocessor. С помощью нее можно сгенерировать все возможные сочетания клавиш под любую раскладку клавиатуры:
    kwp basechars/tiny.base keymaps/en.keymap routes/2-to-10-max-3-direction-changes.route | len.bin 6 100 > keywalks.txt
  3. Получение достаточно большого количества искажений для некоторого имени пользователя проще всего сделать при помощи набора правил утилиты hashcat:
    hashcat -r /usr/share/hashcat/rules/leetspeak.rule logins.txt —stdout > login_mutations.txt
  4. Аналогично первому пункту списка, можно взять за основу словаря масштабные утечки русскоязычных ресурсов.

Собранные наборы паролей в дальнейшем могут быть «скормлены» таким утилитам как hydra, medusa, ncrack или patator, в зависимости от тестируемого сервиса.

В случае, если аутентификация реализована через web, а именно через http-формы (то есть не http-basic/digest аутентификация), то удобнее всего воспользоваться функционалом intruder от burp suite free (Рисунок 1).


Рисунок 1 — Bruteforce-атака подручными средствами

В случае с burp нужно внимательно следить за размером ответа: изменение размера ответа можешь означать, что логин или пароль присутствует в системе.

Также при bruteforce-атаках на web возможны сложности (и речь даже не про captcha):


  • Во-первых, при каждой отправке формы может использоваться токен. И после каждой неудачной попытки он может меняться.
  • Во-вторых, нет точного образца ответа сервера в случае, если пароль угадан. Более того, возможны ситуации, когда ответ на правильные и неправильные учётные данные будет идентичен, а в ответе будет просто идти редирект через заголовок Location, где уже в дальнейшем будет ясно об успешности попытки входа.
  • В-третьих, некоторые веб-сервисы при аутентификации не отправляют введённые учётные данные, как они были введены, открытым текстом. Речь про случаи, когда используется client-side хэширования, причем сами хэш-функции могут быть уникальными (не md5, sha-x и т.п.).

Впрочем, для этих сложностей можно предложить решения:


  • Разработка скрипта, который будет парсить ответ от сервера, находить там токен, после чего подставлять его в следующий запрос.
  • Разработка скрипта, выполняющего при каждом ответе редирект и сравнение длины полученного ответа.
  • Анализ javascript-кода, выполняющего те или иные преобразования с введёнными данными, а после реализация данного алгоритма в своем скрипте.

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

Реализовать это можно с помощью расширения для браузера greasemonkey и собственного javascript-кода, который будет жёстко заточен под разметку данной html-страницы. Но писать каждый раз js-код для каждой новой страницы неудобно. Удобнее всего было бы иметь всё это в виде отдельного расширения, в данном случае – для Google Chrome.

Всё, что потребуется, чтобы воспользоваться www_brute – это открыть какой-либо интересующий сайт и нажать на иконку расширения. Если всё сделано правильно, то появится примерно следующее (Рисунок 2).


Рисунок 2 — Добавление новой цели

Чтобы приступить к настройке брутфорса, нужно нажать на единственную кнопку – «плюс».
Вся настройка проста и сводится к двум моментам:


  • Выбор полей ввода данных — кнопка со стрелкой.
  • Выбор данных для ввода — следующая кнопка.

Перед выбором полей для ввода логина и пароля на странице сайта с формой, которую предстоит атаковать, будет внедрён скрипт, который последовательно отловит три нажатия на элементы страницы. Этими элементами должны быть поле username, password и кнопка отправки формы. Перечисленные элементы должны быть выбраны именно в данной последовательности (Рисунок 3).


Рисунок 3 — Выбор полей для ввода

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

Тут очень важно отметить, что элементы ввода запоминаются по html-атрибутам и их значениям. Поэтому, если после отправки формы сайт «нарисует» другую форму, то при следующей попытке подбора поле ввода не будет найдено. Хотя логика поиска полей ввода допускает не полное соответствие атрибутов, всё же данную настройку лучше производить уже после хотя бы одной неудачной отправки учётных данных. Пример – facebook.com (Рисунки 4 и 5).


Рисунок 4 — Форма до первой попытки входа


Рисунок 5 — Форма после первой попытки входа

Словари поддерживаются для имен пользователей, паролей и фиксированных пар логин: пароль (combo) (Рисунок 6).


Рисунок 6 — Словари для bruteforce-атаки

Поскольку combo-словари используются для дефолтных учётных записей либо утечек, то вначале будут выбраны именно они. Затем будет выполнен полный перебор всех сочетаний имён пользователей и логинов. Причём будет выполнен перебор по каждому паролю всех логинов – для минимизации возможных блокировок пользователей при неудачных попытках. Итого общее количество попыток можно будет вычислить по формуле:

length(combo) + length(passwords) * length(users)

По окончании всех настроек можно начинать:


Рисунок 7 — Bruteforce-атака в действии

Значения username и password в popup-окне расширения — это следующие кандидаты на ввод.
Логика работы достаточно проста и заключается в переборе всех заданных сочетаний логин/пароль, а так же пар логин: пароль в цикле до тех пор пока:


  • не кончится словарь;
  • не исчезнет поле ввода – что может означать успешность входа (либо блокировку).
    Вся статистика подбора пароля отображается в режиме реального времени:


Рисунок 8 — Процесс bruteforce-атаки на множество целей

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

Перебор пароля можно легко «распараллелить». Для этого достаточно просто открыть ещё одну или несколько вкладок на том же домене.

В любой момент времени брутфорс любого сайта может быть поставлен на паузу. Стоит заметить, что плагин не имеет обратной связи с ответами сервера, поэтому (особенно в случае с ajax) нужно правильно выбрать интервал между попытками. Не рекомендуется ставить слишком маленькое значение интервала.

Конечно данный способ никак не обходит такую вещь, как captcha, так что брутфорс таких вещей, как gmail.com и им подобных, продлится не долго. Однако в сочетании с proxy/vpn можно что-нибудь придумать…

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

Плагин для chrome, а так же словарь для топ-1000 паролей доступен на тут и в webstore.

habr.com