Введение
Добро пожаловать в эту лабораторную работу по выполнению атаки по маске с помощью Hashcat. Hashcat — это мощный и универсальный инструмент для восстановления паролей, широко используемый в кибербезопасности для проверки надежности паролей и восстановления утерянных паролей.
Стандартная атака полным перебором (brute-force attack) пытается угадать пароль, перебирая все возможные комбинации символов, что может быть невероятно медленно. Атака по маске (mask attack) — это более интеллектуальный и эффективный тип атаки полным перебором. Она используется, когда у вас есть некоторая информация о структуре пароля, такая как его длина или типы символов, используемых на определенных позициях (например, "начинается с заглавной буквы, заканчивается двумя цифрами").
В этой лабораторной работе вы научитесь определять структуру пароля с помощью маски и использовать Hashcat для взлома образца хеша SHA1, демонстрируя мощь и эффективность этого целенаправленного подхода.
Понимание концепции атаки по маске
На этом этапе вы изучите фундаментальную концепцию атаки по маске. Как упоминалось во введении, эта атака является специализированной формой атаки полным перебором.
Представьте, что вам нужно взломать пароль, но у вас есть несколько подсказок:
- Вы знаете, что пароль состоит ровно из 6 символов.
- Вы знаете, что первый символ — это заглавная буква.
- Вы знаете, что последние два символа — это цифры.
Стандартная атака полным перебором потратит время на перебор комбинаций вроде "aaaaaa" или "123456". Атака по маске, напротив, позволяет определить "маску" или шаблон, который указывает инструменту взлома перебирать только те комбинации, которые соответствуют вашему известному шаблону. Для приведенного выше примера маска будет выглядеть как [Заглавная буква][Любой][Любой][Любой][Цифра][Цифра].
Это значительно сокращает количество возможных вариантов, делая процесс взлома значительно быстрее и эффективнее. На следующем шаге вы узнаете конкретный синтаксис, который Hashcat использует для создания этих мощных масок. Этот шаг является чисто концептуальным, и никаких команд не требуется.
Изучение встроенных наборов символов, таких как ?l ?u ?d ?s
На этом этапе вы узнаете о встроенных наборах символов Hashcat, которые являются строительными блоками маски.
Hashcat использует специальные заполнители, называемые "наборами символов" (charsets), для определения типа символа на каждой позиции в маске пароля. Вот наиболее распространенные встроенные наборы символов:
?l: Представляет все строчные буквы (aпоz).?u: Представляет все заглавные буквы (AпоZ).?d: Представляет все цифры (0по9).?s: Представляет все стандартные специальные символы (например,!@#$%^&*).?a: Представляет все вышеперечисленное (?l?u?d?s).
Например, если мы знаем, что пароль состоит из 4 символов и включает заглавную букву, за которой следуют две строчные буквы, а затем цифра, маска будет выглядеть как ?u?l?l?d. Это сгенерирует кандидатов, таких как Pass9, Word1, Test0 и т. д.
Вы можете увидеть эти определения в справочном меню Hashcat. Выполните следующую команду в терминале, чтобы просмотреть справочную информацию, связанную с масками:
hashcat --help | grep "?l"
Вы увидите раздел, в котором перечислены встроенные наборы символов, что подтверждает приведенную выше информацию.
?l | abcdefghijklmnopqrstuvwxyz | Строчные буквы
Создание образца хеша SHA1 для известного шаблона
На этом этапе вы создадите целевой хеш SHA1 для пароля, который мы будем взламывать на следующих шагах. Чтобы выполнить атаку на пароль, нам сначала нужен хеш для атаки.
Давайте выберем пароль, соответствующий четкому шаблону: LabX99!. Этот пароль имеет следующую структуру:
- 1-й символ: Заглавная буква (
L) - 2-й символ: Строчная буква (
a) - 3-й символ: Строчная буква (
b) - 4-й символ: Заглавная буква (
X) - 5-й символ: Цифра (
9) - 6-й символ: Цифра (
9) - 7-й символ: Специальный символ (
!)
Сначала сгенерируем хеш SHA1 для этого пароля. Флаг -n в команде echo очень важен, так как он предотвращает добавление символа новой строки к строке, что изменило бы результирующий хеш.
Выполните эту команду в терминале:
echo -n "LabX99!" | sha1sum
Вывод будет представлять собой хеш SHA1, за которым следует тире:
0e6cc6531a1a5545942a38a9339571934219c5b0 -
Теперь сохраните этот хеш в файл с именем target_hash.txt. Этот файл будет входными данными для Hashcat.
echo "0e6cc6531a1a5545942a38a9339571934219c5b0" > target_hash.txt
Вы можете проверить правильность создания файла с помощью cat target_hash.txt.
Создание команды масочной атаки для пароля фиксированной длины
На этом шаге мы составим полную команду Hashcat для выполнения масочной атаки на основе имеющейся у нас информации.
Команда Hashcat для масочной атаки состоит из нескольких ключевых компонентов:
-m <mode>: Этот флаг указывает тип хеша. Каждый алгоритм хеширования (например, MD5, SHA1, bcrypt) имеет уникальный номер режима.-a <attack_mode>: Этот флаг устанавливает режим атаки. Для масочной атаки режим всегда3.hash_file: Путь к файлу, содержащему хеш(и) для взлома.mask: Шаблон маски, определяющий структуру пароля.
Сначала нам нужно найти правильный режим для SHA1. Вы можете найти его, просмотрев вывод справки Hashcat:
hashcat --help | grep "SHA1"
Вы увидите список типов хешей. Режим для стандартного хеша SHA1 — 100.
100 | SHA1 | Raw Hash
Далее создадим маску для нашего пароля LabX99!. Основываясь на выявленной структуре и изученных наборах символов:
L->?uab->?l?lX->?u99->?d?d!->?s
Объединив их, наша финальная маска будет ?u?l?l?u?d?d?s.
Теперь мы можем собрать полную команду. Мы также добавим флаг --force, который указывает Hashcat работать, даже если он обнаружит неоптимальную среду (например, запуск на ЦП в виртуальной машине), что необходимо для этой лаборатории.
Финальная структура команды: hashcat -m 100 -a 3 target_hash.txt ?u?l?l?u?d?d?s --force. Мы выполним ее на следующем шаге.
Запуск масочной атаки и проверка результата
На этом шаге вы выполните команду масочной атаки и убедитесь, что Hashcat успешно взломал пароль.
Вы уже составили команду. Теперь запустите ее в терминале, чтобы начать атаку:
hashcat -m 100 -a 3 target_hash.txt ?u?l?l?u?d?d?s --force
Hashcat запустится. Он может выдать некоторые предупреждения, которые безопасно игнорировать, поскольку мы использовали --force. Атака начнется, и поскольку наша маска очень специфична, она должна завершиться почти мгновенно. Вывод покажет статус сеанса, и вы должны увидеть финальный статус Cracked.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: SHA1
Hash.Target......: 0e6cc6531a1a5545942a38a9339571934219c5b0
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Mask.......: ?u?l?l?u?d?d?s [7]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 192.9 kH/s (0.01ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 11881376/11881376 (100.00%)
Rejected.........: 0/11881376 (0.00%)
Restore.Point....: 456976/456976 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LuvX98! -> LuvX99#
Hardware.Mon.#1..: Temp: 46c
...
После взлома пароля Hashcat сохраняет его в файл под названием "potfile" (hashcat.potfile). Чтобы просмотреть взломанный пароль, вы можете использовать флаг --show с исходными аргументами команды.
Выполните эту команду, чтобы отобразить результат:
hashcat -m 100 target_hash.txt --show
Вывод покажет хеш и взломанный пароль в открытом виде, разделенные двоеточием:
0e6cc6531a1a5545942a38a9339571934219c5b0:LabX99!
Поздравляем, вы успешно выполнили масочную атаку!
Итоги
В этой лаборатории вы успешно выполнили масочную атаку методом перебора с использованием Hashcat.
Вы научились:
- Понимать основную концепцию масочной атаки как целенаправленного метода перебора.
- Использовать встроенные наборы символов Hashcat (
?l,?u,?d,?s) для определения структуры пароля. - Генерировать хеш SHA1 для целевого пароля.
- Составлять полную команду Hashcat с правильным режимом хеширования, режимом атаки и маской.
- Выполнять атаку и просматривать взломанный пароль с помощью опции
--show.
Масочные атаки являются фундаментальной техникой при взломе паролей и аудите безопасности. Они демонстрируют, как даже небольшое количество информации о шаблоне пароля может значительно сократить время и усилия, необходимые для его взлома.


