12345

12345


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

Как работает ХЭШ функция? ХЭШ функция берёт определённую информацию, например кусок текста или пароль от вашего аккаунта, это может даже быть отдельный файл, и преобразует эту информацию в строку определённой длины, и эта строка всегда будет иметь одинаковую длину вне зависимости оттого какого размера была входная информация:

Существует достаточно много ХЭШ алгоритмов, например слово BITCOIN пропущенной через алгоритм SHA256 будет выглядеть вот так:

ХЭШ функции очень сильно отличаются от обычного шифрования. Зашифровав какую-либо информацию через алгоритм AES вы в любое время сможете эту информацию расшифровать с помощью парольной фразы:

ХЕШ функции же работают только в одну сторону. Пропустив какую-либо информацию через ХЕШ функцию, например свой пароль, то вы не сможете получить исходное значение информации зная значение ХЕША. Это одно из требований к ХЕШ функциям:

ХЕШ функция должна быть однонаправленная. Позже мы разберём пример для чего это нужно. Второе основное требование для ХЕШ функций - фиксированный размер получаемого ХЭША вне зависимости от введённой информации. Сейчас перед вами таблица с несколькими исходными данными и их ХЭШАМИ:

Как видите исходная информация разной длинны, однако ХЭШ имеет одинаковую длину в любом из случаев. Следующее требование к ХЭШ функция - уникальность получаемого ХЭША и практически полное отсутствие коллизий. Что это значит? Это значит что два разных набора информации не могут выдать одинаковое значение ХЭША:

Коллизия существует для большинства ХЭШ функций, но в надёжных ХЭШ функциях частота возникновения коллизий близка к теоретическому минимуму. Например ХЭШ функция MD5 сейчас стала абсолютно неустойчива к коллизиям. Компьютеры стали настолько мощные, что найти коллизию за приемлимое время не составит труда. Прямо сейчас в интернете можно найти генератор коллизий для ХЭШ функций MD5. Чуть позже я объясню как коллизии могут быть использованы в хакинге. ХЭШ функция также должна быть быстрой и быстро ХЭШировать исходную информацию, но это также является и уязвимостью для брутфорс атак. Чем быстрее работает ХЭШ функция тем больше она уявимо для полного перебора. Для хорошей криптографической ХЭШ функции такжжже важно наличие лавинного эффекта. Что это значит? Это значит, что при изменении дажеж одного байта в исходной информации полученный ХЭШ поменяется кардинального:

Как же будет выглядеть идеальная криптографическая ХЭШ функция? Идеальной криптографической ХЭШ функцией можно считать ту функцию которой присуще следующие пять свойств:

Детерминированность. Одинаковые входные данные всегда дают одинаковое значение ХЭША.

Высокая скорость вычисления ХЭШ функций из любого сообщения.

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

Наличие лавинного эффекта. Минимальное изменение в исходном сообщении приводит к кардинальному изменению ХЭША

Отсутствие коллизий. Невозможность найти одинаковое значение ХЭША для двух разных сообщений.

Давайте рассмотрим простой пример как используются ХЭШ функции. Когда вы регистрируетесь вконтакте, фейсбуке, твиттере или другой социальной сети, то ваш логин и пароль пропускается через определённую ХЭШ функцию и значение ХЭША записывается в БД (базу данных):

В твиттере используется алгоритм SHA256. Для чего это сделано? Для того чтобы не хранить логины и пароли в текстовом виде. После регистрации когда вы используете логин и пароль для входа, то они опять пропускаются через ХЭШ функцию и значение ХЭША сравнивается с тем значением ХЭША которое было записано в базу данных изначально после вашей регистрации:

Если значения ХЭША совпадают, то система вас авторизирует. Если значения ХЭША не совпадают, то выскакивает уведомление о том, что логин или пароль неверны. Здесь мы возвращаемся к основному требованию к ХЭШ функциям - однонаправленность. Хакеры взломав базу данных какой-то социальной сети получат значение хешей, а не чистые логины и пароли:

А из-за того что ХЭШ функция однонаправленная, то из неё нельзя получить исходные данные, такие как пароль и логин пользователя. Тем не менее, хакер получив ХЭШИ всё-таки сможжет узнать пароли некоторых пользователей. Для этого используется атака по радужным таблицам:

