В этой статье мы узнаем, где в 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 HKLM\SYSTEM SystemBkup.hiv reg save HKLM\SAM SamBkup.hiv
В некоторых инструкциях вместо SYSTEM сохраняют куст SECURITY — это ошибка, с кустами SECURITY и SAM восстановить хеш не удасться, нужны именно SYSTEM и SAM!
Хеш пароля также содержится в оперативной памяти, а именно в процессе Local Security Authority Process (lsass.exe). Этот процесс всегда запущен в работающей Windows и можно сделать его дамп (копию процесса в оперативной памяти сохранить на диск в виде файла). Для создания дампа можно использовать различные утилиты, в том числе две официальные:
- ProcDump
- Диспетчер задач
Диспетчер задач уже имеется в каждой Windows, чтобы его открыть нажмите Win+r и наберите taskmgr, затем нажмите ENTER. Либо правой кнопкой мыши нажмите на панель задач (то есть на нижнюю полоску, где находятся часы, кнопка пуск и т. д.) и в контекстном меню выберите «Диспетчер задач».

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


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


Вывод довольно обширный и много не до конца понятных данных. Интерес представляют последовательно идущие строки вида:
User : ПОЛЬЗОВАТЕЛЬ Hash NTLM: ХЕШ
В моём примере интересные строки:
User : ShareOverlord Hash NTLM: 7ce21f17c0aee7fb9ceba532d0546ad6 User : Alexey Hash NTLM: ca76a176340f0291e1cc8ea7277fc571
Также есть строки с именами пользователей:
User : MiAl User : Администратор
Но после них нет строк с хешем NTLM, поскольку у этих пользователей не установлен пароль в системе.
Если вы хотите извлечь данные из файлов реестра текущей операционной системы, то выходим из mimikatz, для этого нажмите Ctrl+c.
Теперь сделаем дамп кустов реестра SYSTEM и SAM текущей системы:
reg save HKLM\SYSTEM SystemBkup.hiv reg save HKLM\SAM 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-Server\files\lsass.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%)
- Как установить веб-сервер (Apache, MySQL, PHP и phpMyAdmin) в Windows 11 (RANDOM – 0.2%)
В этой статье приводится описание нескольких способов как активировать учётную запись администратора в Windows или вернуть утраченные права в текущей сессии и в том случае, если традиционные способы не помогают. В этом случае нам может понадобиться загрузочный диск/флешка с подходящей версией Windows.
Как активировать учётную запись администратора в Windows XP.
Заново установленная система требует указать минимум одну учётную запись для этого компьютера. Но как только вы укажете этого пользователя, аккаунт администратора, встречавший вас по умолчанию, пропадёт с экрана и больше не появится. Давайте узнаем, как активировать учётную запись администратора и вернуть её на место. Для этого находим ветку реестра :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

Нужно изменить (или создать) параметр DWORD с именем Администратор. Присвоим ему значение 1 (двойной щелчок мышью по параметру). Закроем реестр и перезагрузим машину.
Теперь возможность входа под учётной записью администратора активирована. Конечно, учётная запись Администратора была открыта для входа до того. Как? При появлении окна приветствия нажмите несколько раз сочетание клавиш CTRL + ALT + DEL. Так что особых прерогатив этот взлом не имеет. Просто здесь заключена одна фишка: нередко при установке системы, пароль на Администратора не ставят, сразу вводят в строй учётные записи с правами админа, конечно уже запароленные. И благополучно об этой записи забывают. А зря. Ведь при отсутствии пароля на учётную запись Администратор (высокие права доступа, напомню), любой гость может получить доступ к любому файлу компьютера независимо от прав учётной записи, хотя учётная запись Гостя не может даже реестр править.
Как активировать учётную запись администратора в Windows 7, 8 и 10.
Дальнейшие действия проводим из консоли, запущенной (как это ни парадоксально звучит в нашем случае) именно с правами администратора. Это делается
- либо из контекстного меню:

- либо просто зажав сочетание клавиш Ctrl + Shift и запустить программу.
Из консоли в текущем сеансе
Итак, самый простой способ быстро активировать учётную запись админа, это команда:
net user администратор /active:yes

Дождитесь ответа консоли об успешной активации. Чтобы скрыть учётную запись снова, повторите команду в такой интерпретации
net user администратор /active:no
Однако, по тем или иным причинам Windows иногда упорно отказывается отображать учётную запись администратора. Если вы сталкиваетесь с проблемами в этом вопросе, давайте разворачивать возможности системы и зондировать почву.
Активировать учётную запись администратора до загрузки Windows
Сейчас мы с вами кое-что скорректируем в реестре.
- Перезагружаем Windows с выходом в дополнительное меню загрузки, выбрав режим Устранения неполадок.

- Следуем по кнопкам, пока не увидим окно выбора вариантов восстановления, остановившись на командной строке:

- Запускаем редактор реестра regedit и «тыцкаем» по кусту
- Выберем в панели инструментов редактора File (Файл) и Load Hive (Загрузить куст)

- подключаемый проводник перенесёт вас в системную директорию Windows по адресу… сейчас внимание!
Чтобы избежать в дальнейшем ошибки:

The Process Cannot Access The File Because It Is Being Used By Another Process
выберите правильный путь к SAM файлу. Нам нужна папка:
- так что разворачиваем путь с ниспадающей стрелкой и выбираем/ищем диск с системой (у меня он оказался D):

- продолжите путь до папки config, в которой найдёте файл SAM

- его-то нам и надо. Щёлкните по нему дважды, выбрав. Сразу появится окно с предложением его как-то назвать. Придайте ему любое имя, я назову SuperSAM:

- если ошибок нет — осталось чуть-чуть. Я отправляюсь по пути:
HKEY_LOCAL_MACHINE\\SAM\Domains\Accounts\UsersHKEY_LOCAL_MACHINE\\SAM\Domains\Accounts\Users\000001F40001F4
(смотрите на путь внимательно)
и скорректирую значение параметра F, дважды по нему щёлкнув:
- второй столбец слева, восьмое значение сверху. Поставьте перед курсор и нажмите клавишу Delete.
- Теперь нажмите — появится . Если не получается — нажмите внизу справа кнопку Cancel и попробуйте ещё раз. Пока не получится так:

- всё. Сохраняйтесь, выходите отовсюду и проверяйте перезагрузкой. Вы это искали?

