| RSS



Меню

Bookmark and Share


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





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

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

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 PHP Эксплоит Windows Server 2008 qip Virtual chroot kernel proc sysctl tune FreeBSD bridge Boot Disk Bluetooth GEO game directx Emulator Python Shell DDoS червь Conficker вирус троян Лаборатория Касперского пиратство apple iPhone ИТ-отрасль Щеголев Microsoft экономический кризис Twitter социальная сеть анонимность Лицензия Open Source ASP.NET MVC уязвимость MySQL база данных файлообмен закон франция пират Skype мобильный Deutsche Telekom Хакер киберпреступник Trend Micro кибератака Германия робот утечка данных персональные данные ноутбук интернет Китай цензура ядро Linux Торвальдс Windows Vista Acer Linux патент браузер Firefox Internet Explorer Opera Net Applications Safari Intel Linux Foundation Moblin Oracle патч банкомат кардер HSM IBM X-Force Cofee сша кибервойна Эстония Dell ИТ-специалист хакерские атаки Pirate Bay контроль кибербезопасность язык программирования The Pirate Bay Пиратская партия утечка информации приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 Баллмер взлом Пентагон ботнет Украина Facebook Cisco cloud Windows XP нетбук торрент музыка биометрический nokia ФБР IP-адрес CIPAV Comcast sms RSA java Google CAPTCHA Symantec спам конфиденциальная информация инсайдер Perimetrix антивирус тест Anti-Malware Windows 7 операционная система Windows провайдер авторское право RapidShare UNIX свиной грипп шантаж дети EFF BluWiki копирайт экстремизм Panda Security cloud computing McAfee Cybercrime Response Unit Bottle Domains HTTPS ICANN студент шпионское ПО Норвегия школьник New York Times XSS YouTube Warner Music кибершпионаж КНДР Ubuntu свободное ПО AMD ATI касперский Россия РФ сервер хостинг фальшивый антивирус Comodo CA Wi-Fi D-Link суд пароль блог фишинг Одноклассники медведев контрафакт мошенник штраф Sony GPS по Gumblar JAVASCRIPT хакеры вредоносное ПО Yahoo ФАС компьютер Софт MPAA кибероружие PandaLabs Red Hat Минкомсвязи сбой ASUSTeK Computer мошенничество Доктор Веб ВКонтакте Cyber-Arc исходный код PCI DSS МВД фильтр порнография BREIN свобода слова Казахстан GEMA Autodesk сисадмин Gmail кредитная карта кибермошенник LiveJournal шифрование криптография Deep Purple банк нанотехнологии Wikipedia zero-day ColdFusion выборы кража данных DNS BIND Android BASIC атака Black Hat Mac OS X Click Forensics Clampi домен фсб Прокуратура Уголовное дело icq Barrelfish киберпреступность Sophos AT&T ошибка Electa Gamma Knife OpenBSD DARPA военные Сайт Visual Studio 2010 .NET Framework 4 Chrome OS электронная почта турция конференция спамер FTC полиция российская ОС Koobface Великобритания БЕЛОРУССИЯ грузия BSA Bittorrent облачные вычисления Azure Европа Dr.Web Билл Гейтс спецслужбы Cryzip Живой Журнал Royal Bank of Scotland смартфон Canonical Pwn2Own F-Secure Symbian Hotmail фильм

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

Миф о дублировании 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)
Просмотров: 2503 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

15:28
Обновить


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

Поиск


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