Как из хеша получить пароль
Copy raw contents
Copy raw contents
Как безопасно хранить пароли
Итак, мы решили сделать авторизацию и регистрацию на сайте через пароли. Как максимально обезопасить пароли пользователей от взлома, от хостинговой компании, которой принадлежит сервер, и от своих же любопытных коллег, имеющих доступ к базе?
Солить и хешировать
Для начала, никогда не храните пароли в открытом виде. Храните соленые хеши от них.
Хеш-функция - это такая функция, которая принимает на вход произвольную строку (например, пароль) и выдает на выходе хеш - число или строку небольшой фиксированной длины, из которой невозможно восстановить исходные данные. Криптографическая хеш-функция отличается от обычной защитой от манипуляций, например, она не позволяет после изменения строки добавить несколько символов, чтобы получить такой же хеш, который был у исходной строки (обычные хеш-функции вроде CRC32 используются только для защиты от случайных ошибок, а не от умышленных воздействий).
Примерами криптографических хеш-функций являются, например, MD5, SHA256 (про них написано в вики, но предупрежу, что понять их алгоритм без знания основ криптографии будет непросто). Способы легко обратить хеш-функцию и получить из хеша исходную строку неизвестны. То есть получить хеш из пароля просто, а вот восстановить пароль, имея хеш практически невозможно — надо перебирать все возможные пароли, вычислять для каждого хеш и сравнивать с имеющимся.
Вот пример хешей от пароля 'strongpassword': md5('strongpassword') = f93fc10472a31bb3061aa0b45e228c5a , sha1('strongpassword') = 2ae868079d293e0a185c671c7bcdac51df36e385 . Здесь хеши записаны в 16-чной системе счисления с помощью символов 0-9, a-f.
Итак, если вместо пароля хранить его хеш, то мы по-прежнему можем проверить, правильный ли пароль ввел пользователь (получив его хеш и сравнив с тем, что хранится в базе), но не можем получить исходный пароль. Однако, просто хеширования недостаточно и этот подход имеет такие недостатки:
- если у двух пользователей одинаковые пароли, то и хеши у них будут одинаковые
- пользователи часто выбирают простые пароли, и у злоумышленника может быть заготовлена таблица хешей от популярных паролей вроде '123456'
И есть еще один, самый главный недостаток - все хеши можно подбирать одновременно. Допустим, злоумышленник украл базу с хешами паролей. Он начинает их подбирать, перебирая все возможные пароли, вычисляя для каждого хеш и сравнивая с украденной базой. Проблема в том, что все пароли перебираются по сути одновременно - злоумышленник нашел хеш для пароля '1', сравнил его со всеми хешами в базе, и за один шаг узнал, есть ли в базе такой пароль или нет.
Для борьбы с этими недостатками используют "соление" паролей перед хешированием. При регистрации пользователя генерируется соль (salt) - случайный набор символов вроде H*5$@)_-hPoI&^530 . Соль не видна пользователю, потому она может быть сложной и длинной. Затем мы присоединяем соль к паролю, для пароля 123456 в итоге получается строка H*5$@)_-hPoI&^530:123456 . И затем уже от этой строки берем хеш и сохраняем в базу соль и хеш.
Благодаря добавлению соли даже одинаковые пароли получают разные хеши (так как у них разная соль), а таблицы заранее вычисленных хешей для популярных паролей становятся бесполезными. И атакующий теперь при переборе вынужден подбирать пароль для каждого хеша индивидуально, что сильно замедляет работу.
Для удобства хранения многие функции объединяют хеш пароля и соль, которая использовалась при хешировании, в одну строку, например такого формата: соль$хеш . Таким образом функция хеширования пароля может вернуть сразу и хеш, и сгенерированную ей соль.
Встроенные в PHP криптографические функции хеширования
В PHP5.5 и новее
В PHP5.5 сделали стандартный набор функций для работы с паролями, среди которых есть:
-
- генерирует соль и возвращает эту соль и хеш для данного пароля - используется для проверки пароля, принимает на вход пароль и соленый хеш и проверяет, соответствует ли пароль хешу
Функция password_hash возвращает строку, которая содержит сразу хеш, соль и обозначение использованного алгоритма хеширования, так что для их хранения достаточно одной ячейки в базе данных. Подробнее:
-
- генерирует хеш с использованием алгоритма MD5. Хеш состоит из 32 символов из набора [0-9a-f] - генерирует хеш с использованием алгоритма SHA-1, возвращает хеш из 40 символов из набора [0-9a-f] содержит функции хеширования для различных алгоритмов
- Функция openssl_digest из расширения openssl позволяет хешировать данные различными алгоритмами
Чтобы сгенерировать соль, необходим надежный (непредсказуемый) криптографический генератор случайных чисел. В качестве него можно использовать:
- добавленную в PHP7 функцию random_bytes() из расширения SSL, при этом важно прочитать документацию и убедиться, что используется надежный алгоритм
- на linux/mac можно читать случайные данные из /dev/random
Оценка сложности подбора пароля, зная хеш
Перебор без соли
Заметим, что из-за отсутствия соли мы подбираем пароли для всех хешей в базе параллельно, с примерно такой же скоростью, как и для одного хеша.
Если пароль состоит из N символов, и всего использованы M различных видов символов, то число возможных вариантов паролей, которые придется перебрать, равняется M N (M в степени N). Например:
- если в пароле 12 цифр 0-9 : число комбинаций = 10 12 = 1000 миллиардов = 500 секунд перебора на 1 видеокарте.
- если в пароле 6 букв a-z или цифр 0-9 . Число вариантов = 36 6 (считаем гуглом) = 2 млрд. Около секунды.
- если в пароле 6 букв a-zA-Z (добавим буквы в разном регистре) и цифр 0-9 . Комбинаций 62 6 = 56 млрд., или 28 секунд перебора.
- если в пароле 8 букв a-zA-Z и цифр 0-9 . Комбинаций уже 62 8 = 218 триллионов. Это примерно 109000 секунд перебора (в часе 3600 секунд, так что выходит 30 часов) на 1 карточке.
- если в пароле 10 символов из набора a-zA-Z0-9 или дополнительных 20 знаков вроде минус, плюс, то выходит 82 10 комбинаций
Люди часто ставят паролем не случайный набор букв, а слова или куски слов. Значит, какие-то символы рядом встречаются чаще, их можно перебирать в первую очередь, тем самым сокращая число вариантов и ускоряя время нахождения. У злоумышленников есть словари, а также огромные списки паролей, полученные ими из предыдущих взломов и утечек.
В общем, видно, что без добавления соли пароли подберутся на раз. И не все ставят 10-символьные пароли, у многих там просто слово или цифры.
В случае добавления соли указанное время выше подбора будет относиться к подбору одного хеша, а не ко всей базе.
Другой вариант — сгенерировать или скачать огромные радужные таблицы, где хранятся уже рассчитанные цепочки хешей (для простых паролей). И конечно все хеши от обычных паролей длиной до 10 символов там уже есть (больше нету, так как они начинают занимать гигабайты. Но это вопрос времени, когда жесткие диски станут больше). Если хранить в базе хеш без соли, то взлом будет очень быстрым.
Заметим что в будущем компьютеры будут мощнее, и значит подбираться пароли будут быстрее. Теперь подумаем, как защититься и усложнить жизнь взломщикам:
Этичный хакинг и тестирование на проникновение, информационная безопасность
В этой статье мы узнаем, где в Windows хранится пароль пользователя, как извлечь данные для взлома пароля Windows, как раскрыть пароль пользователя и как их использовать даже без брут-форса.
Не каждый пользователь использует пароль на Windows — особенно редко пользователи устанавливают пароль на домашнем компьютере, за которым работает один человек. Но в условиях корпоративной сети или при использовании Windows в качестве сервера, пароль является обязательным. Ещё одно интересное свойство пароля пользователя Windows: если пользователь завёл онлайн учётную запись Microsoft, то хеш пароля всё равно хранится на локальном компьютере, но расшифрованный пароль подойдёт и для локального компьютера, и для онлайн сервисов Microsoft.
Где Windows хранит пароль входа пользователя?
Пароли пользователей Windows хранятся в кустах (hives) реестра Windows под названием SYSTEM и SAM в файлах:
- C:/Windows/System32/config/SAM
- C:/Windows/System32/config/SYSTEM
Вместо пароля в виде простого текста, Windows хранит хеши паролей. Эти хеши легко поддаются брут-форсу, но даже без взлома хеши паролей Windows можно использовать для сбора данных и выполнения атак.
Как получить хеши паролей Windows
Дамп хешей паролей Windows на работающем компьютере
На запущенной системе проблематично получить доступ к файлам C:/Windows/System32/config/SAM и C:/Windows/System32/config/SYSTEM, хотя это и возможно. Для сохранения копий этих файлов можно использовать утилиту reg, а именно следующие команды:
В некоторых инструкциях вместо SYSTEM сохраняют куст SECURITY — это ошибка, с кустами SECURITY и SAM восстановить хеш не удасться, нужны именно SYSTEM и SAM!
Хеш пароля также содержится в оперативной памяти, а именно в процессе Local Security Authority Process (lsass.exe). Этот процесс всегда запущен в работающей Windows и можно сделать его дамп (копию процесса в оперативной памяти сохранить на диск в виде файла). Для создания дампа можно использовать различные утилиты, в том числе две официальные:
Диспетчер задач уже имеется в каждой Windows, чтобы его открыть нажмите Win+r и наберите taskmgr, затем нажмите ENTER. Либо правой кнопкой мыши нажмите на панель задач (то есть на нижнюю полоску, где находятся часы, кнопка пуск и т. д.) и в контекстном меню выберите «Диспетчер задач».
В Диспетчере задач нажмите «Подробнее» и во вкладке «Процессы», в разделе «Процессы Windows» найдите Local Security Authority Process, нажмите на него правой кнопкой мыши и выберите в контекстном меню пункт «Создать файл дампа»:
Файл будет сохранён по пути C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Local\Temp\lsass.DMP. У меня имя пользователя MiAl и путь до файла C:\Users\MiAl\AppData\Local\Temp\lsass.DMP.
Дамп хешей паролей Windows на выключенном компьютере
На выключенном компьютере для последующего извлечения пароля пользователя достаточно скопировать файлы:
- C:/Windows/System32/config/SAM
- C:/Windows/System32/config/SYSTEM
Эти же файлы можно найти в резервной копии Windows или в Shadow копии диска, либо скопировать загрузившись с Live системы.
Чем различаются хеши NTLM и NTLMv1/v2 и Net-NTLMv1/v2
Сейчас мы будем охотиться за хешем NTLM. В статье «Взлом сетевой аутентификации Windows» мы уже охотились за хешами NTLMv1 и NTLMv2, название которых довольно похоже.
На самом деле, NTLM и NTLMv1/v2 это довольно разные вещи. Хеш NTLM хранится и используется локально, а хеши NTLMv1/NTLMv2 используются для сетевой аутентификации и являются производными хеша NTLM. Используя любой из этих хешей можно расшифровать пароль пользователя Windows, но это разные алгоритмы шифрования/взлома.
Для атаки Pass-the-hash (мы рассмотрим её в этой статье) применим только хеш NTLM, а хеши NTLMv1/NTLMv2 не подходят.
Остался ещё один вопрос, что такое хеши Net-NTLMv1/v2. Хеши Net-NTLMv1/v2 это сокращённое название для хешей NTLMv1/v2, то есть NTLMv1/v2 и Net-NTLMv1/v2 это одно и то же. А NTLM это другое.
В этой статье мы будем извлекать, взламывать и эксплуатировать без взлома хеш NTLM.
Что такое mimikatz
Программа mimikatz хорошо известна за возможность извлекать пароли в виде простого текста, хеши, ПИН коды и тикеты kerberos из памяти. mimikatz также может выполнять атаки pass-the-hash, pass-the-ticket или строить Golden тикеты.
Имеются реализации mimikatz в Meterpreter & Metasploit, DLL reflection в PowerShell и других продуктах. В принципе, mimikatz можно запускать в Wine на Linux, но не будут работать функции, связанные с извлечением данных непосредственно из Windows; функции извлечения хешей из дампов или расшифровки из файлов реестра должны работать в Linux.
Как установить mimikatz в Windows
mimikatz — это портативная утилита командной строки. То есть установка не требуется, но нужно уметь запустить, если вы не очень знакомы с командной строкой.
2. Откройте PowerShell (Win+x → Windows PowerShell (администратор)) или командную строку (Win+r → cmd).
3. В командной строке с помощью команды cd перейдите в папку с исполнимым файлом mimikatz.exe. К примеру, архив распакован в папку C:\Users\MiAl\Downloads, тогда исполнимый файл будет в папке C:\Users\MiAl\Downloads\mimikatz_trunk\x64\:
4. Запустите исполнимый файл.
Как извлечь хеш пароля пользователя NTLM из файлов реестра
Следующие команды нужно выполнять в консоли mimikatz.
Команда log включает запись всего вывода в ФАЙЛ:
К примеру, для запуска всего вывода в файл hash.txt:
Я скопировал с выключенного компьютера файлы SYSTEM и SAM, теперь для извлечения хеша мне нужно запустить команду вида:
Пример моей команды:
Вывод довольно обширный и много не до конца понятных данных. Интерес представляют последовательно идущие строки вида:
В моём примере интересные строки:
Также есть строки с именами пользователей:
Но после них нет строк с хешем NTLM, поскольку у этих пользователей не установлен пароль в системе.
Если вы хотите извлечь данные из файлов реестра текущей операционной системы, то выходим из mimikatz, для этого нажмите Ctrl+c.
Теперь сделаем дамп кустов реестра SYSTEM и SAM текущей системы:
Вновь запускаем mimikatz:
Включаем ведение журнала:
И выполняем команду с указанием файлов, в которые сохранены дампы кустов реестра, то есть SystemBkup.hiv и SamBkup.hiv:
Здесь найден только один пользователь с хешем:
На самом деле, для извлечения хешей NTLM из локальной системы необязательно было делать дамп кустов реестра. Другой вариант — повысить привилегии самой программы mimikatz и извлечь хеши непосредственно из системы. Для этого выполните команды:
Извлечение хеша NTLM из дампа lsass.DMP
По логике (и на практике) в дампе процесса Local Security Authority Process должен быть хеш только пользователя, выполнившего вход с паролем.
Вначале укажите путь до файла дампа командой вида:
Затем выполните команду:
Брут-форс хеша NTLM
Для взлома я возьму следующий хеш:
Загляним в справку Hashcat, чтобы узнать номер режима хеша NTLM:
То есть номер хеша NTLM равен 1000.
Чтобы запустить атаку по маске для взлома NTLM в Hashcat нужно выполнить команду вида:
Пример моей реальной команды:
- hashcat — имя исполнимого файла. В Windows это может быть hashcat64.exe.
- --force — игнорировать предупреждения
- --hwmon-temp-abort=100 — установка максимальной температуры, после которой будет прерван перебор, на 100 градусов Цельсия
- -m 1000 — тип хеша NTLM
- -D 1,2 — означает использовать для взлома и центральный процессор, и видеокарту
- -a 3 — означает атаку по маске
- -i — означает постепенно увеличивать количество символов в генерируемых паролях
- --increment-min 1 — означает начать с длины маски равной единице
- --increment-max 10 — означает закончить перебор при длине маске равный десяти
- -1 ?l?d — пользовательский набор символов номер 1, в него включены маленькие латинские буквы (?l) и цифры (?d)
- ca76a176340f0291e1cc8ea7277fc571 — хеш для взлома
- ?1?1?1?1?1?1?1?1?1 — маска из пользовательского набора символов
Взломаем ещё один хеш:
Команда (другой хеш и другой набор пользовательских символов):
Итак, в этой статье мы научились извлекать хеш NTLM и взламывать пароль Windows. А что делать, если не удалось взломать NTLM? Ответ на этот вопрос смотрите во второй части, которая называется «Использование NTLM без взлома пароля: атака Pass-the-hash».
Метод шифрования и взлом пароля пользователя Windows
Когда я снова изучил Hastcat, он включал в себя взлом хеша Windows. Я чувствую, что здесь все еще есть некоторые моменты и детали. Я пишу статью, чтобы записать это.
Хеш обычно переводится как «хеш», но может быть напрямую транслитерирован как «хеш». Эта функция шифрования выполняет операцию функции шифрования для строки данных произвольной длины, а затем возвращает строку фиксированной длины. Хеш в основном используется для алгоритмов шифрования в области информационной безопасности.Получение открытого текста или хэша целевой системы во время тестирования на проникновение часто является важной частью всего процесса тестирования на проникновение. В системе Windows хэш пароля локального пользователя хранится в локальном файле SAM, а хэш пароля пользователя в домене хранится в файле NTDS.DIT элемента управления доменом.
Введение в LM Hash
Хэш LAN Manager (LM) - это первый алгоритм хеширования паролей, используемый в системах Windows. Это более старый хэш. Он используется в протоколе LAN Manager и очень легко получить учетные данные в виде открытого текста с помощью взлома грубой силы. Он имеет только одну версию и всегда использует хеширование NT LAN Manager (NTLM). В системах Windows Vista / Windows 7 / Windows Server 2008 и более поздних версий алгоритм хеширования LM отключен по умолчанию, а алгоритм LM находится в DES. реализован на основе, и не различает прописные и строчные буквы.
Принцип генерации LM Hash
Недостатки LM Hash
- Максимальная длина пароля может составлять всего 14 символов.
- Пароль не чувствителен к регистру
- Если надежность пароля меньше 7 бит, то результат шифрования второго блока должен быть aad3b435b51404ee.
- Пароль Des не надежный
Введение в NTLM Hash
Хэш NT LAN Manager (NTLM) - это еще один алгоритм, распознаваемый системой Windows. Он используется для замены старого LM-Hash. Обычно он относится к хэшу пароля пользователя, хранящемуся в диспетчере учетных записей безопасности (SAM) в системе Windows. Windows Vista / Windows В системах 7 / Windows Server 2008 и более поздних версий алгоритм хеширования NTLM включен по умолчанию.
Принцип генерации NTLM Hash
- Сначала преобразуйте пароль пользователя в шестнадцатеричный формат.
- Закодируйте пароль в шестнадцатеричном формате в Unicode.
- Используйте алгоритм дайджеста MD4 для вычисления хэша данных в кодировке Unicode
mimikatz
Mimikatz - это проект с открытым исходным кодом для чтения хеш-паролей и паролей в открытом виде для пользователей, вошедших в систему под Windows. Для беспрепятственного чтения паролей у вас должны быть разрешения администратора или системы, поэтому он также является одним из артефактов проникновения в интрасеть.
Локальное интерактивное сканирование
пробег mimikatz.exe , Откройте окно mimikatz, введите следующую команду:
Покажите, есть ли у вас соответствующие разрешения, чтобы продолжить:
Запустить функцию регистрации:
Выведите все пароли в открытом виде, хранящиеся на этом компьютере:
В это время он будет сгенерирован в каталоге, в котором запущена текущая оболочка. mimikatz.log , Которая записывает некоторые детали перехвата паролей.
Локальное неинтерактивное сканирование
Запускайте непосредственно из командной строки CMD с высокими привилегиями:
В это время он будет сгенерирован в каталоге, в котором запущена текущая оболочка. mimikatz.txt , Которая записывает некоторые детали перехвата паролей.
Удаленное неинтерактивное сканирование
лабораторная среда
Детали устройства | айпи адрес | Взять на себя роль |
---|---|---|
macOS | 10.211.55.2 | злоумышленник |
Windows 7 SP 1 | 10.211.55.12 | Атаковали |
macOS
Заранее встроенные мониторы macOS:
Guoguang Лично я предпочитаю больше команд ncat, в зависимости от личных предпочтений.
Windows
Здесь для удобства положил nc.exe Загружено на mimikatz.exe В том же каталоге:
DNS fwd/rev mismatch: GG != GG.lan
GG [ 10.211.55.2 ] 2333 ( ? ) open
эффект
После завершения этой операции, не оставляя никаких файлов в целевой системе, напрямую отправьте захваченные результаты на указанный удаленный компьютер с помощью nc. В это время сторона macOS получила возвращенную информацию о пароле:
Powershell load mimikatz grab
Когда целевая машина может подключиться к внешней сети:
В случае интрасети вы можете загрузить сценарий, создать локальный веб-сервер самостоятельно и получить к нему доступ через IP-адрес интрасети:
Взять образцы каждой версии системы
Windows Server 2003 R2
Ключевая информация такова:
Windows Server 2008 R2
Конфигурация Windows Server 2008 R2 по умолчанию все еще может считывать хэш типа LM, что не соответствует теории в Интернете, что указывает на то, что WIndows Server 2008 R2 и Windows 7 еще не полностью отключили хеш типа LM.
Windows 7 SP1
Ключевая информация такова:
Windows 10 1903
Ключевая информация такова:
Виды | ценить |
---|---|
имя пользователя | sqlsec |
Простой текст | Пусто здесь не читается |
NTLM | f00a25418f128daaef2bc89ed94416bd |
Windows 10 не может использовать mimikatz для чтения пароля в виде обычного текста, только зашифрованный можно прочитать напрямую NTLM ценить.
ProcDump + mimikatz
Официальный адрес сайта:ProcDump v9.0
ProcDump - это программа командной строки, которая может легко перенести запущенный процесс системы в файл дампа, и, поскольку он создается самой Microsoft, он может убить большое количество программного обеспечения.
дамп процесса lsass.exe
x86 x64, соответственно, выполнить соответствующие исполняемые файлы.Так как на этот раз тестовая система 64-разрядная, выполните procdump64.exe
В это время он будет сгенерирован в каталоге, в котором запущена текущая оболочка. lsass.dmp , Это файл, хранящийся в процессе lsass.exe, который записывает хеш-информацию.
Для систем NT6 и выше вы также можете использовать встроенные функции Windows для дампа:
Диспетчер задач Нажмите на Показать все процессы пользователей А затем найти lsass.exe Процесс, Щелкните правой кнопкой мыши ,Выбрать Создать файл передачи
Прочитать информацию о файле dmp
Перенести созданный выше lsass.dmp Файл в mimikatz.exe В том же каталоге выполните следующую неинтерактивную команду, чтобы прочитать пароль напрямую:
mimikatz.exe “sekurlsa::minidump lsass.dmp” “sekurlsa::logonPasswords” exit
QuarksPwDump
QuarksPwDump - это инструмент для экспорта информации об авторизации системы в среде Win32. Он поддерживает многие версии ОС Windows: XP / 2003 / Vista / 7/2008/8 (тест Windows10 Guoguang не прошел и хэш не был успешно прочитан)
имя файла | ссылка для скачивания |
---|---|
QuarksPwDump.exe | Ссылка для скачивания OneDriver |
Если вы хотите добавить антивирусную функцию самостоятельно, вы можете скомпилировать ее самостоятельно. Здесь Guoguang использует VS Studio 2010 для ее компиляции. Кстати, адрес загрузки прилагается:
имя файла | ссылка для скачивания |
---|---|
Учебная версия VC ++ 2010 и постоянный регистрационный code.zip | Ссылка для скачивания OneDriver |
Кроме того, у Githun есть другие обновленные версии, которые скомпилировал Даниэль, и мы также можем загрузить их напрямую:
Эта новая версия QuarksPwDumpv_0.3a добавила -sf параметр
QuarksPwDump записывает команду пароля следующим образом:
Возьмите Hash и сгенерируйте его в том же каталоге hash.txt Конкретный хеш файла выглядит следующим образом:
Взлом Hashcat
Когда вы получаете зашифрованный текст LM или NTLM, при отсутствии открытого текста, самый прямой метод - это, конечно, его расшифровать напрямую. Здесь для расшифровки пароля используется Hashcat. Студенты, которые не знают Hashcat, могут обратиться к этой статье :Запись обучения Hashcat
Предположим, мы читаем хэш следующим образом:
- LM : 921988ba001dc8e14a3b108f3fa6cb6d
- NTLM : e19ccf75ee54e06b06a5907af13cef42
Фактически, это открытый текст: P @ ssw0rd
Давайте использовать Hashcat, чтобы вкратце продемонстрировать взлом, здесь я использовал его для взлома -a 0 Взлом словаря, hashcat -help может увидеть, что соответствующие хеш-номера LM и NTLM соответственно 3000 с 1000
Ничего особенного, давайте пройдемся по процессу и раскроем его:
Hashcat взламывает LM Hash
Поскольку длина LM Hash составляет не более 14 символов, пароль делится на 2 символа длиной 7 для хранения, поэтому, когда Hashcat взламывается здесь, он также разделяется на две части для взлома отдельно:
Hashcat взламывает NTLM Hash
Взлом прошел успешно и были получены следующие результаты:
Взлом хеша в Интернете
Для старого иностранного веб-сайта взлома хэша просто введите значение NTLM Hash:
Есть много других веб-сайтов, которые не рекомендуются, вот только два наиболее используемых веб-сайта.
Доставка хэша
Вступление
PASS THE Hash также называется атакой передачи хэша, или сокращенно PTH. Имитация входа пользователя в систему не требует пароля пользователя в виде открытого текста, и только полученный хэш может использоваться для входа в целевую систему.
Предпосылками для успешного использования являются:
Включите службу SMB на порту 445
Открыть общий доступ администратора $
Здесь хэш пользователя-администратора, захваченный mimikatz для целевой Windows Server 2008 R2 (10.211.55.4):
Хэш пользователя-администратора, захваченный QuarksDump:
После теста Guoguang, когда следующий хэш пройден, если следующий NTLM-хеш верен, вы можете успешно войти в систему с тем, что вы вводите спереди. После тестирования следующий хеш может быть успешным:
Другими словами :E19CCF75EE54E06B06A5907AF13CEF42 Эта деталь играет ключевую роль в аутентификации. Пока номер на лицевой стороне правильный, нет проблем с заполнением чего-либо. Ниже приводится конкретная демонстрация.
Metasploit
В Metasploit есть три модуля psexec, которые можно использовать для передачи хэша. Это:
auxiliary/admin/smb/psexec_command
[ + ] 10.211.55.14:445 - Service start timed out, OK if running a command or non-service executable … .
[ ] 10.211.55.14:445 - checking if the file is unlocked
[ ] 10.211.55.14:445 - Getting the command output … .
[ ] 10.211.55.14:445 - Executing cleanup … .
[ + ] 10.211.55.14:445 - Cleanup was successful
[ + ] 10.211.55.14:445 - Command completed successfully !
[ ] 10.211.55.14:445 - Output for “whoami” :
[ ] 10.211.55.14:445 - Scanned 1 of 1 hosts ( 100% complete )
[ ] Auxiliary module execution completed
Более безвкусно то, что этот модуль не поддерживает пакетную проверку формата сетевого сегмента, поэтому следующие два модуля можно рассматривать в реальных боевых условиях.
exploit/windows/smb/psexec
Поддерживает IP в формате сегмента сети для облегчения пакетной проверки PTH. Ниже приводится единый процесс проверки:
[ ] Started reverse TCP handler on 10.211.55.4:4444
[ ] 10.211.55.14:445 - Connecting to the server … .
[ ] 10.211.55.14:445 - Authenticating to 10.211.55.14:445 as user ‘administrator’ … .
[ ] 10.211.55.14:445 - Selecting PowerShell target
[ ] 10.211.55.14:445 - Executing the payload … .
[ + ] 10.211.55.14:445 - Service start timed out, OK if running a command or non-service executable … .
[ ] Sending stage ( 179779 bytes ) to 10.211.55.14
[ * ] Meterpreter session 2 opened ( 10.211.55.4:4444 - > 10.211.55.14:49168 ) at 2019-11-24 23:42:38 +0800
Следующий эффект пакетной проверки сетевого сегмента более практичен и эффективен в качестве такой проверки в интрасети:
По поводу вопроса о том, что предыдущий 32-битный хеш не работает, я зашел на форум T00ls, чтобы задать вопрос. Вот ответы мастеров:
iceword: Предыдущий - lm hash, lm hash устарел и не используется для проверки, поэтому вы можете добавить что угодно
Hello_C: NTLM Hash = LM Hash + NT Hash, если LM Hash имеет значение aad3b435b51404eeaad3b435b51404ee, пароль может быть пустым или хеш lm не сохраняется. В 2008 году хеш lm не сохраняется по умолчанию. Pth использует хэш nt. Для некоторых инструментов может потребоваться формат хеша lm hash: nt. Без хеша lm для заполнения можно использовать любые 32 символа.
Гость безопасности: Если пароль пуст или LM-хэш не сохранен, мы поймали LM-хэш AAD3B435B51404EEAAD3B435B51404EE. Итак, в win7 мы видим, что все пойманные LM-хэши - это AAD3B435B51404EEAAD3B435B51404EE, а LM-хеш здесь не имеет значения.
exploit/windows/smb/psexec_psh
[ ] Started reverse TCP handler on 10.211.55.4:4444
[ ] 10.211.55.14:445 - Executing the payload … .
[ + ] 10.211.55.14:445 - Service start timed out, OK if running a command or non-service executable … .
[ ] Sending stage ( 179779 bytes ) to 10.211.55.14
[ ] Meterpreter session 3 opened ( 10.211.55.4:4444 - > 10.211.55.14:49169 ) at 2019-11-24 23:44:12 +0800
Этот модуль также поддерживает пакетную проверку сегментов сети, поэтому я не буду здесь вдаваться в подробности.
Безопасность веб-приложений: Что можно, а что нельзя делать при шифровании с использованием соли.
Безопасность веб-приложений: Что можно, а что нельзя делать при шифровании с использованием соли
Обзор:
Вопрос безопасности баз данных стал более насущным по мере того, как базы данных становились более открытыми. Шифрование является одним из пяти основных факторов безопасности данных.
Небезопасной практикой является хранение такой важной информации, как пароль, номер кредитной карты в базе данных в незашифрованном виде. Эта статья охватывает различные возможности шифрования.
Даже в если вы зашифровали вашу информацию, это совершенно не значит, что она находится в полной безопасности. В этой статье рассматриваются действия со стороны злоумышленника.
Приложения, не использующие хеши:
Во время изучения веб-приложения я дошел до этого места программы. Программа использовала javascript для шифрования пароля пользователя перед отправкой. В качестве соли использовался текущий ID сессии.
Итак, на сервере:
На сервере программа не сможет проверить значение пароля по причине использования соли и случайного ID сессии. И поскольку MD5 является нереверсивной хеш-функцией, пароль не сможет быть проверен до тех пор, пока пароли хранятся в виде текста в базе данных.
В качестве соли для шифрования пароля перед отправкой используется случайно сгенерированный ID сессии. Это значит, что серверные базы данных не будут зашифрованы.
Иногда такого рода программы выдают много информации.
Пункт №1: Всегда шифруйте вашу базу данных паролей.
- Алгоритм, используемый для хеширования, должен иметь какие-то изъяны. Хеши должны быть реверсивными
- Использование брут-форс атаки для перебора хешей с помощью словаря или радужных таблиц.
- Или у вас просто UPDATE привилегии. Тогда просто замените значения хешей паролей на известные вам.
Функция: md5(“входные данные”); Hash(“входные данные”); Вывод: 32 Символа Пример: “5f4dcc3b5aa765d61d8327d eb882cf99”
Функция: System.Security.Cryptogr aphy Вывод: 32 Символа Пример: “5f4dcc3b5aa765d61d8327d eb882cf99”
Функция:java.secur ity.MessageDigest Вывод: 32 Символа Пример: “5f4dcc3b5aa765d61d 8327deb882cf99”
Функция: Crypt() По-умолчанию DES вывод: 13 Символов Пример: “sih2hDu1acVcA”
Читайте также: