8. Пароли и хеши8.1 Генерёнка
Что я называю генерёнкой? Пароли или логины которые созданы не человеком, а специальным образом сгенерированы каким-то алгоритмом. Такое часто может встречаться на учетках провайдеров, в корпоративных компаниях, порносайтах тд и тп.
Пример 1.
Представьте что у вас база в 100к. За сутки подбора у вас где-то только 100-200 паролей. Анализируя найденные пароли вы видите что они к примеру из 7 символов, содержат как буквы так и цифры, при этом цифра если есть, то всегда последняя, первая буква к примеру всегда "c", анализируя найденный пароли далее, вы составляете маску. К примеру:
где
Код:
a = aeiou
l = abcdefghijklmnopqrstuvwxyz
k = kcsbd
z = abcdefghijklmnopqrstuvwxyz0987654321
Прогнав через эту маску вы за пару часов получаете пару тысяч новых паролей. Ну и снова анализ, поиск закономерностей. В плане генерёнки, все может быть достаточно трудным, достаточно редко можно определить точно закономерность чтоб использовать чарсеты, поэтому чаще против генеренки используют именно маски. Но и не только по этой причине. Расскажу о некоторой очень важной особенности чарсетов:
! джон в чарсеты записывает не просто положение и частоты выпадения того или иного символа, а именно комбинации символов, он не учитывает какое количество паролей вскрылось при той или иной расстановке символов, и периодически меняет последовательность и порядок символов.
То есть если вы попытаетесь сгенерить чарсет согласно той маске что я привел, через какой-то промежуток времени вы обратите внимание, что первая буква слова совсем не "c".
Пример 2.
Есть база, есть очень мало вскрытых паролей. И вдруг анализируя найденные пароли, вы замечаете что они как и логины очень схожи. Тут мы можем предположить что алгоритм генерации логинов и паролей совпадает. Но 100-200 паролей недостаточно чтоб сгенерить чарсет и хорошо покрыть множество из паролей в 6-7 символов из dlu. И тут вы вспоминаете что я обещал вам объяснить как генерить чарсеты не просто по
john.pot, а по словарям.
! Во время генерации чарсета, джон анализирует найденные пароли из файла john.pot. Как он это делает, как он отличает пароли? Отличает просто - для анализа он берет то, что находится после ":", то есть по правую сторону, а то что слева игнорирует.
А теперь вспомните о чем мы говорили - у нас есть 100к логинов... понимаете на что я намекаю? Подумайте минуту сами, не читайте текст внизу