Хакер использует заранее вычисленные ХЭШИ для простых и часто используемых паролей и сравнивают ХЭШи в таблице с полченными ХЭШАМИ из базы данных социальной сети:

Но тут появляется одна небольшая проблема. Что если некоторые пользователи устанавливают одинаковый пароль и итоговый ХЭШ паролей получается одинаковые:

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

Чтобы не было проблем с одинаковым ХЭШем когда несколько пользователей используют одинаковый пароль, то используется соль. Что такое соль? Соль это строка данных которая пропускается через ХЭШ функцию вместе с паролем:

Использование соли при хэшировании гарантирует то, что даже при одинаковых паролях значение ХЭШа будет разное:

Допустим если Алиса и Боб используют одинаковый пароль qwerty, то ХЭШи этих паролей будет кардинально отличаться из-за того что была использована соль. В интернете есть огромное количество уже просчитанных заранее ХЕШэй для самых популярных паролей. Например на сайте https://tools.icoder.uz/hash-calculator.php можно проверить как это работает. Для начала давайте пропустим самый частоиспользуемый пароль qwerty через ХЭШ функцию SHA256. Получаем значение ХЭШа 65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5:

Это значения ХЭША вставляем на сайт https://crackstation.net/ и получаем результат qwerty:

Это не значит, что ХЭШ функцию обратили и вычислили исходное значение. Это значит, что у этого сайта есть база данных с уже просчитанными ХЭШами для каждого простого и частоиспользуемого пароля. Но использование соли не гарантирует полную защиту от хакерских атак. Хакеры вссё ещё могут перебирать значения ХЭШей через брутфорс или же полный перебор. Хакерам понадобиться больше времени так как надо будет перебирать ещё и все возможные значения соли. Но это возможно, так как основное требование в хэш функции - скорость хэширования. А как я упоминала ранее - скорость хэширования не всегда является преимуществом. Особенно когда это касается хранения паролей. Чтобы защититься от брутфорс атак используются специально замедленные хэш функции на вычисление которых уходит больше времени чем на вычисление стандартной хэш функции. Это функции bcrypt, scrypt или например argon2. Использование этих хэш функций для хранения паролей очень сильно замедляет возможные брутфорс атаки, иногда даже делает их практически невозможными. Например функция bcrypt для создания ключа использует пароль пользователя, добавляет соль для защиты от радужных таблиц и также дополнительный параметр cost:

Параметр cost определяет количество циклов через которые будет пропущена исходная информация, это замедляет процесс хеширования. Таким образом атака полного перебора становится практически невозможной, так как процесс хеширования сильно замедлен, и за приемлимое время не получится перебрать достаточное количество паролей и всевозможных комбинаций соли. Со временем компьютеры станут мощнее и атаки полного перебора на этот алгоритм станут легче, но для защиты от этого необходимо просто увеличить параметр cost, который определяет количество циклов. Чем больше циклов, тем больше времени потребуется для хэширования исходной информации. Давайте рассмотрим метод защиты данных который использует сервис https://www.dropbox.com. Изначально dropbox берёт пароль пользователя и пропускает его через определённую простую хэш функцию без использования соли. Затем полученный хэш пропускается через функцию Bcrypt с использованием соли и параметр cost величиной в 10 циклов. Это защищает от брутфорс атак. В конечном итоге вся эта информация шифруется алгоритмом шифрования AES:

Хакеру придётся вскрыть все эти слои защиты, чтобы добраться до нужной ему информации. Однако стоит отменить, что слабые пароли всё равно уязвимы. Длинный и надёжный пароль пропущенный через простую функцию MD5 будет сложнее подобрать чем пароль из 6 символов, но пропущенный через функцию Bcrypt с параметром cost в 25 циклов. Хранение и защита паролей не единственная сфера где применяются хэш функции. Хэш функции также применяются для проверки целостности файла. Как я написала ранее, при малейшем изменении исходного файла его хэш сумма кардинально изменяется. Как это может быть использовано? Самый простой пример это проверка программного обеспечения скаченного с сайта разработчика. Большинство разработчиков программного обеспечения рядом со ссылкой на скачивание программы размещает хэш сумму каждого из файлов. После загрузки ПО на свой компьютер пользователь может сравнить хэши и убедиться в том, что файлы подлинные и не подвергались изменению. Это может быть также использовано для передачи файлов между двумя людьми, когда необходимо убедиться в том что в процессе передачи файлов он не был изменён.

