Как взломать пароль от Wi-Fi, ZIP, RAR, Zz, PDF с помощью Hashcat
Вся информация на канале предоставлена исключительно в ознакомительных/образовательных целях.
Те, кто регулярно пользуются Hashcat, конечно, смогут на вскидку составить нужную маску и даже вспомнить номер часто используемого типа хеша. Но вспомнить название скрипта для извлечения хеша, или номер реже используемого типа хеша, или нечастую опцию — уже не так просто. Конечно же можно углубиться в обширную документацию. Но, во-первых, хорошо иметь под рукой шпаргалку вроде той, которую вы читаете. А во-вторых, официальная справка не содержит информацию о программах по извлечению хешей.
В общем, надеюсь справочная страница, которую вы читаете, окажется вам полезной. Но данная статья не заменяет очень многочисленный учебный материал по Hashcat. Поэтому настоятельно рекомендуется эту статью использовать как шпаргалку.
Скачать последнюю версиюHashcat (кликабельно)
Оглавление
3. Часто используемые опции Hashcat
4. Извлечение хешей и их номера для взлома в Hashcat
5. Как в Hashcat взломать пароль от Wi-Fi
5.1 Захват рукопожатия Wi-Fi для взлома пароля
5.2 Извлечение хеша для взлома Wi-Fi
9. Взлом пароля MS Office: Word (файл .DOCX) и другие офисные файлы
10. Взлом пароля LibreOffice (файлы Wirter/.odt и другие)
12. Взлом пароля KeePass и KeePassXC
13. Взлом пароля приватного ключа GPG
14. Взлом пароля приватного ключа OpenSSH (id_rsa)
Структура команды 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 использует только видеокарты и не использует возможности центрального процессора для выполнения вычислений, даже если установлены необходимые драйверы и среда выполнения. Вы можете изменить это поведение, добавив следующие две опции:
При достижении видеокартой или ЦП определённой температуры, Hashcat прерывает работу. Вы можете установить температуру, при которой будет прерван брут-форс, уменьшив или увеличив значение по умолчанию (90℃). Слишком высокие значения вы используете на свой страх и риск!!!
Во время работы Hashcat если нажать кнопку s, то будет обновлена информация о текущем процессе взлома, то есть показан его статус. Вы можете включить автоматическое обновление статуса опцией --status, а опцией --status-timer вы можете настроить время автоматического обновления (например, --status-timer=1).
Опции, не связанные с брут-форсом
|hashcat -m ТИП -b --force -D 1,2
можно запустить бенчмарк только для определённого алгоритма. Вы можете это использовать, если хотите знать, с какой скоростью на вашем компьютере будет взламываться пароль документа Word или архива. Например, бенчмарк скорости взлома пароля Wi-Fi.
|hashcat -m 2500 -b --force -D 1,2
Опция -I покажет информацию об обнаруженных устройствах, на которых возможно делать вычисления для брут-форса:
Опцией --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».
Посмотрим имя беспроводного интерфейса:
У меня это wlp0s20f0u1. Для автоматического сбора рукопожатий запустим команду вида:
Чтобы просмотреть, какие рукопожатия были захвачены, выполним команду:
Извлечение хеша для взлома 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
То есть для запуска атаки по словарю нужно выполнить команду:
|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
Для извлечения хеша выполните команду вида:
К примеру, путь до файла /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 символов хеша:
Включить звук
Значит это WinZip, номер хеша: 13600
Значит это PKZIP (Compressed), номер хеша: 17200
Значит это 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
Значит это PKZIP (Compressed Multi-File), номер хеша: 17220
Значит это PKZIP (Mixed Multi-File), номер хеша: 17225
Значит это PKZIP (Compressed Multi-File Checksum-Only), номер хеша: 17230
Взлом пароля архива RAR
Для извлечения хеша выполните команду вида:
К примеру, путь до файла /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 символов хеша:
Значит это RAR3-hp, номер хеша: 12500
Значит это RAR5, номер хеша: 13000
Значит это RAR3-p (Uncompressed), номер хеша: 23700
Значит это 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
Если вы получили ошибки об отсутствующих модулях, например:
|/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
Для извлечения хеша выполните команду вида:
Будет извлечён хеш в формате John, для Hashcat этот формат непригоден, поэтому выполним следующую команду:
|cat
7z.tmp | grep
-E -o '\$7z\$.*'
> 7z.hash
Она очистит хеш от ненужных строк и сохранит хеш в формате Hashcat в файл 7z.hash.
Взлом пароля MS Office: Word (файл .DOCX) и другие офисные файлы
Для извлечения хеша выполните команду вида:
|office2john ФАЙЛ > office.tmp
Для подготовки хеша выполните команду:
|cat
office.tmp | grep
-E -o '\$office\$.*'
> office.hash
Имеется несколько версий офисных документов MS Office. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл office.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 14 символов хеша:
Значит это MS Office 2007, номер хеша: 9400
Значит это MS Office 2010, номер хеша: 9500
Если строка хеша начинается на:
Значит это MS Office 2013, номер хеша: 9600
Пример удачного взлома пароля файла Word:
Взлом пароля LibreOffice (файлы Wirter/.odt и другие)
Для извлечения хеша выполните команду вида:
| libreoffice2john ФАЙЛ > odf.tmp
Для подготовки хеша выполните команду:
| cat
odf.tmp | grep
-E -o '\$odf\$[^:]+'
> odf.hash
Имеется несколько версий офисных документов LibreOffice. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл odf.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 10 символов хеша:
Значит это Open Document Format (ODF) 1.2 (SHA-256, AES), номер хеша: 18400
Значит это Open Document Format (ODF) 1.1 (SHA-1, Blowfish), номер хеша: 18600
Взлом пароля PDF
Для извлечения хеша выполните команду вида:
Для подготовки хеша выполните команду:
| cat
pdf.tmp | grep
-E -o '\$pdf\$.*'
> pdf.hash
Имеется несколько версий PDF файлов. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл pdf.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 13 символов хеша:
Значит это PDF 1.1 - 1.3 (Acrobat 2 - 4), номер хеша: 10400
Значит это PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1, номер хеша: 10410
Значит это 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
Значит это PDF 1.4 - 1.6 (Acrobat 5 - 8), номер хеша: 10500
Значит это PDF 1.7 Level 3 (Acrobat 9), номер хеша: 10600
Значит это PDF 1.7 Level 8 (Acrobat 10 - 11), номер хеша: 10700
Значит это 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
Взлом пароля приватного ключа 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>
| 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 (ч.4): Создание и настройка ключей OpenSSH».
Имеется несколько версий файлов приватных ключей OpenSSH. Поэтому нам нужно правильно определить тип вашего хеша. Вы можете открыть файл ssh.hash любым текстовым редактором или выполните следующую команду, чтобы вывести первые 11 символов хеша:
Значит это RSA/DSA/EC/OpenSSH Private Keys ($0$), номер хеша: 22911
Значит это RSA/DSA/EC/OpenSSH Private Keys ($6$), номер хеша: 22921
Значит это RSA/DSA/EC/OpenSSH Private Keys ($1, $3$), номер хеша: 22931
Значит это RSA/DSA/EC/OpenSSH Private Keys ($4$), номер хеша: 22941
Значит это RSA/DSA/EC/OpenSSH Private Keys ($5$), номер хеша: 22951
Значит это ????????????, номер хеша: ???????? [видимо, ещё не реализовано]
Если вы получили ошибки об отсутствующих модулях, например:
| /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/