Использование файлов масок .hcmask в Hashcat для максимально гибкой замены символов


Атака на основе правил (Rule-based attack) заключается гибкой генерации и фильтрации кандидатов в пароли.

Не смотря на все свои возможности, данная атака не является всемогущей. Рассмотрим следующий пример.

Имеется слово

seesaw

и нужно заменить символ s на символ $. К примеру в John the Ripper можно попытаться использовать правило ss$, но оно возвращает только $ee$aw в то время когда нужно:

seesaw
$eesaw
see$aw
$ee$aw

Также нужно заменить другие символы по аналогичной схеме.

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

Тем не менее, можно убедиться, что при генерации словарей на основе маски мы получаем примерно то, что нам нужно:

maskprocessor -1 s$ ?1ee?1aw
seesaw
see$aw
$eesaw
$ee$aw

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

Эта задача вполне решаема с помощью программирования. Пример алгоритма:

  • получаем количество символов в слове для замены
  • если символ для замены один, то выводим два слова — одно с заменой, другое нет
  • если символов для замены два, то выводим четыре слова — без замены, с заменой первого символа, с заменой второго символа, с заменой обоих символов
  • если символов для замены три, то выводим восемь комбинаций - …
  • и так далее

Этот алгоритм можно оформить в виде функции, аргументами которой должны быть: 1) символ который нужно заменить; 2) символ на который нужно заменить. Достаточно написать код функции один раз и использовать любое количество раз. Подобное можно реализовать даже с помощью PHP.

Но не спешите впадать в грусть — можно обойтись и без программирования. Используя такие вещи как:

1. Маски

2. Файлы с масками

Алгоритм следующий:

1. Конвертируем словарь в набор масок с нужными нам параметрами.

2. Генерируем новый словарь на основе файла масок

К примеру, имеется список слов d1.txt со следующим содержимым:

seesaw
samuelsonmarian
samuelspence
samuelspevak
samuelsrie
samuelss
samuelsstarr
SAMUELSTERNA
samuelstevens
samuelsux1
samuels-x
samuelt**
samuelta.
samueltad
samueltan
samueltanner
samueltapia2
samueltas21
samuel+teadoro
samuelteall
samuelteama
samuel te amo
samuel,te,amo
samuelteamo
SAMUELTEAMO
samuelteamo21
SAMUELTEAMOMUCHO
samueltequiero
samuelthane99

Задача заменить символ «s» на символ «$» во всех возможных комбинациях, чтобы, к примеру, из слова seesaw получилось


seesaw
$eesaw
see$aw
$ee$aw

Начинаем с генерации файла масок. В данной команде в строках файла d1.txt находятся все символы «s», которые меняются на «?1», полученный результат сохраняется в файл masks.hcmask:

cat d1.txt | sed 's/s/\?1/g' > masks.hcmask

Как вы уже поняли, получился набор масок. К примеру, «seesaw» превратилась в «?1ee?1aw».


Формат файлов .hcmask следующий:

ПОЛЬЗОВАТЕЛЬСКИЙ_НАБОР1,ПОЛЬЗОВАТЕЛЬСКИЙ_НАБОР2,ПОЛЬЗОВАТЕЛЬСКИЙ_НАБОР3,ПОЛЬЗОВАТЕЛЬСКИЙ_НАБОР4,МАСКА

В моём простом примере я буду использовать только один пользовательский набор символов, поэтому конечный формат файла masks.hcmask будет таким:

ПОЛЬЗОВАТЕЛЬСКИЙ_НАБОР1,МАСКА

Добавление префикса к каждой строке файла можно сделать следующей командой:

sed -i -e 's/^/ПРЕФИКС/' ФАЙЛ

В моём случае пользовательский набор символов это «s$», то есть на месте «?1» нужно вставлять «s» или «$». Тогда команда следующая:

sed -i -e 's/^/s$,/' masks.hcmask

Содержимое файла masks.hcmask теперь такое:

s$,?1ee?1aw
s$,?1amuel?1onmarian
s$,?1amuel?1pence
s$,?1amuel?1pevak
s$,?1amuel?1rie
s$,?1amuel?1?1
s$,?1amuel?1?1tarr
s$,SAMUELSTERNA
s$,?1amuel?1teven?1
s$,?1amuel?1ux1
s$,?1amuel?1-x
s$,?1amuelt**
s$,?1amuelta.
s$,?1amueltad
s$,?1amueltan
s$,?1amueltanner
s$,?1amueltapia2
s$,?1amuelta?121
s$,?1amuel+teadoro
s$,?1amuelteall
s$,?1amuelteama
s$,?1amuel te amo
s$,?1amuel,te,amo
s$,?1amuelteamo
s$,SAMUELTEAMO
s$,?1amuelteamo21
s$,SAMUELTEAMOMUCHO
s$,?1amueltequiero
s$,?1amuelthane99

Теперь в Hashcat запускам генерацию словарей на основе файла с масками masks.hcmask:

hashcat -a 3 --stdout masks.hcmask

Мы получили нужный результат со всеми возможными вариантами замены символа в разных позициях. Начало выводимых данных:

seesaw
$eesaw
see$aw
$ee$aw
samuelsonmarian
$amuelsonmarian
samuel$onmarian
$amuel$onmarian
samuelspence
$amuelspence
samuel$pence
$amuel$pence
samuelspevak
$amuelspevak
samuel$pevak
$amuel$pevak
samuelsrie
$amuelsrie
samuel$rie
$amuel$rie
samuelss
$amuelss
samuel$$
$amuel$$
samuels$
$amuels$
samuel$s
$amuel$s
samuelsstarr
$amuelsstarr
samuel$$tarr
$amuel$$tarr
samuels$tarr
$amuels$tarr
samuel$starr
$amuel$starr
…………………….
…………………….
…………………….

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


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

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

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