Показаны сообщения с ярлыком john. Показать все сообщения
Показаны сообщения с ярлыком john. Показать все сообщения

вторник, 16 сентября 2014 г.

John the Ripper

www.openwall.com/john

Получить исходники последней версии:
git clone -b bleeding-jumbo git://github.com/magnumripper/JohnTheRipper JohnTheRipper
Инструкции по компиляции - в каталоге с исходниками. Будем использовать именно эту версию сообщества. Она более функциональна, в отличие от той, что бесплатно предоставляет OpenWall.

--test - запустить бенчмарк. Для бенчмарка можно указать конкретный тип хэша, например: --format=bitcoin.




 

 

 

 

 

 

Все полученные пароли (и их хэши) сохраняются в файле $JOHN/john.pot.
Показать полученные пароли призван параметр --show file следом за которым нужно укзать файл хэшей.

Типичная строка состояние перебора (отображается по нажатию любой клавиши) выглядит так:
0g 0:00:11:27 35,46% (ETA: 23:46:35) 0g/s 133.9p/s 407.8c/s 407.8C/s SS56789..12031956
0g - число подобранных паролей
0g/s - число подобранных паролей в секунду
133.9p/s - проверок пароля в секунду (для всех хэшей)
407.8c/s - проверок хэша в секунду
407.8C/s - комбинаций пароль-хэш (?) в секунду
В этом примере подбирается пароль для трёх хэшей, поэтому число проверок хэша/сек. в три раза больше чем число проверок пароля/сек.

Linux passwords

Хэши паролей хранятся в /etc/shadow [ Understanding /etc/shadow file, wikipedia Shadow_file ].
Например, для пользователя root запись в shadow может выглядеть так:
root:X014elvznJq7E:15943:0:99999:7:::
Хэш пароля выделен зелёным.
или так
aychedee:$6$vb1tLY1qiY$M.1ZCqKtJBxBtZm1gRi8Bbkn39KU0YJW1cuMFzTRANcNKFKR4RmAQVk4rqQQCkaJT6wXqjUkFcA/qNxLyqW.U/:15405:0:99999:7:::Все поля разделены двоеточием.
1. Логин пользователя aychedee -
2. Хэш и информация о шифровании. $6$vb1tLY1qiY$M.1ZCqKtJBxBtZm1gRi8Bbkn39KU0YJW1cuMFzTRANcNKFKR4RmAQVk4rqQQCkaJT6wXqjUkFcA/qNxLyqW.U/
Здесь поля разделены знаком доллара $
2.1 Тип хэша 6
On GNU/Linux, "$1$" stands for MD5, "$2a$" is Blowfish, "$2y$" is Blowfish (correct handling of 8-bit chars), "$5$" is SHA-256 and "$6$" is SHA-512, other Unix may have different values. [man]
2.2 Соль vb1tLY1qiY
2.3 Хэш, здесь это SHA-512 (86 символов). Формат в John --format=sha512crypt
3. Число дней спустя начало эпохи UNIX (1 января 1970) до дня, когда пароль последний раз был изменён.
Остальные поля обычно используются редко и отвечают в частности за политику изменения паролей.

Пример*

cp /etc/shadow .
cp /etc/passwd .
unshadow passwd shadow > passwords
john passwords





*программу unshadow можно найти в каталоге с john

Другие типы хэшей

Явно указать тип хэша --format=<hash-type>
john --format=raw-md5 md5-text 
Указать словарь --wordlist=<wordlist-file>
john --wordlist=/pentest/john-1.7.9-jumbo5/run/password.lst hash-file.txt
Для файла с единственным md5 хэшем d8578edf8458ce06fbc5bb76a58c5ca4 вывод будет следующим:





Угаданные пароли и их число отмечены жёлтым.

Извлечение хэша

