You are here: Home » Атаки на пароли » hashcat-utils

hashcat-utils

Описание hashcat-utils

Hashcat-utils — это набор маленьких утилит, которые полезны для продвинутого взлома паролей.

Они все упакованы во множество отдельных исполнимых файлов.

Каждая из этих утилит создана для выполнения только одной определённой функци.

Поскольку они все работают с STDIN (стандартным вводом) и STDOUT (стандартным выводом) вы можете группировать их в цепи.

Домашняя страница: https://hashcat.net/wiki/doku.php?id=hashcat_utils

Автор: atom

Лицензия: MIT

Характеристика программ в hashcat-utils

cap2hccapx

Инструмент используется для генерации файлов .hccapx из файлов сетевого захвата (.cap или .pcap) для взлома WPA/WPA2 аутентификаций. Файлы .hccapx используются как ввод для типа хеша -m 2500 = WPA/WPA2.

Дополнительные опции позволяют вам указать имя сети (ESSID) для фильтрации нежелательных сетей и для предоставления cap2hccapx подсказки о имени сети (ESSID) и MAC адресе точки доступа (BSSID) если не было захвачено маячков (beacon).

Использование:

./cap2hccapx.bin input.pcap output.hccapx [фильтрация по essid] [дополнительная сеть essid:bssid]

cleanup-rules

Отделяет правила из STDIN (стандартного ввода), которые не совместимы со специфичной платформой.

Использование:

./cleanup-rules.bin mode

… где mode это 1 = CPU, 2 = GPU.

combinator

использование:

./combinator.bin file1 file2

Эта программа является самостоятельной реализацией Комбинаторной атаки.

Каждое слово из file2 добавляется к каждому слову из file1, а затем выводится в стандартный вывод.

Поскольку программе требуется перематывать файлы множество раз, нельзя воспользоваться стандартным вводом — требуются реальные файлы.

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

Дополнительные примеры смотрите в раздел Комбинаторная атака.

combinator3

Похожа на combinatory, но принимает на входе три файла, на выходе создаёт комбинации всех трёх списков.

combipow

Создаёт все “уникальные комбинации” из короткого списка ввода.

cat wordlist
a
b
c
XYZ
123

combipow wordlist
a
b
ab
c
ac
bc
abc
XYZ
aXYZ
bXYZ
abXYZ
cXYZ
acXYZ
bcXYZ
abcXYZ
123
a123
b123
ab123
c123
ac123
bc123
abc123
XYZ123
aXYZ123
bXYZ123
abXYZ123
cXYZ123
acXYZ123
bcXYZ123
abcXYZ123

ct3_to_ntlm

Использование:

./ct3_to_ntlm.bin 8-byte-ct3-in-hex 8-byte-salt-in-hex [24-byte-ESS-in-hex]

Имеется две различных версии NetNTLMv1 – одна с ESS, а другая – без.

Если у вас нет ESS:

NETNTLM_bs_fmt_plug.c:  {"$NETNTLM$1122334455667788$B2B2220790F40C88BCFF347C652F67A7C4A70D3BEBD70233", "cory21"},

Вы можете использовать это примерно так:

./ct3_to_ntlm.bin C4A70D3BEBD70233 1122334455667788       
                                          
51ad

Если у вас есть ESS:

./ct3_to_ntlm.bin 7D01513435B36DCA 1122334455667788 
1FA1B9C4ED8E570200000000000000000000000000000000
34d5

Обсуждение на форуме здесь.

cutb

Эта программа (она появилась в hashcat-utils-0.6) создана для обрезки словаря (читает из стандартного ввода) для использования в комбинаторной атаке. Предположим, что пароли в какой-то подборке имеют общий заполнитель длины в начале или конце слов. Эта программа отсечёт префикс или суффикс конкретной длины от существующих слов в списке и выдаст полученный результат в стандартный вывод.

использование:

./cutb.bin offset [длина] < входной_файл > выходной_файл

