Практические примеры использования Hashcat


Оглавление

1. Структура команды Hashcat

2. Примеры масок Hashcat

3. Часто используемые опции Hashcat

4. Извлечение хешей и их номера для взлома в Hashcat

5. Как в Hashcat взломать пароль от Wi-Fi

5.1 Захват рукопожатия Wi-Fi для взлома пароля

5.2 Извлечение хеша для взлома Wi-Fi

6. Взлом пароля архива ZIP

7. Взлом пароля архива RAR

8. Взлом пароля архива 7z

9. Взлом пароля MS Office: Word (файл .DOCX) и другие офисные файлы

10. Взлом пароля LibreOffice (файлы Wirter/.odt и другие)

11. Взлом пароля PDF

12. Взлом пароля KeePass и KeePassXC

13. Взлом пароля приватного ключа GPG

14. Взлом пароля приватного ключа OpenSSH (id_rsa)


При подготовке справочной статьи «Практика и примеры использования John the Ripper» возникла идея сделать аналогичную статью по Hashcat.

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

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

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


Структура команды Hashcat

В самом общем виде команда запуска Hashcat имеет вид (в ней символ | означает «ИЛИ»):

hashcat [ОПЦИИ]... ХЕШ|ФАЙЛ-С-ХЕШЕМ [СЛОВАРЬ|МАСКА|ДИРЕКТОРИЯ]...

В последующих командах ХЕШ, ФАЙЛ-С-ХЕШЕМ и hccapxfile будут обозначены как просто «ХЕШ» — помните, что это может быть как строка хеша, так и путь до файла, в котором сохранён хеш.

Общий вид команды для запуска атаки по словарю:

hashcat -m ТИП -a 0 ХЕШ СЛОВАРЬ

Если хеш помещён в файл, то команда:

hashcat -m ТИП -a 0 /ПУТЬ/ДО/ФАЙЛА/ХЕША /ПУТЬ/ДО/СЛОВАРЯ

Общий вид команды для запуска атаки по маске:

hashcat -m ТИП -a 3 ХЕШ 'МАСКА'

Если хеш помещён в файл, то команда:

hashcat -m ТИП -a 3 /ПУТЬ/ДО/ФАЙЛА/ХЕША 'МАСКА'

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

Примеры масок Hashcat

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

Пароли состоят из шести символов, каждый из которых является цифрой:

hashcat -m ТИП -a 3 ХЕШ '?d?d?d?d?d?d'

Пароли состоят из восьми символов, каждый из которых является цифрой:

hashcat -m ТИП -a 3 ХЕШ '?d?d?d?d?d?d?d?d'

Пароли состоят из шести символов и начинаются на «Pa», остальными символами являются цифры:

hashcat -m ТИП -a 3 ХЕШ 'Pa?d?d?d?d'

Пароли состоят из цифр и имеют длину от 1 до 4 символов:

hashcat -m ТИП -a 3 ХЕШ -i --increment-min=1 --increment-max=4 '?d?d?d?d'

Пароли состоят из цифр и имеют длину от 1 до 10 символов:

hashcat -m ТИП -a 3 ХЕШ -i --increment-min=1 --increment-max=10 '?d?d?d?d?d?d?d?d?d?d'

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

hashcat -m ТИП -a 3 ХЕШ '?l?l?l?l?l?l'

Пароли состоят из маленьких букв и имеют длину от 1 до 6 символов:


hashcat -m ТИП -a 3 ХЕШ -i --increment-min=1 --increment-max=6 '?l?l?l?l?l?l'

Пароли состоят из шести символов, каждый из которых является большой буквой:

hashcat -m ТИП -a 3 ХЕШ '?u?u?u?u?u?u'

Пароли состоят из шести символов, вначале всегда идёт фиксированная строка «No», затем заглавная буква, затем прописная буква и затем две цифры.

hashcat -m ТИП -a 3 ХЕШ 'No?u?l?d?d'

Пароли состоят из больших и маленьких букв и цифр, которые могут быть в любом месте, и имеют длину от 1 до 8 символов.

hashcat -m ТИП -a 3 ХЕШ -i --increment-min=1 --increment-max=8 -1 ?l?u?d '?1?1?1?1?1?1?1?1'

