- Автор темы
- #1
Существует несколько способов получения этих хешей, таких как инъекция .dll в системах Windows или захват хеша при его передаче, например, в случае взлома беспроводного WPA2.
Если нам удастся перехватить хеш, то следующим шагом будет определение эффективного способа его взломать. И для этих задач есть множество инструментов. Некоторые из них мы рассматривали в других статьях, но hashcat уникален по своей конструкции и универсальности, поэтому давайте изучим, как он работает.
Запустите Kali и откройте Hashcat
Давайте запустим Kali и откроем Hashcat. Для этого перейдите в Applications -> Kali Linux -> Password Attacks -> Offline Attacks -> hashcat, как показано на скриншоте ниже.
Как только мы кликнем в меню на hashcat, то открывается вот такой экран справки.
В верхней части экрана вы можете увидеть подсказку базового синтаксиса hashcat:
kali> hashcat options hashfile mask|wordfiles|directories
Под этой подсказкой основного синтаксиса команды мы видим описание некоторых параметров hashcat. Самые важные из них это: -m (тип хеша) и -a (режим атаки). Как правило, нам нужно будет использовать оба параметра для большинства случаев взлома паролей с помощью hashcat.
Дополнительные параметры
Если мы посмотрим немного ниже файл справки по hashcat, то увидим еще больше параметров. Первые два — ключевые параметры hashcat.
Первый параметр — rules (правила), позволяют hashcat’у применять специально разработанные правила для использования в нашем вордлисте. Эти правила применяют к нему правила о капитализации символов, использовании специальных символов, комбинаций слов, могут добавлять в начало или в конец слов числа и т.д. Каждое из этих правил может помочь нам взламывать пароли, которые в целях избегания атак по словарю становятся все более сложными.
Следующий параметр показывает нам пользовательские (кастомные) наборы символов. Это позволяет нам установить определенный набор символов, который мы хотели бы использовать для взлома паролей. Если мы знаем политику паролей компании, то можем задать определенный набор символов в целях соответствия их политике, что безусловно может ускорить взлом. Например, если компания разрешает использовать в пароле только цифры, то вы можете пытаться взламывать хеши только с набором символов, состоящих из цифр. Такие типы паролей ОЧЕНЬ легко взламываются.
Следующий экран отображает не очень понятные параметры, включая тип выходного файла, режим отладки и встроенные наборы символов.
Наконец, мы должны выбрать тип хеша, который мы пытаемся взломать. Hashcat дает нам множество параметров. Когда мы будем готовы взломать хеш, нужно будет указать в нашей команде, с каким типом хеша мы хотим работать, указав число, связанное с определенным типом хеширования. Здесь мы видим список некоторых типов хешей, с которыми может работать hashcat.
Выберите вордлист
В этой статье мы будем использовать простую атаку по словарю для некоторых хешей, используемых в Linux. Для этого нам нужен вордлист, с которым можно работать. В Интернете доступны тысячи вордлистов, но у Kali, как вы знаете, есть много собственных встроенных вордлистов, так что давайте попробуем использовать один из них.
Чтобы найти встроенные в Kali вордлисты, мы должны ввести в терминале:
kali > locate wordlist
Когда мы выполним эту команду, то увидим, что нам доступны около десятка вордлистов.
Мы будем использовать вордлист, сделанный для sqlmap, который содержит более миллиона обычных и гибридных слов.
Получите хеш
На следующем шаге нам нужно перехватить хеши нашей системы. Если мы вошли в систему как root, то можем видеть и использовать эти хеши. В Linux хеши хранятся в файле /etc/shadow, поэтому, если мы набираем в консоли:
kali > tail /etc/shadow
то видим shadow файл с хешами, как показано на скриншоте ниже.
Затем нам нужно знать, какой тип хеширования использует система. Чтобы узнать какой в Linux используется тип шифрования, мы должны перейти к /etc/login.defs. Откроем этот файл, набрав:
kali > more /etc/login.defs
Когда мы прокрутим вниз около 85% всего файла, то увидим, что Kali использует шифрование SHA512. Это важно, поскольку нам нужно будет сообщить hashcat эту информацию.
Взлом хешей
Теперь, когда мы знаем основы hashcat, где расположены хеши и тип используемого шифрования, мы готовы к взлому хешей.
Давайте предварительно скопируем эти хеши в отдельный файл и назовем его hash.lst.
kali > cp /etc/shadow hash.lst
Теперь убедимся, что они скопировались нормально. Проверим это, набрав:
more hash.lst
Как мы видим, хеши действительно были скопированы в файл hash.lst.
Для подготовки этого файла к взлому, нам нужно удалить из него всю лишнюю информацию, кроме самих хешей. Файл /etc/shadow содержит имя пользователя, затем хеш, созданный с добавлением криптографической соли, а затем информацию о применяемой политике пользователя. Нам нужно удалить всю эту информацию, оставив только хеш.
Мы видим, что этот файл начинается с имени пользователя, то есть «user1», «user2» и т.д. Откройте этот файл в своем любимом текстовом редакторе (vim, vi, leafpad) и удалите имя пользователя и следующее за ним двоеточие. Затем перейдите в конец строки и удалите информацию после хеша, которая начинается с двоеточия (:). У нас получился файл только с хешами и больше ни с чем.
На последнем этапе мы, наконец, можем начать взламывать эти хеши. Вот команда, которую мы использовали.
kali > hashcat -m 1800 -a 0 -o cracked.txt --remove hash.lst /usr/share/sqlmap/txt/wordlist.txt
Как только процесс взлома начнется, мы можем нажать , чтобы получить информацию о том, как проходит процесс. Когда hashcat завершит свою работу, то вы увидите экран, как показано на скриншоте ниже, где hashcat сообщает, что он восстановил все хеши после 9:47:16 часов работы.
Теперь нужно открыть файл cracked.txt, и просмотреть наши взломанные пароли!
Hashcat лучший в мире инструмент для взлома паролей, поэтому найдите время, чтобы узнать о нем больше.
Создание вордлиста с Crunch
При использовании различных способов взлома паролей мы часто применяем вордлисты (список слов), по которым соответствующие программы перебирают потенциальные пароли со скоростью тысяч паролей в секунду. Это часто называют атакой по словарю, хотя в принципе нам не нужно полагаться исключительно на словарные слова. Такие словари могут содержать любую комбинацию символов и слов, подобранных с целью взлома сложных паролей в оффлайн-режиме.
Иногда есть признаки того, что наша цель выбрала в качестве пароля или его части что-то, касающееся его лично, и что мы могли бы запросто узнать, например, имя подруги, соседа, друга. Это могут быть их имена, имена детей, домашних животных, день рождения или профессия. Мы также можем узнать политику паролей нужной нам организации (например, минимум 8 символов, прописные и строчные буквы и т.д.).
В этих случаях мы можем сгенерировать пользовательский (кастомный) вордлист, который будет отражать наше знание цели или политики паролей в организации.
В Kali Linux имеется встроенный инструмент под названием «crunch», создающий собственные вордлисты для взлома паролей, которые можно использовать с такими инструментами, как Hashcat, Cain и Abel, John the Ripper, Aircrack-ng и другие. Такой вордлист, если мы сделаем его правильно, поможет нам сэкономить часы или даже дни на взломе паролей.
Давайте приступим к изучению Crunch и создадим вордлисты, которые будем использовать для взлома паролей при помощи какого-нибудь любимого инструмента.
Запустите Kali и откройте Crunch
Начнем с того, что запустим Kali и откроем Crunch. Зайдите в Applications -> Kali Linux -> Password Attacks -> Offline Attacks -> crunch.
Это откроет crunch, как показано на скриншоте ниже.
В отличие от многих других хакерских приложений, Crunch не дает нам много информации на экране после своего запуска. Мы думаем это происходит из-за того, что Crunch, хоть и относительно простая программа, имеет так много различных сложных опций, что разработчик решил большую их часть оставить в файлах справки.
Синтаксис Crunch
Основной синтаксис Crunch выглядит следующим образом:
kali> crunch max -t -o <имя выходного файла>
Рассмотрим, что означает вышеприведенный синтаксис
Файл справки Crunch
Давайте почитаем файл справки Crunch. Для этого наберите в консоли
kali > man crunch
Эта команда должна открыть страницу файла справки Crunch, как показано на скриншоте ниже. Разработчики Crunch собрали в этом файле довольно много информации о том, как извлечь максимальную выгоду из Crunch.
Если мы немного пролистаем страницы вниз, то мы перейдем вот на эту страницу. Обратите внимание, что внизу он говорит нам, что мы находимся на строке 70.
Вверху мы видим ключ -f. Этот ключ (или параметр) позволяет нам выбрать набор символов, который мы хотим использовать для генерации нашего вордлиста. Синтаксис:
-f /полный/путь/charset.lst <название_набора_символов>
Здесь мы сообщаем Crunch полный путь до charset.lst, а затем указываем название конкретного набора символов из этого списка. В Kali, charset.lst находится по адресу:
/usr/share/rainbowcrack/charset.lst
Создайте несколько простых вордлистов
Начнем с создания простых вордлистов для взлома пароля. Допустим, мы знаем, что у компании есть пароли от 4 до 8 символов. Мы можем генерировать все возможные варианты при помощи Crunch, набрав в консоли:
kali> crunch 4 8
Где первое число (4) — самая маленькая длина слова, а вторая (8) — самая большая длина слова.
Когда мы выполняем эту команду, Crunch оценивает, насколько большим будет файл (1812 ГБ), а затем начинает генерировать список.
А что, если бы мы знали, что цель всегда использует пароли длиной от 6 до 8 символов? Тогда мы могли бы сгенерировать полный список всех возможных паролей, отвечающих этим критериям, и записать их в файл, находящийся в корневом каталоге пользователя с именем numericwordlist.lst. Для этого нужно выполнить в консоли следующую команду:
kali> crunch 6 8 1234567890 -o /root/numericwordlist.lst
А что если мы знаем, что день рождения цели 28 июля и что она, вероятно, может использовать эту дату (а люди часто используют даты рождения в своих паролях, чтобы их было легче запомнить) в конце своего десятизначного пароля? В этом случае мы можем сгенерировать все возможные десятисимвольные пароли, которые заканчиваются 2807, а затем записать его в файл в корневом каталоге пользователя с именем birthdaywordlist.lst, набрав:
kali> crunch 10 10 -t @@@@@@ 2807 -o /root/birthdaywordlist.lst
Знак @ используется для обозначения шаблона всех возможных вариантов, в то время как литералы «2807» представляют собой фиксированные значения.
Создание сложных вордлистов
Одна из интересных возможностей Crunch — это возможность выбора конкретного набора символов или создание собственного набора символов для генерации списка паролей. Если мы знаем вероятный набор символов, который использует цель для своего пароля, то мы можем выбрать определенный набор символов для генерации нашего списка паролей. Мы можем посмотреть на доступный список наборов символов:
/usr/share/rainbowcrack/charset.txt
Теперь, если мы знаем, что наша цель использует восьмизначный пароль, который содержит только буквы, то мы можем сгенерировать список всех возможных паролей с помощью команды:
kali> crunch 8 8 -f /usr/share/rainbowcrack/charset.txt mixalpha -o /root/alphawordlist.lst
Это сгенерирует все 8-значные пароли, которые используют только буквы (без номеров или специальных символов) и сохранит их в файле alphawordlist.lst в корневом каталоге пользователя.
Заключение
Когда мы взламываем неизвестные пароли, то у нас есть несколько способов взлома. К ним относятся атаки по словарю, использование радужных таблиц, брутфорс и другие. Если мы знаем параметры пароля или знаем что-то о самой цели и ее возможных паролях (день рождения, имена домашних животных, супруга и т.д.), то Crunch может быть очень полезным инструментом для генерации таких конкретных вордлистов, которые очень удобно использовать в атаке по словарю.
Если нам удастся перехватить хеш, то следующим шагом будет определение эффективного способа его взломать. И для этих задач есть множество инструментов. Некоторые из них мы рассматривали в других статьях, но hashcat уникален по своей конструкции и универсальности, поэтому давайте изучим, как он работает.
Запустите Kali и откройте Hashcat
Давайте запустим Kali и откроем Hashcat. Для этого перейдите в Applications -> Kali Linux -> Password Attacks -> Offline Attacks -> hashcat, как показано на скриншоте ниже.
Как только мы кликнем в меню на hashcat, то открывается вот такой экран справки.
В верхней части экрана вы можете увидеть подсказку базового синтаксиса hashcat:
kali> hashcat options hashfile mask|wordfiles|directories
Под этой подсказкой основного синтаксиса команды мы видим описание некоторых параметров hashcat. Самые важные из них это: -m (тип хеша) и -a (режим атаки). Как правило, нам нужно будет использовать оба параметра для большинства случаев взлома паролей с помощью hashcat.
Дополнительные параметры
Если мы посмотрим немного ниже файл справки по hashcat, то увидим еще больше параметров. Первые два — ключевые параметры hashcat.
Первый параметр — rules (правила), позволяют hashcat’у применять специально разработанные правила для использования в нашем вордлисте. Эти правила применяют к нему правила о капитализации символов, использовании специальных символов, комбинаций слов, могут добавлять в начало или в конец слов числа и т.д. Каждое из этих правил может помочь нам взламывать пароли, которые в целях избегания атак по словарю становятся все более сложными.
Следующий параметр показывает нам пользовательские (кастомные) наборы символов. Это позволяет нам установить определенный набор символов, который мы хотели бы использовать для взлома паролей. Если мы знаем политику паролей компании, то можем задать определенный набор символов в целях соответствия их политике, что безусловно может ускорить взлом. Например, если компания разрешает использовать в пароле только цифры, то вы можете пытаться взламывать хеши только с набором символов, состоящих из цифр. Такие типы паролей ОЧЕНЬ легко взламываются.
Следующий экран отображает не очень понятные параметры, включая тип выходного файла, режим отладки и встроенные наборы символов.
Наконец, мы должны выбрать тип хеша, который мы пытаемся взломать. Hashcat дает нам множество параметров. Когда мы будем готовы взломать хеш, нужно будет указать в нашей команде, с каким типом хеша мы хотим работать, указав число, связанное с определенным типом хеширования. Здесь мы видим список некоторых типов хешей, с которыми может работать hashcat.
Выберите вордлист
В этой статье мы будем использовать простую атаку по словарю для некоторых хешей, используемых в Linux. Для этого нам нужен вордлист, с которым можно работать. В Интернете доступны тысячи вордлистов, но у Kali, как вы знаете, есть много собственных встроенных вордлистов, так что давайте попробуем использовать один из них.
Чтобы найти встроенные в Kali вордлисты, мы должны ввести в терминале:
kali > locate wordlist
Когда мы выполним эту команду, то увидим, что нам доступны около десятка вордлистов.
Мы будем использовать вордлист, сделанный для sqlmap, который содержит более миллиона обычных и гибридных слов.
Получите хеш
На следующем шаге нам нужно перехватить хеши нашей системы. Если мы вошли в систему как root, то можем видеть и использовать эти хеши. В Linux хеши хранятся в файле /etc/shadow, поэтому, если мы набираем в консоли:
kali > tail /etc/shadow
то видим shadow файл с хешами, как показано на скриншоте ниже.
Затем нам нужно знать, какой тип хеширования использует система. Чтобы узнать какой в Linux используется тип шифрования, мы должны перейти к /etc/login.defs. Откроем этот файл, набрав:
kali > more /etc/login.defs
Когда мы прокрутим вниз около 85% всего файла, то увидим, что Kali использует шифрование SHA512. Это важно, поскольку нам нужно будет сообщить hashcat эту информацию.
Взлом хешей
Теперь, когда мы знаем основы hashcat, где расположены хеши и тип используемого шифрования, мы готовы к взлому хешей.
Давайте предварительно скопируем эти хеши в отдельный файл и назовем его hash.lst.
kali > cp /etc/shadow hash.lst
Теперь убедимся, что они скопировались нормально. Проверим это, набрав:
more hash.lst
Как мы видим, хеши действительно были скопированы в файл hash.lst.
Для подготовки этого файла к взлому, нам нужно удалить из него всю лишнюю информацию, кроме самих хешей. Файл /etc/shadow содержит имя пользователя, затем хеш, созданный с добавлением криптографической соли, а затем информацию о применяемой политике пользователя. Нам нужно удалить всю эту информацию, оставив только хеш.
Мы видим, что этот файл начинается с имени пользователя, то есть «user1», «user2» и т.д. Откройте этот файл в своем любимом текстовом редакторе (vim, vi, leafpad) и удалите имя пользователя и следующее за ним двоеточие. Затем перейдите в конец строки и удалите информацию после хеша, которая начинается с двоеточия (:). У нас получился файл только с хешами и больше ни с чем.
На последнем этапе мы, наконец, можем начать взламывать эти хеши. Вот команда, которую мы использовали.
kali > hashcat -m 1800 -a 0 -o cracked.txt --remove hash.lst /usr/share/sqlmap/txt/wordlist.txt
- -m 1800 — обозначает тип хеша, который мы взламываем (SHA-512)
- -a 0 — означает атаку по словарю
- -o cracked.txt — это выходной файл для взломанных паролей
- —remove — сообщает hashcat удалить хеш после того, как он был взломан
- hash.lst — наш входной файл хешей
- /usr/share/sqlmap/txt/wordlist.txt — это абсолютный путь к нашему вордлисту для использования с этой атакой по словарю
Как только процесс взлома начнется, мы можем нажать , чтобы получить информацию о том, как проходит процесс. Когда hashcat завершит свою работу, то вы увидите экран, как показано на скриншоте ниже, где hashcat сообщает, что он восстановил все хеши после 9:47:16 часов работы.
Теперь нужно открыть файл cracked.txt, и просмотреть наши взломанные пароли!
Hashcat лучший в мире инструмент для взлома паролей, поэтому найдите время, чтобы узнать о нем больше.
Создание вордлиста с Crunch
При использовании различных способов взлома паролей мы часто применяем вордлисты (список слов), по которым соответствующие программы перебирают потенциальные пароли со скоростью тысяч паролей в секунду. Это часто называют атакой по словарю, хотя в принципе нам не нужно полагаться исключительно на словарные слова. Такие словари могут содержать любую комбинацию символов и слов, подобранных с целью взлома сложных паролей в оффлайн-режиме.
Иногда есть признаки того, что наша цель выбрала в качестве пароля или его части что-то, касающееся его лично, и что мы могли бы запросто узнать, например, имя подруги, соседа, друга. Это могут быть их имена, имена детей, домашних животных, день рождения или профессия. Мы также можем узнать политику паролей нужной нам организации (например, минимум 8 символов, прописные и строчные буквы и т.д.).
В этих случаях мы можем сгенерировать пользовательский (кастомный) вордлист, который будет отражать наше знание цели или политики паролей в организации.
В Kali Linux имеется встроенный инструмент под названием «crunch», создающий собственные вордлисты для взлома паролей, которые можно использовать с такими инструментами, как Hashcat, Cain и Abel, John the Ripper, Aircrack-ng и другие. Такой вордлист, если мы сделаем его правильно, поможет нам сэкономить часы или даже дни на взломе паролей.
Давайте приступим к изучению Crunch и создадим вордлисты, которые будем использовать для взлома паролей при помощи какого-нибудь любимого инструмента.
Запустите Kali и откройте Crunch
Начнем с того, что запустим Kali и откроем Crunch. Зайдите в Applications -> Kali Linux -> Password Attacks -> Offline Attacks -> crunch.
Это откроет crunch, как показано на скриншоте ниже.
В отличие от многих других хакерских приложений, Crunch не дает нам много информации на экране после своего запуска. Мы думаем это происходит из-за того, что Crunch, хоть и относительно простая программа, имеет так много различных сложных опций, что разработчик решил большую их часть оставить в файлах справки.
Синтаксис Crunch
Основной синтаксис Crunch выглядит следующим образом:
kali> crunch max -t -o <имя выходного файла>
Рассмотрим, что означает вышеприведенный синтаксис
- min — минимальная длина пароля.
- max — максимальная длина пароля.
- characterset — набор символов, который будет использоваться при генерации паролей.
- -t — шаблон сгенерированных паролей. Например, если вы знаете, что день рождения цели был 2807 (28 июля), и вы подозреваете, что она использует свой день рождения в пароле (а люди часто так делают), то вы можете создать список паролей, которые заканчиваются на 2807, указав Crunch такой шаблон @@@ @@@@ 2807. Это слово сгенерирует пароли длиной до 11 символов (7 переменных и 4 фиксированных), которые будут оканчиваться на 2807.
- -o — тот файл, в который вы хотите записать вордлист.
Файл справки Crunch
Давайте почитаем файл справки Crunch. Для этого наберите в консоли
kali > man crunch
Эта команда должна открыть страницу файла справки Crunch, как показано на скриншоте ниже. Разработчики Crunch собрали в этом файле довольно много информации о том, как извлечь максимальную выгоду из Crunch.
Если мы немного пролистаем страницы вниз, то мы перейдем вот на эту страницу. Обратите внимание, что внизу он говорит нам, что мы находимся на строке 70.
Вверху мы видим ключ -f. Этот ключ (или параметр) позволяет нам выбрать набор символов, который мы хотим использовать для генерации нашего вордлиста. Синтаксис:
-f /полный/путь/charset.lst <название_набора_символов>
Здесь мы сообщаем Crunch полный путь до charset.lst, а затем указываем название конкретного набора символов из этого списка. В Kali, charset.lst находится по адресу:
/usr/share/rainbowcrack/charset.lst
Создайте несколько простых вордлистов
Начнем с создания простых вордлистов для взлома пароля. Допустим, мы знаем, что у компании есть пароли от 4 до 8 символов. Мы можем генерировать все возможные варианты при помощи Crunch, набрав в консоли:
kali> crunch 4 8
Где первое число (4) — самая маленькая длина слова, а вторая (8) — самая большая длина слова.
Когда мы выполняем эту команду, Crunch оценивает, насколько большим будет файл (1812 ГБ), а затем начинает генерировать список.
А что, если бы мы знали, что цель всегда использует пароли длиной от 6 до 8 символов? Тогда мы могли бы сгенерировать полный список всех возможных паролей, отвечающих этим критериям, и записать их в файл, находящийся в корневом каталоге пользователя с именем numericwordlist.lst. Для этого нужно выполнить в консоли следующую команду:
kali> crunch 6 8 1234567890 -o /root/numericwordlist.lst
А что если мы знаем, что день рождения цели 28 июля и что она, вероятно, может использовать эту дату (а люди часто используют даты рождения в своих паролях, чтобы их было легче запомнить) в конце своего десятизначного пароля? В этом случае мы можем сгенерировать все возможные десятисимвольные пароли, которые заканчиваются 2807, а затем записать его в файл в корневом каталоге пользователя с именем birthdaywordlist.lst, набрав:
kali> crunch 10 10 -t @@@@@@ 2807 -o /root/birthdaywordlist.lst
Знак @ используется для обозначения шаблона всех возможных вариантов, в то время как литералы «2807» представляют собой фиксированные значения.
Создание сложных вордлистов
Одна из интересных возможностей Crunch — это возможность выбора конкретного набора символов или создание собственного набора символов для генерации списка паролей. Если мы знаем вероятный набор символов, который использует цель для своего пароля, то мы можем выбрать определенный набор символов для генерации нашего списка паролей. Мы можем посмотреть на доступный список наборов символов:
/usr/share/rainbowcrack/charset.txt
Теперь, если мы знаем, что наша цель использует восьмизначный пароль, который содержит только буквы, то мы можем сгенерировать список всех возможных паролей с помощью команды:
kali> crunch 8 8 -f /usr/share/rainbowcrack/charset.txt mixalpha -o /root/alphawordlist.lst
Это сгенерирует все 8-значные пароли, которые используют только буквы (без номеров или специальных символов) и сохранит их в файле alphawordlist.lst в корневом каталоге пользователя.
Заключение
Когда мы взламываем неизвестные пароли, то у нас есть несколько способов взлома. К ним относятся атаки по словарю, использование радужных таблиц, брутфорс и другие. Если мы знаем параметры пароля или знаем что-то о самой цели и ее возможных паролях (день рождения, имена домашних животных, супруга и т.д.), то Crunch может быть очень полезным инструментом для генерации таких конкретных вордлистов, которые очень удобно использовать в атаке по словарю.
