| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.116.87.225
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 php libc rand() эксплоит Windows Server 2008 FreeBSD Jail Elastix QIP Virtual chroot Limit kernel proc sysctl Tune freeBSD bridge Boot LiveCD Disk Bluetooth GEO game DirectX emulator Python Shell червь Conficker вирус троян лаборатория касперского пиратство Apple iPhone Microsoft twitter социальная сеть анонимность лицензия Open Source уязвимость MySQL база данных Закон Франция Пират Skype мобильный Deutsche Telekom хакер trend micro кибератака Германия робот Персональные данные Ноутбук Интернет китай цензура windows vista acer Linux патент браузер Firefox Internet Explorer Opera Safari Intel Oracle патч Банкомат IBM США Dell Ford MAC контроль Internet кибербезопасность приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 взлом Пентагон Украина Facebook Cisco Cloud Windows XP нетбук торрент музыка Биометрический Nokia Hardware Manager ФБР IP-адрес sms RSA java Google Captcha Symantec Спам Антивирус тест Anti-Malware Windows 7 операционная система windows провайдер авторское право rapidshare UNIX свиной грипп шантаж Дети ipod копирайт McAfee HTTPS icann студент Норвегия New York Times YouTube Warner Music КНДР Ubuntu AMD ATI касперский Россия РФ сервер хостинг Wi-Fi суд пароль блог фишинг одноклассники Медведев контрафакт мошенник sony Gps по JavaScript Хакеры Yahoo фас компьютер софт Минкомсвязи Сбой мошенничество Доктор ВЕб Вконтакте ie8 исходный код МВД фильтр порнография свобода слова казахстан Autodesk сисадмин Gmail кредитная карта LiveJournal шифрование Deep Purple банк HTML5 Нанотехнологии wikipedia выборы DNS bind KaZaA Android Basic атака Mac OS X домен ФСБ прокуратура уголовное дело ICQ Sophos Google Voice ошибка DARPA военные сайт турция конференция спамер Полиция Koobface Великобритания IRC белоруссия Грузия Bittorrent Европа Dr.WEB Linux Mint Билл Гейтс спецслужбы Royal Bank of Scotland смартфон Canonical F-Secure Symbian фильм Microsoft Office Новая Зеландия Adobe Австралия IDC Internet Explorer 9 iPad Ирландия поиск GOOGLE EARTH МТС Реклама слежка Mandriva BSD Zeus личные данные eset avast Avira G Data Software защита Defcon виртуализация dll LibreOffice Черный список BlackBerry индия Москва DVD социальные сети flash player paypal BitDefender email сертификат honda MasterCard Anonymous технологии IPv6 Ассанж Оптоволокно передача данных арест Fedora Samsung Иск Apache учетная запись iTunes исследование Cert Санкт-Петербург McDonald's SOPA PIPA Bioshock Infinite: Burial at Sea - ico Megaupload CES hotfile отчет приложение Инвестиции платформа DRM DDoS-атака роскомнадзор

Главная » Статьи » Общие Статьи

Миф о дублировании SID компьютера

Третьего ноября этого года в Sysinternals был закрыт проект по развитию NewSID – утилиты, позволяющей менять идентификатор защиты компьютера (machine SID). Я написал NewSID (тогда она называлась NTSID) в 1997 году, поскольку на тот момент единственной программой, позволявшей менять SID, была утилита от Microsoft под названием Sysprep, которая не поддерживала смену идентификаторов защиты на тех машинах, на которых уже были установлены приложения.

Идентификатор защиты компьютера – это уникальный идентификатор, генерируемый программой установки Windows Setup, который Windows использует как основной идентификатор безопасности для определяемых администратором локальных аккаунтов и групп. После того, как пользователь авторизуется в системе, он представляется ей своими идентификаторами SID пользователя и группы в соответствии с авторизацией объекта (проверками прав доступа). И если две машины могут иметь одинаковый идентификатор защиты, то и аккаунты с группами на них могут также иметь одинаковые идентификаторы. Кажется очевидным, что наличие нескольких компьютеров с одинаковыми SID в пределах одной сети небезопасно, не правда ли? По крайней мере, так принято было думать.

Причиной, по которой я начал рассматривать возможность отправки NewSID на покой, были отзывы пользователей. Хотя в целом применение утилиты на Windows Vista было успешным, некоторые пользователи сообщали об ошибках в работе компонентов системы после использования NewSID. К тому же, сам я не проводил ее полного тестирования. Когда я принялся за изучение отзывов, я сделал шаг назад, чтобы понять, как дублированные SID могут становиться причинами проблем, поскольку раньше я принимал возможность этого на веру, как и все остальные. И чем больше я об этом думал, тем крепче была моя убежденность, что дублирование сертификатов безопасности, то есть наличие множества компьютеров с одинаковыми SID, само по себе не может быть причиной для возникновения проблем с безопасностью или чем-нибудь еще. Я поделился своими мыслями с командами разработчиков Windows, занимающимися безопасностью и развертыванием систем, и там никто не смог придумать такую последовательность действий, при которой две системы с одинаковыми SID, работающие в пределах рабочей группы или домена, могли бы стать причиной ошибки. С этого момента решение закрыть NewSID стало очевидным.

