Syskey – программа Windows (в NT 4 начиная с Service Pack
3, в 2000/XP - по умолчанию), которая добавляет новый уровень
безопасности в хранение хешей паролей в базе данных SAM. Главная ее
функция состоит в уменьшении вероятности оффлайновой атаки
за счет дополнительного шифрования паролей. Известно, что главная
возможность хищения паролей с Windows машины – копирование системного
SAM файла и его расшифровка для добычи паролей при помощи
многочисленных программ, предназначенных для этого, хотя, само собой,
для этого нужен физический доступ к компьютеру.
Syskey несколько затрудняет действия взломщика, хотя существуют инструменты которые с обходят это препятствие.
Ключ, используемый для работы Syskey (так называемый bootkey или
системный ключ), можно получить тремя путями. Выбрать метод можно при
запуске Syskey.exe на машине:
- Используя ключевую фразу (ее MD5 хэш). Система запросит ее при старте.
- Используя сгенеренный системой ключ, который хранится на загрузочной дискете.
- Используя сгенерированный системой ключ, сохраненный в самой системе. Именно такой способ используется по умолчанию.
В первых случая бороться с Syskey практически невозможно, если
только у вас нету пароля или дискеты. Т.е. вам придется ломать
еще и Syskey. Третий же вариант несколько проще в обходе. Именно он и
будет рассмотрен в этой статьей с указание необходимых для взлома
системы инструментами.
В процессе загрузки Windows, перед тем как пользователю позволят
залогиниться, главный поток Smss (Session Manager) стартует процесс
Winlogon. Он, в свою очередь, требует Local Security Subsystem (Lsass),
который и работает с базой данных SAM через свой сервис. При работе
ситсема получает доступ к следующим ключам реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\JD
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Skew1
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Data
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\GBG
Довольно просто разработать утилиту, которая бы получала ключ Syskey из
реестра. На версиях до четвертого сервиспака система доступа дает
пользователю с юзеровскими правами читать значения этих записей, так
что любой нормальный пользователь может прочитать необходимый ключ. Для
этого была
разработана программа Bkreg.
На версиях с SP4, хотя система доступа и изменилась, все равно
можно получить эти данные. В таких ОС сделано так, что только
пользователь с правами Администратора может прочитать из реестра нужную
информацию. Но ведь хакер может вместе с SAM похитить и файл реестра,
который хранится на жестком диске. Для этого существует
другая программа – Bkhive.
Так или иначе, получить ключ можно. Теперь другой вопрос – у нас
есть база SAM и ключ Syskey, как снять защиту? Процесс, который
расшифровывает хэши паролей с использованием системного ключа,
называется Samss. Для работы нужно проделать следующее:
1. Получить доступ к значению ключа ‘F’ (флаги) в ветке
SAM\SAM\Domains\Account (более подробно о структуре SAM
можно прочитать тут
или поискать в Гугле). Содержание хранится в бинарном виде. 16 байт
(начиная с 0х70) хэшированны (MD5) с применением системного ключа и
некоторых констант. Результат используется как ключ для расшифровки
(RC4) 32 байт того же ключа (смещение 0х80). Первые 16 байт результата
используются дальше в алгоритме. Назовем их hbootkey.
2. Для каждой пользовательской RID (relative
identifier) записи в SAM\SAM\Domains\Account\Users. Получаем значение
‘V’ ключа. Содержание бинарное и содержит шифрованные Syskey значения
паролей. Hbootkey, пользовательский RID и константа (разнится для NT и
lanman) хэшируются (MD5). Результат используется ключом для расшифровки
(RC4) обработанных Syskey паролей.
Итак, Syskey шифрует пользовательские хэши при помощи алгоритма RC4
используя нечто выведенное (при помощи MD5) из системного ключа.
Разработана программа, автоматизирующая все эти шаги. Ее назвали
SAMDUMP2 – она может, используя SAM и ключ (полученный Bkreg или Bkhive), вывести хэши паролей в отдельный файл.
Схема атаки в общем виде следовательно выглядит примерно так:
1. Загрузиться используя альтернативную ОС.
2. Похитить SAM и SYSTEM файлы (из %WINDIR%\System32\config).
3. Получить системный ключ из реестра используя Bkhive или Bkreg.
4. Получить дамп хэшей при помощи SAMDUMP2.
5. Расшифровать их используя любимый брутфорс.
Источник: http://studenti.unina.it/~ncuomo/syskey/
|