PDA

Просмотр полной версии : Безопасность в системах Windows NT (Windows 2000, Windows XP)


ShooTer
06.11.2003, 14:18
ВЕДЕНИЕ

Самыми безопасными из всех NT-систем являются Windows XP и Windows 2000. Хоть это и новые версии Windows в них всё равно присутствует множество уязвимостей ещё со времён Windows NT4, т.к. в Microsoft всё делается через одно место. На форуме hackzone.ru часто задают вопросы “как стырить пароли?” Или наоборот,” как защититься?” Моя статья призвана ответить на все вопросы.

ПАРОЛИ В СИСТЕМАХ NT.

Начнём естественно с святого – с паролей. В Win3.11/95/98/Me пароли лежали(т) были зашифрованы в файле pwl и лежали в папке Windows. Спионерить и расшифровать эти пароли не составляло труда(из-за слабой шифровки процесс составляет 2-3 секунды без подбора). Доступ к pwl файлам имел любой желающий (а чаще всего взломщик ;-)). В NT системах всё изменилось: пароли хранятся в файле SAM в директории X:/%папка_с_виндой%system32configSAM. Но это не значит, что любой юзер, имеющий учетную запись на нашей машине, сможет его себе скопировать. Во время работы системы доступ к файлу полностью запрещен, даже администратору. Поэтому единственный выход получить доступ к файлу SAM - загрузить на компьютере альтернативную операционку. Локально это не представляет никакого труда. Существует множество "систем на одной дискете", способных читать из раздела NTFS (Trinux, PicoBSD, и т.д.). Но мы говорим о локальной сети, и в этих рамках опасной представляется ситуация, имеющая в народе широкое распространение - наличие на машине связки "Win9x (для игр) + WinNT (для работы)". Очевидно, что получить доступ к SAM-файлу из Win9x можно, только если он лежит на FAT32-разделе. Отсюда вывод - ставить WinNT на FAT-раздел глупо. А в случае наличия на компьютере Win9x вообще недопустимо, ибо вся безопасность NT летит в тартарары. Банально, но факт - очень многие оставляют свежепоставленную NT на FAT'е именно для того, чтобы можно было из 98-й винды обращаться к документам, лежащим на разделе с WinNT. Справедливости ради отмечу, что многие полезные функции NT (квотирование, шифрование файловой системы, и т.д.) работают только на NTFS, и с этой точки зрения установка NT на FAT-раздел выглядит тем более идиотским решением. А мое личное мнение - нужно вообще отказаться от какого-либо использования Win9x.
Многие спросят - а как же тогда работают многочисленные программы для подбора паролей в NT. Дело в том, что дамп паролей хранится не только в файле. Во время работы системы он отображается в реестре, и все программы типа LophtCrack выдирают его именно оттуда. К счастью, к ветке реестра с паролями доступ имеют только юзеры с правами администратора. Казалось бы, беспокоиться не о чем: не ставь на комп вторую операционку, не работай из-под учетной записи админа, и никто до паролей не доберется. Но это не так. Та же L0phtCrack умеет перехватывать передаваемые по сети хэши паролей (работа в режиме снифера), поэтому в сети с логической топологией "общая шина" удаленный доступ к своей машине (например, к принтеру) представляет определенную опасность. Примечание: строго говоря, в NT сами хэши паролей по сети НЕ передаются, но передаются хэши, полученные на основе хэшей паролей. Короче, перехватить данные, на основе которых можно получить пароль пользователя, представляется возможным.
Как же быть? Допустим, что хэши паролей каким-то образом перехвачены (из файла SAM, из реестра, или отснифаны по сети). В таких случаях обычно рекомендуют выбирать надежные пароли длиной не менее семи символов, дабы получивший хэш-код взломщик не смог их расшифровать подбором "в лоб" (bruteforce) за приемлемое время. Но этого мало.

Дело в том, что в WinNT пароли по умолчанию хранятся зашифрованными сразу по двум алгоритмам. Сделано это в целях все той же пресловутой совместимости. Первый алгоритм - так называемый LM-hash, существующий для совместимости с аутентификацией в сетях LanMan, второй - собственный NT'шный, алгоритм NT-hash. LM-алгоритм работает не просто криво, а очень криво. А именно, он разделяет полученный пароль на две части по семь символов каждая (т.е., например, если пароль состоит из десяти символов, то он преобразует его в два слова, из семи и из трех символов соответственно), переводит все символы в верхний регистр, шифрует каждую часть отдельно, и два полученных хэша объединяет вместе, получая тот самый LM-hash. Надо ли говорить, что подбор зашифрованных таким алгоритмом паролей значительно проще (очевидно, что легче расшифровать два пароля из семи и трех символов, чем один из десяти)? И все программы подбора паролей умеют пользоваться этой возможностью, взламывая две половины пароля одновременно. Например, есть админ с учётной записью Admin и паролем admin123, L0phtcrack разделит его на две части: admin12 и 3 и не пройдёт и минуты как вторая половина расшифруется , а именно тройка). Microsoft из-за этой “технологии” сама забивает себе гвозди в гроб.
Учитывая, что многие пароли представляют собой простые слова или сочетания слов, из-за применения в винде LM-hash'а может сложиться ситуация, когда пароль из семи символов надежнее пароля из десяти. Ведь на основании быстро угаданных последних трех символов можно сделать вывод обо всем пароле в целом. А избавиться от недостатка очень легко. Через панель администрирования, оснастку Local Security Policy, в разделе Local Security Settings -> Security Options найти политику "Network Security: LAN Manager authentification level" и изменить дефолтовое значение (Send LM & NTLM responses) на что-то вроде Send NTLM response only (или использовать NTLMv2, если не нужна совместимость или в сети отсутствуют машины на NT4/Win9x).

УДАЛЁННЫЙ ДОСТУП

Поговорим еще про одно святое место сетевой операционной системы: про ресурсы с открытым общим доступом по сети, проще говоря, шары. Хацкеры (aka screept-kiddies ?), как известно, слетаются на них, как мухи на г... на мед :). Получение файлов через шары - тема довольно избитая, а вот сбор информации о системе через расшаренные ресурсы обсуждается реже.

По умолчанию WinNT сконфигурирована так, что любой может получить по сети информацию о системе (имена пользователей, групп, общие папки, политику паролей, информацию о сетевых соединениях). Способствуют этому два создаваемых по умолчанию расшаренных ресурса - ADMIN$ и IPC$. Первый служит для обеспечения удаленного управления системой, второй отвечает за межпроцессное взаимодействие по сети для доступа к общим ресурсам (IPC - InterProcess Communication). Убедиться, что они действительно существуют, можно, например, с помощью многофункциональной утилиты net.exe, входящей в стандартную поставку Win2k/XP:

C:>net use 127.0.0.0 ipc$ ""/u:'' (передаем "пустой" аккаунт).

Собственно, сбор информации о системе путем подключения к шаре IPC$ с пустым именем пользователя и пароля получил название нуль-сессии (null-session) - пресловутый способ удаленной инвентаризации WinNT, работающий как в первых версиях NT, так и в последней XP. Наверное, ты слышал уже этот термин. Но слышал ли ты, как сделать свою машину защищенной от этого бага? Дело в том, что полностью отключить эти две шары невозможно. Точнее говоря, возможно, но это будет слишком радикальным шагом, и если доступ к машине по сети все-таки нужен, то сделать необходимо следующее. В редакторе реестра (regedit32.exe) по адресу HKLMSYSTEMCurrentControlSetControlLsa необходимо создать параметр типа REG_DWORD с названием restrictanonymous (он, возможно, уже создан) и присвоить ему значение 1 или 2. Значение 1 запрещает анонимным юзерам просматривать учетные записи и общие ресурсы удаленно (т.е. для защиты от null-session этого достаточно, саму сессию установить по-прежнему можно, но вот получить информацию через нее уже нельзя). Значение 2 вообще отказывает любой неявный доступ к системе. Учитывая, что существуют программы (GetAcct, user2sid, и т.п.), с помощью которых можно собрать информацию даже при параметре restrictanonymous, установленном в 1, советую выставить его значение в 2 (если, разумеется, компьютер не является контроллером домена). При этом машина исчезает из "сетевого окружения" (network neiborhood), но получить доступ к ней по-прежнему можно, обратившись по.ее.ай.пи.

А если тебе вообще не нужны удаленные подключения к системе, то просто отключай "службу сервера" (Server) в оснастке Services панели администрирования или руками в реестре создавай параметр REG_DWORD по адресу HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters с названием AutoShareWks и присваивай ему значение 0. Теперь к тебе никто не пролезет.

СОБСТВЕННО ШАРЫ

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

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

Учитывая все вышесказанное, ты решил, что шары нам не нужны совсем, и NetBIOS - зло? Отлично, отключаем их, запретив его использование. Для этого в свойствах соединения, во вкладке "свойства протокола TCP/IP" -> "дополнительно" выбираем пункт "отключить NetBIOS через TCP/IP". Затем в тех же "свойствах соединения" убираем галочку у пункта "Доступ к файлам и принтерам сети Microsoft". Это самый радикальный способ обезопасить себя от левых подключений, но помни, что после этого никто не сможет подключиться к твоим расшаренным ресурсам (которых просто не будет). Даже ты не сможешь путешествовать по чужим папкам с общим доступом.

Изменения ты можешь увидеть сразу, набрав до и после отключения в командной строке C:>netstat a

FerrUM www.hackzone.ru

ShooTer
06.11.2003, 14:19
ПОЛЬЗОВАТЕЛЬСКИЕ АККАУНТЫ

Во многих источниках проскакивает информация, что при работе в NT неплохо бы изменить логин администратора (administrator) на что-нибудь менее броское, да и сам Microsoft рекомендует смену имени учетной записи админа как одно из первых действий после установки системы. Теперь-то тебе уже должно быть понятно, для чего такие предосторожности. Есть куча программ (в том числе и упомянутая выше nbtstat), которые могут зафиксировать нахождение пользователя в системе, и если таким пользователем будет Administrator, то это значит, что взломщику нужно будет подбирать только пароль! Поэтому идем в посещенные нами сегодня Local Security Policy -> Security Options, и в политике Rename administratior account задаем свое имя.

Последние штрихи

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

Во-первых, отключи все ненужные тебе сервисы. Подчеркиваю - все. Если сомневаешься, выстави режим запуска не в Disabled, а в Manual. Просто если данный сервис понадобится, то система предложит его запустить. Все знают о GUI'вой оболочке управления сервисами (Administrative Tools -> Services), но мало кто слышал про консольную, но более продвинутую утилиту sc.exe. В WinXP она включена по умолчанию, а для Win2000 входит в пакет Win2k Resource Kit. С помощью мощной sc.exe можно проворачивать гораздо больше операций. Так, например, узнаешь, что на самом деле степеней запуска сервисов семь, а не три, как показывает утилита Services.
Во-вторых, как ни банально это звучит, озаботься, чтобы на твоей системе стояли все последние хотфиксы и сервиспаки. Правда, недавняя практика установки SP3 и SP4 на Win2000 показывает, что не все так гладко, и не все то полезно, что лежит на Microsoft TechNet в разделе Downloads, но это скорее исключение из правил. К тому же MS в целях в том числе и заботы о пользователях представил сканер системы на установленные патчи - MS Baseline Security Analyser (и его расширенную консольную версию nshc.exe). Не пренебрегай этими утилитами, благо проверять свою систему на неустановленные модули обновления еще никогда не было так просто. Между делом замечу, что превратиться в еще одну утилиту для хакеров (как случалось с некоторыми программами из Win2k Resource Kit) MBSA, видимо, не суждено. Ведь для того чтобы просканировать систему, нужно иметь на ней права администратора. Впрочем, не забывай и об остальных популярных сканерах безопасности. Напомню, что всевозможные X-Spider'ы, ShadowSecurityScanner'ы, Retina'ы и прочие Nessus'ы создавались как раз для аудита системы, а не для изучения жертвы. Воспользуйся ими и увидишь, насколько уязвима твоя собственная система.

В-третьих, по возможности никогда не выполняй повседневные дела под аккаунтом администратора, пусть и переименованным. В NT распределение полномочий пользователей основано на списках контроля доступа (ACL - Access Control List), определяющих права доступа юзера к папкам/файлам/ключам реестра. Поэтому в случае подсовывания тебе банального трояна и запуске его от имени администратора, права зловредной программы будут также абсолютными. Если понадобится запустить какую-либо программу под админом, используй встроенную службу RunAs (вызывается по нажатию правой кнопкой мыши по экзешнику или из консоли).

В завершение поставь себе хороший персональный фаервол. Без него сейчас никуда.

ВЫВОДЫ

А теперь всё по пунктам. Чтобы оставаться более-менее спокойным в сети нужно:
1. Иметь только одну Win-систему (без всяких 98-х).
2. Перевести все диски в формат NTFS (используем Partition Magic)
3. Закрываем все шары (особенно взгляните на 135 порт, т.к. существует очень злой эксплоит под названием kaht2, с помощью которого любой желающий сможет получить доступ к вашему жёсткому диску (если вы хотя бы не установили соответствующую заплату с сайта Microsoft).
4. Следим-закрываем запущенные сервисы.
5. Следим за обновлениями Windows (проверяем себя на существование уязвимостей при помощи xSpider (в строке адрес пишем 127.0.0.1)) .
6. Ставим файрвол (например, Agnitum Outpos), хотя на них не слишком стоит надеяться.

FerrUM www.hackzone.ru

Shanker
22.01.2004, 00:51
Вот блин... а у меня как раз на ту тему своя статья создана... ну да ничего: добавлю от себя

Добавлено через 6 минут:
Настройки в панели управления
Лезем в Панель управления->Администрирование->Локальная политика->Локальные политики->Параметры безопасности

Ищем "Не показывать имя последнего пользователя" и изменяем параметр на "Включён"(в англ. винде это "Interactive logon: Do not display last user name"). Эта штука нужна для того, чтобы при входе в систему не показывалось имени последнего залогиневшигося юзера. Также можно изменить максимальный срок действия паролей. Изменяем "Очищать файл подкачки при завершении работы" на "Включён".

А теперь в списке слева выбираем: Локальные политики->Назначение прав пользователя. Справа ищем:

Доступ к компьютеру из сети. Если ты не используешь NETBIOS для доступа к твоему компу из сети - выкидывай всех.
Отказ в доступе к компьютеру из сети. Опять же: не нужен NETBIOS-доступ к твоему компу из сети - выбираем всех, кого можно.
Отклонить локальный вход. Кого выберешь здесь тот не сможет войти в твой комп локально (для тех кто в танке: локальный вход - это вход, который производится, когда ты включаешь комп и входишь в систему). Смотри не переборщи: если выберешь всех - никто не сможет войти в твой компьютер локально (даже администраторы). Лично я выкинул только группу "Гости".
Принудительное удалённое завершение. Тебе надо, чтоб твой комп удалённо выключали\перезагружали? Мне - нет. Тебе тоже? Отлично! Выкидываем из этого списка ВСЕХ!
Все остальные настройки, в которых по-умолчанию в параметрах вписана группа Администраторы (Administrators) настраиваются так, чтобы по-возможности сама эта группа там не фигурировала: нужны администраторы - выбирай их имена, а не всю группу.


В правом списке лезем в "Локальные политики->Аудит". Здесь настраиваются те параметры, которые должны регистрироваться в журналах системы. Можно выбирать успех и/или отказ. Особо много не выбирай, ибо систему нагружает (по большому счёту домашним пользователям регистрация в журналах особа не нужна). Всего три журнала: безопасности, приложений и системный. Доступ к ним осуществляется через Панель управления->Администрирование->Просмотр событий.

Снова лезем в правый список и ищем "Политики учётных записей->Политика паролей". Здесь можно настраивать по вкусу. Рекомендую включить опцию "Пароль должен отвечать требованиям сложности".
В каталоге справа находим "Политика блокировки учётной записи". Пороговое значение блокировки устанавливаем на 3, блокировка учётной записи - на 30 минут. Это значит, что если кто-то пытался получить доступ к какой-то учётной записи, и три раза подряд ему было отказано в доступе, то учётная запись (имя пользователя), к которой была попытка получения доступа, будет заблокирована на 30 минут, в течение которых доступ к учётной записи даже с правильным паролем запрещён.

Реестр
Чтож, теперь наведём порядок в реестре.
Лезем в HKLM\SYSTEM\CurrentControlSet\LanmanServer\Parametrs и ищем параметр AutoShareWks и присваиваем ему значение 0. Если такового параметра нет - нужно создать его. Этот параметр отвечает за авто создание расшаренных ресурсов. Если тебе нужно использовать расшаренные ресурсы и к ним нужен удалённый доступ, лучше создать нужные ресурсы вручную.
Идем в HKLM\SYSTEM\CurrentControlSet\Control\Lsa и создаём параметр типа REG_DWORD с названием restrictanonymous (возможно, он уже создан) и присваеваем ему значение 2. Это надо сделать для запрещения NULL-session: ну, это когда можно присоединиться к компу для запроса различной инфы (например, НЕТБИОС имя компьютера, имя рабочей группы) без ввода имени пользователя и пароля (поэтому и нул-сешшн).
Пароль и логин к инету лучше не сохранять, т.к. его можно будет вытащить специальными утилитами. По умолчанию в системе выбрано запоминать логин и пароль, но даже если галочку убрать, логин сохраняется (а пароль уже нет). Чтобы это исправить лезем в HKLM\System\CurrentControlSet\Services\Rasman\Parameters и создаём параметр типа REG_DWORD с названием DisableSavePassword и присваиваем ему значение 1.
Я ещё рекомендую вырубить RPC (Процедура удалённого вызова) из-за того, что толку он неё немного, а комп однозначно становится более уязвимым (вспомни недавние баги в RPC!). Вырубаем: HKEY_LOCAL_MACHINE\Software\Microsoft\OLE – измените значение EnableDCOM к N. Параметры вступят в силу после перезагрузки.

К реестру возможен удалённый доступ (при условии, что известно имя пользователя и пароль того юзера, права которого позволяют изменять реестр). Чтобы выборочно ограничить доступ к реестру удалённо и локально выбираем один из главных разделов, жмём правую кнопку и выбираем "Разрешения" здесь изменяем группы. ОБЯЗАТЕЛЬНО оставь СИСТЕМУ (SYSTEM). Вместо группы "Администраторы" (Administrators). Лучше выбирать имена админов. Жмем "Дополнительно". В появившемся окне ставим галочку напротив "Заменить разрешения для всех дочерних объектов заданными здесь разрешениями, применимыми к дочерним объектам". Так нужно сделать со всеми главными разделами. В этом же окне можно задать параметы аудита реестра.
Если удалённый доступ к реестру вообще не требуется можно его вырубить: лезем в Панель управления->Администрирование->Службы. Здесь находим Удалённый доступ к реестру (Remote Registry), дважды щёлкаем по нему и указываем тип запуска как "Отключено".

Назначение доступа к файлам\папкам
Нужно правильно распределить: каким юзерам в какой католог можно залезать (возможно в файловой системе NTFS). Для этого: щёлкни правой кнопкой на нужном файле\каталоге\диске и выбери "Свойства". Теперь ищи вкладку "Безопасность". Здесь два окошка: группы пользователей и их текущие права на данный ресурс. Редактируй его как считаешь нужным (ты ведь уже должен знать кому куда можно залезать, а кому-нет!).

InsaneX
22.01.2004, 01:24
Guide to Securing Microsoft Windows XP
National Security Agency - United States of America

http://teens18.co.uk/wxp-1.pdf (2mb)

imho samoe samoe rulnoe po winxp security....

Shanker
22.01.2004, 13:31
Закрываем все шары (особенно взгляните на 135 порт....ГЫ: с каких это пор DCOM RPC стал считаться шаром? LOL
Хотя, 135'й порт действительно лучше закрыть (а ещё лучше - вырубить DCOM RPC), т.к. нафиг не надо удалённое вырубление - перезагрузка нашего компа!!!