Роль базы данных SAM в безопасности Windows NT
Роль базы данных SAM в безопасности Windows NT В данной статье речь пойдет о безопасности такой операционной системы, как Windows NT и, в частности, об ее неотъемлемой части под названием "Диспетчер учетных записей".
Основную роль в идентификации и аутентификации (проверки подлинности) пользователей играет SAM (Security Account Database - диспетчер учетных записей). Эта база данных находится на каждом компьютере, где установлена операционная система Windows NT. Она располагается в отдельном файле в папке \WinNT\System32\Config. Этот файл так и называется - SAM. В него входят следующие учетные записи: пользователей, групп. Кроме того, для контроллера домена в базе данных присутствуют еще две записи: компьютеров домена и домена. В данной статье я рассмотрю лишь учетные записи пользователей из-за того, что взломщик при попытке проникнуть в систему делает основной упор на эти учетные записи. Получив доступ к учетным записям пользователей, не составит большого труда получить доступ и ко всему остальному. Как вы все уже, наверное, догадались, пароли в базе данных SAM не хранятся в открытом виде. А как же иначе, ведь надо же как-то сберечь пароли от глаз злоумышленника. Для шифрования этих паролей используется хеширование. Для тех, кто не силен в математике, объясню хеширование - это такая односторонняя функция, при которой каждому выбранному элементу соответствует лишь одно значение функции. Т.е. зная сам хеш, нельзя восстановить информацию, которая была подвергнута хешированию. Возможность расшифровки хеш-функций я рассмотрю ниже. Поэтому даже сам администратор, не говоря уже о рядовых пользователях, не сможет узнать чужие пароли, не прибегая к особым средствам. Для общего развития сообщу, что в операционной системе Windows NT используется хеш-функция RSA Message-Digest 4 (MD4). После того, как пароль обработала хеш-функция, полученное 128-битовое число шифруется алгоритмом DES. Однако из-за того, что шифрование по алгоритму DES является обратимой операцией, то исходная хеш-функция может быть восстановлена.
Для того чтобы максимально постараться защитить свою систему от хакера, необходимо иметь представление о возможных угрозах атаки на базу данных SAM. В ряде случаев хакер старается получить права администратора, так как лишь с этими правами он может беспрепятственно выполнять практически все остальные действия. Вы будете не правы, если думаете, что заполучить базу данных SAM вам представляется очень легкой задачей, просто скопировав ее из каталога \WinNT\System32\Config. Из-за того, что доступ к файлу SAM заблокирован системой, вам не удастся этого сделать. Но тут есть одно существенное ограничение. Имея привилегии резервного копирования (Back up files and directories) и применив для этого специальную программу, вам удастся скопировать эту базу и в дальнейшем расшифровать ее. Но для получения тех самых прав для резервного копирования нужно будет еще очень много потрудиться, ибо не так все просто, как кажется. Название программы я не буду сообщать, дабы не подталкивать вас на этот шаг, ведь эта статья не пособие к взлому операционной системы Windows NT.
Так как хеширование является односторонней функцией, то знание зашифрованного пароля вам практически ничего не даст для того, чтобы быстро восстановить исходный пароль. Я сказал "практически" именно потому, что восстановить первоначальный вид пароля можно, применив brute-force атаку. Но эта атака является не самой наилучшей из-за необходимости огромного количества свободного времени на поиск всех возможных комбинаций паролей. Сколько уже бумаги было исписано на тему выбора надежных паролей, а все попусту. Поэтому вы можете попытаться расшифровать базу данных SAM при помощи словарной атаки. Рассмотрю ее поподробнее. Допустим, что у вас имеется база данных SAM. Для того чтобы осуществить атаку по словарю, вам необходим сам словарь, в котором располагаются предполагаемые вами пароли, - часто употребляемые слова или все те наборы символов, несущие собой какую-нибудь информацию о пользователе (номера телефонов, машин или просто имя любимого человека). Далее берется одно слово из словаря, хешируется и полученный хэш сравнивается с хэшем, содержащимся в базе данных SAM. Если хэши совпадают, то пароль найден, иначе нужно будет брать следующее слово. И так до тех пор, пока либо не будут расшифрованы все хеши, либо пока не закончится используемый вами словарь. Однако стопроцентной гарантии расшифровки всех паролей нет, так как если существует пользователь, у которого пароль что-то вроде этого "R3k#wI8/y", то вероятность того, что такой пароль окажется в словаре, стремится к нулю. Поэтому для полной расшифровки всех паролей вам понадобится применить brute-force атаку. Суть ее заключается в том, что вы генерируете последовательность символов и, так же, как и в словарной атаке, подвергаете эту последовательность хешированию. Затем вам нужно будет лишь только сравнить полученное значение со значением в базе данных SAM. Однако сами понимаете, что такой вид атаки очень медленный из-за огромного количества возможных комбинаций подбираемых паролей. Поэтому эту задачу нужно перед собой и ставить, дабы отбить желание злоумышленника атаковать вашу систему.
Ну вот, основные виды атак на базу данных диспетчера учетных записей SAM мы рассмотрели, а теперь нужно как-то попробовать защититься от этого. Для эффективной защиты своей системы администратору придется постараться предотвратить всяческие попытки получения базы данных SAM. Ниже я поясню, как можно избежать копирования это базы. Во-первых, для того чтобы можно было контролировать доступ к папкам и файлам, необходимо, чтобы разделы диска были отформатированы с файловой системой NTFS. Но тут есть одно "но". Можно попытаться загрузиться с дискеты или компакт-диска и попробовать скопировать базу данных. Отсюда вытекает следующее условие: администратору необходимо отключить возможность загрузки с дискеты или компакт-диска в BIOS и установить пароль на этот самый BIOS, иначе будет делом времени залезть в BIOS и сконфигурировать его для загрузки с этих носителей. Кроме того, не стоит забывать, что старые модели BIOS имеют так называемые инженерные пароли типа "AWARD_SW". Они были предусмотрены для различного рода спецслужб для проникновения в защищенный паролем компьютер. Однако если о чем-то знает более одного человека, то об этом знает весь мир. Поэтому я советую перепрошить все старые версии BIOS, иначе установка пароля может смутить лишь мало знающего ребенка, да и то, не всякого.
Следующим шагом в предотвращении копирования базы данных SAM будет ограничение доступа к копиям этой базы данных. Желательно сделать так, чтобы даже администратору не было разрешено в доступе к этим копиям. Все это делается по одной очень важной причине. Хакер, проникнувший в систему, может установить специальную программу из класса троянских, которая, будучи запущенной самим администратором, сможет присвоить себе его права и переслать по сети на удаленный компьютер уже скопированную базу данных SAM. Поэтому следует вообще постараться ограничить число пользователей операционной системы Windows NT, имеющих права, приближенные к администраторским, как то: права Backup Operators и System Operators. Недавний казус с Microsoft доказывает, что как бы администратор ни пытался защитить систему, найдется человек, который, сам не зная того, поможет злоумышленнику проникнуть во вроде бы отлично защищенную систему. А было все именно по оплошности одного из сотрудников этой компании, который запустил прикрепленный к почтовому электронному письму файл, в результате чего хакеры и взломали, кажущийся неприступным, Microsoft. Но вернемся к нашей теме. Многие администраторы не принимают во внимание тот факт, что копия базы данных SAM находится в каталоге \WinNT\Repair, а так как доступ для чтения к этому каталогу открыт по умолчанию для всех (Everyone), то его может скопировать всякий, следовательно, нужно запретить любой доступ к этому каталогу и находящимся в нем файлам. Администраторам не следует хранить архивные копии системного реестра и дискеты, с помощью которых при крахе системы ее можно восстановить, на локальных дисках. Лучше их куда-нибудь спрятать в надежное место. Могу посоветовать использовать для этой цели сейф. Также следует установить последние Service Pack, в которых добавлена функция дополнительного шифрования информации о паролях.
Одним из распространенных средств подбора паролей является прямой подбор этих самых паролей. Однако все попытки хакера подобрать чей-либо пароль, а, как правило, самым лакомым кусочком для взломщика является пароль администратора, будут безуспешными, если поставить блокировку учетных записей, которая будет активизироваться после n-го количества неправильно введенных паролей. Кроме этого, администратору стоит позаботиться о минимальной длине пароля и установить режим устаревания. Не стоит забывать и о хранении некоторого числа ранее используемых паролей, чтобы пользователи системы не вводили свои ранее используемые пароли. Для того чтобы пользователи не использовали для доступа в систему пароли с повторяющимися символами, своими именами или словарными словами, необходимо использовать фильтрацию. Ведь не будет же администратор вручную вскрывать пароли всех пользователей, рыться по словарям и сообщать всем, у кого используемый пароль нужно заменить в связи с высокой вероятностью его подбора по смыслу (связанного с самим пользователем). У него и так работы хватает, а в крупных сетях об этом не может быть и речи, так как это физически невозможно.
Как все эти советы привести в исполнение, каждый администратор должен знать сам, но зачастую многие об этом забывают. Поэтому любая упущенная мелочь может свести на нет все старания по защите системы от постороннего вторжения. Но все же я хочу порекомендовать администраторам одну программу для улучшения защиты своей системы. Программа называется L0phtCrack. Скачать в Internet ее можно по адресу http://www.l0pht.com/l0phtcrack/ (после буквы l стоит цифра ноль, а не буква O). О ее работе я уже рассказывал на страницах "Компьютерной газеты" №12(253) 2000 г. в статье под названием "Администраторам посвящается". Но немного напомню о ней. Эта программа помогает администраторам (и не только им:)) в восстановлении забытых паролей и выяснении легко подбирающихся паролей. Я считаю, что эту программу должен иметь у себя каждый администратор. Иначе он может забыть о спокойной жизни и рассчитывать на то, что ею никогда не воспользуется хакер. А применив дополнительное шифрование к паролям, он сможет сделать эту программу практически бесполезной для взломщика.
Администраторы должны быть в курсе всех последних новинок в области компьютерной техники и программных средств. Кроме новинок, нужно обращать внимание на появляющиеся сообщения об обнаружении дыр в операционной системе и программных продуктах, используемых вами, скачивать последние заплатки, но непросто скачивать, а и устанавливать их в своей системе;). Я бы посоветовал администраторам операционной системы Windows NT, да и всем желающим, подписаться на известную рассылку, связанную с защитой уязвимых мест в этой ОС и рассказывающую о способах атак на нее. Адрес этого источника таков: http://www.ntbugtraq.com. Здесь присутствуют рассылки, освещающие уязвимые места Windows NT и средства ее защиты.
Напоследок хочу постараться пояснить, что как бы вы ни старались, а стопроцентной защиты вы никогда не добьетесь. Так как все то, что создано людьми, может быть ими и разрушено. Каждый администратор должен стараться предусматривать все пути нападения на его систему и быть хотя бы на один шаг впереди хакера. Тогда все попытки для проникновения в систему будут безуспешными. Поэтому вам следует серьезно задуматься обо всем сказанном выше. Возможно, что вы что-то упустили из этого, а так как эта информация становится достоянием общественности, то вы находитесь на одной черте со злоумышленниками, но он с одной стороны, а вы - совсем с другой. Испокон веков было известно, что нападать легче, чем обороняться. Евгений Сечко, safeman@mail.ru (c) компьютерная газета
Основную роль в идентификации и аутентификации (проверки подлинности) пользователей играет SAM (Security Account Database - диспетчер учетных записей). Эта база данных находится на каждом компьютере, где установлена операционная система Windows NT. Она располагается в отдельном файле в папке \WinNT\System32\Config. Этот файл так и называется - SAM. В него входят следующие учетные записи: пользователей, групп. Кроме того, для контроллера домена в базе данных присутствуют еще две записи: компьютеров домена и домена. В данной статье я рассмотрю лишь учетные записи пользователей из-за того, что взломщик при попытке проникнуть в систему делает основной упор на эти учетные записи. Получив доступ к учетным записям пользователей, не составит большого труда получить доступ и ко всему остальному. Как вы все уже, наверное, догадались, пароли в базе данных SAM не хранятся в открытом виде. А как же иначе, ведь надо же как-то сберечь пароли от глаз злоумышленника. Для шифрования этих паролей используется хеширование. Для тех, кто не силен в математике, объясню хеширование - это такая односторонняя функция, при которой каждому выбранному элементу соответствует лишь одно значение функции. Т.е. зная сам хеш, нельзя восстановить информацию, которая была подвергнута хешированию. Возможность расшифровки хеш-функций я рассмотрю ниже. Поэтому даже сам администратор, не говоря уже о рядовых пользователях, не сможет узнать чужие пароли, не прибегая к особым средствам. Для общего развития сообщу, что в операционной системе Windows NT используется хеш-функция RSA Message-Digest 4 (MD4). После того, как пароль обработала хеш-функция, полученное 128-битовое число шифруется алгоритмом DES. Однако из-за того, что шифрование по алгоритму DES является обратимой операцией, то исходная хеш-функция может быть восстановлена.
Для того чтобы максимально постараться защитить свою систему от хакера, необходимо иметь представление о возможных угрозах атаки на базу данных SAM. В ряде случаев хакер старается получить права администратора, так как лишь с этими правами он может беспрепятственно выполнять практически все остальные действия. Вы будете не правы, если думаете, что заполучить базу данных SAM вам представляется очень легкой задачей, просто скопировав ее из каталога \WinNT\System32\Config. Из-за того, что доступ к файлу SAM заблокирован системой, вам не удастся этого сделать. Но тут есть одно существенное ограничение. Имея привилегии резервного копирования (Back up files and directories) и применив для этого специальную программу, вам удастся скопировать эту базу и в дальнейшем расшифровать ее. Но для получения тех самых прав для резервного копирования нужно будет еще очень много потрудиться, ибо не так все просто, как кажется. Название программы я не буду сообщать, дабы не подталкивать вас на этот шаг, ведь эта статья не пособие к взлому операционной системы Windows NT.
Так как хеширование является односторонней функцией, то знание зашифрованного пароля вам практически ничего не даст для того, чтобы быстро восстановить исходный пароль. Я сказал "практически" именно потому, что восстановить первоначальный вид пароля можно, применив brute-force атаку. Но эта атака является не самой наилучшей из-за необходимости огромного количества свободного времени на поиск всех возможных комбинаций паролей. Сколько уже бумаги было исписано на тему выбора надежных паролей, а все попусту. Поэтому вы можете попытаться расшифровать базу данных SAM при помощи словарной атаки. Рассмотрю ее поподробнее. Допустим, что у вас имеется база данных SAM. Для того чтобы осуществить атаку по словарю, вам необходим сам словарь, в котором располагаются предполагаемые вами пароли, - часто употребляемые слова или все те наборы символов, несущие собой какую-нибудь информацию о пользователе (номера телефонов, машин или просто имя любимого человека). Далее берется одно слово из словаря, хешируется и полученный хэш сравнивается с хэшем, содержащимся в базе данных SAM. Если хэши совпадают, то пароль найден, иначе нужно будет брать следующее слово. И так до тех пор, пока либо не будут расшифрованы все хеши, либо пока не закончится используемый вами словарь. Однако стопроцентной гарантии расшифровки всех паролей нет, так как если существует пользователь, у которого пароль что-то вроде этого "R3k#wI8/y", то вероятность того, что такой пароль окажется в словаре, стремится к нулю. Поэтому для полной расшифровки всех паролей вам понадобится применить brute-force атаку. Суть ее заключается в том, что вы генерируете последовательность символов и, так же, как и в словарной атаке, подвергаете эту последовательность хешированию. Затем вам нужно будет лишь только сравнить полученное значение со значением в базе данных SAM. Однако сами понимаете, что такой вид атаки очень медленный из-за огромного количества возможных комбинаций подбираемых паролей. Поэтому эту задачу нужно перед собой и ставить, дабы отбить желание злоумышленника атаковать вашу систему.
Ну вот, основные виды атак на базу данных диспетчера учетных записей SAM мы рассмотрели, а теперь нужно как-то попробовать защититься от этого. Для эффективной защиты своей системы администратору придется постараться предотвратить всяческие попытки получения базы данных SAM. Ниже я поясню, как можно избежать копирования это базы. Во-первых, для того чтобы можно было контролировать доступ к папкам и файлам, необходимо, чтобы разделы диска были отформатированы с файловой системой NTFS. Но тут есть одно "но". Можно попытаться загрузиться с дискеты или компакт-диска и попробовать скопировать базу данных. Отсюда вытекает следующее условие: администратору необходимо отключить возможность загрузки с дискеты или компакт-диска в BIOS и установить пароль на этот самый BIOS, иначе будет делом времени залезть в BIOS и сконфигурировать его для загрузки с этих носителей. Кроме того, не стоит забывать, что старые модели BIOS имеют так называемые инженерные пароли типа "AWARD_SW". Они были предусмотрены для различного рода спецслужб для проникновения в защищенный паролем компьютер. Однако если о чем-то знает более одного человека, то об этом знает весь мир. Поэтому я советую перепрошить все старые версии BIOS, иначе установка пароля может смутить лишь мало знающего ребенка, да и то, не всякого.
Следующим шагом в предотвращении копирования базы данных SAM будет ограничение доступа к копиям этой базы данных. Желательно сделать так, чтобы даже администратору не было разрешено в доступе к этим копиям. Все это делается по одной очень важной причине. Хакер, проникнувший в систему, может установить специальную программу из класса троянских, которая, будучи запущенной самим администратором, сможет присвоить себе его права и переслать по сети на удаленный компьютер уже скопированную базу данных SAM. Поэтому следует вообще постараться ограничить число пользователей операционной системы Windows NT, имеющих права, приближенные к администраторским, как то: права Backup Operators и System Operators. Недавний казус с Microsoft доказывает, что как бы администратор ни пытался защитить систему, найдется человек, который, сам не зная того, поможет злоумышленнику проникнуть во вроде бы отлично защищенную систему. А было все именно по оплошности одного из сотрудников этой компании, который запустил прикрепленный к почтовому электронному письму файл, в результате чего хакеры и взломали, кажущийся неприступным, Microsoft. Но вернемся к нашей теме. Многие администраторы не принимают во внимание тот факт, что копия базы данных SAM находится в каталоге \WinNT\Repair, а так как доступ для чтения к этому каталогу открыт по умолчанию для всех (Everyone), то его может скопировать всякий, следовательно, нужно запретить любой доступ к этому каталогу и находящимся в нем файлам. Администраторам не следует хранить архивные копии системного реестра и дискеты, с помощью которых при крахе системы ее можно восстановить, на локальных дисках. Лучше их куда-нибудь спрятать в надежное место. Могу посоветовать использовать для этой цели сейф. Также следует установить последние Service Pack, в которых добавлена функция дополнительного шифрования информации о паролях.
Одним из распространенных средств подбора паролей является прямой подбор этих самых паролей. Однако все попытки хакера подобрать чей-либо пароль, а, как правило, самым лакомым кусочком для взломщика является пароль администратора, будут безуспешными, если поставить блокировку учетных записей, которая будет активизироваться после n-го количества неправильно введенных паролей. Кроме этого, администратору стоит позаботиться о минимальной длине пароля и установить режим устаревания. Не стоит забывать и о хранении некоторого числа ранее используемых паролей, чтобы пользователи системы не вводили свои ранее используемые пароли. Для того чтобы пользователи не использовали для доступа в систему пароли с повторяющимися символами, своими именами или словарными словами, необходимо использовать фильтрацию. Ведь не будет же администратор вручную вскрывать пароли всех пользователей, рыться по словарям и сообщать всем, у кого используемый пароль нужно заменить в связи с высокой вероятностью его подбора по смыслу (связанного с самим пользователем). У него и так работы хватает, а в крупных сетях об этом не может быть и речи, так как это физически невозможно.
Как все эти советы привести в исполнение, каждый администратор должен знать сам, но зачастую многие об этом забывают. Поэтому любая упущенная мелочь может свести на нет все старания по защите системы от постороннего вторжения. Но все же я хочу порекомендовать администраторам одну программу для улучшения защиты своей системы. Программа называется L0phtCrack. Скачать в Internet ее можно по адресу http://www.l0pht.com/l0phtcrack/ (после буквы l стоит цифра ноль, а не буква O). О ее работе я уже рассказывал на страницах "Компьютерной газеты" №12(253) 2000 г. в статье под названием "Администраторам посвящается". Но немного напомню о ней. Эта программа помогает администраторам (и не только им:)) в восстановлении забытых паролей и выяснении легко подбирающихся паролей. Я считаю, что эту программу должен иметь у себя каждый администратор. Иначе он может забыть о спокойной жизни и рассчитывать на то, что ею никогда не воспользуется хакер. А применив дополнительное шифрование к паролям, он сможет сделать эту программу практически бесполезной для взломщика.
Администраторы должны быть в курсе всех последних новинок в области компьютерной техники и программных средств. Кроме новинок, нужно обращать внимание на появляющиеся сообщения об обнаружении дыр в операционной системе и программных продуктах, используемых вами, скачивать последние заплатки, но непросто скачивать, а и устанавливать их в своей системе;). Я бы посоветовал администраторам операционной системы Windows NT, да и всем желающим, подписаться на известную рассылку, связанную с защитой уязвимых мест в этой ОС и рассказывающую о способах атак на нее. Адрес этого источника таков: http://www.ntbugtraq.com. Здесь присутствуют рассылки, освещающие уязвимые места Windows NT и средства ее защиты.
Напоследок хочу постараться пояснить, что как бы вы ни старались, а стопроцентной защиты вы никогда не добьетесь. Так как все то, что создано людьми, может быть ими и разрушено. Каждый администратор должен стараться предусматривать все пути нападения на его систему и быть хотя бы на один шаг впереди хакера. Тогда все попытки для проникновения в систему будут безуспешными. Поэтому вам следует серьезно задуматься обо всем сказанном выше. Возможно, что вы что-то упустили из этого, а так как эта информация становится достоянием общественности, то вы находитесь на одной черте со злоумышленниками, но он с одной стороны, а вы - совсем с другой. Испокон веков было известно, что нападать легче, чем обороняться. Евгений Сечко, safeman@mail.ru (c) компьютерная газета
Компьютерная газета. Статья была опубликована в номере 49 за 2000 год в рубрике soft :: безопасность