Но здесь при использовании ненадёжных или устаревших хэш функций имеет место быть коллизионная атака, когда два разных документа имеют одинаковый хэш. Как происходит такая атака? Ева создаёт 2 разных документа A и B имеющих одинаковое значение хэш суммы:

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

Далее Алиса отсылает подпись Еве. Ева подкрепляет подпись документа A к документу B:

Затем Ева отправляет подпись и документ B Бобу утверждая что Алиса подписала этот документ:

Посколько электронная подпись сверяет лишь значение хэша документа B, то Боб не узнает о подмене. С надёжными криптографическими хэш функциями такое провернуть невозможно, но вот с устаревший MD5 и прочими это реально осуществить. ХЭШ функции также используются и в блокчеине. Каждая транзакция в блокчеине биткоина содержит информацию о получателе и отправителе о сумме транзакции, времени её отправки и так далее. Вся эта информация хешируется и образуется tranzaction id:

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

Я сделаю гайд по hash cat. Многим новичкам ничего не понятно, не понятно как пользоваться маской, непонятно как запускать рут. В общем ничего не понятно им, потому hashcat является на их взгляд довольно сложной программой, но на самом деле это не так. Разобраться в ней очень просто и сегодня я вам покажу как всё это происходит, как работает hash cat, как запускать брут по маске, как запускать по словарю, как комбинировать словари. В общем я постараюсь показать максимум для того чтобы любой из вас смог запустить брут совершенно любого алгоритма, ну не то чтобы качественно и со 100% уверенностью добиться какого-то результата, а чтобы понимать вообще как работает hash cat, как запускаются опять же бруты и в чём разница между разными видами атаки которые поддерживают hash cat. На самом деле hash cat поддерживает не просто один единственный брут, он много что поддерживает.

Hash cat уже предустановлен в Kali Linux, про Windows я говорить не буду, но можете скачать его тут если сидите на винде https://hashcat.net/hashcat/

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

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

hashcat --help

В хелпе много чего написано, его я рекомендую вам основательно изучить. Давайте разберём что здесь есть. Здесь есть опции:

Всё выкладывать не буду, иначе это займёт скринов 25-30. Сами полистаете и посмотрите все возможности и функции.

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

Это, ну 4 блока их всего. То есть сама программа hashcat которую запускаете, bin файл. Первыми идут опции:

Что такое опции? Это то что на 3 скринах выше, но их там больше. Опции указывает на то как запускать программу, с каким алгоритмами она будет работать, выходные файлы, всякие бенчмарки, ну и всё что нам может быть полезно как на выходе хешкета так и в процессе его запуска. Мы здесь можем выбрать какую именно платформу нам использовать, на чём брутить, на CPU, на GPU, какие задать может свои кодировки. В общем то всё что нам нужно для запуска хэшкета в режиме том в котором вам нужно. Это опции.

Второй блок это идёт блок хешей.

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

Следующее это словарь, словари, маска или же какой-то диапозон тех самых букв которые будут использоваться для брутфорса:

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

hashcat -b -m 2500

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

Ну и так далее... Опять же все скрины выставлять не буду. Нам их запускать все не надо на бенчмарк. Нам нужно запустить некоторые. То есть мы хотим знать предположим скорость брута для WPA.

-m это указание того с каким алгоритмом мы будем работать, и через пробел пишем номер нашего алгоритма. Как найти номер? Листаем вверх нашу help, и тут вот слева есть номера. Например для WPA-EAPOL-PBKDF номер 2500:

MyBB 2811:

Ну и так далее. Разберётесь.

Выше мы уже запустили бенчмарк для WPA WPA-EAPOL-PBKDF, 2500 написали в конце. Бенчмарк запустился. Нам написало на каком девайсе он будет запущен:

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

Опять же точно также вы можете выбрать бенчмарк для другого алгоритма, предположим MD5, находим его в HELP:

hashcat -b -m 0

Для MD5 у меня показало 382 хеша в секунду:

Так. С бенчмарком мы разобрались. Теперь перейдём непосредственно к брутфорсу. Брутфорс

12:25


Report Page