Суперпользователь Windows: как получить максимум свободы для работы с системой? Статья, которая обязана появиться на таком сайте, как этот. Сейчас мы создадим (точнее, вернём) для системы ещё одного пользователя, которого:
- не будут беспокоить надоедливые сообщения системы о том, что нужны права на внесение изменений, что действия программ могут повредить компьютер, что Не стоит доверять программам из непроверенных источников… и т.п. и т.д.
- не будут волновать проблемы с отсутствием прав и привилегий на работу и сохранение изменений в системе (ваши права будут расширены); так, работа с командной консолью будет иметь почти неограниченный характер. Но лишь до определённых границ: работать с системными службами и файлами, с ними связанными, это привилегия системного аккаунта.
- не будут ограничивать системные настройки, не позволяющие диагностировать целый ряд проблем из-за отсутствия доступа к системным директориям
- не будет ограничиваться ни одна учётная запись — гуляйте по компьютеру, где хотите.
Когда это может понадобиться или что за суперпользователь?
Ну представьте себе, что к такой учётной записи получит доступ «кул»-хакер через трояна, через удалённый доступ? Или это будет вирус, который получит возможность заразить и «поработать» со всеми файлами системы, которые в нормальном режиме он и не заметит? Неверные же действия самого пользователя могут привести к последствиям пуще вирусной атаки. И никакое Средство восстановления системы вам уже помочь, вероятно, не сможет. «Демонтаж» системы — это далеко не только удаление системных файлов. Возможность контролировать и отслеживать запускаемые процесс — главная привилегия графического интерфейса пользователя в Windows. Отключая UAC и Smartscreen, вы здорово рискуете. Правило использования учётной записи Администратора (кстати, по умолчанию ) вытекают из её назначения: её нельзя удалить или заблокировать. Только переименовать или отключить. Так что активируем только по необходимости, а по окончании работ выключаем.
ИСПОЛЬЗУЙТЕ учётную запись СУПЕР-ПОЛЬЗОВАТЕЛЬ WINDOWS ТОЛЬКО НА АВАРИЙНЫЙ или ОСОБЫЙ СЛУЧАЙ РАБОТЫ.
Как переместить папку Пользователи на другой диск?
Всё так страшно?
Конечно, нет. Точнее, в принципе, нет. «Максимум» в шапке статьи — это маркетинговый ход, вы уж простите. Неограниченный набор прав и привилегий вам никто не предоставит. Аккаунт Администратора — это некий «последний шанс» на запрос повышенных прав на операции с объектом. Безопасность системы контролируют другие записи, доступ к которым у нас ограничен, и от имени которых глобально не получится. Так, только системному аккаунту позволен доступ ко всем файлам на NTFS-томах, к нему нельзя присоединиться и закрепить за ним пользовательские права. Он контролирует службы, начиная с момента установки. «Борьба» с ним является неустанной задачей различного рода тестировщиков всех мастей. Аккаунт Администратора отличается от стандартной учётки, принадлежащей к группе админов лишь тем, что окна Контроля учётных записей вы не увидите. Но этого зачастую достаточно, чтобы поставить систему в «нужное» положение. Так как есть пара моментов, которые стоит учесть.
О чём нужно помнить?
- это единственная и первая локальная учётная запись, которая появляется сразу уже в момент установки Windows. После предложения создать собственную учётку и её активации с настройкой та отключается. Администратора можно выключить, но не удалить;
- как и любая другая учётная запись, Администратор может быть локальным, так и привязанным к Microsoft. Однажды зарегистрировав ту в Microsoft, отвязать её, по идее, уже будет невозможно. Только переустановкой или с помощью точки восстановления. Однако однажды мне удалось смоделировать ситуацию с активацией аккаунта Администратора в Windows 7 и удалением остальных учётных записей. После чего Windows 7 была обновлена до Windows 10 с, опять же, единственным аккаунтом Админа, который удалось связать с аккаунтом на Microsoft с доступом к магазину приложений Windows Store (!). В обычной ситуации сделать. Не могу ручаться за то, что дырка всё ещё существует, и что это вообще такое было, но сброс настроек безопасности при апгрейде с W7 на W10 таким способом — серьёзная брешь в системе.
Немного справки.
В Windows XP и более ранних версиях аккаунт администратора был только один. И большинство из нас пользовались лишь им. Однако с момента появления Vista в системе появился ещё один, скрытый от глаз аккаунт «сверх»администратора. Он появляется вместе с установкой системы, но по умолчанию выключен. Пингвиноводы знают его как root-пользователя. Почему он отключён? В предупреждении сказано всё.
Включаем учётную запись Суперпользователь Windows.
Я предлагаю вам несколько вариантов активации скрытой учётной записи Администратора. Несколько, потому что вариантов развития событий бывает немало. В том числе для таких случаев, когда в учётную запись зайти нельзя.
Начинаем с простого. Запускаем консоль команд от имени администратора (WIN + R — пишем cmd -> Ctrl + Shift -> щелчком по ярлыку). Наберём команду с учётом русской локализации:
net user администратор /active:yes
Можете присвоить пароль и активировать учётную запись. Я присвоил пароль 12345 и заставил Windows отображать аккаунт суперпользователя при входе в систему:
net user администратор 12345

Суперпользователь Windows. Вариант второй.
Почти всё, что описано абзацами выше, можно сделать и через консоль Локальной политики безопасности. Чтобы туда попасть, воспользуемся клавишей WIN, набираем Локальная политика безопасности, переходим в разделы Локальные политики — Параметры безопасности (или командой secpol.msc в строке поиска WIN + R как альтернатива) и ищем настроечку Учётные записи: состояние учётной записи Администратор:

Активируйте запись, дважды по ней щёлкнув и выбрав Включён. Можете проверить работоспособность аккаунта, сменив учётную запись пользователя:

Пройдите недолгую процедуру оформления и установки настроек нового пользователя и вуаля!
Суперпользователь Windows
Отключаем запись суперпользователя командой в консоли:
net user администратор /active:no
или в настройках Локальной политики через Отключено.
Активировать скрытого Администратора Windows 7/10 — хитрости.
А вот теперь рассмотрим частные случаи создания профиля суперпользователя. Они пригодятся вам в случае, когда активировать учётную запись Администратора описанными выше способами не получается.
Через удалённый реестр.
Для этого нам необходимо вызвать командную строку до входа в любую из учётных записей. Для этого есть целая куча вариантов:
- перезагружаем Windows через кнопку Пуск, зажав клавишу Shift

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


Открываем папку config по пути
Выберем файл SAM и откроем его. В диалоговом окне назовём его как REM_SAM.



И отправляемся по пути
Справа от папки 000001F4 щёлкнем справа по параметру F и сменим бинарник в линии с 11 на 10 и согласимся с изменениями.

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

Эффективное получение хеша паролей в Windows. Часть 1
Менеджер учетных записей безопасности (Security Accounts Manager – SAM) – это файл реестра в Windows, начиная с Windows NT вплоть до самых последних версий Windows 7.
Слегка измененное определение из Википедии:
Менеджер учетных записей безопасности (Security Accounts Manager – SAM) – это файл реестра в Windows, начиная с Windows NT вплоть до самых последних версий Windows 7. В SAM хранятся хешированные пароли пользователей (в формате LM-хеш или NTLM-хеш). Благодаря тому, что хеш-функция однонаправленная, пароли находятся в относительной безопасности.
Вообще, получение хеша паролей пользователей операционной системы, как правило, один из первых шагов, ведущий к компрометации системы в дальнейшем. Доступ к хешированным паролям дает “зеленый свет” различным атакам, к примеру: использование хеша для SMB-аутентификации в других системах с тем же паролем, анализ парольной политики и распознавание структуры пароля, взлом пароля и.т.п.
Способов получения хешированных паролей из SAM множество, и выбор конкретного способа будет зависеть от того, каким именно доступом к компьютеру жертвы вы обладаете.
Физический доступ
- bkhive – получает syskey bootkey из куста системы
- samdump2 – получает хеши паролей в Windows 2k/NT/XP/Vista
Вышеназванные утилиты, как правило, поставляются со многими дистрибутивами GNU/Linux. Перед получением дампа хешей убедитесь, что вы располагаете этими утилитами.
bkhive systemhive keyfile
Пример получения хешей SAM из Windows-раздела /dev/sda1:
# mkdir -p /mnt/sda1
# mount /dev/sda1 /mnt/sda1
# bkhive /mnt/sda1/Windows/System32/config/SYSTEM /tmp/saved syskey.txt
# samdump2 /mnt/sda1/Windows/System32/config/SAM /tmp/saved-syskey.txt > /tmp/hashes.txt
Если же bkhive и samdump2 у вас нет, то можно скопировать SYSTEM и SAM файлы из /mnt/sda1/Windows/System32/config себе на флешку, а затем импортировать файлы с флешки в любую утилиту, позволяющую извлечь хеши SAM: например, Cain & Abel, creddump,mimikatz и.т.п.
Обход приглашения на ввод пароля
Если вы вместо того, чтобы получать хешированные пароли пользователей, думаете, как обойти приглашение на ввод пароля, воспользуйтесь следующими оригинальными решениями:
- BootRoot – проект, представленный на конференции Black Hat USA 2005 исследователями Дереком Сёдером (Derek Soeder) и Райаном Пермехом (Ryan Permeh). С помощью технологии BootRoot можно в стандартном загрузочном секторе выполнить код, который во время загрузки уронит ядро Windows. eEye BootRootKit – это NDIS бэкдор, который работает по типу boot-вируса и демонстрирует использование технологии BootRoot.
- SysRQ2 – загрузочный CD-образ, позволяющий пользователю в любое время после загрузки нажатием клавиш Ctrl-Shift-SysRq вызвать командную строку с полными привилегиями (привилегии SYSTEM). SysRQ2 работает на системах Windows 2000, Windows XP и Windows Server 2003. SysRQ2 впервые был продемонстрирован на конференции Black Hat USA 2005 исследователями Дереком Сёдером и Райаном Пермехом в качестве примера использования технологии eEye BootRootKit. Для создания диска с SysRq выберите опцию “создать CD из ISO-образа” в предпочтительном ПО для прожига дисков.
- Kon-Boot – прототип программы, благодаря которой на лету (во время загрузки) можно менять содержимое ядра Linux или Windows. В текущей сборке Kon-Boot позволяет войти в linux-систему под root’ом без ввода пароля или повысить привилегии текущего пользователя до root’а. В случае с Windows-системами с помощью Kon-Boot можно войти в любой защищенный паролем профиль без знания самого пароля.
Сброс пароля
Как вариант, можно загрузиться с live CD или флешки с bootdisk, и с помощью утилиты chntpw сбросить пароль любого локального пользователя Windows.
Использование пост-эксплойтов
В этой ситуации, как правило, система уже скомпрометирована, и вы получили доступ к командной строке с административными правами. Далее нужно повысить свои привилегии до пользователя SYSTEM. Например, с помощью утилиты PsExec из пакета SysInternals:
C:\>psexec.exe -i -s cmd.exe
Есть и другие способы повышения привилегии, но их описание останется вне рамок этого поста.
Методы, основанные на унаследованных возможностях Windows
Также стоит упомянуть утилиту regback.exe из пакета Windows 2000 Resource Kit Tools. Утилита слегка упрощает процесс, так как сливаются только нужные файлы:
C:\>regback.exe C:\backtemp\SAM machine sam
C:\>regback.exe C:\backtemp\SYSTEM machine system
Если regback.exe не срабатывает, то на системах Windows XP и выше можно воспользоваться утилитами regedit.exe и reg.exe:
C:\>reg.exe save HKLM\SAM sam
The operation completed successfully
C:\>reg.exe save HKLM\SYSTEM sys
The operation completed successfully
- Выполнить regedit.exe в Start/Run.
- Открыть ветку Computer\HKEY_LOCAL_MACHINE, правой кнопкой мыши щелкнуть по секции SAM и выбрать “Export” (“Экспортировать”).
- Установить значение параметра “Save as type” (“Тип файла”) в “Registry Hive Files” (“Файлы кустов реестра”).
- Проделать то же самое для куста SYSTEM.
И, наконец, еще один способ: файлы SAM и SYSTEM можно достать из каталога C:\Windows\repair. Но существует вероятность, что в каталоге содержаться устаревшие копии нужных файлов, информация о пользователях в которых неактуальна.
Метод, использующий теневое копирование томов
Метод стал известен относительно недавно, и впервые его использование продемонстрировал Тим Томс (Tim Tomes). Метод эксплуатирует функционал теневого копирования томов в современных операционных системах Windows для того, чтобы получить доступ к заблокированным ранее системным файлам, таким как файлы SAM и SYSTEM в каталоге C:\Windows\System32\config.
Для выполнения метода, вы можете воспользоваться cкриптом vssown, который дает возможность управлять теневым копированием.
Список теневых копий:
SHADOW COPIES
=============
Как и ожидалось, сначала никаких теневых копий нет.
Проверим статус службы теневого копирования (VSS):
Если тип запуска службы “Вручную”, то нам нужно установить тип запуска в первоначальное состояние (“Остановлена”).
Создадим теневую копию:
Проверим, что теневая копия создалась:
SHADOW COPIES
=============
Обратите внимание на значение параметров Deviceobject и ID. Значение первого параметра понадобиться для осуществления следующего шага, а значение второго – для очистки.
Достанем следующие файлы из теневой копии:
C:\>copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM .C:\>copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM .
Таким образом, мы только что скопировали файлы SAM и SYSTEM из теневой копии в папку C:\root.
И, наконец, остановим службу теневого копирования:
C:\>cscript vssown.vbs /stop
Методы, основанные на внедрении в память процессов
В основе подобных методов получения SAM-хешей из памяти лежит внедрение DLL в системный процесс LSASS, или, в общем случае, разбиение памяти на отдельные участки и изучение содержимого полученных участков. Манипуляции с памятью могут привести к падению процесса LSASS и Синему Экрану Смерти (BSoD), поэтому предпочтительнее использовать методы, основанные на копировании кустов реестра (regback.exe и reg.exe\regedit.exe), либо теневое копирование томов. Тем не менее, в некоторых особых случаях внедрение в память все-таки требуется.
Наиболее известным инструментом для получения хешей SAM, вероятно, является утилита fgdump – улучшенная версия pwdump6; обе утилиты разработаны командой foofus. Основное преимущество fgdump над pwdump заключается в возможности работать на системах Windows Vista и выше. Хотя пару раз я видел, как падали обе утилиты. Среди более стабильных и надежных инструментов можно выделить pwdump7 от Андреса Тараско (Andres Tarasco) и gsecdump от TrueSec. Обе утилиты работают на всех версиях Windows, как 32- так и 64-битных. Нужно отметить, что с контроллеров домена слить хеши паролей с помощью утилиты pwdump7 не получится, так как эта утилита вместо внедрения в LSASS читает хеши SAM из реестра. Еще одна надежная и популярная утилита – это PWDumpX, разработанная Ридом Арвином (Reed Arvin), хотя работает PWDumpX только на 32х разрядных системах.
Ниже на скриншоте показан дамп информации из SAM, полученной утилитой gsecdump на Windows Server 2003 SP2 32-bit:

Дамп информации о локальных пользователях после внедрения кода в процесс LSASS
В Metasploit Framework также имеются собственные модули пост-эксплойта, встроенные команды и скрипты для Meterpreter, позволяющие получить хеши SAM. Подробнее о работе кода и о том, какие идеи лежат в его основе можно прочитать в этих постах.
Разумеется, существует и множество других инструментов и методов, и важно знать, какой именно метод подходит для конкретной системы. Чтобы облегчить выбор, я создал сводную электронную таблицу, в которой перечислены нужные утилиты, их возможности и принципы работы, и, что самое важное, возможные проблемы при использовании таких утилит.
Изменения на 4 января 2012 г.
- Дэвид Мэлони (David Maloney) добавил в Metasploit Framework модули, позволяющие работать с процессом теневого копирования томов.
- TrueSec обновил gsecdump до версии v.2.0b5. Последняя версия стабильно работает на всех версиях Windows (как на 32х-, так и на 64х-разрядных).
лано нашел я пару статейек:
И еще одна:
Про взлом паролей windows было написано немало статей, но все они сводились к использованию какого-либо софта, либо поверхностно описывали способы шифрования LM и NT, и совсем поверхностно описывали syskey. Я попытаюсь исправить этот неодостаток, описав все подробности о том где находятся пароли, в каком виде, и как их преобразует утилита syskey.
Существует 2 возможности получения пароля — через реестр, или получив прямой доступ к файлам-кустам реестра. В любом случае нужны будут либо привелегии пользователя SYSTEM, либо хищение заветных файлов, например, загрузившись из другой ОС. Здесь я не буду описывать возможности получения доступа, но в целях исследования нагляднее будет выбрать первый вариант, это позволит не заострять внимание на структуре куста реестра. А запуститься от системы нам поможет утилита psExec от sysinternals. Конечно, для этих целей можно использовать уязвимости windows, но статья не об этом.
V-блок
Windows до версии Vista по умолчанию хранила пароль в двух разных хэшах — LM и NT. В висте и выше LM-хэш не хранится. Для начала посмотрим где искать эти хэши, а потом разберемся что из себя они представляют.
PsExec.exe -s -i -d regedit.
Чтобы наблюдать V-блок в удобном виде можно, например, экспортировать его в текстовый файл (File-Export в Regedit).
Вот что мы там увидим:

От 0x0 до 0xCC располагаются адреса всех данных, которые находятся в V-блоке, их размеры и некоторая дополнительная информация о данных. Чтобы получить реальный адрес надо к тому адресу, что найдем прибавить 0xCC. Адреса и размеры хранятся по принципу BIG ENDIAN, т.е понадобится инвертировать байты. На каждый параметр отводится по 4 байта, но фактически все параметры умещаются в одном-двух байтах. Вот где искать:
Адрес имени пользователя — 0xС
Длина имени пользователя — 0x10
Адрес LM-хэша — 0x9с
Длина LM-хэша — 0xa0
Адрес NT-хэша — 0xa8
длина NT-хэша — 0xac
В данном случае имя пользователя найдется по смещению 0xd4 + 0xcc и его длина будет 0xc байт.
NT-хэш будет располагаться по смещению 0x12c + 0xcc и его размер (всегда один и тот же) = 0x14.
Еще одна деталь, касающаяся хранения паролей — как к NT- так и к LM-хэшу всегда добавляются спереди 4 байта, назначение которых для меня загадка. Причем 4байта будут присутствовать даже если пароль отключен. В данном случае видно, что длина LM хэша =4 и если посмотреть на его адрес, можно эти 4 байта увидеть несмотря на то что никакого LM-хэша нет.
Поэтому при поиске смещений хэшей смело прибавляем 4 байта к адресу, а при учете размеров — вычитаем. Если удобнее читать код — вот примерно так будет выглядеть поиск адресов с учетом инверсии, лишних четырех байтов и прибавления стартового смещения 0xcc (код C#)
Алгоритмы
Теперь разберемся в алгоритмах шифрования.
Формирование NT-хэша:
1. Пароль пользователя преобразуется в Unicode-строку.
2. Генерируется MD4-хэш на основе данной строки.
3. Полученный хэш шифруется алгоритмом DES, ключ составляется на основе RID пользователя.
Формирование LM-хэша:
1. Пароль пользователя преобразуется в верхний регистр и дополняется нулями до длины 14 байт.
2. Полученная строка делится на две половинки по 7 байт и каждая из них по отдельности шифруется алгоритмом DES. В итоге получаем хэш длиной 16 байт (состоящий из двух независимых половинок длиной по 8 байт).
3. Полученный хэш шифруется алгоритмом DES, ключ составляется на основе RID пользователя.
4. В windows 2000 и выше оба полученых хэша дополнительно шифруются алоритмом RC4 с помощью ключа, известного как «системный ключ» или bootkey, сгенерированого утилитой syskey, и шифруются довольно хитрым образом.
Рассмотрим общую последовательность действий для получения исходного пароля и каждый шаг в отдельности
1. Получаем bootkey, генерируем на его основе ключи для RC4, расшифровываем хэши с помощью RC4
2. Получаем ключи для DES из RID’ов пользователей, расшифровываем хэши DES’ом
3. Полученые хэши атакуем перебором.
Bootkey
Системный ключ (bootkey) разбит на 4 части и лежит в следующих разделах реестра:
Раздел system находится в файле c:\Windows\System32\config\system
Следует отметить, что раздел CurrentControlSet является ссылкой на один из разделов controlset и создается в момент загрузки системы. Это значит что не получится его найти в файле system, если система неактивна. Если вы решили искать ключ в файле — необходимо узнать значение ContolSet по умолчанию в HKLM\SYSTEM\Select\default.
например если HKLM\SYSTEM\Select\default = 1 — вместо HKLM\System\CurrentControlSet\ ищем в HKLM\System\controlset001\
У каждого ключа реестра есть некий скрытый атрибут, известный как «class». Regedit его так просто не покажет, однако его можно увидеть, например, если экспортировать эти ключи реестра в текстовые файлы. В winapi для получения этого атрибута есть функция RegQueryInfoKey.
Фрагменты хранятся в строковом представлении шестнадцатеричных чисел, причем по принципу BIG ENDIAN (т.е не строка задом наперед, а число).
Например мы обнаружили вот такие записи:
Собраный из четырех частей ключ будет массивом байт:
Далее элементы этого массива переставляются на основе некоторого константного массива p
этот массив и есть так называемый bootkey. Только в шифровании паролей будет учавствовать не он а некий хэш на основе bootkey, фрагментов f-блока и некоторых констант. Назовем его Hashed bootkey.
Hashed bootkey
для получения Hashed bootkey нам понадобятся 2 строковые константы (ASCII):
На основе этих значений, склееных в один большой массив формируем MD5 хэш, который будет являться ключем для шифрования RC4
Hashed bootkey у нас в руках, осталось научиться с ним правильно обращаться.
Дешифруем пароли с помощью Hashed Bootkey
для паролей LM и NT нам понадобятся еще 2 строковые константы —
string almpassword = "LMPASSWORD";
string antpassword = "NTPASSWORD";
полученый md5 хэш — ключ для rc4, которым зашифрованы LM и NT хэши в V-блоке пользователя
DES
Ну здесь особо комментировать нечего, кроме функции des_set_odd_parity(ref key) — это одна из функций библиотеки openssl, задача которой добавить некоторые «биты нечетности», используется для повышения стойкости ключа к атакам.
После склеивания двух половин мы получим md4 хэш -в случае NT, или LanMan (DES) — в случае LM. Полученый хэш полностью готов к атаке перебором.
Кстати, md4 Хэш от пустого пароля — 31d6cfe0d16ae931b73c59d7e0c089c0
Исследование проведено на основе исходного кода ophcrack-3.3.1, а так же статьи Push the Red Button:SysKey and the SAM