В каталоге, где располагается исполняемый файл john, присутствует множество других программ, каждая из которых выполняет ровно одно действие: извлекает хэш, например из файла-кошелка bitcoin, с которым уже может работать john.
/opt/jumbo1.8/bitcoin2john.py wallet.dat > wallet.hash
Хэш, извлечённый из зашифрованого wallet.dat
$bitcoin$96$75de603ebb2213129fcc4b8603cdaababa3e606907ebdf0da43994616ff731d60b3f9881be6a3ae4b87a36ec297f23d0$16$1d2da7bb119fd59a$158407$96$8d058a511f1411c787ccf0a08b65d2415448345b5e8f85142e7546d8bb9630b2860cd8fa69224c92fb452aaa6a8f1db1$66$03f8e808b4e4e113dd8a32d71119754be2c730a77c5a9a78719877f51ec1def0ad
Далее можно приступать к перебору:
/opt/jumbo1.8/john wallet.hash --format:Bitcoin
Loaded 1 password hash (Bitcoin [SHA512 AES 128/128 SSE4.1 2x])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
12345678         (?)
1g 0:00:00:00 DONE 2/3 (2014-09-17 16:06) 1.315g/s 10.52p/s 10.52c/s 10.52C/s 123456..abc123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Алсо
 Вычислить md5 хэш можно следующим образом
echo -n "[eqyz" | openssl md5