Примерный файл словаря:

$ cat wordlist
apple1234
theman
fastcars

Пример положительного смещения и фиксированной длинный (первые 4 символа):

$ ./cutb.bin 0 4 < wordlist
appl
them
fast

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

$ ./cutb.bin 4 < wordlist
e1234
an
cars

Пример отрицательного смещения (последние 4 символа в строке):

$ ./cutb.bin -4 < wordlist
1234
eman
cars

Пример отрицательного смещения, фиксированная длина:

$ ./cutb.bin -5 3 < wordlist
e12
hem
tca

Предполагаемое использование:

  1. Комбинаторная атака (-a 1) с oclHashcat
  2. Гибридная атака (-a 6 или -a 7) с oclHashcat

Не забудьте запустить sort -u для вывода перед использованием его в атаке!

deskey_to_ntlm

TBD

Использование:

./deskey_to_ntlm.pl 8-byte-key-in-hex

Объявление на форуме и обсуждение здесь.

expander

У этой программы нет параметров для настройки.

Каждое слово, поступившее из стандартного ввода, парсится и разделяется на его отдельные символы, которые перемешиваются и объединяются для составления новых слов, выдаваемых в стандартный вывод.

Есть несколько реконструкций, которые генерируют все возможные шаблоны входного слова с применением следующие итерации:

  • Все возможные длины паттернов внутри максимума из 7 символов (определяются в LEN_MAX, значение которой можно увеличить в исходном коде).
  • Все возможные смещения слова.
  • Перемещение слова вправо до полного цикла.
  • Перемещение слова влево до полного цикла.

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

Пример:

$ echo pass1 | ./expander.bin  | sort -u  
1
1p
1pas
1pass
a
as
ass
ass1
ass1p
p
pa
pas
pass
pass1
s
s1
s1p
s1pa
s1pas
ss
ss1
ss1p
ss1pa

Эта программа является сердцем Атаки по отпечаткам.

gate

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

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

использование:

./gate.bin режим сдвиг < входящий_файл > исходящий_файл

Здесь присутствуют два важный параметра “режим” и “сдвиг”.

  • Значение «режим» - это число раз, на которое вы хотите расщепить ваш словарь.
  • Значение «сдвиг» - это с какой позиции нужно начинать..

Вот пример словаря для ввода:

$ cat numbers 
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Мы хотим разделить словарь на два равных словаря:

$ ./gate.bin 2 1 < numbers 
2
4
6
8
10
12
14
$ ./gate.bin 2 0 < numbers  
1
3
5
7
9
11
13

generate-rules

Отдельная утилита для генерации случайных правил.

Использование:

./generate-rules.bin number [seed]

Эта команда сгенерирует 10 случайных правил, используя “42” в качестве seed:

./generate-rules.bin 10 42
$  $} z3
*61 t
l
o2*
L2
*6B *98 D1
x0A f x32
s^L
s[5 s'#
swU }

hcstatgen

Инструмент используется для генерации файлов .hcstat которые используются в statsprocessor.

использование:

./hcstatgen.bin out.hcstat < входящий файл

Особо здесь нечего добавить. Каждый выходной файл будет иметь размер ровно 32.1 мегабайт.

keyspace

Расчитывает пространство ключей в манере hashcat.

Использование:

./keyspace.bin [опции] маска

Опции

  -m,  --hash-type=ЧИСЛО           Тип хеша
       --hex-charset             Предположим, что кодировка задана в шестнадцатеричном виде
       --markov-hcstat=ФАЙЛ      Указать hcstat файл для использования, по умолчанию это hashcat.hcstat
  -t,  --markov-threshold= ЧИСЛО    Порог для цепей маркова
  -1,  --custom-charset1=CS      Определённые пользователем наборы символов
  -2,  --custom-charset2=CS      Примеры:
  -3,  --custom-charset3=CS      --custom-charset3=?dabcdef : устанавливает набор символов ?3 на 0123456789abcdef
  -4,  --custom-charset4=CS      --custom-charset4=?l?u : устанавливает набор символов ?4 на все буквы верхнего и нижнего регистров
  -h,  --help                    Вывод справки