Если за минуту не догадаетесь, читайте
Что мы делаем, мы подсунем джону наши логины, как пароли, для того чтоб он по ним сгенерил чарсет. Делаем бекап файла
john.pot либо используем джона из другой папки. Создаем
john.pot вида
Код:
:login1
:login2
:login3
и так все 100к. Генерим чарсет. Возвращаемся к старому
john.pot и стартуем атаку по нашему чарсету...
и если наши предположения были правильные вы не будете успевать запоминать новые подобранные пароли, которые у вас будут появляться на мониторе.
8.2 Фейк пароли
После того как с базы 82к я подобрал более 12к паролей, я решил поиграться с солями, для тех кто забыл - для DES 4096 солей. Пустил под скрипт статистики, увидел следующую картину
Код:
1607 RH
600 DK
308 zo
277 22
168 as
150 13
92 po
86 al
79 SN
74 10
72 04
70 aw
65 TL
62 09
62 08
61 EI
57 FJ
Обрадовавшись как малый засренец скопировал хеши с солью RH в файл и запустил джона, но меня ждал облом, за 1-2 часа не одного попадания. Открыл
john.pot и поискал что есть с этой солью
Код:
RHdYjskn1eqKw:052788
RHuk6hEr.FZL.:nfy.irf
RHmcY0QzIuSOM:thor69
RH9Pf1Ut/yKvE:lechn
RHsatyO2s6ypo:MJANE
RHl43JCiICXQg:furn98
RHc8ysSQcGvmo:beavis46
Всего 7 паролей из 1607. Мягко говоря просто невозможно чтоб за пару часов своими правилами и словарями я не нашел не одного пароля. Отсюда я сделал вывод что это подстава. Либо там все пароли в национальных кодировках, либо это просто генеренка, то есть специально сгенеренные хеши, для отвода глаз. Мне подобное попадается впервые, так что я был очень удивлен такой ситуации. Попросил помощи у знакомых дешифровщиков и никто не смог мне сказать дельного что это такое.
Бывает еще ситуация что у вас полно DES хешей, и вы бы давно должны были их расшифровать, но у вас ничего не получается. Возможно вам попались "хеши" authX. Они выглядят как DES, но не могут содержать "/" и ".", и первые 2 символа цифры.
8.3 Чудесные совпадения
Кто по вашему хороший дешифровщик?
Я считаю этот тот человек который способен на анализ и обработку статистики, тот человек который пробует новые подходы и они дают результаты, тот человек который относится к этому делу с особой долей творчества, тот человек который благодаря интуиции подымает из казалось бы мертвой и выжатой уже базы еще десятки-сотни паролей. Может громко и пафосно, но такое мое мнение. Я хотел чтобы вы научились одним из самых важных вещей - аналитическому подходу, пытайтесь найти закономерность, универсальным подходам. К делу...
Выжав 10% из базы, я уселся за анализ
john.pot.
1) Соль "22" - 277. В глаза сразу бросилось что основная часть найденных паролей из 6 символов была по маске, была вида
\l\l\l123, а именно такое
Код:
fra123
gus123
pat123
Запустил джон по маске
\l\l\l\123 и вывалилось еще более 40 паролей такого типа. Скажите совпадение? Я не верю в такие совпадения, это закономерность. Между прочим по маске
\l\l\l\d\d\d ничего не было более. Прогнав на l6 нашлись еще пароли вида
Код:
fabjff
guijff
ignfds
marfds
marjff
Короче говоря давольно такие интересная соль получилась.
Попадание 163/277
2) Соль "13" - 150
Вижу такие хеши
Код:
13XVRkXlm1rAM:xuwe27
13lGnMg5uFWyk:xeitl
13YcKib0QQgmg:xlena
13iHtoIeXJPdM:xpeic
135AMpVP7xHUM:xkasse
13FkLUn0ntjWU:xmelly
13rUsHvsFDN8Q:xmicha
13VhJaj/AQLO2:xmotba
8 паролей начинаются с "x" и имееют 6 или 5 символов. И такое совпадение только по этой соли. Делаю по маске
x\l\l\l\l\l и подымаю еще пароли... далее думаю, а что если попробовать по типу xuwe27? - в итоге выпадает xflvo27.
Далее не буду приводить подобные примеры, их было достаточно. Но имея подобную статистику и сделав какое-то предположение, я ниразу не ошибся. И это далеко не совпадения.
! Очень хорошо для нас, когда админы на своих системах ставят шифрование пароля с постоянной солью. То есть может так случиться, что вы подымете базу в десятки тысяч хешей, и все они будут с одной солью.
Ковыряя дальше pot файл, я заметил что по некоторым солям есть одно совпадение - соль совпадает с первыми 2 символами пароля. И тут у меня в памяти всплыло что я когда-то видел материал, что можно сделать такое же предположение, произвести атаку и поднять значительную часть паролей. Я не знаю почему так иногда получается, но как факт, что такое есть, чаще что происходит когда первые 2 символа цифры, либо строчные буквы. Слышал версию, что некоторые системы просто специально берут первые два символа пароля как соль. Не знаю правда это или нет, как по мне глупость, но покажу примеры того что я нашел, отталкиваясь от того что первые 2 символа совпадают с первыми двумя символами пароля. Стоит сказать что я делал не для всех солей... а там где была какая-то основа, то есть уже такие пароли были. И так списочек, а вы думайте, случайность или закономерность:
Код:
03031973
03110311
03009218
03009652
03202634
08190819
08061980
08121965
08096123
11111111
11011011
11223344
11121969
11737526
и тд и тп для цифр, самое заметное тут, что почти всегда все цифровые комбинации что были в этих солях, если не были из 8 символов, то все равно начинались как и соль.
А вот замечательная соль "ya", попаданий 26/37 :
Код:
ya
yamagari
yamagari
inzaghi1
yahyayah
yaaleemo
yaalimad
yaalimol
yaalimou
yafatima
yaghazia
yahooagu
yahussai
yaimamhu
yawabigo
yacht321
yacht456
yacht789
yacht123
Вы еще верите в совпадения?
Соль "ta", попаданий 21/36
Код:
talbot
tahataha
tabassum
tassaduq
tamerc
tapjpx
taqtan
tafseera
tahasara
tamvfivj
tanweerf
tarjelta
tarolove
tatazanj
tauromag
talarga
taurus44
tamara83
И так далее и тому подобное. Думаю вам хватит доказательств, что иногда силой разума

