| # | Mode |
|---|---|
| 0 | Straight |
| 1 | Combination |
| 3 | Грубая сила |
| 6 | Гибридный список слов + маска |
| 7 | Гибридная маска + список слов |
Этот способ атаки также известен как «словарная атака». Нечего сказать, просто при наличии словаря hashcat будет читать содержимое словаря строка за строкой, вычислять значение хэша каждой строки и сравнивать его с целевым значением хэша.
Пример:
hashcat -a 0 -m 400 example400.hash example.dict
Baidu сказал мне, что комбинация — это существительное, означающее: «комбинация; консорциум; комбинация паролей; комбинезон». Этот режим атаки на самом деле очень прост, он состоит в том, чтобы объединить содержимое двух словарей паролей. Использование этого режима атаки требует указания двух словарей паролей. Предположим, у нас есть два словаря паролей dict1.txt и dict2.txt, содержимое которых:
Охота Китти Радуга
и
Париж rock
Затем команда:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Словарь, который на самом деле попробовал:
huntingparis Хантингрок КиттиПарис КиттиРок РадугаПариж rainbowrock
Слова в dict1.txt слева, а слова в dict2.txt справа, всего 3×2=6.
Параметры, связанные с этим шаблоном:
-j, --rule-left -k, --rule-right
-правило после j действует слева, а правило после -k действует справа, например, добавление параметра -j ' $-', тогда фактический попробованный словарь:
Охота-Париж Охотничья скала Китти-Париж Китти-Рок rain-bowparis rain-bowrock
Добавить параметр -j '^!', Тогда фактический попробованный словарь:
! ХантингПариж ! Хантингрок ! КиттиПарис ! Китти Рок ! Радуга Париж ! rainbowrock
Добавьте параметр -k '^>', тогда фактический попробованный словарь будет:
Охота>Париж Охота>Скала Китти>Париж Китти>Рок Дождь>bowparis rain>bowrock
Каково это правило? Использование «$» и «^» аналогично использованию регулярных выражений, так что они регулярные? На самом деле нет. Правила hashcat реализуются самостоятельно. Это еще один большой кусок контента. Подробности см. в Rule-based Attack
. Попробуйте различные комбинации данного набора символов. Согласно официальной вики hashcat, этот метод устарел и был полностью заменен масковой атакой, поэтому исследования не проводятся.
Это относительно новый метод атаки. Пример следующий:
hashcat -a 3 -m 0 MD5.hash ? Л? Л? Л? Л? l
Хотя согласно таблице «Режимы атаки» -A 3 соответствует грубой силе, на самом деле -A 3 использует маску атаки. Масковую атаку можно рассматривать как продвинутую грубую силу. Параметр
-m используется для указания типа хэш-функции. Значение MD5 хранится в файле MD5.hash. Ключевым моментом является последняя строка «?l?l?l?l?l?l?l». Такая строка называется маской.
Маска представляет собой строку, состоящую из нескольких заполнителей. «?l» — это заполнитель, где «?» — это ключевое слово, используемое для изменения последующего «l». «?l» вместе представляет собой набор символов. Помимо «?l», вы также можете иметь «?u», «?d». , «?h», «?h», «?s», «?a» и «?b», представленный набор символов показан в таблице ниже.
| ? | Набор символов |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| H | 0123456789abcdef |
| H | 0123456789ABCDEF |
| s | ! "#$%&'()*+,-./:;<=>?@[\]^_`~{|} |
| a | ? Л? Ты? Д? s |
| b | 0 – 0xff |
Таким образом, мы понимаем, что "?l?l?l?l?l?l" на самом деле эквивалентен словарю паролей:
aaaaa ААААБ ... zzzzz
Точно так же «?l?u?d» эквивалентен словарю паролей:
aA0 АА 1 ... ВА 0 ... zZ9
Набор символов в приведенной выше таблице встроен в hashcat, мы также можем указать набор символов самостоятельно:
--custom-charset1=набор символов 1 --custom-charset2=набор символов 2 --custom-charset3=набор символов 3 --custom-charset4=набор символов 4
Параметр –custom-charsetN может быть сокращен как -N, например, –custom-charset1 может быть сокращен как -1. Набор символов, указанный -N, указывается в mask в виде заполнителя "?N", например:
-1 abc123 ? 1? 1? 1
эквивалентно словарю паролей:
aaa ААБ ... АА 3 ... 333
-N, помимо строки, обозначающей набор символов, может быть также файлом, заканчивающимся на .hcchr, в котором хранится набор символов. hashcat поставляется со множеством файлов .hcchr в каталоге charsets/ установочного пакета.
Набор символов, представленный заполнителем "??", представляет собой само "?". Кроме того, когда остальные символы используются в качестве заполнителей, они представляют сам символ. Например, «?lwerner?d» эквивалентен словарю паролей:
awerner0. Авернер 1 ... zwerner9
С вышеуказанными знаниями легко понять маску. Маска состоит из нескольких заполнителей, каждый заполнитель представляет собой набор символов, а маска представляет собой комбинацию наборов символов-заполнителей. Количество заполнителей равно длине пароля. Каковы преимущества такого дизайна по сравнению с простым заданным набором символов и длиной пароля?
Предположим, что нам известно, что чей-то пароль состоит из 7 цифр, первая цифра — заглавная буква, следующие 3 цифры — строчная буква, а последние 3 цифры — цифра. Для традиционного силового взлома требуются наборы символов A-Z, A-Z и 0-9, всего 62 символа. Максимум попыток составляет 62^7=3 521 614 606 208 раз, что является триллионным уровнем. Используя маску для описания этого пароля, это «\u\l\l\l\d\d\d», который легко вычислить. Существует (26^4)×(10^3)=456 976 000 возможностей, что составляет миллиард. уровень, что на 4 порядка меньше, чем у предыдущего метода.
Сделайте шаг назад, даже если мы не знаем распределения паролей, с помощью маски легко имитировать эффект традиционного взлома.
Теперь проблема в том, что маска фиксирована, сколько заполнителей записано мертво, и что делать, если мы не знаем длину пароля. Ничего страшного, если пароль слишком длинный. Если пароль кого-то состоит всего из 3 цифр, а у нас 4 заполнителя, и мы не можем их решить, разве это не будет большой потерей? Нужно ли начинать с 1 и писать все маски каждой длины? Как это хлопотно.
Есть два решения: одно — использовать файл маски, записать несколько масок в один файл, а затем указать этот файл в командной строке. Обратите внимание, что файл маски должен заканчиваться на .hcmask.
Например, содержимое test.hcmask:
? Л ? Л? Л ? Л? Л? Л ? Л? Л? Л? l
использует файл следующей командой:
hashcat -m 0 -a 3 --show MD5.hash test.hcmask
Другой способ решения — добавить параметр –increment, который говорит hashcat, следуя заданной нами маске, начиная с одного заполнителя, а затем попробуйте два, три до заданной нами длины. Например, мы пишем заполнитель «abc» для этого, а затем вычисляем значение MD5 следующей строки:
A: 0cc175b9c0f1b6a831c399e269772661 Б: 92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 АБ:187ef4436122d1cc2f40dc2b92f0eba0 АС:e2075474294983e013ee4dd2201c7a73 Ба:07159c47ee1b19ae4fb9c40d480856c4 БК:5360af35bde9ebd8f01f492dc059593c ca:5435c69ed3bcc5b2e4d580e393e373d3 cb:d0d7fdb6977b26929fb68c6083c0b439 АВС:900150983cd24fb0d6963f7d28e17f72 abc:900150983cd24fb0d6963f7d28e17f72 БАК:79ec16df80b57696a03bb364410061f3 bca:b64eab8ce39e013604e243089c687e4f cba:3944b025c9ca7eec3154b44666ae04a0 cab:16ecfd64586ec6c1ab212762c2c38a90
Перед ":" следует исходная строка для вычисления значения хэша, а после ":" следует вычисленное значение hasn. Сохраните приведенное выше содержимое в файле MD5.hash, а затем выполните следующую команду:
hashcat -m 0 -a 3< --show --username MD5.hash abc
Добавление параметра –username связано с тем, что перед каждым из наших значений хэша есть исходная строка. Если этот параметр не добавлен, hashcat покажет, что правильное значение хэша не найдено. При добавлении этого параметра hashcat подумает, что строка перед значением хэша является именем пользователя пары значений хэша, так что значение хэша может быть успешно загружено.
В результате запуска решен только один хэш:
900150983cd24fb0d6963f7d28e17f72:abc
Теперь добавьте параметр –increment и запустите снова:
hashcat -m 0 -a 3 --show --increment --username MD5.hash abc
На этот раз решены еще два хэша:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Видно, – приращение сыграло свою роль. Но в то же время мы также знаем, что с этим параметром hashcat будет пробовать только A, ab и abc по порядку и не будет упорядочивать и комбинировать заполнители в порядке и пробовать различные возможности.
Гибридная атака аналогична атаке комбинатора. Атака комбинатора сочетает в себе два словаря, а гибридная атака сочетает в себе словарь и маску.
Предположим, у нас уже есть словарь example.dict, который гласит следующее:
Здравствуйте werner
Затем команда:
hashcat -m 0 -a 6 MD5.hash example.dict ? Д? d
эквивалентно простому использованию словаря:
hello00 Привет 01 ... Привет 99 Вернер 00 Вернер 01 ... werener99
Тогда команда:
hashcat -m 0 -a 7 MD5.hash ? Д? dexample.dict
эквивалентно простому использованию словаря:
00hello 01 Привет ... 99 Привет 00 Вернер 01 Вернер ... 99 веренер