Где взять хеш пароля ВК

Содержание

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

pasta / security / password-hashing.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
executable file 99 lines (57 sloc) 18.2 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

Как безопасно хранить пароли

Итак, мы решили сделать авторизацию и регистрацию на сайте через пароли. Как максимально обезопасить пароли пользователей от взлома, от хостинговой компании, которой принадлежит сервер, и от своих же любопытных коллег, имеющих доступ к базе?

Расшифровка любого хеша

Солить и хешировать

Для начала, никогда не храните пароли в открытом виде. Храните соленые хеши от них.

Хеш-функция — это такая функция, которая принимает на вход произвольную строку (например, пароль) и выдает на выходе хеш — число или строку небольшой фиксированной длины, из которой невозможно восстановить исходные данные. Криптографическая хеш-функция отличается от обычной защитой от манипуляций, например, она не позволяет после изменения строки добавить несколько символов, чтобы получить такой же хеш, который был у исходной строки (обычные хеш-функции вроде CRC32 используются только для защиты от случайных ошибок, а не от умышленных воздействий).

Примерами криптографических хеш-функций являются, например, MD5, SHA256 (про них написано в вики, но предупрежу, что понять их алгоритм без знания основ криптографии будет непросто). Способы легко обратить хеш-функцию и получить из хеша исходную строку неизвестны. То есть получить хеш из пароля просто, а вот восстановить пароль, имея хеш практически невозможно — надо перебирать все возможные пароли, вычислять для каждого хеш и сравнивать с имеющимся.

Вот пример хешей от пароля ‘strongpassword’: md5(‘strongpassword’) = f93fc10472a31bb3061aa0b45e228c5a , sha1(‘strongpassword’) = 2ae868079d293e0a185c671c7bcdac51df36e385 . Здесь хеши записаны в 16-чной системе счисления с помощью символов 0-9, a-f.

Итак, если вместо пароля хранить его хеш, то мы по-прежнему можем проверить, правильный ли пароль ввел пользователь (получив его хеш и сравнив с тем, что хранится в базе), но не можем получить исходный пароль. Однако, просто хеширования недостаточно и этот подход имеет такие недостатки:

  • если у двух пользователей одинаковые пароли, то и хеши у них будут одинаковые
  • пользователи часто выбирают простые пароли, и у злоумышленника может быть заготовлена таблица хешей от популярных паролей вроде ‘123456’

И есть еще один, самый главный недостаток — все хеши можно подбирать одновременно. Допустим, злоумышленник украл базу с хешами паролей. Он начинает их подбирать, перебирая все возможные пароли, вычисляя для каждого хеш и сравнивая с украденной базой. Проблема в том, что все пароли перебираются по сути одновременно — злоумышленник нашел хеш для пароля ‘1’, сравнил его со всеми хешами в базе, и за один шаг узнал, есть ли в базе такой пароль или нет.

КАК РАСШИФРОВАТЬ ХЭШ SHA-256, MD-5, Bcrypt! БЫСТРО И ПРОСТО!

Благодаря добавлению соли даже одинаковые пароли получают разные хеши (так как у них разная соль), а таблицы заранее вычисленных хешей для популярных паролей становятся бесполезными. И атакующий теперь при переборе вынужден подбирать пароль для каждого хеша индивидуально, что сильно замедляет работу.

Для удобства хранения многие функции объединяют хеш пароля и соль, которая использовалась при хешировании, в одну строку, например такого формата: соль$хеш . Таким образом функция хеширования пароля может вернуть сразу и хеш, и сгенерированную ей соль.

Вычисление классчических хешей вроде md5 очень быстро делается на современном железе (до миллиардов хешей в секунду). Чтобы усложнить перебор, можно использовать более «тяжелые» для вычисления хеши, например http://ru.wikipedia.org/wiki/Bcrypt и http://ru.wikipedia.org/wiki/Scrypt где можно задавать сложность вычисления хеша (а в scrypt — еще и необходимый объем памяти). Сложные алгоритмы также не позволяют сделать специализированные устройства для ускорения вычисления хешей (так называемые ASIC’и), требуя наличия стандартного процессора и большого объема памяти.

Встроенные в PHP криптографические функции хеширования

В PHP5.5 и новее

В PHP5.5 сделали стандартный набор функций для работы с паролями, среди которых есть:

  • password_hash() — генерирует соль и возвращает эту соль и хеш для данного пароля
  • password_verify() — используется для проверки пароля, принимает на вход пароль и соленый хеш и проверяет, соответствует ли пароль хешу

Функция password_hash возвращает строку, которая содержит сразу хеш, соль и обозначение использованного алгоритма хеширования, так что для их хранения достаточно одной ячейки в базе данных. Подробнее:

  • http://php.net/manual/ru/faq.passwords.php
  • https://habrahabr.ru/post/194972/
  • md5 — генерирует хеш с использованием алгоритма MD5. Хеш состоит из 32 символов из набора [0-9a-f]
  • sha1 — генерирует хеш с использованием алгоритма SHA-1, возвращает хеш из 40 символов из набора [0-9a-f]
  • Расширение hash содержит функции хеширования для различных алгоритмов
  • Функция openssl_digest из расширения openssl позволяет хешировать данные различными алгоритмами

Чтобы сгенерировать соль, необходим надежный (непредсказуемый) криптографический генератор случайных чисел. В качестве него можно использовать:

  • добавленную в PHP7 функцию random_bytes()
  • openssl_random_pseudo_bytes() из расширения SSL, при этом важно прочитать документацию и убедиться, что используется надежный алгоритм
  • на linux/mac можно читать случайные данные из /dev/random

Библиотека https://github.com/paragonie/random_compat умеет выбирать подходящую функцию из имеющихся в наличии. Обратите внимание, что функции rand() и mt_rand() не являются криптографически надеждными, так как они используют относительно простой алгоритм и, имея несколько сгенерированных чисел, можно предсказать следующие.

Оценка сложности подбора пароля, зная хеш

Перебор без соли