Правила (rules

Синтаксис описан по ссылке выше. Правила используются для преобразования перебираемых паролей (например из словаря). Таким образом применяя правила можно увеличить (или при необходимости уменьшить) объём перебираемых паролей, преобразуется одно и то же слово в верхний\нижний регистр, повторяя его, добавляя к нему другое и т.п. Правила описываются в файле john.conf.
Самый очевидный способ это сделать, включить правила в режиме словаря
john --wordlist=all.lst --rules mypassw
Здесь нет необходимости приводить имя конкретного набора правил после ключа --rules. Правила для перебора по словарю приведены в разделе [List.Rules:Wordlist].


Добавим правило с названием CaseCASE: оставить слово как есть (:), преобразовывать в верхний регистр слово целеком (u), первую букву (с) и всё кроме первой буквы (C):
# Wordlist mode rules
[List.Rules:CaseCASE]
:
u
c
C

Теперь каждое слово из словаря будет проверятся как есть, в верхнем регистре и c заглавной буквой, нужно только указать название правила:
john hash --format=mscash --wordlist=wordlist.lst --rules=CaseCASE
Другие примеры команд используемых в описаниях правил:
t  - "переключить" раскладку в слове: Qwerty -> qWERTY;
r  - читать слова справа на лево: "Fred" -> "derF";
d  - "удвоить" слово: "Fred" -> "FredFred";
$X  - добавить символ X в конец слова;
^X  - добавить символ X в начало слова;
AN"STR" вставить строку STR в слово начиная с номера символа N
Чтобы добавить строку в конец, вместо номера символа - "z", 0 - добавить строку перед словом;
@X - удалить все вхождения символа X в слово.

Можно добавлять к слову не только постоянное выражение, но и символы из заданного диапазона:

$"[0-9]" - добавить одну цифру из диапазона от 0 до 9 в конец слова;
Az"[0-9][a-z]" - можно добавлять несколько символов из разных диапазонов;
$"[a-zA-Z]" - добавить символ из объединённых диапазонов;
$"[XYZ]" - добавить один символ из перечисленных;
Az"20[0-1][0-9]" - добавить числа с 2000 по 2019;
sXY - заменить символ X на Y.
Если производится замена одного символа на другой, то лучше сперва проверить, присутствует ли первый в слове, иначе слово останется без изменений. Получается, что john лишний раз проверит неизменённое слово. Чтобы этого избежать, сточит использовать следующее выражение
/XsXY - если в слове есть символ X, то заменить его на Y, иначе пропустить слово.


В Интернете опубликованы множество наборов правил, в том числе в wiki разработчиков john. Не обязательно добавлять новые правила в john.conf копипастой, лучше добавить файл правил указав его расположение, например: .include <KoreLogic.rules>. Здесь файл должен располагаться там же, где и john.conf.

***

Использовать John для генерации словаря (--stdout)
john --incremental --stdout > wordlist
Сессии
Продолжить предыдущую прерванную сессию:
john --restore 
при необходимости указать файл (john.rec, без расширения) в котором записана  информация (параметры и состояние) о последней сессии:
john --restore=/opt/jumbo1.8/john
Именованные сессии удобно использовать если запущенно несколько экземпляров приложения. Давать названия (--session=NAME) можно только новым сессиям. Узнать состояние предыдущей или указанной сессии --status[=NAME].

***

Отправка сообщения по окончанию процесса перебора
Процесс подбора пароля ожидаемо может быть долгим, поэтому логичным будет как-то информировать пользователя об его окончании. Самый простой путь - добавить комманду через точку с запятой после вызова john:
john --format=raw-md5 md5-text; notify-send "John complited"
Обыкновенный вывод уведомления на экран программой notify-send не подходит, то можно отправить XMPP сообщение программой sendxmpp или емейл программой mailx. [linux notes]

Если возникает необходимость настроить отправку сообщения когда john уже запущен и нет желания прерывать его работу, то можно воспользоваться простеньким однострочным скриптом:
while [ `pidof john` ]; do sleep 10; done; notify-send "..."
Скрипт будет выполнять команду sleep 10, до тех пор пока он может получить pid процесса с именем john. Затем, когда pid не будет получен (процесс john завершится) выполнится следующая комманда - notify-send. Разумеется для корректной работы скрипта нужно чтобы работал только один экземпляр процесса john.

Ссылки

http://blog.thireus.com/cracking-story-how-i-cracked-over-122-million-sha1-and-md5-hashed-passwords
http://blog.thireus.com/tag/john-the-ripper
JTR CHEAT SHEET

Crunch – Как создать словарь для брута
пароли Windows
online md5 decryptor 

вторник, 20 ноября 2012 г.

Пароли учётных записей Windows

NT, LM, MSCACHE и MSCACHE2 хэши 

Пароли пользователей Windows хранятся в NTLM и LM хэшах. В LM хэше может хранится строка длинной до 14 символов, если длинна больше Windows не использует этот хэш предпочитая ему NTLN. Кроме этого, можно не хранить пароль в LM хэшах вообще, отключив его вычисление в настройках. В Vista и поздних системах LM хэш не используется. В этих случаях может(?) хранится хэш от пустой строки.
У LM хэша есть две особенности:
1. пароль для хранения разбиваться на две части по 7 символов (если, конечно, длинна у него не меньшая). Соответственно хэши считаются для этих частей отдельно.
2. Все буквы в пароле переводятся в верхний регистр. Пример LM хэшей - паролей (последний хэш - для пустой строки):
D4A0539829018EA7 AAD3B435B51404EE : vega
CCF9155E3E7DB453 AAD3B435B51404EE : 123
96FA5702D3668DE7 96FA5702D3668DE7 : vegaLYRvegaLYR
AAD3B435B51404EE AAD3B435B51404EE :
LM и NTLM хэши имеют одинаковую длину (16 байт), но различаются в способе их вычисления. NT хэш вычисляется с помощью алгоритма MD4, причём пароль представлен в кодировке UTF16, а не в ASCII как для LM хэша.
Те же самые пароли, что и выше, представленные в виде NT хэша (последний хэш -  для пустой строки):
BD36CFFAA3C4AF5C E6FBBDCC0020B6EF : vega
3DBDE697D71690A7 69204BEB12283678 : 123
AB4580D78905FC47 3FE721A043457167 : vegaLYRvegaLYR
31d6cfe0d16ae931 b73c59d7e0c089c0 :
Эти хэши хранятся в файле %SystemRoot%\System32\Config\SAM  зашифрованные системным ключом, что хранится в файле system. Оба файла расположены в одно каталоге и представляют собой части реестра Windows [wiki].
В редакторе реестра хэш можно найти по адресу HKLM\SAM\SAM\Domains\Account\users\[RID]\V, где RID - числовой идентификатор пользователя.
Подробнее - Хранение и шифрование паролей Microsoft Windows

Cached credentails 
В случае, если пароль пользователя хранится в Active Directory, то по вышеуказанному адресу будет лежать лишь хэши пустых строк, LN и NT соответственно : aad3b435b51404eeaad3b435b51404ee : 31d6cfe0d16ae931b73c59d7e0c089c0

Однако, Windows хранит последние 10 (по умолчанию) используемых для входа пользователя хэшей в реестре, по адресу
HKEY_LOCAL_MACHINE\SECURITY\Cache.
До выхода в свет Windows Vista это были хэши MSCACHE (MSCASH в терминологии JohtTheRipper) вида:
NTLMHash( NTLMHash(password) + username ),
где имя пользователя это юникод строка в нижнем регистре [Cached Credentials, openwall: MSCash]. Таким образом в качестве "соли" использовалось имя пользователя.
С выходом Windows Vista стал использоваться хэш MSCASH2 (MSCash2).

Пример MSCASH2 хэша для пароля Password123 и пользователя test2: d7f91bcdec7c0df39396b4efc81123e4

Алсо
Для питона есть пакет passlib, с помощью которого можно вычислить описанные выше виды хэши.


Получение хэшей

Из Windows. fgdump (pwdump) [download]

Всё очень просто. Необходимо запустить (прежде отключив антивирус) fgdump от имени администратора, программа создаст файл с расширением .pwdump в который запишет все хэши:
123:1004:CCF9155E3E7DB453AAD3B435B51404EE:3DBDE697D71690A769204BEB12283678:::
HelpAssistant:1000:AA110CC154019E6EC3B0E1F17C1A6005:53BDA4C8B460DCA36AB5AF9297EF6632:::
qwerty:1003:NO PASSWORD*********************:NO PASSWORD*********************:::
SUPPORT_388945a0:1002:NO PASSWORD*********************:95936DCF173773EE3AF60E929F5B19A3:::
user1:1005:D4A0539829018EA7AAD3B435B51404EE:AEBF16E3B8F04FD2995C2E8F4F8820D5:::
user2:1006:D4A0539829018EA7AAD3B435B51404EE:BD36CFFAA3C4AF5CE6FBBDCC0020B6EF:::
user3:1007:96FA5702D3668DE796FA5702D3668DE7:AB4580D78905FC473FE721A043457167:::
user4:1008:NO PASSWORD*********************:AE72983EDE69AC85AF294B54A55E3A09:::
Получить хэши можно и по сети
fgdump.exe -h 192.168.0.10 -u AnAdministrativeUser [-p password]
Утилита позволяет получить хэши для доменной учётной записи (MSCASH).


liveCD (backtrack, kali)

Ещё один способ добыть хэши паролей пользователей Windows - загрузиться с liveCD, скопировать sam и system файлы, например на флешку и  продолжить работу с ними уже "оффлайн".
Просмотрим все диски
fdisk -l


 

 

 

 















Монтируем раздел
mount -t ntfs-3g /dev/sdb1 /mnt/windows
-t <тип монтируемого раздела> в данном случае (NTFS) это ntfs-3g, для FAT - vfat

Файлы SAM и SYSTEМ располагаются в Windows/System32/config. Первый хранит хэши паролей, второй - system boot key.
Программа samdump2 вытаскивает NTLM хэши из SAM и расшифровывает с помошью ключа из system:
samdump2 SYSTEM_FILE SAM_FILE > hashes
***
При использовании старых версий samdump2 ключ приходилось добывать отдельно.
Добыть ключ из SYSTEМ - задача программы bkhive:
bkhive <SYSTEM file> <key-file>
используя полученный ключ получить хэши - samdump2:
samdump2 <SAM file> <key-file> > <hashes>


Файл  hashes имеет формат:
username*:ID:LM hash: NT hash
и может выглядеть, например, вот так:
4<8=8AB@0B>@:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
>ABL:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:aa110cc154019e6ec3b0e1f17c1a6005:53bda4c8b460dca36ab5af9297ef6632:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:95936dcf173773ee3af60e929f5b19a3:::
qwerty:1003:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
123:1004:ccf9155e3e7db453aad3b435b51404ee:3dbde697d71690a769204beb12283678:::
user1:1005:d4a0539829018ea7aad3b435b51404ee:aebf16e3b8f04fd2995c2e8f4f8820d5:::
user2:1006:d4a0539829018ea7aad3b435b51404ee:bd36cffaa3c4af5ce6fbbdcc0020b6ef:::
user3:1007:96fa5702d3668de796fa5702d3668de7:ab4580d78905fc473fe721a043457167:::
user4:1008:aad3b435b51404eeaad3b435b51404ee:ae72983ede69ac85af294b54a55e3a09:::
* два первых имени пользователя - кирилические.


Cached credentails

Для кэшированых на локальном компьютере хэшей доменной учётной записи программа cachedump выдаст хэши:
cachedump <system hive> <security hive>

***

Cain&Abel среди своего обширного функционала имеет функцию "добычи" (функционал cracker'a) хэшей\кэшей NTLM\MSCASH из отдельных файлов реестра SAM и SYSTEM и с локальной машины.

***

Кроме вышеописанных инструментов можно использовать богатые возможности Metasploit Framework для получения хэшей.
Using the Metasploit SMB Sniffer Module

***

Ещё один путь получения хэшей - дамп оперативной памяти (возможно файл подкачки?), в котором можно обнаружить вышеупомянутый раздле реестра.

Подбор пароля

John the Ripper

john <file-with-hashes>
Эта команда запустит John в т.н. single crack режиме, программа будет перебирать пароли в соответствии с правилами описными в конфигурационном файле. Для NTLM хэшей необходимо использовать версию программы - jumbo.
В данном случае john начнёт подбирает пароли для LM хэшей, опция --format=NT предсказуемо сменит тип хэша.
Атака по словарю (-w <путь к словарю>)
john hashes -w common-passwords.lst
Прамаетр --user=<имя пользователя> указывает конкретного пользователя (если в файле с хэшами их несколько) для которого будет осуществлён перебор.
По ходу работы программа будет выводить найденные пароли  в виде: пароль (имя пользователя), статус работы можно посмотреть нажав любую клавишу.
После завершения атаки просмотреть (--show) пароли можно так
 john <file-with-hashes> --show
Так будет выглядеть вывод (--show)  если john подберёт пароль для LM хэша

user2:VEGA:d4a0539829018ea7aad3b435b51404ee:bd36cffaa3c4af5ce6fbbdcc0020b6ef:::

и для NT хэша
user2:Vega:d4a0539829018ea7aad3b435b51404ee:bd36cffaa3c4af5ce6fbbdcc0020b6ef::: 
Пароли расположены после имени пользователя (отмечены курсивом). Найденный пароль также можно увидеть в файле john.pot, что, как правило, лежит в каталоге с исполняемый файлом john.

Пример

bkhive <SYSTEM file> <key-file>
samdump2 <SAM file> <key-file> > <text-file> 
#for NT hashes
john  <hash-file> --format=NT
# or
john <hash-file>

john --format=NT <hash-file> --show > <pash-hash-file>
Для солёных именем пользователя хэшей доменных учётных записей -format:mscash:
john --wordlist:password.lst -format:mscash mydump.txt

 

SAMInside

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Другой софт:
Уже упомянутый Cain&Abel  умеет брутфорсить описанные типы хэшей.


Hashcat - поддерживает множество хэш-функций, может использовать GPU;
Ophcrack - взламывает NTLM хэши используя радужные таблицы;
etc.


Удаление или смена пароля

Для  сброса паролей можно воспользоваться консольной утилитой chntpw. Программа позволяет сменить пароль пользователя и наделить одного из пользователей правами администратора а также редактировать другие ключи реестра в ручном режиме. В ОС BackTrack, программа располагается вот здесь /pentest/passwords/chntpw/
Просмотреть (-l) пользователей
chntpw -l <SAM>
Интерактивный (-i) режим позволяет за несколько простых шагов проделать вышеописанные действия:
/pentest/passwords/chntpw/chntpw -i <SAM>




























После после завершения операций, перед выходом, остаётся утвердительно ответить на вопрос о сохранении изменений.

***

Возможность залогиниться без ввода пароля предоставляет платная программа Kon-Boot. Для этого следует предварительно загрузится с liveCD\USB Kon-Boot и после автоматического запуска Windows можно будет игнорируя поля ввода пароля войти в систему под любым пользователем. [демонстрация]

 

Ссылки

Learn samdump on backtrack 5
How to crack Windows Passwords using *dump
Memory Forensics: How to Pull Passwords from a Memory Dump
OnlineHashCrack.com
crack MD5, SHA1 and/or NTLM hashes

Восстанавливаем локальные и доменные пароли из hiberfil.sys
Volatility. Retrieve password from memory dump

Программы
cachedump

Калькуляторы хэшей
http://www.nitrxgen.net/hashgen/
***
Алсо