В каком виде операционная система хранит пароли в виде хеш кода

Обновлено: 04.07.2024

Эта статья представляет собой полный сборник рецептов, описывающих, как сдампить хеши пользовательских паролей, восстановить исходный пасс путем выполнения брутфорса и получить с помощью извлеченного хеша доступ к защищенным ресурсам, используя недоработки протокола аутентификации NTLM. Минимум теории — только практика. Мы собрали все в одном месте и создали полный мануал.

WARNING

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

Где пароли?

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

  • из локальной SAM-базы, где хранятся LM/NTLM-хеши локальных пользователей;
  • из кеша LSA, в который попадают LM/NTLM-хеши доменных пользователей, стираемые после перезагрузки;
  • из специального кеша, где сохраняются MSCache-хеши паролей десяти последних пользователей, которые авторизовались на данном хосте (пароли кешируются, чтобы можно было войти в систему, если связь с доменом временно отсутствует).

Если используется контроллер домена, есть еще AD-хранилище. Важно понимать одно: из каждого указанного места пароли можно сдампить! Большинство приведенных ниже приемов давно известны, но мы решили сделать своего рода полный сборник рецептов, к которому ты всегда сможешь обратиться при необходимости. Ниже 7 готовых к употреблению рецептов.

PwDump и fgdump

Начнем с ситуации, когда у нас есть физический доступ к интересующей нас системе. В этом случае NTLM/LM-хеши можно сдампить с помощью специальных утилит. В большинстве своем эти тулзы требуют высоких привилегий, так как они необходимы для DLL-инжекта с помощью SeDebugPrivilege. Будем для простоты считать, что у нас есть аккаунт с правами администратора (а еще лучше NT AUTHORITY\SYSTEM).

Получаем хэши локальных пользователей при помощи pwdump

Получаем хэши локальных пользователей при помощи pwdump

Если имеется физический доступ, сдамить хеши довольно просто: есть много способов, к тому же всегда можно загрузить с флешки (или LiveCD), например, Kon-Boot, чтобы войти в систему под любым пользователем. Есть и много других хаков (в том числе для повышения привилегий до NT AUTHORITY\SYSTEM с локального админа), о которых мы не раз писали в рубрике EasyHack в прошлом году. Но вернемся к процессу извлечения хешей. Самыми известными утилитами для создания дампа хешей являются pwdump и fgdump. Работать с этими тулзами достаточно просто, да и по функционалу они очень похожи. Для дампа хешей достаточно просто запустить проги:

Первая утилита выводит найденные хеши непосредственно в консоль. Вторая же сохраняет результат в файлах 127.0.0.1.PWDUMP (хеши паролей локальных пользователей) и 127.0.0.1.CACHEDUMP (закешированные хеши паролей доменных пользователей).

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

Здесь 10.1.1.1 — адрес удаленной машины, MYDOMAIN\someuser — аккаунт пользователя, lamepassword — пароль пользователя, а mytarget.log — файл для сохранения результатов. В отличие от pwdump, fgdump умеет дампить хеши не только с одной машины, а сразу с нескольких:

В данном случае hostfile.txt — файл, содержащий список хостов, «-T 10» — количество параллельно работающих потоков. Полученный хеш можно попробовать сбрутфорсить с помощью специальных утилит, чтобы узнать исходный пасс (ищи целую подборку подходящих тулз на врезке).

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

Дамп паролей с помощью Volume Shadow Copy Service

Если утилитам вроде pwdump и fgdump сто лет в обед, то способ дампинга паролей, о котором пойдет речь далее, появился относительно недавно. Что круче всего, он вообще не требует сторонних инструментов и задействует только возможности самой системы. Как мы уже знаем, хеши паролей локальных пользователей хранятся в том числе и в файле SAM, правда, в зашифрованном виде. Поэтому, чтобы прочитать их, требуется еще один файл — SYSTEM. Эти два файла представляют собой системные ветви реестра, которые ОС постоянно использует, поэтому доступ к ним невозможен даже из-под администратора. Из-за этого многим приложениям, которые извлекают хеши паролей, приходится идти на ухищрения, чтобы получить доступ к этим ветвям. Мы же, чтобы скопировать эти файлы, воспользуемся легальным механизмом, который предоставляет сама ОС. Этот механизм, позволяющий делать «мгновенный снимок» тома, называется Volume Shadow Copy Service (теневое копирование тома). Он появился в ОС Windows начиная с версий XP и Server 2003. Эта технология автоматически используется, например, при создании архива System State с помощью утилиты ntbackup или при создании снимка для общей папки (Volume Shadow Copy for Shared Folders). Суть идеи состоит в том, что при теневом копировании будут созданы копии важных системных файлов (в частности, SAM и SYSTEM), доступ к которым мы сможем легко получить. Чтобы избавиться от лишней работы в консоли, воспользуемся небольшим скриптиком vssown.vbs, управляющим созданием копий. Сценарий ты найдешь на нашем диске. Для начала запускаем сервис теневого копирования: cscript vssown.vbs /start. Затем создаем новую теневую копию: cscript vssown.vbs /create. Теперь смотрим список всех теневых копий: cscript vssown.vbs /list.

Созданная нами копия будет самой последней. Из всей информации нас интересует Device object со значением «\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14» (здесь 14 — номер теневой копии). Дальнейшие манипуляции предельно просты.

  1. Копируем интересующие нас файлы:copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14\ windows\system32\config\SYSTEM . copy \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy14\ windows\system32\config\SAM .
  2. Все, теперь эти файлы можно скормить какой-нибудь утилите типа SAMInside для расшифровки полученных хешей.

Дамп паролей всех пользователей домена!

Интересно, что используя предыдущий прием, можно легко слить хеши паролей не только локальных, но и вообще всех доменных пользователей! Правда, только если у нас есть доступ к контроллеру домена. Предположим, мы создали теневую копию и скопировали файлы SAM и SYSTEM. Active Directory хранит данные о пользователях в файле NTDS.DIT, так что нужно скопировать и его:

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

У нас появился файл /libesedb/esedbtools/ntds.dit.export/datatable. Уже профит. Теперь его надо расшифровать при помощи ключа, который содержится в SYSTEM:

Готово! На выходе получаем хеши всех пользователей домена! Интересно, что можно извлечь еще и предыдущие пароли пользователей (их хеши). Для этого в инструментарии имеется отдельная утилита, которую легко задействовать:

Если их удастся взломать, вполне можно проследить закономерность, в соответствии с которой пользователь меняет свои пароли (она очень часто существует).

HashGrab2 + samdump2

Чтобы сдампить хеши, необязательно логиниться в системе. Опять же, если есть физический доступ к компьютеру, то можно не только загрузить с LiveCD утилиту для сброса пароля (скажем, Offline NT Password & Registry Editor), но и легко сдампить хеши с помощью специального софта — еще бы, ведь никакие политики доступа к системным файлам тут не действуют. Мы воспользуемся утилитами HashGrab2 и samsump2, которые можно запустить практически из любого LiveCD-дистрибутива. HashGrab2 автоматически монтирует все Windows-разделы, которые может найти, и при помощи samdump2 извлекает логины и хеши паролей из файлов SAM и SYSTEM. Вот как это выглядит на практике:

Полученные хеши тут же можно скормить брутфорсеру.

Выключаем кеширование хешей паролей

Как известно, Windows кеширует хеши паролей и логины доменных пользователей, что позволяет зайти на машину, если контроллер домена отключен и недоступен. Если пользователь вводит правильный логин и пароль, то при авторизации система сохраняет хеш пароля на диске. Как ты сам понимаешь, держать такие данные на диске — не самое лучшее решение с точки зрения безопасности, так что эту функцию лучше отключить. Для этого необходимо установить ключ HKEYLOCALMACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\cachedlogonscount в значение «0». Затем надо перезагрузить компьютер, чтобы удалить все закешированные ранее пароли. С этого момента винда не будет кешировать пароли пользователей домена.

Возможности Metasploit

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

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

Как видишь, все происходит автоматически, без всяких сложностей. Чтобы дальше ковыряться с любыми файлами системы, полезно сразу поднять права. Получить их можно прямо из Метерпретера, в котором есть простая команда getsystem. Этот модуль попробует поднять права в ОС, используя уязвимости MS09-012, а также нашумевшую уязвимость MS10-015 (KiTrap0D) и не только.

Cain&Abel — еще одна замечательная тулза для брутфорса NTML хэшей (кроме этого поддерживает взлом хэшей большого количества других алгоритмов)

Cain&Abel — еще одна замечательная тулза для брутфорса NTML хэшей
(кроме этого поддерживает взлом хэшей большого количества других алгоритмов)

Техника Pass-the-Hash

В обеих реализациях протокола NTLM есть большая дырка. Для аутентификации достаточно знать только хеш пользователя, то есть даже брутить ничего не надо. Достал хеш — и можешь лазить по сетке с правами скомпрометированного юзера :). Соответствующий метод, который носит название Pass The Hash, разработан аж в 1997 году. Одной из его самых известных реализацией является набор утилит Pass-the-Hash Toolkit. В него входит три утилиты: IAM.EXE, WHOSTHERE.EXE и GENHASH.EXE. Как видно из названия, GENHASH предназначена для генерации LM- и NT-хешей переданного ей пароля. WHOSTHERE.EXE, выводит всю информацию о логин-сессиях, которую операционная система хранит в памяти. Тулза отображает информацию о пользователях, которые на данный момент залогинены в системе: имя юзера, домен/рабочую группу и NTLM-хеши пароля. Утилита IAM.EXE позволяет прикинуться другим пользователем при получении доступа к какой-либо папке на удаленной машине, подменяя данные текущего пользователя (логин, хеш пароля, домен и т. д.), когда они в закешированном виде отправляются удаленной системе, чтобы она могла идентифицировать пользователя и решить, предоставлять ли ему доступ к запрашиваемому ресурсу. После успешной подмены все сетевые соединения с удаленными серверами, осуществляющие аутентификацию с помощью NTLM-хешей, используют подмененные данные, что позволяет получить доступ к «чужой» шаре. Рассмотрим примерный сценарий использования:

whosthere.exe — получаем данные всех залогиненных пользователей; • iam.exe -h administrator:mydomain:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0— подменяем свои данные на данные другого пользователя.

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

Windows Credentials Editor

Подменяем свои данные на данные другого пользователя при помощи Windows Credentials Editor (WCE)

Подменяем свои данные на данные другого пользователя при помощи Windows Credentials Editor (WCE)

WCE представляет собой аналог Pass-the-Hash Toolkit’а, однако здесь весь функционал сосредоточен в одном исполняемом файле. Этот инструмент мне нравится больше. При запуске без параметров приложение возвращает список пользователей, залогиненных на данный момент в системе (утилита вытаскивает NTLM/LM-хеши из памяти):

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

Тогда выполняем следующую команду:

Здесь «-s» «добавляет» нового пользователя с именем user и доменом Victim, за которыми следует LM- и NTLM-хеш, а «-с» указывает, какую программу следует запустить под этим пользователем. Как видишь, все довольно просто. 🙂

Программы для взлома хешей

SAMInside

Расшифровываем пароли при помощи SAMInside

Расшифровываем пароли при помощи SAMInside

lm2ntcrack

ighashgpu

CUDA-Multiforcer

ophcrack

John the Ripper

Заключение

Вот, собственно, и все. Мы рассмотрели все наиболее часто встречающиеся ситуации. На самом деле существует гораздо больше способов, позволяющих увести (например, с помощью снифера) и использовать хеши, но в большинстве своем они сводятся к рассмотренным выше методам.

Механизм хранения паролей

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

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

Дампинг пароля для входа в систему Windows из файла SAM

Файл SAM ( Security Account Manager ) — это файл базы данных Windows XP и более поздний версий, в котором хранятся пароли пользователей. Их можно использовать для аутентификации локальных и удаленных пользователей. Пароли пользователей хранятся в хешированном формате в кусте реестра (либо в виде LM-хэша, либо в виде NTLM-хэша). Его можно найти здесь: %SystemRoot%/system32/config/SAM .

Протокол LM отключен в Windows Vista и более поздних версиях по умолчанию, поскольку было доказано, что он является скомпрометированным протоколом. Технически файл SAM не может быть скопирован или перемещен во время работы Windows, так как ядро Windows получает и сохраняет неповторимую блокировку файловой системы в файле SAM и не снимет блокировку до тех пор, пока система не будет выключена. Однако копия SAM может быть получена с помощью различных методов, которые подробно описаны в этой статье.

Дампинг учетных данных | SAM

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

В данном случае нужный пользователь – это raj, а пароль от Windows – 123. Пользователь успешно получил хэш NTLM и может взломать его с помощью различных инструментов взлома паролей, таких как john или hashcat .

Пользуясь онлайн взломщиком NTLM, пользователь способен успешно взломать только что полученный хэш NTLM.

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

В Windows 7 используется шифрование RC4 , которое уже устарело. Следовательно, Mimikatz применяется для сброса хэшей в открытом текстовом файле. Однако с тех пор, как вышло обновление Windows 10 Anniversary Update v1607, Microsoft использует шифр AES-128 для шифрования данных. Этот апдейт сделал многие инструменты сброса паролей также устаревшими. Уже достаточное количество инструментов были обновлены для решения данной проблемы, как и сам Mimikatz . Однако он иногда не может предоставить пользователю четкий текстовый дамп паролей и хэши.

Дампинг сети Windows, RDP и браузера с помощью диспетчера учетных данных

Дампинг учетных данных | Диспетчер учетных данных Windows

Сохраненные пароли для входа в систему будут видны следующим образом:

Пользователь может сбросить эти учетные данные с помощью специальных команд для mimikatz:

Помимо этого, пользователь способен использовать lazagne, еще один полезный инструмент, который можно скачать, если перейти по этой ссылке .

Чтобы запустить lazagne, следует ввести следующую команду:

Терминал также может содержать сохраненный пароль RDP. Чтобы просмотреть сохраненные пароли RDP, следует обратить свое внимание на приведенный ниже скриншот:

Что провести дампинг сохраненных паролей RDP, пользователь применяет NirSoft’s Network Password Recovery. Эту программу можно скачать здесь .

Отлично! Успешный дампинг паролей RDP осуществлен.

Дампинг паролей для автоматического входа в систему Windows

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

После успешного выполнения команды перед пользователем появится следующее окно:

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

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

Теперь, чтобы сбросить пароль для автоматического входа в систему, пользователь будет использовать приложение, разработанное компанией NirSoft под названием Network Password Recovery . Его можно скачать здесь .

Пользователь запускает приложение. Все готово к дампингу.

Дампинг паролей Windows с помощью процессов LSASS

LSASS (Local Security Authority Subsystem Service) — это процесс в операционных системах Microsoft Windows, который отвечает за применение политики безопасности в системе . Он проверяет вход пользователей в компьютер или на сервер Windows, обрабатывает изменения паролей и создает маркеры доступа. Он также записывает данные в журнал безопасности Windows. Когда пользователь пытается локально войти в систему, введя имя пользователя и его пароль в диалоговом окне входа в систему, процесс входа вызывает LSA, который передает учетные данные пользователя менеджеру учетных записей безопасности (SAM). Последний же управляет информацией об учетной записи, хранящейся в локальной базе данных SAM.

SAM сравнивает учетные данные пользователя с информацией об учетной записи в своей базе данных, чтобы понять, имеет ли пользователь право получить доступ к системе. Если он находит информацию об учетной записи пользователя в базе данных SAM, SAM аутентифицирует пользователя. Он создает сеанс входа в систему и возвращает идентификатор безопасности пользователя (SID) и SID глобальных групп, членом которых и является сам пользователь в LSA.

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

Интересно, что LSA может быть сброшен, а пароли могут быть извлечены из текущего сеанса. Чтобы продемонстрировать это, пользователь сначала узнает, как создать LSAdump вручную.

Возможно, вопрос глупый и для чайников, может, даже, задан он не правильно, но всё же, где?

Пароли а точнее их Hash-и (шестнадцатиричные коды) в зашифрованном виде находятся в папке C:\WINDOWS\system32\config в файлах sam и system (файлы без расширений) . Для взлома паролей нужно загрузиться с системного диска или прицепить свой винчестер к другому компьютеру и скопировать их в какую-нибудь папку. Копирование этих файлов из работающей операционной системы невозможно т. к. они являются частью реестра Windows. После копирования для взлома можно воспользоваться программой SAMInside. Если пароль сложный то его определение довольно долгий и кропотливый труд.

Поищи через поискови внутренний (поиск фаилов) фаилы с расширением *.pwl. Это если в Винде. а в линухах посложнее)))

C:\WINDOWS\system32\config\SAM.LOG
Только что ты с ним делать будешь? Там веть пароли как я помню идут по хеш и ты некгда их несможешь прочеть (ну или почти некогда. Способ есть но это тема отдельного разговора)

ищи ответ в вопросе. файлы паролей находятся в системе ))))))))

А какая разница? всё равно они закриптованны и никто не знает как их прочитать, потому что система сам генерирует их криптографию в соответствии с заложенным алгаритмом

Если речь о виндовс, то %SystemRoot%system32config файлы sam и system только он хранит только хэши паролей, то есть его еще раскодировать нужно, но задача это вполне реальная (в линукс криптография посерьезнее будет) . есть даже какой то онлайн сервис который в считаные секунды декриптит хэш файл, если пароль несложный (недлинный и содержит тока буквы одного алфавита и цифры)
Вот целая статья по поводу того, как спереть хеши паролей с компа [ссылка заблокирована по решению администрации проекта]

Мой друг, пожалуйста комментируй ссылки, чтобы модеры их не банили. Ты предоставил очень ценную информацию. Огромное спасибо!

c:\windows\system32\config\
там лежат 2 файлика (SAM и SYSTEM! БЕЗ РАСШИРЕНИЙ! ) - вот в них и содержатся имена пользователей и пароли. В зашифрованном виде разумеется. Расмшифровать помогут программки типа SAMinside и NTpassworder.

image

Слегка измененное определение из Википедии:

Менеджер учетных записей безопасности (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:

Если же 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:

Использование 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:

  • Выполнить 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.

[*] ID:
[*] Client accessible: True
[*] Count: 1
[*] Device object: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
[*] Differnetial: True
[*] Exposed locally: False
[*] Exposed name:
[*] Exposed remotely: False
[*] Hardware assisted: False
[*] Imported: False
[*] No auto release: True
[*] Not surfaced: False
[*] No writers: True
[*] Originating machine: LAPTOP
[*] Persistent: True
[*] Plex: False
[*] Provider ID:
[*] Service machine: LAPTOP
[*] Set ID:
[*] State: 12
[*] Transportable: False
[*] Volume name: \\?\Volume\

Обратите внимание на значение параметров 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. Подробнее о работе кода и о том, какие идеи лежат в его основе можно прочитать в этих постах.

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

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