Часто используемые опции Hashcat

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

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

--force -D 1,2

При достижении видеокартой или ЦП определённой температуры, Hashcat прерывает работу. Вы можете установить температуру, при которой будет прерван брут-форс, уменьшив или увеличив значение по умолчанию (90℃). Слишком высокие значения вы используете на свой страх и риск!!!

--hwmon-temp-abort=100

Во время работы Hashcat если нажать кнопку s, то будет обновлена информация о текущем процессе взлома, то есть показан его статус. Вы можете включить автоматическое обновление статуса опцией —status, а опцией —status-timer вы можете настроить время автоматического обновления (например, —status-timer=1).

Опции, не связанные с брут-форсом

Опция -b запустит бенчмарк:

hashcat -b

Или:

hashcat -b --force -D 1,2

Командой вида

hashcat -m ТИП -b --force -D 1,2

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

hashcat -m 2500 -b --force -D 1,2

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

hashcat -I

Опцией —example-hashes вы можете вывести примеры всех хешей:


hashcat --example-hashes

Вы можете показать пример только нужного вам хеша, указав его номер опцией -m:

hashcat -m 400 --example-hashes
hashcat -m 9600 --example-hashes

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

Извлечение хешей и их номера для взлома в Hashcat

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

Общий вид команды для запуска атаки по словарю:

hashcat -m ТИП -a 0 ХЕШ СЛОВАРЬ

Общий вид команды для запуска атаки по маске:

hashcat -m ТИП -a 3 ХЕШ 'МАСКА'

Для извлечения хешей используются инструменты, которые поставляются с John the Ripper, которые установлены по умолчанию в Kali Linux и BlackArch.

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

В целом Hashcat более чувствительна к точному виду хеша, а инструменты генерации хеша для John the Ripper склонны добавлять лишние данные, например, имя файла. По этой причине сгенерированные хеши обычно необходимо чуть подправить, чтобы их смогла принять Hashcat для начала брут-форса.

Как в Hashcat взломать пароль от Wi-Fi

Захват рукопожатия Wi-Fi для взлома пароля

Здесь не будем останавливаться на основах тестирования безопасности беспроводных сетей Wi-Fi, поэтому если у вас пробелы в знаниях, то обратитесь к онлайн книге «Взлом Wi-Fi сетей с Kali Linux и BlackArch».

Посмотрим имя беспроводного интерфейса:

sudo iw dev

У меня это wlp0s20f0u1. Для автоматического сбора рукопожатий запустим команду вида:

sudo besside-ng ИНТЕРФЕЙС

В моём случае это:

sudo besside-ng wlp0s20f0u1

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

aircrack-ng wpa.cap

Извлечение хеша для взлома Wi-Fi

Если вы хотите взламывать сразу все рукопожатия, то выполните команду:

cap2hccapx wpa.cap wi-fi.hash

Утилита cap2hccapx входит в состав hashcat-utils.

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

В выводе сказано, что обнаружено 10 ТД.

Можно сохранить рукопожатие для определённой точки доступа, её нужно указать её имя. Чтобы сохранить рукопожатие только для определённой ТД, выполните команду вида:

cap2hccapx wpa.cap wi-fi.hash ИМЯ-ТД

Меня интересует ТД с именем FTTX772802, тогда в моём случае команда следующая:

cap2hccapx wpa.cap wi-fi.hash FTTX772802

Номер хеша: 2500

То есть для запуска атаки по словарю нужно выполнить команду:

hashcat -m 2500 -a 0 /ПУТЬ/ДО/wi-fi.hash /ПУТЬ/ДО/СЛОВАРЯ

Для запуска атаки по маске нужно выполнить команду:

hashcat -m 2500 -a 3 /ПУТЬ/ДО/wi-fi.hash 'МАСКА'

Пример удачного взлома:

hashcat -m 2500 -a 3 ~/wi-fi.hash 'Yss?l?u?u?d?l'

Взлом пароля архива ZIP

Для извлечения хеша выполните команду вида:

zip2john ФАЙЛ > zip.tmp

К примеру, путь до файла /mnt/disk_d/Share/test/file.zip, тогда команда следующая:

zip2john /mnt/disk_d/Share/test/file.zip > zip.tmp

Будет извлечён хеш в формате John, для Hashcat этот формат непригоден, поэтому выполним следующую команду:

cat zip.tmp | grep -E -o '(\$pkzip2\$.*\$/pkzip2\$)|(\$zip2\$.*\$/zip2\$)' > zip.hash

Она очистит хеш от ненужных строк и сохранит хеш в формате Hashcat в файл zip.hash.

Но и это ещё не всё — разновидностей ZIP архивов много. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл zip.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 20 символов хеша:

head -c 20 zip.hash
  • Если строка хеша начинается на:
$zip2$*0*3*0*

Значит это WinZip, номер хеша: 13600

  • Если строка начинается на:
$pkzip2$1*1*2*0*

Значит это PKZIP (Compressed), номер хеша: 17200


  • Если строка начинается на:
$pkzip2$1*1*2*0*

Значит это PKZIP (Uncompressed), номер хеша: 17210

ВНИМАНИЕ: у PKZIP (Compressed) и PKZIP (Uncompressed) ОДИНАКОВЫЕ начала хешей, я не знаю, как их можно различить. Единственный вариант — пробовать запускать команду hashcat с указанием типа хеша 17200, а затем 17210. При этом если вы указали тип хеша неправильно, то сразу будет показана ошибка. Пример ошибки:

Hashfile '/home/mial/zip.hash' on line 1 ($pkzip...7e95f2294c0fd53fd7fc53*$/pkzip2$): Hash contains unsupported compression type for current mode
No hashes loaded.
  • Если строка начинается на:
$pkzip2$3*1*1*0*8*24

Значит это PKZIP (Compressed Multi-File), номер хеша: 17220

  • Если строка начинается на:
$pkzip2$3*1*1*0*0*24

Значит это PKZIP (Mixed Multi-File), номер хеша: 17225

  • Если строка начинается на:
$pkzip2$8*1*1*0*8*24

Значит это PKZIP (Compressed Multi-File Checksum-Only), номер хеша: 17230

Взлом пароля архива RAR

Для извлечения хеша выполните команду вида:

rar2john ФАЙЛ > rar.tmp

К примеру, путь до файла /mnt/disk_d/Share/test/file.rar, тогда команда следующая:

rar2john /mnt/disk_d/Share/test/file.rar > rar.tmp

Будет извлечён хеш в формате John, для Hashcat этот формат непригоден, поэтому выполним следующую команду:

cat rar.tmp | grep -E -o '(\$RAR3\$[^:]+)|(\$rar5\$.*)' > rar.hash

Она очистит хеш от ненужных строк и сохранит хеш в формате Hashcat в файл rar.hash.

Но и это ещё не всё — имеется несколько версий RAR. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл rar.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 8 символов хеша:

head -c 8 rar.hash
  • Если строка хеша начинается на:
$RAR3$*0*

Значит это RAR3-hp, номер хеша: 12500

  • Если строка хеша начинается на:
$rar5$16$

Значит это RAR5, номер хеша: 13000

  • Если строка хеша начинается на:
$RAR3$*1*

Значит это RAR3-p (Uncompressed), номер хеша: 23700

  • Если строка хеша начинается на:
$RAR3$*1*

Значит это RAR3-p (Compressed), номер хеша: 23800

ВНИМАНИЕ: у RAR3-p (Uncompressed) и RAR3-p (Compressed) ОДИНАКОВЫЕ начала хешей, я не знаю, как их можно различить. Единственный вариант — пробовать запускать команду hashcat с указанием типа хеша 23700, а затем 23800. При этом если вы указали тип хеша неправильно, то сразу будет показана ошибка. Пример ошибки:

Hashfile '/home/mial/rar.hash' on line 1 ($RAR3$...91201eb0007c76714cbb328b2acfc*33): Salt-value exception
No hashes loaded.

Если вы получили ошибки об отсутствующих модулях, например:

/usr/share/hashcat/modules/module_23700.so: cannot open shared object file: No such file or directory

/usr/share/hashcat/modules/module_23800.so: cannot open shared object file: No such file or directory

То это означает, что ваша версия Hashcat ещё не поддерживает хеши с номерами 23700 и 23800 и вам нужно обновить программу до последней версии. В настоящее время эта поддержка присутствует только в бета версии Hashcat, которую вы можете скачать на официальном сайте: https://hashcat.net/beta/

Взлом пароля архива 7z

Для извлечения хеша выполните команду вида:

7z2john ФАЙЛ > 7z.tmp

Будет извлечён хеш в формате John, для Hashcat этот формат непригоден, поэтому выполним следующую команду:

cat 7z.tmp | grep -E -o '\$7z\$.*' > 7z.hash

Она очистит хеш от ненужных строк и сохранит хеш в формате Hashcat в файл 7z.hash.

Номер хеша: 11600

Взлом пароля MS Office: Word (файл .DOCX) и другие офисные файлы

Для извлечения хеша выполните команду вида:

office2john ФАЙЛ > office.tmp

Для подготовки хеша выполните команду:

cat office.tmp | grep -E -o '\$office\$.*' > office.hash

Имеется несколько версий офисных документов MS Office. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл office.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 14 символов хеша:

head -c 14 office.hash
  • Если строка хеша начинается на:
$office$*2007*

Значит это MS Office 2007, номер хеша: 9400

  • Если строка хеша начинается на:
$office$*2010*

Значит это MS Office 2010, номер хеша: 9500

Если строка хеша начинается на:

$office$*2013*

Значит это MS Office 2013, номер хеша: 9600

Пример удачного взлома пароля файла Word:

Взлом пароля LibreOffice (файлы Wirter/.odt и другие)

Для извлечения хеша выполните команду вида:

libreoffice2john ФАЙЛ > odf.tmp

Для подготовки хеша выполните команду:

cat odf.tmp | grep -E -o '\$odf\$[^:]+' > odf.hash

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

head -c 10 odf.hash
  • Если строка хеша начинается на:
$odf$*1*1*

Значит это Open Document Format (ODF) 1.2 (SHA-256, AES), номер хеша: 18400

  • Если строка хеша начинается на:
$odf$*0*0*

Значит это Open Document Format (ODF) 1.1 (SHA-1, Blowfish), номер хеша: 18600

Взлом пароля PDF

Для извлечения хеша выполните команду вида:

pdf2john ФАЙЛ > pdf.tmp

Для подготовки хеша выполните команду:

cat pdf.tmp | grep -E -o '\$pdf\$.*' > pdf.hash

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

head -c 13 pdf.hash
  • Если строка хеша начинается на:
$pdf$1*2*40*-

Значит это PDF 1.1 — 1.3 (Acrobat 2 — 4), номер хеша: 10400

  • Если строка хеша начинается на:
$pdf$1*2*40*-

Значит это PDF 1.1 — 1.3 (Acrobat 2 — 4), collider #1, номер хеша: 10410

  • Если строка хеша начинается на:
$pdf$1*2*40*-

Значит это PDF 1.1 — 1.3 (Acrobat 2 — 4), collider #2, номер хеша: 10420

ВНИМАНИЕ: у всех перечисленных типов файлов ОДИНАКОВЫЕ начала хешей, я не знаю, как их можно различить. Единственный вариант — пробовать запускать команду hashcat с указанием типа хеша 10400, а затем 10410 и, наконец, 10420. При этом если вы указали тип хеша неправильно, то сразу будет показана ошибка. Пример ошибки:

Hashfile '/home/mial/pdf.hash' on line 1 ($pdf$4...c5ba427b1b9102da468e77127f1e69d6): Separator unmatched
No hashes loaded.
  • Если строка хеша начинается на:
$pdf$2*3*128*

Значит это PDF 1.4 — 1.6 (Acrobat 5 — 8), номер хеша: 10500

  • Если строка хеша начинается на:
$pdf$5*5*256*

Значит это PDF 1.7 Level 3 (Acrobat 9), номер хеша: 10600

  • Если строка хеша начинается на:
$pdf$5*6*256*

Значит это PDF 1.7 Level 8 (Acrobat 10 — 11), номер хеша: 10700

  • Если строка хеша начинается на:
$pdf$4*4*128*

Значит это PDF документ, созданный с помощью MS Word, для него подходит номер хеша: 10500

Взлом пароля KeePass и KeePassXC

Для извлечения хеша выполните команду вида:

keepass2john ФАЙЛ > keepass.tmp

В качестве ФАЙЛА должна быть база данных паролей .kdbx.