len

Каждое слово, входящее в стандартный ввод парсится по длине и проходит в стандартный вывод если оно соответствуют заданному диапазону длины слова.

Использование:

./len.bin минимум максимум < входной_файл > выходной_файл

Это пример входного словаря:

$ cat dict
1
123
test
pass
hello
world

Мы хотим только те слова, которые имеют длину 2, 3 или 4:

$ ./len.bin 2 4 < dict  
123
test
pass

mli2

Объединяет два списка.

Как и rli2, два списка должны быть отсортированы (в LC_ALL=C порядке).

Использование:

./mli2.bin infile mergefile

Пример:

cat w1.txt
123
1234
999
aceofspades
cards
password
veryfast

cat w2.txt
123
1234
999
extra

mli2 w1.txt w2.txt
123
1234
999
aceofspades
cards
extra
password
veryfast

Если вы используете mli2 на не рассортированных списках, вы получите несвязанные результаты.

Если вы используете mli2 на сортированных, но не уникализированных списках, вы получите отсортированные, но не уникализированные результаты.

morph

По сути morph генерирует правила вставки для самых частых цепей символов по позиции из файла словаря который вы указываете.

использование:

./morph.bin словарь глубина ширина минимальная_позиция максимальная_позиция

- Словарь = Используемый словарь для частотного анализа.

