Понедельник, 06.05.2024, 10:48
Приветствую Вас Гость | RSS

Всё о компьютере

Наш опрос
Оцените мой сайт
Всего ответов: 41
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Безопасность в Windows 2000/XP

Введение



В настоящее время операционные системы Windows 2000 и Windows XP фирмы Microsoft, основанные на ядре Windows NT, получили очень широкое распространение. Процент этих ОС среди всех Windows-систем очень велик и продолжает расти, поэтому проблема их безопасности является одним из важных аспектов современной компьютерной безопасности.

В данной статье мы рассмотрим основы безопасности Windows 2000/XP и дадим практические советы по созданию максимально защищенного компьютера под управлением этих ОС.



Хранение паролей в Windows 2000/XP



Несомненно, самым главным аспектом при анализе безопасности Windows 2000/XP является сохранность паролей учетных записей с правами Администратора, т.к. знание пароля позволяет получить полный доступ к этому компьютеру как локально, так и по сети, поэтому мы начнем статью с описания того, как Windows 2000/XP работает с паролями на вход в систему (сразу же уточним, что практически все нижесказанное относится и к ОС Windows 2003).



Информация об учетных записях пользователей хранится в ветке "HKEY_LOCAL_MACHINE\SAM" (SAM - Security Account Manager) реестра. А так как в Windows 2000/XP все ветки реестра "физически" расположены на диске в каталоге %SystemRoot%\System32\Config в нескольких файлах, то и эта ветка - не исключение. Она располагается в файле SAM. Отметим, что этот файл по умолчанию недоступен для чтения никому, даже Администратору, но все-таки к нему можно получить доступ (каким образом - об этом будет сказано ниже). К файлу SAM (а также к остальным файлам без расширений в этой директории - system, software и др.) нет доступа по той причине, что Windows 2000/XP используют реестр "на лету" - т.е. при внесении в реестр изменений они становятся доступны сразу же и перезагрузка компьютера не требуется, но для этого системе нужно иметь монопольный доступ к файлам реестра. Напомним, что в операционных системах Windows 95/98/ME реестр хранится в файлах system.dat и user.dat, которые загружаются о! днократно при загрузке системы и при изменениях в реестре требуется перезагрузка компьютера для того, чтобы эти изменения вступили в силу.



Windows 2000/XP хранит пароли пользователей не в "явном" виде, а в виде хэшей (hash), т.е. фактически в виде "контрольных сумм" паролей. Рассмотрим же хранение паролей пользователей подробнее. Среди сложной структуры SAM-файла нам интересна структура, называемая V-блок. Она имеет размер 32 байта и содержит в себе хэш пароля для локального входа - NT Hash длиной 16 байт, а также хэш, используемый при аутентификации доступа к общим ресурсам других компьютеров - LanMan Hash или просто LM Hash, длиной также 16 байт. Алгоритмы формирования этих хэшей следующие:



Формирование NT Hash:



1.Пароль пользователя преобразуется в Unicode-строку. 

2.Генерируется хэш на основе данной строки с использованием алгоритма MD4.

3.Полученный хэш шифруется алгоритмом DES, причем в качестве ключа используется RID (т.е. идентификатор пользователя). Это необходимо для того, чтобы два пользователя с одинаковыми паролями имели разные хэши. Напомним, что все пользователи имеют разные RID-ы (RID встроенной учетной записи Администратора равен 500, встроенной учетной записи Гостя равен 501, а все остальные пользователи последовательно получают RID-ы, равные 1000, 1001, 1002 и т.д.). 



Формирование LM Hash:



1.Пароль пользователя преобразуется в верхний регистр и дополняется нулями до длины 14 байт.

2.Полученная строка делится на две половинки по 7 байт и каждая из них по отдельности шифруется алгоритмом DES, на выходе которого получаем 8-байтный хэш - в сумме же имеем один хэш длиной 16 байт.

3.Далее LM Hash дополнительно шифруется так же, как и в шаге 3 формирования NT Hash. 



Для повышения безопасности хранения паролей, начиная с 3-го Service Pack'a в Windows NT (и во всех последующих NT-системах, вплоть до Windows 2003), полученные хэши дополнительно шифруются еще одним алгоритмом с помощью утилиты syskey. Т.е. к вышеописанным алгоритмам добавляется еще 4-й шаг - получение с помощью syskey нового хэша от хэша, полученного на шаге 3.

А сейчас мы рассмотрим методы доступа к SAM-файлу и извлечения из него хэшей.



Методы доступа к SAM-файлу и импорт хэшей



Как уже было сказано, ни прочитать этот файл, ни отредактировать нет никакой возможности - при попытке чтения этого файла Windows сообщает о нарушении совместного доступа, т.к. для системы этот файл всегда открыт и запись в него производит только сама Windows.



Однако, получить как данные из этого файла, так и доступ к нему, все-таки можно.



Информацию из него можно извлечь даже в работающей системе, но только из-под учетной записи Администратора. Здесь есть два метода получения данных - метод программы PWDUMP (который используется в программах PWDUMP, LC4, LC+4 и др.) и метод с использованием планировщика задач (используется в программе SAMInside).



Метод PWDUMP вкратце работает так - программа подключается к системному процессу LSASS и с его правами (и его же методами) извлекает хэши из ветки SAM реестра, т.е. фактически из SAM-файла. Метод же планировщика работает так - по умолчанию в Windows 2000/XP системная утилита Scheduler имеет права пользователя SYSTEM, т.е. полный доступ к системе. Поэтому, если назначить Планировщику задание сохранить определенную ветку реестра в файл, к примеру, то он в назначенное время сохранит ее на диск. После чего из этого файла извлекаются хэши всех пользователей этого компьютера.



А что делать, если пароля Администратора нет и, соответственно, его прав тоже?

Тогда злоумышленнику остается делать следующее - если на компьютере установлено несколько операционных систем, то загружаясь в любую из них (даже в Linux) можно получить доступ к системному диску Windows 2000/XP и скопировать SAM-файл в другой каталог, чтобы потом "в спокойной обстановке" загрузить его в нужную программу для восстановления из него паролей.



Более того, существуют программы, способные изменять информацию прямо в SAM-файле, меняя и добавляя пользователей, а также их пароли (например, программа Offline NT Password & Registry Editor). Правда, для этого также необходимо загружаться в другую ОС и иметь полный доступ к системному диску Windows 2000/XP.



Даже если системный диск Windows имеет файловую систему NTFS, то все равно можно получить к нему доступ, используя загрузочную дискету, созданную в программе NTFSDos Pro. Затем, после загрузки с нее, примонтировать нужный NTFS-раздел и скопировать с него нужные файлы.



Если же вы администрируете сервер сети на основе Windows 2000/XP, то учитывайте, что кража вашего SAM-файла может привести к тому, что в руках злоумышленника окажутся не только ваш пароль, но и пароли всех пользователей сети (т.е. их пароли на вход в Windows), т.к. все эти пользователи имеют свои учетные записи на сервере.



Как мы говорили выше, в современных NT-системах применяется дополнительное шифрование хэшей алгоритмом syskey. До недавнего времени хэши из SAM-файла, скопированного из этих ОС, расшифровке не поддавались, т.к. этот алгоритм достаточно сложен, нигде не публиковался и практически не анализировался. Но теперь можно извлекать хэши, даже из зашифрованных этим алгоритмом SAM-файлов, используя программу SAMInside. Правда, для декодирования хэшей этой программе необходим еще и файл SYSTEM, расположенный там же, где и SAM, т.к. в нем хранятся некоторые ключи реестра. необходимые для дешифрования хэшей алгоритмом syskey. Этот файл также открыт только для системы, но, как мы выяснили выше, если можно получить доступ к SAM-файлу, то и файл SYSTEM копируется теми же способами.





Из вышесказанного вытекают следующие рекомендации:



На вашем компьютере не должно быть установлено никаких других систем (Windows 98/ME, Linux и пр.), кроме той ОС, которую вы используете в работе - Windows 2000 или Windows XP. Системный диск обязательно должен иметь файловую систему NTFS и жестко разграниченные права доступа к каталогам на этом диске. Нужно запретить загрузку с любых устройств, кроме системного диска - дисковода, CD-ROM'a, внешних накопителей и пр. Для этого нужно оставить в BIOS загрузку только с нужного диска и установить пароль на вход в BIOS. А для исключения сброса CMOS-памяти на материнской плате (при которой теряются и все ваши собственные настройки в BIOS, включая пароль на вход в него) опломбируйте системный блок или же установите его в такое место, при котором доступ к нему жестко регламентирован либо же просто невозможен никому, кроме вас. Последние версии BIOS разных производителей не поддаются на "универсальные" пароли (типа "AWARD_SW" для старых BIOS фирмы AWARD), поэтому запрет на физический доступ к компьютеру делает изменение пароля на вход в BIOS невозможным практически на 100%. На сетевых серверах максимально снизить количество перезагрузок компьютера и лишить права на перезагрузку всех групп пользователей, кроме учетной записи Администратора. 



Теперь поговорим о восстановление паролей.



Восстановление паролей пользователей



Программ, предназначенных для восстановления паролей Windows 2000/XP, на рынке ПО немного и все они достаточно известны. Это LC4 от @stake (www.atstake.com), LC+4 от nh (www.lcp.da.ru), Advanced NT Explorer от Elcomsoft (www.elcomsoft.com) и утилита SAMInside от InsidePro (www.insidepro.com). Microsoft не спешит менять принципы аутентификации пользователей и наглядный пример этому - Windows 2003, т.к. пароли к ней восстанавливаются этими же утилитами и даже версия алгоритма syskey в ней не изменилась.



Алгоритмы MD4 и DES (применяемые для формирования LM Hash и NT Hash) считаются необратимыми, точнее скажем так - их обратимость математически еще не доказана. Поэтому получение паролей из хэшей прямыми математическими методами невозможно. Остается только одно - перебирать пароли, формировать хэши на основе этих паролей и сравнивать хэши с теми, которые получены из SAM-файла. Если хэши совпадают, то и пароль, который сформировал такой же хэш - верный. Таким образом, для получения пароля Администратора, нужно получить доступ к SAM-файлу, а затем с помощью программы-переборщика паролей, попытаться восстановить нужный пароль.



И тут мы сталкиваемся с одним неприятным для пользователей (и приятным для взломщиков) моментом - как мы помним, LM Hash формируется на основе "половинок" по 7 символов исходного пароля и имеет максимальную длину исходного пароля в 14 символов. Поэтому для восстановления 14-символьного пароля с алфавитом в N символов нужно перебрать не N^14 вариантов, а 2 * (N^7) вариантов, что несоизмеримо меньше! К примеру, при попытке восстановить пароль "MARGARITA", используя в качестве алфавита только латинские буквы, в программе SAMInside (к примеру), мы моментально найдем вторую часть пароля - "TA", а затем спустя некоторое время - и первую часть пароля - "MARGARI", т.к. эта программа ищет обе половинки пароля одновременно!



Поэтому "сложный" (на первый взгляд) 14-символьный пароль по LM Hash восстанавливается как два "простых" пароля по 7 символов. Более того - при формировании LM Hash пароль переводится в верхний регистр, поэтому хэши от паролей "ADMIN", "Admin" и "admin" будут одинаковыми! 



Другое дело - NT Hash. Здесь пароль не "разбивается" на части и максимальная длина пароля составляет 128 символов. Да еще и учитывается регистр букв пароля. Поэтому вышеприведенные пароли дадут разные хэши!



Соответственно, для восстановления пароля из латинских букв нужно использовать в качестве алфавита уже 52 символа (26 заглавных латинских символов и 26 строчных), а не только 26 заглавных, как при восстановлении пароля по LM Hash.



Важное замечание: если пароль пользователя больше 14 символов, то Windows 2000/XP автоматически отключают формирование LM Hash, оставляя только NT Hash, а, как мы уже говорили, восстановить пароль по NT Hash гораздо сложнее. Отключить формирование LM Hash также можно через реестр. В Windows XP, к примеру, для этого нужно в ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa создать параметр "nolmhash" типа DWORD со значением 1.



Таким образом, придерживайтесь следующих рекомендаций:



Ваши пароли на вход в Windows должны быть длиннее 14 символов или же отключите формирование LM Hash, т.е. оставьте потенциальному взломщику возможность восстанавливать ваш пароль только по NT Hash.

Пароли должны иметь символы как в верхнем, так и в нижнем регистрах! 

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



Формирование безопасных паролей



Распространено заблуждение о том, что длинный пароль - это сложный пароль. Ничего подобного! Разве сложным будет пароль "12345678901234567890"? Он набирается за несколько секунд - ничего сложного. Или пароль "administrator12345"? Или пароль "qwertqwertqwertqwert"? Помните, что длинный пароль - не обязательно СЛОЖНЫЙ пароль. Конечно, вышеприведенные пароли можно использовать на практике, но все-таки они остаются достаточно уязвимыми. Но ведь мы-то хотим получить совсем "пуленепробиваемый" пароль?



Тогда давайте рассмотрим, сколько всего комбинаций потребуется для перебора, к примеру, всех 7-символьных паролей, если использовать только латиницу? Правильно - 26^7. А если добавить к этим символам цифры? Тогда - 36^7, что существенно больше. Отсюда следует простой вывод - чем больше в пароле будет использовано символов из разных символьных наборов, которыми пользуются взломщики паролей, тем сложнее будет восстановить пароль, т.к. для перебора всех вариантов придется формировать алфавит, состоящий из всех символов. Нетрудно подсчитать, что перебор всех 7-символьных паролей с алфавитом из заглавных букв латиницы (26 символов), кириллицы (33 символа), цифр (10 символов), специальных символов !@#$%... (32 символа) и пробела - всего 102 символа при скорости в 5 миллионов паролей в секунду займет... около 265 дней. А если пароль не 7 символов а 10, 14, 20... Понятно, что такие колоссальные сроки взлома не устроят ни одного злоумышленника.



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



К примеру, добавление к паролю "12345678901234567890" символа '?' справа или слева уже существенно затруднит его восстановление (ведь взломщик, даже если и знает, что в пароле есть цифры и "какой-то специальный символ", то ему придется перебирать алфавитом не в 10 символов - только цифры, а 10 + 32, т.е. цифры + специальные символы, что существенно затруднит взлом пароля). А если добавить пару пробелов? Или несколько русских/английских букв? А если еще использовать и символы разного регистра (а при формировании NT Hash, как мы помним, регистр символа также имеет значение)? Таким образом, поверьте, подобный пароль восстановить в приемлемые сроки невозможно.



Отсюда еще одно важное правило:



Ваши пароли обязательно должны содержать символы из различных символьных наборов! 

Также нужно иметь в виду, что один из распространенных способов восстановления паролей - атака по словарю (при котором проверяются пароли, представляющие собой известные слова, словосочетания, клавиатурные комбинации и т.п.) становится бесполезным при атаке на пароли с добавлением символов из других символьных наборов. Действительно, пароль "MASTER" легко взломается с помощью среднестатистического словаря, а восстановить пароль "" таким методом будет уже невозможно. 



Читатель может возразить, что можно использовать и короткий пароль из различных символов типа "FЭ1_$", но практика показывает, что как раз такие пароли и являются сложными для запоминания, нежели какое-либо памятное вам слово или комбинация символов с добавлением (или предварением) нескольких "малораспространенных" символов. К примеру, если ваш "любимый" пароль - "123456" и вы пользуетесь русской версией Windows XP (а в ней при вводе пароля на вход в систему по умолчанию стоит русский язык), то после 123456 понажимайте несколько раз клавишу '`' (находится слева от клавиши '1') с зажатой/отжатой клавишей Shift и вы получите пароль "123456ЁёЁёЁёЁёЁё" или "123456~`~`~`~`~`" при английской раскладке клавиатуры, что тоже неплохо. В таком пароле нет же ничего сложного! Запоминается (и вводится) моментально, но взлом очень затруднен, даже если взломщик имеет в распоряжении не один компьютер для восстановления паролей, а целую сеть. Конечно, теоретически взломщик может при перебо! ре случайно попасть на похожий набор символов. Но вероятность такого события ненамного выше угадывания самого пароля, поэтому такой вариант мы исключаем.



Но даже данный пароль не является идеальным, т.к. содержит повторяющиеся символы - т.е. на 16 символов пароля, длина алфавита, с помощью которого можно восстановить данный пароль, равна 8 символам, что существенно меньше, чем 16. Таким образом, "идеальным" паролем будет такой, в котором нет ни одного повторяющегося символа.



Возможно, в следующей версии Windows - Longhorn и произойдет качественный скачок в увеличении безопасности паролей учетных записей, а пока же пользователю Windows 2000/XP остается надеяться только на себя и выход здесь в том, чтобы создавать такие пароли на вход в систему, которые будут "не по зубам" даже самому мощному переборщику паролей.



Поэтому дадим заключительный совет по формированию паролей:



Подключите свою фантазию! Придумать легкий для запоминания, но нереальный для взлома пароль крайне просто. Пусть ваш пароль будет очень легким для вас, но крайне сложным для взломщика. И, конечно же, этот пароль не должен совпадать с какими-либо другими паролями - на ICQ, ваш почтовый ящик или рассылку. Т.е. пароль на вход в систему должен быть УНИКАЛЬНЫМ! 

Тогда вы можете быть уверены в том, что даже если каким-либо способом будет получен доступ к SAM-файлу, злоумышленник все равно не восстановит пароль Администратора, а значит и не получит и доступа к вашему компьютеру. 

Встроенные средства безопасности Windows 2000/XP

Несомненно, одним из главных инструментом для создания защищенного компьютера под Windows 2000/XP являются "Локальные политики безопасности", вызываемые из апплета "Администрирование". Множество параметров безопасности удобнее настраивать именно оттуда, а не через реестр или программы-твикеры - например такие, как обнуление файла подкачки перед выключением компьютера или установка минимальной длины паролей. Не поленитесь, загляните в список параметров безопасности и вы найдете много интересного



Безопасность при работе в сети



Если компьютер под управлением Windows 2000/XP подключен к сети, то, конечно же, он становится уязвим и для сетевых атак. Поэтому безопасность при работе в сети также включает в себя несколько рекомендаций.

Даже когда вы не предоставляете свои каталоги в общий доступ, то можете заметить, что в системе существуют так называемые "административные" ресурсы 'C$', 'D$', 'E$' и т.д., а также 'Admin$' и 'IPC$'. Они предназначены для удаленного администрирования компьютера. Даже если их удалить, то при следующей загрузке они появятся снова. Чтобы запретить их создание, в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters нужно установить равным "0" параметр типа REG_DWORD "AutoShareServer" для сервера или параметр "AutoShareWks" для рабочей станции.



Однако, этот метод не запретит создание ресурса IPC$, для этого нужно создать командный файл (BAT или CMD) файл со следующей строкой: 



net share ipc$ /delete 



и вставить запуск этого файла в Автозагрузку (кстати, таким же путем можно удалять и остальные ресурсы со знаком '$').



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



Ниже мы рассмотрим так называемую защищенную NT challenge/response (NTLM) аутентификацию, при этом процедура входа в сеть (если сетью управляет сервер) следующая:



1.Компьютер передает серверу запрос об аутентификации пользователя.

2.Сервер генерирует случайную 8-байтовую последовательность данных (так называемый "Challenge") и передает его компьютеру. 

3.Компьютер, получив Challenge, на основе его и пароля, который ввел пользователь с помощью функций хэширования генерирует LanMan Hash (а при отключении формирования LanMan Hash генерируется NT Hash). В этом случае длина хэша составляет уже 24 байта. 

4.Компьютер передает полученный хэш серверу.

5.Сервер, в свою очередь, также генерирует хэш, используя те же входные данные (пароль, хранящийся на сервере и Challenge, который в пределах одной сессии одинаковый для сервера и для компьютера-клиента). 

6.Затем сервер сверяет оба полученных хэша и возвращает результат аутенфикации. 



При данной схеме избегается передача пароля в незашифрованном виде. Но, несмотря на это, к этим хэшам также можно восстановить пароли. Перехват хэшей может происходить с любого компьютера в сети, работающего под любой ОС и для этих целей используют программы LC4, PacketCatch, WinSniffer, NTSniffer и другие программы-"снифферы", т.е. программы, анализирующие сетевой трафик. Для восстановления же паролей к перехваченным хэшам обычно используются программы LC4, PacketInside и LC+4.



Для защиты от перехвата паролей используются следующие методы:



Использование более защищенных методов аутентификации - NTLM v2 и Kerberos. 

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

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



Безопасность прикладных программ



Разумеется, безопасность Windows зависит не только от самой ОС, но и от программ, которыми вы пользуетесь. Никакая защита Windows не поможет, если, к примеру, через уязвимость в Internet Explorer можно закачать себе троян или несанкционированно выполнить вредоносный код.



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

По возможности пользуйтесь только последними версиями программ, с которыми вы работаете, следите за обновлениями этих программ, устанавливайте все патчи, хотфиксы (hotfixes) и заплатки для Windows, Internet Explorer и др. программ, чтобы оперативно устранять возникающие уязвимости. 

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



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

Пользуйтесь возможностями шифрования данных средствами Windows 2000/XP с помощью EFS (Encrypting File System).

Поиск
Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031