Введение
Hashcat — всемирно известный инструмент для восстановления паролей, известный своей скоростью и универсальностью. При выполнении крупномасштабных атак по подбору паролей часто используется несколько систем для атаки одного и того же списка хэшей. Такой распределенный подход может привести к неэффективности, поскольку разные системы могут тратить время на попытки угадать одни и те же пароли.
Для решения этой проблемы Hashcat представил функцию "Brain". Hashcat Brain действует как централизованный сервер, который ведет учет каждого предпринятого кандидата в пароли. Прежде чем клиент попытается угадать пароль, он запрашивает Brain. Если пароль уже был опробован ранее, клиент пропускает его, экономя ценное время и ресурсы.
В этой лаборатории вы научитесь:
- Запускать сервер Hashcat Brain.
- Подключать клиент Hashcat к серверу.
- Выполнять атаку по подбору паролей и наблюдать, как Brain предотвращает избыточную работу.
Понимание концепции Hashcat Brain
На этом этапе мы кратко рассмотрим основную концепцию Hashcat Brain и проблему, которую он призван решить. Этот шаг чисто концептуальный, и никаких команд не требуется.
В типичном сценарии подбора паролей у вас есть список хэшей и список потенциальных паролей (словарный список). Hashcat пытается применить каждый пароль из словарного списка к хэшам. Теперь представьте, что у вас есть два отдельных компьютера (или клиента), работающих над одной и той же задачей.
Проблема: Без координации оба клиента (Клиент А и Клиент Б) могут в разное время попытаться угадать один и тот же пароль, например, "123456". Это пустая трата вычислительной мощности, поскольку работа дублируется.
Решение (Hashcat Brain): Hashcat Brain действует как умный центральный сервер. Рабочий процесс выглядит следующим образом:
- Клиент (например, Клиент А) хочет попробовать пароль "123456".
- Сначала он отправляет запрос серверу Brain: "Пробовался ли пароль '123456' ранее?"
- Сервер Brain проверяет свою базу данных. Если это первый раз, он отвечает: "Нет, не пробовался".
- Клиент А приступает к тестированию пароля. После завершения он информирует сервер Brain: "Я протестировал '123456'". Сервер Brain записывает это.
- Позже, если Клиент Б захочет попробовать "123456", он спросит сервер Brain. Сервер теперь ответит: "Да, он уже пробовался".
- Клиент Б немедленно пропускает этот пароль и переходит к следующему, экономя время и электроэнергию.
Этот механизм гарантирует, что каждый кандидат в пароли во всей распределенной сети будет протестирован только один раз, что значительно повышает эффективность крупномасштабных атак.
Запуск сервера Hashcat Brain
На этом этапе вы запустите сервер Hashcat Brain. Этот сервер будет принимать подключения от клиентов Hashcat и управлять базой данных опробованных паролей.
Для этой лаборатории мы запустим сервер и клиент на одной машине, но они будут общаться по сети, как если бы они находились на разных системах.
Команда для запуска сервера — hashcat с флагом --brain-server. Мы также укажем порт, на котором он будет прослушивать. Для безопасности Hashcat может автоматически сгенерировать пароль для сервера.
Сначала создадим каталог для наших файлов Brain внутри папки проекта.
mkdir -p ~/project/brain
Теперь выполните следующую команду в терминале, чтобы запустить сервер. Он будет прослушивать порт 7890 и хранить свои данные в каталоге ~/project/brain/.
Примечание: Эта команда займет ваш текущий терминал. Для следующих шагов вам потребуется открыть новую вкладку терминала, нажав значок
+на панели терминала.
hashcat --brain-server --brain-port 7890 --brain-session-path ~/project/brain/
После выполнения команды вы увидите вывод, указывающий, что сервер запущен. Обратите особое внимание на строку Password..:, так как это автоматически сгенерированный пароль, который потребуется клиенту для подключения.
Starting brain server on 0.0.0.0:7890...
Password..: 82b5d1a3e... (a long hex string)
Accepting clients...
Оставьте этот терминал запущенным. Не закрывайте его. Откройте новый терминал для следующих шагов.
Получение пароля сервера Brain
На этом этапе вы узнаете, как получить пароль сервера Brain из его файла сессии. Хотя пароль отображался в терминале при запуске сервера, он также хранится в файле для легкого доступа, что полезно в автоматизированных средах.
Файл сессии по умолчанию называется hashcat.brain. Поскольку мы указали пользовательский путь с помощью --brain-session-path, наш файл находится по адресу ~/project/brain/hashcat.brain.
В вашем новом терминале используйте команду cat, чтобы отобразить содержимое этого файла. Это содержимое и является паролем сервера.
cat ~/project/brain/hashcat.brain
Вывод будет представлять собой длинную строку шестнадцатеричных символов, которая и является паролем.
82b5d1a3e4c9a0f7d6b3c1a9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f0e9
Этот пароль требуется любому клиенту, который хочет подключиться к вашему серверу Brain. На следующих шагах мы будем использовать команду для чтения этого пароля непосредственно из файла, чтобы избежать ошибок при копировании и вставке.
Настройка клиента Hashcat для подключения к Brain
На этом этапе вы настроите клиент Hashcat для использования сервера Brain. Это делается путем добавления нескольких опций --brain-* к стандартной команде hashcat.
Мы выполним команду "сухого запуска" (dry-run) для тестирования соединения. Опция --show в Hashcat используется для отображения ранее взломанных хешей, но в сочетании с опциями клиента Brain она служит хорошим способом проверки соединения без запуска полной атаки.
Необходимые опции клиента:
--brain-client: Указывает Hashcat работать в режиме клиента.--brain-host: IP-адрес сервера. Мы будем использовать127.0.0.1, так как он находится на той же машине.--brain-port: Порт, на котором прослушивает сервер, это7890.--brain-password: Пароль для сервера. Мы можем использовать подстановку команд$(cat ...)для чтения его непосредственно из файла.
Выполните следующую команду в вашем новом терминале:
hashcat --show -m 0 ~/project/hashes.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)
Эта команда не даст много вывода в терминале клиента. Однако, если вы переключитесь обратно на первую вкладку терминала (ту, где запущен сервер), вы должны увидеть новую строку с сообщением Client connected from 127.0.0.1. Это подтверждает, что клиент успешно подключился к серверу.
## В терминале сервера
Accepting clients...
Client connected from 127.0.0.1
Это подтверждает правильность вашей конфигурации клиента.
Запуск атаки и наблюдение за коммуникацией Brain
На этом этапе вы выполните словарную атаку и увидите Hashcat Brain в действии. Мы будем использовать файлы hashes.txt и wordlist.txt, которые были подготовлены для вас.
Сначала запустите атаку. Команда представляет собой стандартную словарную атаку (-a 0) для хешей MD5 (-m 0) с добавленными опциями клиента Brain.
Выполните это в вашем терминале клиента (вторая вкладка):
hashcat -m 0 -a 0 ~/project/hashes.txt ~/project/wordlist.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)
Атака будет запущена, и вы увидите, как она быстро найдет пароль.
...
5f4dcc3b5aa765d61d8327deb882cf99:password
...
Session..........: hashcat
Status...........: Cracked
...
Теперь самая важная часть. Запустите точно такую же команду еще раз.
hashcat -m 0 -a 0 ~/project/hashes.txt ~/project/wordlist.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)
Наблюдайте за выводом на этот раз. Атака должна завершиться почти мгновенно. Обратите внимание на строку Status.
...
Session..........: hashcat
Status...........: Exhausted
...
Статус Exhausted (Исчерпано), потому что клиент Brain запросил у сервера информацию обо всех паролях в wordlist.txt, и сервер ответил: "Да, все эти пароли уже были опробованы ранее". Клиент, таким образом, понял, что делать нечего, и немедленно завершил работу. Это демонстрирует мощь и эффективность Hashcat Brain.
Итоги
В этой лабораторной работе вы успешно изучили Hashcat Brain — мощную функцию для оптимизации распределенных операций по подбору паролей.
Вы узнали:
- Основную концепцию Hashcat Brain и как он предотвращает избыточную работу.
- Как запустить сервер Hashcat Brain и сгенерировать для него безопасный пароль.
- Как найти файл сессии сервера для получения пароля.
- Как настроить клиент Hashcat с необходимыми флагами для подключения к Brain.
- Как запустить атаку и наблюдать за работой Brain, увидев, как он интеллектуально пропускает ранее опробованные пароли.
Освоив Hashcat Brain, вы можете значительно повысить эффективность любой крупномасштабной или длительной кампании по восстановлению паролей, экономя время и вычислительные ресурсы.