Я понимаю, что новость о том, что в наличии дублированных SID нет ничего страшного, станет для многих неожиданностью, особенно если учесть, что практика смены идентификаторов безопасности при развертывании систем из образов применяется еще со времен Windows NT. Эта статья разоблачает миф об опасности дублирования SID, и чтобы его развеять, я сначала объясню, что же такое идентификаторы безопасности компьютера и как они используются Windows, после чего продемонстрирую, что за одним исключением, Windows никогда не показывает идентификаторы безопасности вне компьютера, а потому иметь машины с одинаковыми SID абсолютно нормально.

Идентификаторы безопасности (SID)

Windows использует идентификаторы SID для представления не только машин, а вообще всего пространства имен System Security Principal, частью которого являются машины, учетные записи домена, пользователей и групп безопасности. Их имена - лишь более понятные для пользователей формы представления SID, позволяющие например переименовать учетную запись без необходимости обновлять для отображения внесенных изменений ссылающиеся на эту учетную запись списки управления доступом (ACL). Идентификатор SID - это числовое значение переменной длины, формируемое из номера версии структуры SID, 48-битного кода агента идентификатора и переменного количества 32-битных кодов субагентов и/или относительных идентификаторов (RID). Код агента идентификатора (identifier authority value) определяет агент, выдавший SID. Таким агентом обычно является локальная система или домен под управлением Windows. Коды субагентов идентифицируют попечителей, уполномоченных агентом, который выдал SID, a RID — не более чем средство создания уникальных SID на основе общего базового SID.

Увидеть, что собой представляет SID машины можно, если воспользоваться утилитой PsGetSid, запущенной через командную строку без параметров:

В этом SID номер версии равен 1, код агента идентификатора - 5, а далее идут коды четырех субагентов. Одно время в Windows NT идентификатор SID мог использоваться для идентификации компьютера в сети, поэтому для обеспечения уникальности при генерировании SID в Windows Setup он содержит один фиксированный (21) и три генерируемых случайным образом (числа после "S-1-5-21") кода субагентов.

Еще перед тем, как вы создадите первую учетную запись в системе, Windows определяет несколько встроенных пользователей и групп, включая учетные записи "Администратор" и "Гость". Вместо того, чтобы генерировать новые случайные идентификаторы SID для этих учетных записей, Windows обеспечивает их непохожесть, просто добавляя в SID уникальные для каждой учетной записи числа, называемые относительными идентификаторами (Relative Identifier, RID). Для упомянутых выше встроенных учетных записей RID определены заранее, поэтому у пользователя "Администратор" RID всегда равен 500:

После установки системы Windows назначает новым локальным учетным записям пользователей и групп номера RID, начинающиеся со значения 1000. Чтобы увидеть имя учетной записи, которой принадлежит указанный SID, можно воспользоваться PsGetSid. Пример внизу демонстрирует, что локальный SID с параметром RID, равным 1000, принадлежит учетной записи Abby - аккаунту администратора, имя которого система обязала меня ввести во время установки:

Плюс к этим динамически создаваемым SID, система определяет несколько аккаунтов, которые также всегда имеют предопределенные значения SID. Один из примеров – группа Everyone, SID которой в каждой системе Windows имеет значение S-1-1-0:

Другой пример - учетная запись Local System, под которой выполняются некоторые системные процессы, такие как Session Manager (Smss.exe), Service Control Manager (Services.exe) и Winlogon (Winlogon.exe):

Идентификаторы безопасности и списки управления доступом (ACL)

После того, как пользователь вошел в систему Windows под своей учетной записью, подсистема локальной авторизации (Local Security Authority Subsystem, Lsass.exe) создает сессию входа и маркер для нее. Маркер - это структура данных, которую ядро Windows определяет для представления учетной записи и которая содержит в себе SID этой учетной записи, а также SID групп, к которым принадлежит данная учетная запись на момент входа в систему и назначенные для этой учетной записи и групп привилегии безопасности. Когда последний маркер, ссылающийся на сессию входа, удаляется, LSASS удаляет и сессию входа, после чего пользователь считается вышедшим из системы. Ниже можно увидеть информацию о моей интерактивной сессии входа, отображенную с помощью утилиты Sysinternals LogonSessions:

А здесь (в окне Handle Process Explorer) можно увидеть информацию о маркере, который Lsass создал для этой сессии. Обратите внимание, что число, следующее за именем учетной записи (7fdee), соответствует идентификатору входной сессии из LogonSessions:

По умолчанию процессы наследуют копию маркера своего родительского процесса.