Или если у вас есть файл ключей, то выполните команду вида:

keepass2john -k ФАЙЛ-КЛЮЧЕЙ БАЗА-ДАННЫХ.kdbx > keepass.tmp

Вы можете увидеть сообщение:

! Passwords.kdbx : File version '40000' is currently not supported!

Оно означает, что в ФАЙЛЕ Passwords.kdbx используется база данных KDBX версии 4.0, а программа keepass2john поддерживает только KDBX версию KDBX 3.1. То есть в настоящее время невозможно взломать пароль KeePass с базой данных KDBX версии 4.0 в John the Ripper.

Смотрите также «Менеджеры паролей KeePass и KeePassXC».

Для подготовки хеша выполните команду:

cat keepass.tmp | grep -E -o '\$keepass\$[^:]+' > keepass.hash

Номер хеша: 13400

Взлом пароля приватного ключа GPG

В настоящее время взлом GPG в Hashcat не поддерживается (но поддерживается в John the Ripper). Когда будет добавлена поддержка, хеш приватного ключа нужно извлечь следующим образом.

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

gpg --export-secret-key -a "ИМЯ ФАМИЛИЯ" > private.key

Смотрите также «Как пользоваться gpg: шифрование, расшифровка файлов и сообщений, подпись файлов и проверка подписи, управление ключами».

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

gpg2john private.key > gpg.tmp

Для подготовки хеша выполните команду:

cat gpg.tmp | grep -E -o '\$gpg\$[^:]+' > gpg.hash

Взлом пароля приватного ключа OpenSSH (id_rsa)

Для извлечения хеша выполните команду вида:

python2 ./ssh2john.py ФАЙЛ > ssh.tmp

Для подготовки хеша выполните команду:

cat ssh.tmp | grep -E -o '\$sshng\$[^:]+' > ssh.hash

Обратите внимание, что для работы ssh2john необходим Python 2. Если вы используете Python 3, то вы получите следующую ошибку:

/usr/bin/ssh2john:103: DeprecationWarning: decodestring() is a deprecated alias since Python 3.1, use decodebytes()
  data = base64.decodestring(data)
Traceback (most recent call last):
  File "/usr/bin/ssh2john", line 193, in <module>
    read_private_key(filename)
  File "/usr/bin/ssh2john", line 153, in read_private_key
    saltstr = data[salt_offset:salt_offset+salt_length].encode("hex")
AttributeError: 'bytes' object has no attribute 'encode'

В качестве ФАЙЛА нужно указать приватный ключ SSH, путь до него может быть ~/.ssh/id_rsa.

Этот ключ генерируется командой:

ssh-keygen -t rsa

Подробности смотрите в статье «SSH (ч.4): Создание и настройка ключей OpenSSH».

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

head -c 11 ssh.hash
  • Если строка хеша начинается на:
$sshng$0$8$

Значит это RSA/DSA/EC/OpenSSH Private Keys ($0$), номер хеша: 22911

  • Если строка хеша начинается на:
$sshng$6$8$

Значит это RSA/DSA/EC/OpenSSH Private Keys ($6$), номер хеша: 22921

  • Если строка хеша начинается на:
$sshng$1$16

Значит это RSA/DSA/EC/OpenSSH Private Keys ($1, $3$), номер хеша: 22931

  • Если строка хеша начинается на:
$sshng$4$16

Значит это RSA/DSA/EC/OpenSSH Private Keys ($4$), номер хеша: 22941

  • Если строка хеша начинается на:
$sshng$5$16

Значит это RSA/DSA/EC/OpenSSH Private Keys ($5$), номер хеша: 22951

  • Если строка хеша начинается на:
$sshng$6$16$

Значит это ????????????, номер хеша: ???????? [видимо, ещё не реализовано]

Если вы получили ошибки об отсутствующих модулях, например:

/usr/share/hashcat/modules/module_22951.so: cannot open shared object file: No such file or directory

То это означает, что ваша версия Hashcat ещё не поддерживает хеши с номерами 22951, 22941 и прочими и вам нужно обновить программу до последней версии. В настоящее время эта поддержка присутствует только в бета версии Hashcat, которую вы можете скачать на официальном сайте: https://hashcat.net/beta/


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *