- Эффективное получение хеша паролей в Windows. Часть 1
- Физический доступ
- Обход приглашения на ввод пароля
- Сброс пароля
- Использование пост-эксплойтов
- Методы, основанные на унаследованных возможностях Windows
- Метод, использующий теневое копирование томов
- Методы, основанные на внедрении в память процессов
- Сброс пароля в Windows 7
- Способ #1
- Способ #2
- Способ #3
Эффективное получение хеша паролей в 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 множество, и выбор конкретного способа будет зависеть от того, каким именно доступом к компьютеру жертвы вы обладаете.
Физический доступ
При получении физического доступа к системе, например, когда у вас в руках оказался чужой ноутбук, или когда социальная инженерия закончилась успешно, лучше всего слить хеши паролей следующим образом: во время перезагрузки войти в меню BIOS, изменить приоритет загрузки, так чтобы вначале запускался оптический или USB-привод, сохранить изменения и загрузиться с вашего любимого live CD c дистрибутивом GNU/Linux или с флешки. Есть две широко известные утилиты для дампа хешированных паролей из SAM: bkhive и samdump2:
- bkhive — получает syskey bootkey из куста системы
- samdump2 – получает хеши паролей в Windows 2k/NT/XP/Vista
Вышеназванные утилиты, как правило, поставляются со многими дистрибутивами GNU/Linux. Перед получением дампа хешей убедитесь, что вы располагаете этими утилитами.
bkhive 1.1.1 by Objectif Securite
original author: ncuomo@studenti.unina.it
bkhive systemhive keyfile
samdump2 1.1.1 by Objectif Securite
original author: ncuomo@studenti.unina.it
samdump2 samhive 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
В системах Windows NT и Windows 2000 можно воспользоваться утилитой Ntbackup из подсистемы MS-DOS: сохраните бэкап состояния системы в локальном файле на скомпрометированной машине, а затем снова используйте Ntbackup и восстановите состояние системы в локальном каталоге без сохранения настроек безопасности. По окончании описанной процедуры вы будете обладать файлами SAM и SYSTEM. Первоначальный бэкап Windows 2000 c последними пакетами обновлений и исправлений занимает около 280МБ. Для более современных версий Windows вместо Ntbackup подойдет утилита Wbadmin.Также стоит упомянуть утилиту 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, который дает возможность управлять теневым копированием.
Список теневых копий:
C:\>cscript vssown.vbs /list
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Как и ожидалось, сначала никаких теневых копий нет.
Проверим статус службы теневого копирования (VSS):
C:\>cscript vssown.vbs /status
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
C:\>cscript vssown.vbs /mode
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] VSS service set to ‘Manual’ start mode.
Если тип запуска службы “Вручную”, то нам нужно установить тип запуска в первоначальное состояние (“Остановлена”).
Создадим теневую копию:
C:\>cscript vssown.vbs /create
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Attempting to create a shadow copy.
Проверим, что теневая копия создалась:
C:\>cscript vssown.vbs /list
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Client accessible: True
[*] Device object: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
[*] Exposed locally: False
[*] Exposed remotely: False
[*] Hardware assisted: False
[*] No auto release: True
[*] Not surfaced: False
[*] No writers: True
[*] Originating machine: LAPTOP
[*] Service machine: LAPTOP
Обратите внимание на значение параметров 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 /delete
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Attempting to delete shadow copy with ID:
И, наконец, остановим службу теневого копирования:
C:\>cscript vssown.vbs /stop
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Signal sent to stop the VSS service.
Методы, основанные на внедрении в память процессов
В основе подобных методов получения 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. Подробнее о работе кода и о том, какие идеи лежат в его основе можно прочитать в этих постах.
Разумеется, существует и множество других инструментов и методов, и важно знать, какой именно метод подходит для конкретной системы. Чтобы облегчить выбор, я создал сводную электронную таблицу, в которой перечислены нужные утилиты, их возможности и принципы работы, и, что самое важное, возможные проблемы при использовании таких утилит.
Сброс пароля в Windows 7
Пароли, а особенно безопасные (читай сложные) имеют неприятное свойство — они легко забываются. Ну или чаще всего просто теряется бумажка с этим самым паролем. Ситуация, в общем, типичная. Поэтому неплохо бы подготовиться к ней заранее и знать, как быстро сбросить или сменить пароль.
Способ #1
Самая известная из утилит для сброса пароля — это Offline NT Password and Registry editor, которая умеет работать с паролями и реестром Windows XP/Vista/7. Скачайте USB- или CD-версию утилиты, запишите загруженный образ на диск или воспользуйтесь советами по созданию мультизагрузочной флешки.
Утилита не имеет графического интерфейса, но пугаться этого не стоит — всё в ней довольно просто и понятно. К тому же часто нужная опция предлагается по умолчанию, так что от вас потребуется только нажать клавишу Enter .
Загрузитесь со съёмного носителя Offline NT Password and Registry editor. Вам вряд ли понадобятся дополнительные опции загрузки, но в некоторых случаях придётся опытным путём подобрать те, которые помогут утилите запуститься.
На следующем этапе надо выбрать номер раздела, на котором установлена Windows. Ориентироваться придётся в первую очередь по его размеру. В принципе, до самого последнего момента программа не вносит никаких изменений в Windows, поэтому в случае ошибки можно просто начать процедуру сброса пароля заново.
Затем утилита попросит указать путь до папки, где находятся файлы SAM (фактически это куст реестра). По умолчанию это %WinDir%\System32\config, его же и предлагает вначале программа.
Потом надо выбрать первый пункт (Password reset), так как мы собрались сбросить пароль.
Дальше всё просто. Выбираем первый пункт (Edit user data and password).
Вписываем имя пользователя или его идентификатор в формате 0xabcd, где abcd — это RID, указанный в первом столбце. RID пригодится, если имя пользователя некорректно отображается или его не получается ввести. Например, при использовании кириллицы.
Осталось указать пункт 1 (сброс пароля) или 2 (смена пароля) для выбранного пользователя.
Выходим из режима редактирования пароля, введя восклицательный знак и нажав Enter .
Всё, почти готово. Выходим из режима редактирования пользователя, введя q и нажав Enter .
Затем соглашаемся с внесением изменений, введя y и ещё раз нажав Enter .
Отказываемся от дальнейшей работы в Offline NT Password and Registry editor (n), извлекаем флешку или CD-диск и нажимаем заветную комбинацию Alt + Ctrl + Del для перезагрузки. Готово — пароль сброшен!
Это был простой способ сброса пароля Windows 7. Сложностей с ним быть не должно. Надо всего лишь быть внимательным и аккуратным. Проблемы могут возникнуть только при отсутствии необходимых драйверов для работы с жёстким диском. Тогда придётся закинуть их на дискету (если вы, конечно, найдёте живого представителя этого почти вымершего вида и рабочий привод для него) или на USB-флешку и на первом этапе выбрать пункт fetch additional drivers.
Способ #2
Для второго и третьего способов понадобится только установочный диск Windows 7 и больше ничего. Более сложный вариант подразумевает включение изначально скрытой учётной записи «Администратор» путём правки реестра из установочной среды Windows 7. В дальнейшем можно будет войти в систему под этой учётной записи и отредактировать любой другой аккаунт в ОС . По умолчанию «Администратор» не имеет пароля, что только играет нам на руку.
Итак, загружаемся с установочного диска и нажимаем Shift + F10 для вызова командной строки, где вбиваем regedit и жмём Enter для запуска редактора реестра.
Выделяем раздел HKEY_LOCAL_MACHINE, а в меню выбираем «Файл» → «Загрузить куст» («File» → «Load hive»). Нам надо открыть файл SAM, который находится в папке %WinDir%\System32\config на том разделе, где установлена Windows 7.
При открытии будет предложено ввести имя загружаемого куста — вбивайте любое (например temp_hive ). Теперь нужно перейти к следующему разделу:
HKEY_LOCAL_MACHINE\ temp_hive \SAM\Domains\Account\Users\0001F4 и дважды кликнуть по ключу F. Откроется редактор, в котором надо перейти к первому числу в строке 038 — это 11. Его надо изменить на 10. Будьте аккуратны и не ошибитесь — поменять надо только его, не добавляя и не удаляя другие числа!
Теперь надо выделить наш куст HKEY_LOCAL_MACHINE\ temp_hive \ и в меню необходимо выбрать «Файл» → «Выгрузить куст» («File» → «Unload hive»), а затем подтвердить выгрузку куста.
Всё, можно перезагрузиться, вытащив предварительно установочный диск, и войти в систему под администраторским аккаунтом. В панели управления Windows в разделе управления пользователями можно изменить настройки другой учётной записи. В том числе поменять пароль.
Способ #3
Окошко это принадлежит маленькой вспомогательной программке sethc.exe , которая лежит в системной директории Windows. Более того, она запускается даже на экране приветствия, когда вам предлагают выбрать пользователя и ввести пароль. Но ведь её можно заменить чем-нибудь полезным. К примеру, cmd.exe . Естественно, не прямо в запущенной ОС , а загрузившись с установочного диска Windows 7 и нажав Shift + F10 .
Начать надо с определения буквы диска, на котором установлена Windows. Самое легкое — просто просмотреть содержимое корня раздела командой dir .
Определившись с буквой тома (например C: ), выполняем две простые команды — одной копируем на всякий случай оригинальный файл sethc.exe в корень диска или куда душе угодно, а второй меняем его на cmd.exe .
Перезагружаемся, быстро нажимаем несколько раз клавишу Shift (или Ctrl ) и наблюдаем окно с командной строкой. В нём надо ввести ещё одну команду, подставив соответственно имя нужного пользователя и новый пароль. С другими параметрами этой команды можно ознакомиться в официальной справке.
Если вы захотите вернуть всё на круги своя, то надо снова загрузиться с установочного диска, открыть консоль и выполнить команду:
Впрочем, можно ничего не восстанавливать, а оставить такой маленький трюк в системе на всякий случай.
Помимо перечисленных выше способов, есть множество других методик сброса или восстановления пароля в Windows, но сейчас мы их рассматривать не будем. Ещё раз призываем наших читателей быть внимательными и аккуратными при работе с внутренностями ОС , а ещё лучше не доводить ситуацию до «хирургического» вмешательства в SAM. Удачного вам восстановления доступа к учётным записям!