Так, каждый процесс, запущенный в моей интерактивной сессии, имеет копию маркера, изначально унаследованного им от процесса Userinit.exe, который первым создается Winlogon при каждом интерактивном входе в систему. Вы можете посмотреть содержимое маркера процесса, сделав двойной щелчок на строке процесса в Process Explorer и переключившись на вкладку Security в диалоговом окне свойств процесса:

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

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

Дублирование SID

Пропагандируемый Microsoft способ создания установки Windows, пригодный для развертывания системы на группы компьютеров, заключается в установке Windows на эталонный компьютер и подготовке системы к клонированию с помощью утилиты Sysprep. Этот метод называется "обобщением образа", поскольку при его загрузке Sysprep персонализирует установку, генерируя новый SID компьютера, определяя имеющиеся аппаратные средства, сбрасывая счетчик активации и устанавливая прочие настройки, в том числе – имя компьютера.

Однако, некоторые IT-администраторы сначала ставят Windows на одну из своих систем, устанавливают и настраивают приложения, а затем используют такие средства развертывания, которые не сбрасывают SID на установочных образах Windows. До сих пор наилучшим средством в таких ситуациях было использование утилит для смены SID, таких как NewSID. Эти утилиты генерируют новый идентификатор безопасности машины, а затем пытаются обновить его во всех мыслимых местах, включая файловую систему и списки управления доступом в реестре. Причина, по которой Microsoft не поддерживает подобный способ изменения системы, довольно проста – в отличие от Sysprep, сторонние утилиты могут и не знать обо всех тех местах, где Windows хранит идентификатор безопасности компьютера. А раз так, то и надежность компьютера, на котором имеется и старый и новый SID, не может быть гарантирована.

Так что же, можно считать проблемой наличие нескольких машин с одинаковыми SID? Только в одном случае - если Windows при каких-либо обстоятельствах ссылается на SID других компьютеров. К примеру, если во время подключения к удаленной системе SID локального компьютера был передан на одну из удаленных систем и использовался там для проверки прав доступа, тогда дублированный идентификатор SID мог бы стать причиной наличия бреши в системе безопасности, поскольку удаленная машина не смогла бы отличить SID удаленной учетной записи от аналогичного SID локальной учетной записи (при условии, что в идентификаторах совпадают и SID компьютера, и RID). Однако как мы отмечали, Windows не позволяет пройти аутентификацию на удаленном компьютере, используя учетную запись, известную только локальному компьютеру. Вместо этого необходимо указать либо входные параметры, являющиеся локальными для удаленной системы, либо параметры учетной записи домена, считающегося доверенным для удаленной системы. Удаленный компьютер получает SID для локальной учетной записи в своей собственной базе данных учетных записей (SAM), а сведения об аккаунте домена об берет в базе Active Directory на контроллере домена. Удаленный компьютер никогда не предоставляет SID компьютера подключающейся машине.

Другими словами, не SID предоставляет доступ к компьютеру, а имя пользователя и пароль учетной записи: одно лишь знание SID учетной записи на удаленной машине не позволит получить доступ к компьютеру или его ресурсам. Чтобы еще раз убедиться в этом, достаточно вспомнить тот факт, что встроенные учетные записи (например, Local System) имеют одинаковые SID на любом компьютере, что могло бы стать серьезной уязвимостью, если бы доступ основывался на SID.

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

В целом ряде статей, посвященных дублированию SID, включая эту статью из базы знаний Microsoft, содержится предупреждение, что наличие у нескольких компьютеров одинаковых SID приводит к тому, что ресурсы на сменных носителях (например, на отформатированных в NTFS внешних дисках) не могут быть защищены средствами локальной учетной записи. Однако в них упускается из виду то обстоятельство, что права доступа на таких накопителях защитить не получится в любом случае, поскольку подсоединить их можно к такой машине, которой безразличны права доступа NTFS. Более того, сменные накопители чаще всего используют права доступа по умолчанию, позволяющие осуществлять доступ хорошо известным идентификаторам SID (группы "Администраторы", к примеру), одинаковым на любой системе. Это фундаментальное правило физической защиты, поэтому в Windows 7 включена функция Bitlocker-to-Go, позволяющая зашифровывать данные на сменных носителях.

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

Новая лучшая политика

Удивительно, что дублирование SID так долго считалось не подлежащей обсуждению проблемой лишь потому, что все думали, что кому-то об этом точно известно. К моему сожалению, на самом деле NewSID никогда не была по-настоящему полезной утилитой, и скучать по ней теперь нет никакого смысла. Официальная политика Microsoft по данному вопросу тоже изменится, поэтому можно рассчитывать на то, что в будущих версиях Sysprep этап генерации SID будет пропущен.

Категория: Общие Статьи | Добавил: aka_kludge (03.12.2009)
Просмотров: 2636 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

12:35
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2025 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика