Понимание структуры команд Hashcat

Kali LinuxBeginner
Практиковаться сейчас

Введение

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

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

Определение основных компонентов команды Hashcat

На этом шаге мы определим базовый синтаксис команды Hashcat. Понимание этой структуры — первый шаг к использованию инструмента.

Типичная команда Hashcat следует этому шаблону:

hashcat [options] hashfile [wordlist/mask]

Разберем эти компоненты:

  • hashcat: Это имя самого исполняемого файла программы.
  • [options]: Это флаги, которые изменяют поведение программы. Наиболее важными опциями являются -m для типа хэша и -a для режима атаки, которые мы рассмотрим на следующих шагах.
  • hashfile: Это путь к файлу, содержащему хэш или хэши, которые вы хотите взломать.
  • [wordlist/mask]: Это путь к входному файлу, например, к словарю для атаки по словарю или к шаблону маски для атаки полным перебором.

Для начала давайте посмотрим встроенное справочное меню, чтобы получить представление об инструменте. Эта команда выводит все доступные опции и информацию.

Выполните следующую команду в вашем терминале:

hashcat --help

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

hashcat (v6.2.6) starting in help mode

Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...

...
-a,  --attack-mode              | Num    | Attack-mode, see references below.
-m,  --hash-type                | Num    | Hash-type, see references below.
...

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

Указание типа хэша с помощью флага -m

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

Наша лабораторная среда подготовила файл с именем hashes.txt, который содержит хэш MD5. Чтобы найти правильный код для MD5, вы можете просмотреть вывод hashcat --help.

Используйте команду grep для фильтрации справочного текста по "MD5":

hashcat --help | grep MD5

Вывод покажет вам все типы хэшей, связанные с MD5, вместе с их соответствующими кодами.

      0 | MD5                                            | Raw Hash, Salted and/or Iterated
   10 | md5($pass.$salt)                                 | Raw Hash, Salted and/or Iterated
   20 | md5($salt.$pass)                                 | Raw Hash, Salted and/or Iterated
...

Как вы видите, код для стандартного хэша MD5 — 0. Теперь мы можем добавить это в нашу команду. Команда в настоящее время выглядит так:

hashcat -m 0 ...

На следующем шаге мы укажем режим атаки.

Указание режима атаки с помощью флага -a

На этом шаге вы узнаете, как установить режим атаки с помощью флага -a. Режим атаки сообщает Hashcat, какой метод использовать для взлома пароля.

Hashcat предлагает несколько режимов атаки, но наиболее распространенными являются:

  • 0: Straight (Атака по словарю) - Сравнивает хэши со списком слов.
  • 1: Combination (Комбинация) - Объединяет слова из двух разных словарей.
  • 3: Brute-force (Атака полным перебором / по маске) - Пробует все возможные комбинации символов на основе определенного шаблона (маски).

Для этой лаборатории мы выполним атаку Straight (по словарю), поэтому будем использовать режим атаки 0. Список всех режимов атаки вы можете найти в справочном меню.

Давайте снова используем grep, чтобы найти раздел "Attack-Modes":

hashcat --help | grep "Attack-Modes" -A 10

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

- [ Attack-Modes ] -

  ## | Mode
 ===+======
  0 | Straight
  1 | Combination
  3 | Brute-force
  6 | Hybrid dict + mask
  7 | Hybrid mask + dict

Теперь мы определили наш режим атаки. Добавим его в нашу команду, которая теперь выглядит так:

hashcat -m 0 -a 0 ...

Далее мы предоставим файл, содержащий хэш, который мы хотим взломать.

Указание файла с входным хэшем

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

Скрипт настройки для этой лаборатории уже создал файл с именем hashes.txt в вашей текущей директории (~/project). Этот файл содержит один хэш MD5.

Давайте посмотрим содержимое этого файла с помощью команды cat:

cat hashes.txt

Вы должны увидеть следующий вывод:

5f4dcc3b5aa765d61d8327deb882cf99

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

hashcat -m 0 -a 0 hashes.txt ...

Последний штрих — предоставить список слов для нашей атаки по словарю.

Указание входного списка слов или маски

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

Среда лаборатории включает простой список слов с именем wordlist.txt. Давайте рассмотрим его содержимое:

cat wordlist.txt

Вывод будет следующим:

test
hello
password
123456

Этот список слов будет использоваться Hashcat для проверки против хэша. Файл списка слов является последним аргументом в нашей команде.

Теперь соберем и выполним полную команду:

hashcat -m 0 -a 0 hashes.txt wordlist.txt

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

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 5f4dcc3b5aa765d61d8327deb882cf99
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   496.9 kH/s (0.00ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/4 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: test -> 123456
Hardware.Mon.#1..: Util: 99%
...

Строка Status...........: Cracked подтверждает успешное завершение. Чтобы увидеть взломанный пароль, вы можете снова выполнить ту же команду с флагом --show.

hashcat -m 0 -a 0 hashes.txt wordlist.txt --show

Вывод четко отобразит хэш и соответствующий ему пароль в открытом виде:

5f4dcc3b5aa765d61d8327deb882cf99:password

Поздравляем, вы успешно собрали и выполнили полную команду Hashcat!

Резюме

В этой лаборатории вы изучили основную структуру команд Hashcat, построив команду с нуля. Вы успешно взломали хэш MD5, используя атаку по словарю.

Теперь вы понимаете пять основных компонентов базовой команды Hashcat:

  1. Исполняемый файл: hashcat
  2. Тип хэша: Указывается с помощью -m (например, -m 0 для MD5).
  3. Режим атаки: Указывается с помощью -a (например, -a 0 для атаки по словарю).
  4. Файл хэшей: Файл, содержащий целевые хэши (например, hashes.txt).
  5. Список слов/Маска: Входные данные для атаки (например, wordlist.txt).

Окончательная структура команды, которую вы изучили, выглядит так: hashcat -m <тип_хэша> -a <режим_атаки> <файл_хэшей> <список_слов>. Эти знания обеспечивают прочную основу для изучения более продвинутых функций Hashcat.