можно достигнуть того, что обычным бы перебором вы получили не скоро
9. Специальные возможности
На данный момент я вам много не расскажу, но что смогу поведаю
Многоядерность. - Большинство современных программ для подбора паролей не умеют работать с многоядерными процами. Не исключение и John. Хотя есть специальная версия
John Mpi. Пробовал я играться с ней, но у меня ничего не получилось. Проконсультировался с друзьями кто по специальности или по работе сталкивался с таким, в итоге мне сказали что потеря невелика - якобы все алгоритмы созданные чтоб научить прогу работать на два ядра, на самом деле загрузят полностью проц, и общий прирост будет в районе 75-90% в лучшем случае. Так что я поковырявши какое-то время эту версию забил на это дело, потому что есть альтернатива.
А альтернатива эта в виде внешних переборщиков. И так, открываем конфиг, и опускаемся вниз, и видим что-то типа секции
[List.External:Parallel01], если же не видим, то вставляем следующее
Код:
[List.External:Parallel01]
int node, total; // This node's number, and node count
int number; // Current word number
void init()
{
node = 1; total = 2; // Node 1 of 2, change as appropriate
number = node - 1; // Speedup the filter a bit
}
void filter()
{
if (number++ % total) // Word for a different node?
word = 0; // Yes, skip it
}
После вставляем еще раз, но уже называем
Parallel02.
Что здесь важно? Параметры:
total - сколько у нас джонов работают
node - номер джона
В нашем случае, то есть если у нас 2 ядра на проце, то у нас
total=2
node=1 для Parallel01
node=2 для Parallel02
Как с этим работать?
Код:
john -external:Parallel01 -session=p1 -w:advlamer-sequences.txt --rules achat.txt
john -external:Parallel02 -session=p2 -w:advlamer-sequences.txt --rules achat.txt
В данном случае каждый Джон отожрет от проца сколько сможет, и в результате вы сможете получить практически 2 равноценных джона и загрузку проца в 100% и отдачей где-то 95% и более.
! Желательно для каждого джона указать в taskmanager по ядру
Можно использовать и для расспределенки. Ставим, к примеру
total=25 и ищем 24 друзей, кто бы с вами занялся брутом
Джон для сети. - Конечно это все хорошо, но есть и специализированные сетевые модификации джона, к сожалению со всеми у меня возникли проблемы, ни один я не смог заставить работать. Один либо не идет под винду, другой не компилится, третий на яве, а еще какой-то только на основе версии 1.6.
Но вот все равно вам названия и линки (возможно некоторые уже неактуальны), если будет очень надо, думаю разберетесь
1. Bob the Butcher
http://btb.banquise.net/
2. DJohn
http://ktulu.com.ar/en/djohn.php
3. JohnNet
http://www.kraeh.info/
http://kraeh.info/files/JohnNet.rar
4. Johndarme
http://heanet.dl.sourceforge.net/sou...e-1.0-beta.zip
10. Ссылки
Страничка Джона на openwall.com
По реализации MPI (смотрите еще http://cse.unl.edu/~rlim/jtr-mpi/)
Работа по анализу текстов на русском
Статья в WikipediaEn по частоте использования буков
Статистика по частоте использования букв (англ)
Мало использовал источников, так что буду рад линкам
11. О чем я не сказал
В данный момент я не имею технической возможности написать о работе с GUI оболочками, не стал упоминать о том, что JTR может быть альтернативой PasswordsPro для подбора паролей к хешам от IPB2. Не стал упоминать о работе с национальными кодировками.
И временно,
на сегодня или пару дней решил не вставлять в статью главу
4.4 Продвинутые правила, решил ее доработать, или уже написать отдельно материал по этой теме.
Надеюсь что со временем мне повезет с John MPI и сетевыми версиями чтоб я мог дополнить этот материал