Предположим, у нас есть база хешей паролей без соли, использующая алгоритм MD5. Для ее взлома мы перебираем все возможные пароли (например, начиная с 1111111 и заканчивая zzzzzzz) и вычисляем от каждого MD5-хеш. При этом число вариантов, которые надо подобрать, зависит от длины пароля и набора символов (чем их больше тем больше перебирать). Скорость вычисления MD5 хеша на топовых видеокартах в 2011 году составляла около 2 миллиардов в секунду ( http://www.opennet.ru/opennews/art.shtml?num=30201 и http://hashcat.net/oclhashcat/ ). А ведь можно взять не одну видеокарту, а много, если очень надо. Также, злоумышленник с большим количеством ресурсов может сделать специализированное устройство, работающее с более высокой скоростью (такие устройства делались для генерации биткоинов).

Еще по теме:  Как заблокировать страницу ВК сова никогда не спит

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

Если пароль состоит из 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 19 и перебирать их 5×10 9 (5 миллиардов) секунд на одной карте (57870 дней, или 158 лет) или 58 дней на массиве из тысячи видеокарт.

Люди часто ставят паролем не случайный набор букв, а слова или куски слов. Значит, какие-то символы рядом встречаются чаще, их можно перебирать в первую очередь, тем самым сокращая число вариантов и ускоряя время нахождения. У злоумышленников есть словари, а также огромные списки паролей, полученные ими из предыдущих взломов и утечек.

В общем, видно, что без добавления соли пароли подберутся на раз. И не все ставят 10-символьные пароли, у многих там просто слово или цифры.

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

Другой вариант — сгенерировать или скачать огромные радужные таблицы, где хранятся уже рассчитанные цепочки хешей (для простых паролей). И конечно все хеши от обычных паролей длиной до 10 символов там уже есть (больше нету, так как они начинают занимать гигабайты. Но это вопрос времени, когда жесткие диски станут больше). Если хранить в базе хеш без соли, то взлом будет очень быстрым.

Посмотреть, какого размера получаются таблицы, можно тут: http://project-rainbowcrack.com/table.htm

Вот пример такой таблицы: md5_loweralpha-numeric#1-10 316 GB — подбирает пароли без соли до 10 символов [a-z0-9].

Заметим что в будущем компьютеры будут мощнее, и значит подбираться пароли будут быстрее. Теперь подумаем, как защититься и усложнить жизнь взломщикам:

  • разрешаем использовать больше видов символов в паролях
  • добавляем соль. С солью не получится параллельно подбирать все хеши, что сильно замедляет взлом. Также, при добавлении соли даже к простому паролю он по сути становится длинным и сложным и его не будет в радужных таблицах (123456 → Y^juYUHkd%$123456). Опять же, соль должна быть подлиннее и содержать спецсимволы, чтобы было больше комбинаций для перебора. Но простые пароли вроде 123456 все равно вскроют, так как их при переборе проверяют в первую очередь. А вот сложные придется подбирать долго.
  • используем вместо MD5 более тяжелые для вычисления алгоритмы вроде BCrypt, который сделан так, что его нельзя вычислить быстрее, чем за определенное время (и можно указать требемый уровень сложности).

С правильным подходом даже простой MD5 придется долго расшифровывать.

Источник: github.com

Facebook хранил наши пароли в виде текста. Что это значит?

Один из вице-президентов Facebook по безопасности доложил, что некоторые пароли Facebook и Instagram могли храниться внутри Facebook в открытом виде, то есть в виде простого текста. Об этом сказано в официальном заявлении (на английском).

Разбираемся, в чём проблема и что делать.

Главное: смените пароль прямо сейчас

Даже если ваш пароль не засветился, сегодня отличный день, чтобы сменить свой пароль: так ваш аккаунт в Facebook будет лучше защищён. Также не забудьте включить двухфакторную авторизацию. Хотя, строго говоря, при желании её тоже можно сломать. Но всё равно смените пароль.

Сменили? Читайте дальше.

Что значит «хранить пароли в виде текста»? Разве они и так не хранятся в виде текста?

Когда говорят «пароли хранились в виде текста», имеют в виду, что пароли хранятся в читаемом для человека формате. Если у меня пароль murlyka3000, то в базе данных будет храниться ровно этот пароль. И тогда, если хакер получит доступ к базе данных, он запросто прочитает мой пароль.

Понимая эту потенциальную уязвимость, сайты пытаются защитить данные. Они применяют шифрование: пароли обычно хранятся не в открытом виде, а в виде шифра, который невозможно расшифровать. Грубо говоря, даже владелец сайта не может посмотреть, какой у вас пароль — только какая у вашего пароля шифровка.

Главное в этой схеме безопасности — хеширование. За подробностями — в кат:

Что такое хеш

Чтобы понять хеши, нужно сначала понять обычное шифрование. Как оно работает: вы берёте строку текста и какой-то известный вам алгоритм и трансформируете эту строку буква за буквой. Например, ваш алгоритм — добавлять после каждой буквы латинскую a:

Или ваш алгоритм — заменить все буквы на следующие за ними по алфавиту. A на B, D на E и так далее:

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

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

Это можно сравнить с отпечатком пальца: по отпечатку невозможно понять, кто перед нами, — мужчина или женщина, бизнесмен или программист, взрослый или ребенок. Но у каждого из них свой уникальный отпечаток пальца и по нему можно этого человека найти, если он есть в базе данных.

Похожая история с хешем: алгоритм устроен так, что невозможно определить, какой текст был зашифрован изначально. Так же, как по отпечатку невозможно понять, это брюнет или блондин. Текст может быть разной длины, а хеш всегда одной длины и на каждый уникальный текст он разный:

password 5F4DCC3B5AA765D61D8327DEB882CF99
Password DC647EB65E6711E155375218212B3964
passwordpassword 9DBB300E28BC21C8DAB41B01883918EB
kod 7A9E2FBA2F949C98C0DADBBAD7AE09A1

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

Получается, хеши — это защита на все случаи жизни?

Не совсем. Дело в том, что, имея доступ к большой базе данных с хешированными паролями, можно довольно шустро взломать существенную их часть. Метод взлома основан на том, что хеширование одной и той же строки даёт всегда один и тот же хеш. То есть, если на двух разных компьютерах захешировать одно и то же слово, вы получите два идентичных хеша.

Еще по теме:  Живые подписчики Вконтакте отзывы

Это значит, что если иметь достаточно большой набор заранее прохешированных строк, можно попробовать подобрать пароли, которые будут этим хешам соответствовать. Метод не стопроцентный, но если пароли простые — действенный.

Например, некий хакер выкрал базу данных из десяти миллионов захешированных паролей, связанных с логинами. В основном эти пароли создавали люди от 40 до 60 лет. У хакера есть гипотеза, что среди этих паролей будет довольно много паролей вроде qwerty, 12345, parol и дат рождения, например, 01121967.

Хакер знает, что он не может восстановить пароль, зная хеш. Но ещё он знает, что каждый уникальный пароль будет иметь свой постоянный хеш. И если два разных пользователя использовали один и тот же пароль, у них будут одинаковые хеши.

Хакер смотрит в базу данных и видит примерно миллион одинаковых хешей:

По хешу он не может сказать, что это за пароль. Но он может захешировать какие-нибудь распространённые пароли, которые могут использовать люди на этом сайте:

passwordv 5F4DCC3B5AA765D61D8327DEB882CF99 не совпало
qwerty123 3FC0A7ACF087F549AC2B266BAF94B8B1 не совпало
qwerty D8578EDF8458CE06FBC5BB76A58C5CA4 совпало!

То есть хакер предположил, что люди используют пароль qwerty , он этот пароль захешировал, сличил с хешем в базе данных, и всё совпало!

Можно пойти дальше и составить словарь всех популярных паролей в России. Получится что-то такое:

parol EE95A16D763AB0D26EE62C53056DF928
parol123 E9ABA73DE1A9715FD100FE111585CEBC
qwerty D8578EDF8458CE06FBC5BB76A58C5CA4
barsik BA2228A00D21E19C23E4F210A5B8A300
murzik A06E6AEFE1429F1DB6AAB26C573143C8
qwerty123 3FC0A7ACF087F549AC2B266BAF94B8B1
qwertyqwerty 12478E7AD0E39AA9C35BE4B9A694BA9B
12345 827CCB0EEA8A706C4C34A16891F84E7B
123456 E10ADC3949BA59ABBE56E057F20F883E
1234567 FCEA920F7412B5DA7BE0CF42B8C93759
123456789 25F9E794323B453885F5181F1B624D0B

Теперь добавим в этот словарь все даты рождения с 1 января 1948 года до 31 декабря 1978 года:

01011948 2202954E3ED7E98E4B4843DF26B2B7DB
02011948 87FECC21989F151A553AA8F1F6236697
.
31121978 CAFA45E47EA64F36B88030019A00F414

Допустим, всего в нашем словаре наберётся 10 тысяч паролей. Такие таблицы уже даже не нужно составлять вручную — можно написать программу, которая эту таблицу составит, а то и скачать готовую таблицу на хакерских форумах.

Угадайте, у какого числа людей в России пароль — это дата рождения?

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

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

Facebook хранил все пароли без хешей?

Нет. Facebook как раз хранит все пароли как надо. Но помимо хранения есть ещё много других функций: например, журнал событий, журнал восстановления пароля, журнал входов и выходов. Допустим, человек залогинился, но в процессе произошла ошибка, которую нужно записать. В таком случае Facebook мог записать пароль в открытом виде куда-то в свои логи.

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

То есть кто-то внутри компании Facebook мог увидеть мой пароль?

В пресс-релизе Facebook ясно сказано, что это исключено. Но чисто технически — да, кто-то мог.

Безобразие! Как же защищаться в этом мире?

  1. Используйте сложные пароли.
  2. Используйте разные почтовые аккаунты для входа на разные сервисы.
  3. Не используйте один и тот же пароль на разных сервисах.
  4. Используйте лучше менеджеры паролей.

А почему нельзя использовать один и тот же пароль на разных сервисах? Он же всё равно захеширован!

А представьте, что какой-нибудь нерадивый программист на форуме с бесплатными фильмами хранит ваш пароль в незашифрованном виде. Хакер получает доступ к базе данных незашифрованных паролей, а потом перебирает все остальные сервисы, пытаясь найти те, где ваш пароль подойдёт.

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

Ой, да кому я нужен! Я ж не миллионер, чтобы у меня воровать миллионы, да и кому нужна моя почта.

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

Например, как можно случайно попасть под горячую хакерскую руку:

  1. Вы зарегистрировались на игровом сайте, используя почту как логин и пароль от почты.
  2. Сайт случайно записал ваш пароль в открытом виде.
  3. Данные утекли с сайта из-за хакерской атаки. Хакеры получили миллион паролей.
  4. Хакеры включили программу перебора, которая пытается зайти в почты людей по тем паролям, которые указаны на игровом сайте.
  5. Хакеры составляют список людей, у которых подошли пароли к почте.
  6. Хакеры проверяют соцсети: вдруг те же пароли используются там. Составляют новый список.
  7. Наконец, хакеры проверяют интернет-банки. Если где-то пароль не подходит, они отправляют код для сброса пароля на почту. А к почте у них доступ есть.

Хакеры даже не узнают, что это именно вы и именно ваша почта. Они просто перебирают эти аккаунты тысячами в поисках хоть чего-то.

  1. Сложные пароли.
  2. Разные почты.
  3. Разные пароли в разных аккаунтах.
  4. Менеджеры паролей.

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Источник: thecode.media

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как взломать пароль Windows

В этой статье мы узнаем, где в 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, а именно следующие команды:

reg save HKLMSYSTEM SystemBkup.hiv reg save HKLMSAM SamBkup.hiv

В некоторых инструкциях вместо 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ПОЛЬЗОВАТЕЛЬAppDataLocalTemplsass.DMP. У меня имя пользователя MiAl и путь до файла C:UsersMiAlAppDataLocalTemplsass.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 извлекать хеши NTLM. Помните, у mimikatz есть и другие очень интересные функции — посмотрите, какая у неё обширная справка: https://kali.tools/?p=5342

Имеются реализации mimikatz в Meterpreter функции извлечения хешей из дампов или расшифровки из файлов реестра должны работать в Linux.

Как установить mimikatz в Windows

mimikatz — это портативная утилита командной строки. То есть установка не требуется, но нужно уметь запустить, если вы не очень знакомы с командной строкой.

1. Перейдите на страницу https://github.com/gentilkiwi/mimikatz/releases, скачайте файл mimikatz_trunk.7z или mimikatz_trunk.zip. Распакуйте скаченный архив.

2. Откройте PowerShell (Win+x → Windows PowerShell (администратор)) или командную строку (Win+r → cmd).

3. В командной строке с помощью команды cd перейдите в папку с исполнимым файлом mimikatz.exe. К примеру, архив распакован в папку C:UsersMiAlDownloads, тогда исполнимый файл будет в папке C:UsersMiAlDownloadsmimikatz_trunkx64:

cd C:UsersMiAlDownloadsmimikatz_trunkx64

4. Запустите исполнимый файл.

.mimikatz.exe

Как извлечь хеш пароля пользователя NTLM из файлов реестра

Следующие команды нужно выполнять в консоли mimikatz.

Команда log включает запись всего вывода в ФАЙЛ:

log ФАЙЛ

К примеру, для запуска всего вывода в файл hash.txt:

log hash.txt

Я скопировал с выключенного компьютера файлы SYSTEM и SAM, теперь для извлечения хеша мне нужно запустить команду вида:

lsadump::sam /system:C:путьдоSYSTEM /sam:C:путьдоSAM

Пример моей команды:

lsadump::sam /system:C:Share-ServerfilesSYSTEM /sam:C:Share-ServerfilesSAM

Вывод довольно обширный и много не до конца понятных данных. Интерес представляют последовательно идущие строки вида:

User : ПОЛЬЗОВАТЕЛЬ Hash NTLM: ХЕШ

В моём примере интересные строки:

User : ShareOverlord Hash NTLM: 7ce21f17c0aee7fb9ceba532d0546ad6 User : Alexey Hash NTLM: ca76a176340f0291e1cc8ea7277fc571

Также есть строки с именами пользователей:

User : MiAl User : Администратор

Но после них нет строк с хешем NTLM, поскольку у этих пользователей не установлен пароль в системе.

Если вы хотите извлечь данные из файлов реестра текущей операционной системы, то выходим из mimikatz, для этого нажмите Ctrl+c.

Теперь сделаем дамп кустов реестра SYSTEM и SAM текущей системы:

reg save HKLMSYSTEM SystemBkup.hiv reg save HKLMSAM SamBkup.hiv

Вновь запускаем mimikatz:

.mimikatz.exe

Включаем ведение журнала:

log hash-local.txt

И выполняем команду с указанием файлов, в которые сохранены дампы кустов реестра, то есть SystemBkup.hiv и SamBkup.hiv:

lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv

Здесь найден только один пользователь с хешем:

User : Администратор Hash NTLM: 5187b179ba87f3ad85fea3ed718e961f

На самом деле, для извлечения хешей NTLM из локальной системы необязательно было делать дамп кустов реестра. Другой вариант — повысить привилегии самой программы mimikatz и извлечь хеши непосредственно из системы. Для этого выполните команды:

privilege::debug token::elevate log hash-local2.txt lsadump::sam

Извлечение хеша NTLM из дампа lsass.DMP

По логике (и на практике) в дампе процесса Local Security Authority Process должен быть хеш только пользователя, выполнившего вход с паролем.

Вначале укажите путь до файла дампа командой вида:

sekurlsa::minidump C:путьдоlsass.DMP
sekurlsa::minidump C:Share-Serverfileslsass.DMP

Затем выполните команду:

sekurlsa::logonPasswords

Брут-форс хеша NTLM

Для взлома я возьму следующий хеш:

User : Alexey Hash NTLM: ca76a176340f0291e1cc8ea7277fc571

Загляним в справку Hashcat, чтобы узнать номер режима хеша NTLM:

1000 | NTLM | Операционные системы

То есть номер хеша NTLM равен 1000.

Чтобы запустить атаку по маске для взлома NTLM в Hashcat нужно выполнить команду вида:

hashcat -m 1000 -a 3 ‘ХЕШ’ МАСКА

Пример моей реальной команды:

hashcat —force —hwmon-temp-abort=100 -m 1000 -D 1,2 -a 3 -i —increment-min 1 —increment-max 10 -1 ?l?d ca76a176340f0291e1cc8ea7277fc571 ?1?1?1?1?1?1?1?1?1

  • 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 — маска из пользовательского набора символов

Взломаем ещё один хеш:

User : Администратор Hash NTLM: 5187b179ba87f3ad85fea3ed718e961f

Команда (другой хеш и другой набор пользовательских символов):

hashcat —force —hwmon-temp-abort=100 -m 1000 -D 1,2 -a 3 -i —increment-min 1 —increment-max 10 -1 ?l?u?d 5187b179ba87f3ad85fea3ed718e961f ?1?1?1?1?1?1?1?1?1

Итак, в этой статье мы научились извлекать хеш NTLM и взламывать пароль Windows. А что делать, если не удалось взломать NTLM? Ответ на этот вопрос смотрите во второй части, которая называется «Использование NTLM без взлома пароля: атака Pass-the-hash».

Связанные статьи:

  • Расшифровка хранимых в Windows паролей с помощью mimikatz и DPAPI (68.9%)
  • Полное руководство по John the Ripper. Ч.7: Johnny — графический интерфейс для John the Ripper (53.4%)
  • Полное руководство по John the Ripper. Ч.6: брут-форс нестандартных хешей (53.2%)
  • Хеши: определение типа, подсчёт контрольных сумм, нестандартные и итерированные хеши (52.9%)
  • Как определить тип хеша (52.9%)
  • Новая версия bettercap 2.x: как установить и использовать в Kali Linux (RANDOM — 0.7%)

Источник: hackware.ru

Рейтинг
( Пока оценок нет )
Загрузка ...