- Depth = Определяет «верхушку» цепи, которую вы хотите. Например, 10 даст вам верх 10 (фактически началом окажется величина 0, поэтому 10 даст верхушку 11.

- Width = Максимальная длина цепи. С 3, например, вы получите 3 правила на строку для самой длинной 3 буквенной цепи.

- pos_min = Минимальная позиция, где будет сгенерировано правило вставки. Например, 5 будет означать делать правило для вставки строки только с позиции 5 и выше.

-pos_max = Максимальная позиция, где будет сгенерировано правило вставки. Например, 10 будет означать, что будет сделано правило вставки строки так, что оно заканчивается в максимум 10 позиции.

permute

Эта программа является самостоятельной реализации Перестановочной атаки.

Она не имеет параметров для настройки.

Каждое слово поступающие в стандартный ввод парсится и пропускается через “The Countdown QuickPerm Algorithm” от Phillip Paul Fuchs.

Для примеров смотрите Перестановочную атаку.

permute_exist

TBD

Использование:

./permute_exist.bin word < infile > outfile

prepare

Эта программа сделана оптимизатором словаря для Перестановочной атаки.

Из-за природы самого перестановочного алгоритма, слова на вводе “BCA” и “CAB” создадут в точности одинаковых кандидатов в пароли.

$ echo BCA | ./permute.bin
BCA
CBA
ABC
BAC
CAB
ACB

$ echo CAB | ./permute.bin
CAB
ACB
BCA
CBA
ABC
BAC

Лучший способ отсортировать «дубли» - реконструировать вводимое слово изменением порядка по ASCII значению каждого символа в слове:

Ввод:

  1. B ⇒ 0x42
  2. C ⇒ 0x43
  3. A ⇒ 0x41

Вывод: ABC

Ввод:

  1. C ⇒ 0x43
  2. A ⇒ 0x41
  3. B ⇒ 0x42

Вывод: ABC

Далее мы можем безопасно выполнить sort -u:

$ wc -l rockyou.txt 
14344391 rockyou.txt

$ ./prepare.bin < rockyou.txt | sort -u > rockyou.txt.prep

$ wc -l rockyou.txt.prep 
9375751 rockyou.txt.prep

Отсортировано 4968640 слов (34.6%) которые воспроизвели бы дубли в Перестановочной атаке.

remaining

TBD

Использование:

./remaining.pl wordlist_base.txt wordlist_search.txt

req

req был заменён на req-include и req-exclude, описанные ниже.

req-exclude

Как req-include, но исключает слова, соответствующие определенным критериям.

req-include

Каждое слово поступающее в стандартный ввод и выходит в стандартный вывод если соответствует групповому критерию пароля.

Иногда вы знаете, чтобы удовлетворить политике паролей некоторые пароли должны включать символы нижнего регистра, верхнего регистра и цифры.

Это означает проверку паролей, которые не соответствуют политике и определённо не принесут результата во взломе пароля. Поэтому их можно пропустить.

Программа не очень сложная, и она не может полностью соответствовать всем популярным критериям политике паролей, но она даёт немного помощи.

Определены следующие группы паролей:

Имя Пункт Символы
МАЛЕНЬКАЯ 1 abcdefghijklmnoprstuvwxyz
БОЛЬШАЯ 2 ABCDEFGHIJKLMNOPRSTUVWXYZ
ЦИФРА 4 0123465789
ДРУГОЕ 8 Всё остальное, не соответствующее тому, что указано выше

Для настройки группы паролей из одиночных записей, просто добавьте номера элементов всех отдельных записей вместе.

Например, если вы хотите чтобы в стандартный вывод проходили только слова, которые имеют одну маленькую букву и одну цифру, то просто найдите в таблице «МАЛЕНЬКАЯ», её значением является “1”, а затем «ЦИФРА», значение которой “4” и сложите их вместе — получится “5”.

echo hello | ./req.bin 5
echo hello1 | ./req.bin 5
hello1
echo Hello1 | ./req.bin 5
Hello1

rli

rli сравнивает единичный файл с другим(и) файлом (файлами) и удаляет все дубли:

использование:

rli входящий_файл исходящий_файл файл_для_удаления.

Допустим, у нас есть два файла w1.txt:

password
123
cards
999
aceofspades
1234
veryfast

И w2.txt:

123
999
1234

Если мы запустим следующую команду:

rli w1.txt OUT_FiLE.txt w2.txt

OUT_FiLE.txt будет иметь:

password
cards
aceofspades
veryfast

Также поддерживается множественность файлов: w3.txt имеет “password” в нём, мы запускаем:

rli w1.txt OUT_FiLE.txt w2.txt w3.txt

OUT_FiLE.txt:

cards
aceofspades
veryfast

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

Но размер словаря не может превышать размер памяти вашей машины. Смотрите rli2 ниже для больших файлов.

rli2

В отличие от rli, rli2 не ограничена. Но для неё нужно, чтобы входящий файл и файл для удаления были уникализированы до использования с этой программой, в противном случае она не будет работать как доложна.

Например, используя файлы w1.txt and w2.txt files о которых мы говорили выше, если мы запустим:

rli2 w1.txt w2.txt

На выходе мы получим:

password
123
cards
999
aceofspades
1234
veryfast

Ни какой разницы. Но если мы отсортируем и уникализируем w1.txt и w2.txt так:

sort w1.txt > w1su.txt
sort w1.txt > w1su.txt

И запустим:

rli2 w1su.txt w2su.txt

Мы сделаем это аккуратно:

aceofspades
cards
password
veryfast

Обратите внимание, что rli2 не может обрабатывать множество файлов. И если вы ещё не заметили, rli2 выводит в стандартный вывод, а не в файл. Вы всегда можете передать по трубе (|) выводимые данные или использовать перенаправление стандартного вывода (>) для сохранения в файл.

rules_optimize

TBD

seprule

TBD

splitlen

Эта программа создана быть оптимизатором словаря для oclHashcat.

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

использование:

./splitlen.bin outdir < infile

Всё, что вам нужно, это создать новый словарь, например, “ldicts”.

mkdir ldicts
./splitlen.bin ldicts < rockyou.txt

Результат в:

ls -l ldicts/
total 129460
-rw-r--r-- 1 root root       90 Oct 12 15:54 01
-rw-r--r-- 1 root root     1005 Oct 12 15:54 02
-rw-r--r-- 1 root root     9844 Oct 12 15:54 03
-rw-r--r-- 1 root root    89495 Oct 12 15:54 04
-rw-r--r-- 1 root root  1555014 Oct 12 15:54 05
-rw-r--r-- 1 root root 13634586 Oct 12 15:54 06
-rw-r--r-- 1 root root 20050168 Oct 12 15:54 07
-rw-r--r-- 1 root root 26694333 Oct 12 15:54 08
-rw-r--r-- 1 root root 21910390 Oct 12 15:54 09
-rw-r--r-- 1 root root 22150645 Oct 12 15:54 10
-rw-r--r-- 1 root root 10392420 Oct 12 15:54 11
-rw-r--r-- 1 root root  7219550 Oct 12 15:54 12
-rw-r--r-- 1 root root  5098436 Oct 12 15:54 13
-rw-r--r-- 1 root root  3727905 Oct 12 15:54 14
-rw-r--r-- 1 root root        0 Oct 12 15:54 15

ПРИМЕЧАНИЕ: splitlen не добавляет и не перезаписывает файлы в выходной директории. Поэтому вы должны использовать пустые директории.

strip-bsn

Убирает все \0 байты из стандартного ввода.

strip-bsr

Убирает все \r байты из стандартного ввода.

tmesis

tmesis берёт словарь и производит правила вставки, который вставят каждое слово словаря в предустановленные позиции.

Например:

Слово ‘password’ создаст правила вставки, которые вставят ‘password’ с позиции 0 до позиции F (15) и они будут видоизменять строку ‘123456’ следующим образом.

password123456
1password23456
12password3456
123password456
1234password56
12345password6
123456password

Подсказки:

  • Используйте tmesis для создания правил атаки списка хешей, полученных из источника. Запустите базовый анализ по взломанным паролям, отберите топовые 10-20 слов (паролей) и используйте tmesis для генерации правил.
  • Используйте tmesis для создания правил в комбинации с best64.rules.

tmesis-dynamic

Использование:

./tmesis-dynamic.pl substring wordlist1.txt wordlist2.txt

tmesis-dynamic примет 2 списка слов и сделает новый, используя определённую пользователем подстановку в качестве «ключа».

Каждое слово словаря 1 которое соответствует определённой пользователем подстроки, заменяет эту подстроку на каждое слово списка слов 2.

Например, эти списки слов:

cat wordlist1.txt
isajack3935
jackysch_5131
HBjackas5
mom1jackhopes
cat wordlist2.txt
123456
password
jill
hashcat

… создадут следующих кандидатов, когда указан ключ “jack”:

./tmesis-dynamic.pl jack wordlist1.txt wordlist2.txt
isa1234563935
isapassword3935
isajill3935
isahashcat3935
123456ysch_5131
passwordysch_5131
jillysch_5131
hashcatysch_5131
HB123456as5
HBpasswordas5
HBjillas5
HBhashcatas5
mom1123456hopes
mom1passwordhopes
mom1jillhopes
mom1hashcathopes

topmorph

TBD

Использование:

./topmorph.pl dictionary depth width pos_min pos_max

Ограничения hashcat-utils

Все программы hashcat-utils разделяют одинаковый движок парсига слов в их входном коде. Этот движок имеет минимальный и максимальный диапазон позволенной длины слов (как в “len”, например).

Смотрите заголовок utils.c:

#define FGETS_MIN 1
#define FGETS_MAX 16

Вы можете изменить их и затем перекомпилировать hashcat-utils. Тем не менее, во взломе паролей нам обычно не требуются слова большей длины.

Установка hashcat-utils

Программа предустановлена в Kali Linux.

Установка hashcat-utils в Linux

Можно скачать бинарные файлы здесь: https://github.com/hashcat/hashcat-utils/releases

После скачивания достаточно распаковать архив и запускать требуемые файлы *.bin.

Либо установить из исходных кодов.

git clone https://github.com/hashcat/hashcat-utils.git
cd hashcat-utils/src/
make

После компиляции в каталоге bin появятся исполняемые файлы.

ls -l ../bin/

Внимание, программа пытается выполнить кросскомпиляцию для ещё двух ОС (кроме Linux) — для Windows и OSX. Если на вашей системе это вызывает ошибки, то для решение проблем с кросскомпиляцией бинарных файлов hashcat-utils для Windows обратитесь к этой статье.

Если кросскомпиялция вас вообще не интересует и вам нужны только бинарные файлы для Linux, то откройте любым текстовым редактором и отредактируйте файл Makefile. Должно получиться так:

##
##  Makefile
##

CFLAGS = -Wall -W -pipe -O2

all: clean release

release: linux
	$(STRIP_LINUX)   *.bin
	mv *.bin ../bin
	cp *.pl ../bin

clean:
	rm -f ../bin/*.bin ../bin/*.exe ../bin/*.app ../bin/*.pl
	rm -f *.bin *.exe *.app

##
## LINUX
##

CC_LINUX       = gcc
STRIP_LINUX    = strip
CFLAGS_LINUX   = $(CFLAGS) -D_LINUX

linux:
	${CC_LINUX} ${CFLAGS_LINUX} -o cleanup-rules.bin cleanup-rules.c
	${CC_LINUX} ${CFLAGS_LINUX} -o combinator.bin combinator.c
	${CC_LINUX} ${CFLAGS_LINUX} -o combinator3.bin combinator3.c
	${CC_LINUX} ${CFLAGS_LINUX} -o combipow.bin combipow.c
	${CC_LINUX} ${CFLAGS_LINUX} -o cutb.bin cutb.c
	${CC_LINUX} ${CFLAGS_LINUX} -o expander.bin expander.c
	${CC_LINUX} ${CFLAGS_LINUX} -o gate.bin gate.c
	${CC_LINUX} ${CFLAGS_LINUX} -o generate-rules.bin generate-rules.c
	${CC_LINUX} ${CFLAGS_LINUX} -o hcstatgen.bin hcstatgen.c -lm
	${CC_LINUX} ${CFLAGS_LINUX} -o keyspace.bin keyspace.c
	${CC_LINUX} ${CFLAGS_LINUX} -o len.bin len.c
	${CC_LINUX} ${CFLAGS_LINUX} -o mli2.bin mli2.c
	${CC_LINUX} ${CFLAGS_LINUX} -o morph.bin morph.c
	${CC_LINUX} ${CFLAGS_LINUX} -o permute.bin permute.c
	${CC_LINUX} ${CFLAGS_LINUX} -o permute_exist.bin permute_exist.c
	${CC_LINUX} ${CFLAGS_LINUX} -o prepare.bin prepare.c
	${CC_LINUX} ${CFLAGS_LINUX} -o req-include.bin req-include.c
	${CC_LINUX} ${CFLAGS_LINUX} -o req-exclude.bin req-exclude.c
	${CC_LINUX} ${CFLAGS_LINUX} -o rli.bin rli.c
	${CC_LINUX} ${CFLAGS_LINUX} -o rli2.bin rli2.c
	${CC_LINUX} ${CFLAGS_LINUX} -o splitlen.bin splitlen.c
	${CC_LINUX} ${CFLAGS_LINUX} -o strip-bsr.bin strip-bsr.c
	${CC_LINUX} ${CFLAGS_LINUX} -o strip-bsn.bin strip-bsn.c

Установка hashcat-utils в Windows

Скачайте исполнимые файлы: https://github.com/hashcat/hashcat-utils/releases

Распакуйте архив.

Откройте окно командной строки (Win+x и выберите там «Командная строка»).

Перетащите нужный .exe файл в командную строку и нажмите ENTER.

Скриншоты hashcat-utils

Это утилиты командной строки.

Инструкции по hashcat-utils

Близкие программы:

Рекомендуемые статьи: