Предыдущая глава | Содержание | Следующая глава

1. Архитектура системы безопасности Windows NT.

1.1. Сертификация Windows NT по уровню защиты С1 и требования к защите.

Windows NT изначально проектировалась с учетом требований информационной безопасности. В частности, Windows NT проектировалась в соответствии с требованиями Программы Оценки Доверяемых Продуктов (Trusted Product Evaluation Program - TPEP) Национального Центра Компьютерной Безопасности (National Computer Security Center - NCSA) США. Эта программа предназначена для оценки уровня безопасности, предоставляемого компьютерной системой. Оценка производится в соответствии со стандартом "Критерии оценки доверяемых компьютерных систем", называемом также Оранжевая книга по цвету обложки.

Продукту, оцененному по программе, присваивается один из рейтингов: A1, B3, B2, B1, C2, C1, или D, по убыванию степени безопасности.

Система Windows NT 3.5 (Service Pack 3) была сертифицирована по классу С2 [4.2.17] . Система Windows NT 4.0 находится сейчас в процессе сертификации.

Модель безопасности Windows NT была построена в соответствии с требованиями класса С2. Наиболее существенными требованиями уровня защиты С2 являются:

Следует отметить, что система была сертифицирована для определенного аппаратного обеспечения (Compaq Proliant 2000 и 4000 (Pentium) и DECpc AXP/150 (Alpha)) и с отключенными сетевыми функциями.

В состав Microsoft Windows NT Server Resource Kit входит утилита Microsoft Windows NT C2 Security Manager. Эта утилита позволяет проверить соответствие имеющейся инсталляции Windows NT требованиям класса С2. Надо отметить, что установки по умолчанию, принимаемые при инсталляции Windows NT, во многом не соответствуют требованиям С2. Это означает, что для полного соответствия системе требуется дополнительная настройка.

1.2. Идентификация и аутентификация пользователей.

Базовым в системе безопасности Windows NT является понятие учетной записи пользователя (user account). Для того чтобы пользователь мог получить доступ к системе, он, как правило, должен иметь учетную запись. Учетная запись содержит имя пользователя и его пароль в зашифрованном виде, а также информацию о группах, к которым принадлежит пользователь, информацию о пользователе (например, его настоящее имя) и список общесистемных прав пользователя (user rights).

Пользователи в Windows NT для упрощения администрирования могут объединяться в группы. Пользователь может принадлежать к одной или нескольким группам. Группам также могут назначаться права доступа к объектам.

Каждому user account ставится в соответствие уникальный идентификатор безопасности (Security ID - SID). Этот идентификатор является уникальным в течение всего времени жизни системы и не может использоваться повторно, даже если учетная запись пользователя была удалена.

1.2.1. База данных Security Account Manager

Учетные записи пользователей хранятся в так называемой базе данных Security Account Manager (SAM). В ней для каждого пользователя хранится SID, пользовательское имя, пароль в зашифрованном виде (который подробно будет описан ниже), информация о членстве в группах, общесистемные права, которыми наделен данный пользователь, текстовый комментарий и прочая информация.

База данных SAM находится в ключе реестра HKEY_LOCAL_MACHINE\SAM. Этот ключ связан с ключом HKEY_LOCAL_MACHINE\SECURITY\SAM, так что изменения, внесенные в один ключ, автоматически дублируются в другом. Системный реестр частично хранится на диске в каталоге <SYSTEMROOT>\SYSTEM32\CONFIG . В частности, база данных SAM хранится в файле sam. Во время работы системы этот файл заблокирован и недоступен. Недоступна эта информация также и непосредственно из редактора реестра, причем как для изменения, так и для просмотра. В то же время, обратиться к этим данным можно через Windows API. Обычно, права доступа к этим ключам установлены таким образом, что пользователи (в том числе администраторы) не могут их читать или изменять. Однако администраторы могут программно изменить права доступа к этим ключам и разрешить себе доступ по чтению. Такой подход используется в утилите pwdump , которая позволяет администратору извлечь из реестра и записать в файл пользовательские данные.

Копия файлов системного реестра обычно может храниться в каталоге <SYSTEMROOT>\repair. Она помещается туда при создании Emergency Repair Disk . Исходная копия помещается в этот каталог при установке Windows NT. При запуске программы rdisk (создание ERD) с ключом /s в этот каталог помещается свежая копия базы данных SAM. Она хранится в упакованном виде в файле sam._ и может быть распакована командой expand sam._ sam. Поскольку права доступа к файлам и каталогам в Windows NT еще не рассматривались, отмечу только, что этот файл доступен для чтения всем (встроенной группе Everyone). Кроме того, копия базы данных SAM обязательно хранится на Emergency Repair Disk, а также может содержаться в резервной копии системы. Программа samdump позволяет извлечь из файла SAM данные.

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

Windows NT позволяет использовать пароль длиной до 14 символов, состоящий из букв, цифр, знаков препинания и пробела. Пароли в Windows NT, как и пользовательские имена, различают регистр (за исключением случаев, подробно описанных ниже). В реестре хранится два значения (односторонних функции), получаемые из пароля, называемые LAN Manager compatible password hash и Windows NT password hash. LAN Manager Compatible password используется для совместимости с предыдущими версиями операционных систем Microsoft и является менее криптографически стойким, чем Windows NT password hash.

LAN Manager compatible password hash получается из пароля, введенного пользователем, следующим образом:

Windows NT password hash получается следующим образом:

Таким образом, Windows NT позволяет использовать в пароле буквы русского алфавита.

Алгоритм DES, так же как и алгоритм MD4, в том виде, в каком он используется в Windows NT, является односторонней функцией, которая не позволяет по зашифрованному тексту получить открытый текст. В то же время, существует подход, позволяющий при наличии зашифрованного пароля, в некоторых случаях получить его открытый текст перебором за обозримый промежуток времени.

Алгоритм, используемый Windows NT для получения LAN Manager password hash, предлагает несколько подходов к значительному сокращению перебора. Во-первых, поскольку пароли конвертируются в верхний регистр, это значительно сокращает пространство возможных паролей. Во-вторых, поскольку пароль разделяется на две 7-байтные части, каждая из которых шифруется отдельно, нет необходимости перебирать N в 14 степени комбинаций, а достаточно 2 раза по N в 7 степени. В частности, можно сразу же выделить пароли длиной до 7 символов, так как вторая половина LAN Manager password hash для них представляет собой известное постоянное значение. Существуют общедоступные утилиты для взлома паролей, реализующие эти методы, например l0phtcrack [4.2.8].

Для предотвращения вышеописанной атаки можно использовать программу syskey, входящую в Service Pack 3 [4.2.2] . Эта программа позволяет наложить на базу данных SAM дополнительный уровень шифрования, с ключом, в скрытом виде хранящемся в системе, хранящемся на дискете, или получаемом из пароля, заданного администратором. Эта методика позволяет значительно повысить защищенность базы данных SAM от раскрытия, в частности от раскрытия паролей.

1.2.2. Процесс входа в систему и аутентификации

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

В Windows NT введена структура, называемая доменом. Смысл ее состоит в том, что группа машин (и пользователей) имеет общую базу данных SAM. Главная копия этой базы данных хранится на машине, называемой главным контроллером домена (primary domain controller - PDC). В домене также могут быть машины, хранящие резервные копии базы данных SAM, называемые резервными контроллерами домена (backup domain controller - BDC). Все остальные машины в домене - серверы или рабочие станции - для аутентификации пользователей обращаются к главному или одному из резервных контроллеров домена.

В сети Windows NT может одновременно быть несколько доменов, связанных между собой "доверительными отношениями". То что домен А доверяет домену Б, означает, что если пользователь, чья пользовательская учетная запись находится в базе данных домена Б, обращается к ресурсам машины, входящей в домен А, она пересылает предоставленные пользователем имя и пароль в домен Б и доверяет их проверку домену Б.

Итак, прежде чем пользователь может произвести какие-нибудь действия в системе Windows NT, он должен сообщить системе свое пользовательское имя и пароль. Процесс входа в систему (logon) может быть интерактивным и удаленным. При интерактивном входе происходит следующее:

Когда пользователь интерактивно входит в систему, Windows NT создает security access token. Он включает SID пользователя, SID групп, к которым принадлежит пользователь и другую информацию, такую как имя пользователя и названия групп. Каждый процесс, который выполняется от имени пользователя, получает копию access token. Windows NT использует SID когда пользователь пытается получить доступ к объекту. SID ищется в списке прав доступа, назначенным объекту, чтобы определить, имеет ли пользователь необходимые права доступа к объекту.

Сетевой вход в систему происходит в случае, когда пользователь, уже вошедший в систему интерактивно, устанавливает сетевое соединение с другим компьютером. В этом случае, удаленному компьютеру передаются имя и пароль (опять же в зашифрованном виде). Удаленный компьютер проверяет предоставленные имя и пароль по своей базе данных SAM или передает контроллеру соответствующего домена. На удаленном компьютере после этого создается security access token, как и в случае интерактивного входа в систему, который и используется в дальнейшем для определения прав доступа пользователя к объектам. Подробно этот процесс удаленного входа рассмотрен в разделе 1.4.5.

1.2.3 Методы управления пользовательскими учетными записями.

Windows NT позволяет администратору управлять различными аспектами процесса входа пользователей в систему. В частности, возможно:

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

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

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

В Windows NT Resource Kit имеется утилита passprop, позволяющая включить блокировку для Администратора. При этом, если учетная запись Администратора будет заблокирована, он все же может войти в систему с консоли главного контроллера домена (PDC).

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

Следует также отметить существование гостевой учетной записи (Guest Account), по умолчанию отключенной в Windows NT Server и включенного в Windows NT Workstation. Эта учетная запись по умолчанию не имеет пароля и может представлять угрозу безопасности системы в случае использования его злоумышленником. Несмотря на то, что предположительно эта учетная запись должа иметь минимальные полномочия в системе, она имеет доступ по чтению и записи ко многим системным областям, как будет описано в разделе "Файловая система"

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

1.2.4. Методы получения имен пользователей удаленной машины

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

Первый способ можно использовать, если на целевой машине запущен сервис SNMP . В таком случае запрос к объекту .1.3.6.1.4.1.77.1.2.25 (.iso.org.dod.internet.private.enterprises.lanmanager.lanmgr-2.server.svUserTable) даст полный список пользовательских имен. Например, это можно сделать таким образом: snmputil walk hostname public .1.3.6.1.4.1.77.1.2.25 snmputil - утилита из комплекта Windows NT Resource Kit для обращения к базам данных SNMP. В указанном виде запрос сработает, если на целевой машине имя сообщества SNMP (community name) установлено в значение public. Этот способ предложен Christopher J. Rouland в списке рассылки ntsecurity@iss.net [4.1.2]

Второй способ , предложенный Mnemonix‘ом [4.2.16] , и реализованный в утилите sophie позволяет получить список имен пользователей сканированием пространства номеров SID. Windows NT позволяет удаленному анонимному пользователю получать SID по заданному имени пользователя и имя пользователя по заданному SID. Получив SID известного пользователя или группы (например Domain Admins), можно узнать постоянный префикс, содержащийся во всех SID данной системы, а затем проверять последовательно все SID с данным префиксом начиная с SID <префикс>-1000, что позволит получить все или часть имен пользовательских учетных записей. Можно также получить имя учетной записи Administrator, например если она была переименована, поскольку он имеет стандартный SID - <префикс>-500.

Третий широко известный способ позволяет получить имя пользователя, вошедшего в систему с данной машины. Для этого используется стандартная утилита nbtstat, которая позволяет получить список имен NetBIOS, зарегистрированных удаленной машиной, в частности имена, зарегистрированные Messenger Service (с кодом 03), одно из которых обычно является именем активного пользователя.

1.3. Файловая система Windows NT.

Windows NT 4.0 поддерживает две файловые системы - FAT, унаследованную от MS-DOS, и собственную файловую систему - NTFS. NTFS поддерживает различные методы управления доступом, в частности, списки управления доступом (ACL -Access Control Lists) и возможность аудита (протоколирования) доступа к объектам файловой системы.

Возможные права доступа к объектам зависят от типа объекта. Права доступа будут иметь разное значение для директории и для файла. Список управления доступом (ACL) содержит записи управления доступом (Access Control Entries - ACE). Каждая запись управления доступом содержит права доступа одного пользователя или группы. Если для пользователя или группы нет записи управления доступом к данному объекту, то пользователь или группа не имеет доступа к объекту.

Может ли пользователь выполнить определенное действие над объектом, определяется следующим образом: если для пользователя имеется ACE, в котором данное действие разрешено, то да; если для хотя бы одной из групп, к которым принадлежит пользователь, имеется ACE, в котором данное действие разрешено, то да. Таким образом, эффективные права доступа пользователя определяются как объединение прав, заданных для самого пользователя, и групп, к которым он принадлежит. Исключением из этого правила является право No access. Если для самого пользователя или хотя бы для одной группы, к которой он принадлежит, задано право No Access, то пользователь не будет иметь доступа к объекту.

Для директорий в Windows NT определены следующие права доступа:

Таблица 1.1
Право доступаКомментарий
Read (R)разрешает просмотр списка файлов и поддиректорий
Write (W)создание файлов и поддиректорий
Execute (X)разрешает переход к поддиректориям
Delete (D)разрешает удаление директории
Change Permissions (P)разрешает изменение прав доступа к директории
Take Ownership (O)разрешает взятие директории во владение

Кроме того, для простоты управления определены следующие подмножества прав доступа:

Таблица 1.2
Название Права доступа к директории Права доступа к файлам в директории Комментарий
No Access(None)(None) полный запрет доступа к директории и файлам в ней
List(RX)(Not Specified) разрешает просмотр списка файлов и поддиректорий и переход к поддиректориям
Read(RX)(RX) разрешает просмотр списка файлов и поддиректорий, переход к поддиректориям и просмотр и выполнение файлов
Add(WX)(Not Specified) разрешает создание файлов и поддиректорий
Add & Read(RWX)(RX) разрешает просмотр списка файлов и поддиректорий, переход к поддиректориям, просмотр и выполнение файлов и создание файлов и поддиректорий
Change(RWXD)(RWXD) разрешает просмотр списка файлов и поддиректорий, переход к поддиректориям, просмотр и выполнение файлов, создание файлов и поддиректорий, изменение файлов и удаление самой директории, файлов и поддиректорий
Full Control(All)(All) все права доступа, включая неявное право File Delete Child1
1 FDC - File Delete Child позволяет удалять из директории файлы, даже если на файл нет права Delete.

Для файлов:

Таблица 1.3
Право доступа Комментарий
Read (R)Разрешает чтение файла
Write (W)Разрешает изменение файла
Execute (E)Разрешает выполнение файла, если это программа
Delete (D)Разрешает удаление файла
Change Permissions (P)Разрешает изменение прав доступа
Take Ownership (o)Разрешает перехват владения

Предопределенные подмножества

Таблица 1.4
Название Права доступа Комментарий
No access(None)Запрет доступа к файлу
ReadRXЧтение и исполнение
ChangeRWXDЧтение, исполнение, изменение и удаление
Full ControlAllЧтение, исполнение, изменение, удаление, изменение прав доступа и перехват владения

В Windows NT принята модель безопасности, при которой владелец объекта полностью управляет доступом к объекту. Это значит, что любому пользователю, в том числе и администратору, доступ к объекту может быть запрещен или ограничен. Встроенная группа Administrators в исходной конфигурации имеет общесистемное право (user right) перехватывать владение объектами (Take ownership of the objects). Владение объектом также может перехватить пользователь, которому дано право брать во владение (Take Ownership) для данного объекта. Владение объектом можно только взять, и нельзя отдать. Владелец объекта всегда имеет неявное право изменения прав доступа к объекту.

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

Следует заметить, что файловая система NTFS не шифрует данные на диске, поэтому они могут читаться в обход операционной системы и, следовательно, в обход установленных прав доступа. Существует драйвер файловой системы NTFS для MS-DOS и Linux. Таким образом, при наличии физического доступа к компьютеру и возможности его перезагрузить в другой операционной системе (DOS или Linux), злоумышленник получит доступ ко всем данным на диске безо всякой аутентификации и проверки полномочий.

Файловая система NTFS позволяет протоколировать доступ к объектам (auditing). Протоколирование устанавливается для конкретного объекта (файла или каталога), конкретного пользователя или группы и конкретного действия. При выполнении пользователем указанного действия над объектом в Security Event Log добавляется запись, содержащая дату, время, имя пользователя, имя рабочей станции, и описание события.

Windows NT в исходной конфигурации имеет довольно свободные установки прав пользователей. В частности:

Перечисленные установки дают широкий простор злоумышленнику для установки в систему "троянских коней" и несанкционированного доступа к данным (таким как база данных SAM или временные файлы в каталоге TEMP).

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

1.4. Сетевые службы Windows NT

1.4.1. Сетевые протоколы

Взаимодействие систем в сети определяется набором правил, называемым протоколом. Обычно используется не один, а несколько протоколов, взаимодействующих между собой по заранее определенным правилам, называемым интерфейсом между протоколами. При этом набор протоколов образует иерархическую структуру, называемую стеком. В стеке нижележащие протоколы предоставляют услуги передачи данных вышележащим протоколам. Международная организация по стандартизации предложила ссылочную модель для описания стеков протоколов. Эта модель называется модель взаимодействия открытых систем (OSI). Модель состоит из семи уровней. Ниже следует описание этих уровней от нижних к верхним.

Физический уровень. Этот уровень имеет дело с передачей битов по физическим каналам, таким, например, как коаксиальный кабель, витая пара или оптоволоконный кабель. К этому уровню имеют отношение характеристики физических сред передачи данных, такие, как полоса пропускания, помехозащищенность, волновое сопротивление и другие. На этом же уровне определяются характеристики электрических сигналов, такие как требования к фронтам импульсов, уровням напряжения или тока передаваемого сигнала, тип кодирования, скорость передачи сигналов. Кроме этого, здесь стандартизуются типы разъемов и назначение каждого контакта. Этот уровень предоставляет вышележащему уровню услуги по передаче неструктурированного потока битов. Примером протокола физического уровня может служить спецификация 10Base-T технологии Ethernet, которая определяет в качестве используемого кабеля неэкранированную витую пару категории 3 с волновым сопротивлением 100 Ом, разъем RJ-45, максимальную длину физического сегмента 100 метров, манчестерский код для представления данных на кабеле, и другие характеристики среды и электрических сигналов.

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

Сетевой уровень. Протокол канального уровня обеспечивает доставку данных между любыми узлами только в локальной сети, то есть в одной сети с общей средой передачи. Передачей данных между различными сетями занимается сетевой уровень. Сети соединяются между собой специальными устройствами, называемыми маршрутизаторами. Маршрутизатор - это устройство, которое собирает информацию о топологии межсетевых соединений и на ее основании пересылает пакеты сетевого уровня в сеть назначения. Для того, чтобы передать сообщение от отправителя, находящегося в одной сети, получателю, находящемуся в другой сети, нужно совершить некоторое количество транзитных передач (hops) между сетями, каждый раз выбирая подходящий маршрут. Таким образом, маршрут представляет собой последовательность маршрутизаторов, через которые проходит пакет. Проблема выбора наилучшего пути называется маршрутизацией, и ее решение является главной задачей сетевого уровня. Таким образом сетевой уровень обеспечивает передачу данных между узлами через межсетевые соединения. Набор сетей, соединенных маршрутизаторами и использующих IP в качестве протокола сетевого уровня называется интерсетью (internet - с маленькой буквы). Примерами протоколов сетевого уровня являются протокол межсетевого взаимодействия IP стека TCP/IP и протокол межсетевого обмена пакетами IPX стека Novell.

Транспортный уровень. На пути от отправителя к получателю пакеты могут быть искажены или утеряны. Хотя некоторые приложения имеют собственные средства обработки ошибок, существуют и такие, которые предпочитают сразу иметь дело с надежным соединением. Работа транспортного уровня заключается в том, чтобы обеспечить приложениям или верхним уровням стека - прикладному и сеансовому - передачу данных с той степенью надежности, которая им требуется. Модель OSI определяет пять классов сервиса, предоставляемых транспортным уровнем. Эти виды сервиса отличаются качеством предоставляемых услуг: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное - способностью к обнаружению и исправлению ошибок передачи, таких как искажение, потеря и дублирование пакетов. В качестве примера транспортных протоколов можно привести протоколы TCP и UDP стека TCP/IP и протокол SPX стека Novell.

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

Уровень представления. Этот уровень обеспечивает гарантию того, что информация, передаваемая прикладным уровнем, будет понятна прикладному уровню в другой системе. В случаях необходимости уровень представления выполняет преобразование форматов данных в некоторый общий формат представления, а на приеме, соответственно, выполняет обратное преобразование. Таким образом прикладные уровни могут преодолеть, например, синтаксические различия в представлении данных. На этом уровне может выполняться шифрование и дешифрование данных, благодаря которому секретность обмена данными обеспечивается сразу для всех прикладных сервисов. Примером такого протокола является протокол Secure Socket Layer (SSL), который обеспечивает секретный обмен сообщениями для протоколов прикладного уровня стека TCP/IP.

Прикладной уровень. Прикладной уровень - верхний уровень иерархии определяет правила взаимодействия приложений между собой. Примерами протоколов прикладного уровня являются SMTP - протокол передачи электронной почты в сетях TCP/IP, HTTP - протокол передачи гипертекста, используемый в world wide web для передачи web-страниц.

Windows NT использует для передачи данных стек протоколов TCP/IP, собственную реализацию протоколов IPX/SPX, используемых в Novell Netware, а также различные протоколы верхних уровней. В данном рассмотрении нас будет интересовать реализация протоколов TCP/IP и прикладных протоколов, использующих TCP/IP в качестве транспорта, в частности протокола Server Message Block (SMB), используемого для сетевой передачи файлов и печати.

1.4.2. Общая архитектура сетевых служб Windows NT

На рисунке 1.1 изображена сетевая архитектура Windows NT в соответствии с моделью OSI [4.3.1]. Рисунок иллюстрирует взаимодействие различных сетевых протоколов, используемых в Windows NT

Рисунок 1.1 [4.3.1] Сетевые протоколы windows nt в соответствии с моделью iso/osi

Ниже будут рассмотрены некоторые уровни изображенной модели в аспекте вопросов информационной безопасности

1.4.3. Реализация стека протоколов TCP/IP в Windows NT

Отмечу основные проблемы TCP/IP, связанные с безопасностью. Более подробно эти и другие вопросы рассматриваются в [4.3.9]

  1. IP не позволяет аутентифицировать отправителя пакета. Адрес отправителя в пакете может быть подделан (IP spoofing) и нет возможности проверить действительно ли пакет происходит из заявленного источника.
  2. Пакет на своем пути от отправителя к получателю может пройти несколько промежуточных точек в которых может быть прочитан, изменен или потерян. TCP гарантирует доставку пакетов, то есть при неполучении пакета получателем он будет передаваться снова, до тех пор, пока не будет корректно передан, либо не истечет число попыток повторной передачи. Однако, это не защищает от прочтения и изменения пакета по пути его следования.

Рамки данной работы не позволяют детально остановиться на особенностях реализации стека протоколов TCP/IP в Windows NT. Отмечу лишь основные моменты, влияющие на информационную безопасность Windows NT.

Дли идентификации приложения или сервиса, к которому происходит обращение по сети в протоколах TCP и UDP используется понятие порта. Порт - это логическая точка доступа к сетевому сервису. Идентификатором порта служит его номер - двухбайтное целое без знака. Когда приложение на одной системе обращается к приложению на другой системе по сети, оно указывает адрес получателя и номер порта. Система-получатель по номеру порта определяет, какому приложению адресован пакет, и передает его соответствующему приложению. Приложения-серверы (то есть те, которые ожидают запроса от клиента), как правило, используют фиксированные номера портов, заранее известные приложениям-клиентам. Приложение-клиент обычно выбирает произвольный порт для взаимодействия с сервером. Таким образом, всякое соединение идентифицируется четверкой: IP-адрес отправителя, порт отправителя, IP-адрес получателя, порт получателя. Номера портов фиксируются за различными сервисами (приложениями) IANA - Internet Assigned Number Authority. Например, www-серверы, как правило, используют порт 80, ftp серверы - порт 21 и 22 и т.д. Во многих системах есть понятие привилегированных портов. Порты от 1 до 1023 считаются привилегированными и использовать их могут только приложения, исполняемые от имени superuser‘а - root. Эти порты используют наиболее важные системные службы. В Windows NT нет разделения TCP и UDP портов на привилегированные (до 1023) и непривилегированные. Пользовательский процесс может открывать порты, используемые системными службами и перехватывать сетевой ввод- вывод системных процессов. Для этого может быть использована, например, программа netcat.

Windows NT не может протоколировать устанавливаемые TCP-соединения и получаемые UDP- дэйтаграммы. Это препятствует, например, определению источника атаки по сети.

В Windows NT имеются зачаточные возможности фильтрации TCP и UDP пакетов по адресу и номеру порта. Однако, Windows NT не позволяет осуществлять фильтрацию пакетов по другим критериям, таким как входящий и/или исходящий интерфейс, установленный флаги, а также не позволяет фильтровать ICMP-пакеты.

Несколько просчетов в реализации, типа переполнения буферов, приводят к возможности различных атак типа "Отказ" в обслуживании, описанных в части 3.

1.4.4. Протокол NetBIOS

Протокол NetBIOS определяет интерфейс прикладного программирования для обращения к функциям сетевого ввода-вывода и набор сетевых служб, включающих сессии (установление соединения), дейтаграмную службу, широковещательную и групповую передачу. NetBIOS в качестве транспорта может использовать NetBEUI, TCP/IP или IPX/SPX. В контексте рассмотрения Windows NT в сети Интернет наиболее интересным является протокол NetBIOS над TCP/IP (NBT). Протокол NBT (NetBIOS over TCP/IP) определен в RFC 1001 и 1002. Служба сессий NetBIOS используется протоколом SMB (Server Message Block - протокол сетевого разделения файлов Microsoft). Служба имен NetBIOS используется многими сетевыми приложениями, в том числе службой сервера (Server Service), Browser Service, Messenger Service и проч.

Служба имен NetBIOS

Каждый ресурс NetBIOS определяется именем. Приложение, предоставляющее ресурс, регистрирует одно или несколько имен, которые оно желает использовать. Имя NetBIOS имеет длину 16 байт. Последний байт зарезервирован и содержит код службы, и использующей данное имя. Например служба сервера имеет код 00, служба сообщений (Messenger Service) имеет код 03 и т.п. Имена могут регистрироваться широковещательным объявлением их по локальной сети или на сервере имен NetBIOS (в случае Windows NT это сервер WINS). Служба имен NetBIOS использует порт 137 UDP. Для преобразования имен NetBIOS в IP-адреса используется локальный широковещательный запрос или обращение к серверу имен. Служба имен NetBIOS имеет функцию, позволяющую получить весьма существенную с точки зрения безопасности информацию о системе без аутентификации. На пакет NODE STATUS QUERY система, получившая пакет, отвечает списком локальных имен NetBIOS, который может содержать в частности, имя сервера, имя домена и/или рабочей группы, к которой принадлежит сервер, имя пользователя, работающего за консолью, имя пользовательской учетной записи, используемого Internet Information Server, если он работает на сервере.

Служба сессий NetBIOS.

Служба сессий NetBIOS предоставляет сервис установления, поддержания, разрыва соединения и передачи данных по соединению между двумя конечными точками. Точки идентифицируются именами NetBIOS. Между двумя точками может быть установлено несколько сессий NetBIOS, которые идентифицируются Transaction ID - уникальной для данных двух конечных точек целочисленной константой, передаваемой в каждом пакете, относящемся к данной сессии. Службу сессий NetBIOS использует, как транспорт, протокол SMB.

1.4.5. Служба доступа к файлам и печати. Протокол SMB. CIFS. Сетевая аутентификация.

Рассмотрим более подробно процесс удаленного входа в систему. Для аутентификации, установления соединения и передачи файлов используется протокол SMB (server message block). Процесс установления соединения происходит следующим образом:

Существуют следующие диалекты SMB (от наиболее старого к наиболее современному)

PC NETWORK PROGRAM 1.0 использует аутентификацию с паролем, передаваемым открытым текстом. Последующие диалекты используют challenge-responce, а NT LM 0.12 может использовать более сложные алгоритмы аутентификации.

В случае использования алгоритма challenge-responce происходит следующее:

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

  1. некоторые действия не требуют аутентификации, то есть могут проводиться анонимно (нуль- сессии). К ним относятся, в частности, получение у сервера списка разделяемых по сети ресурсов и даже редактирование системного реестра. Если к разделяемому ресурсу разрешен доступ группе Everyone, то к нему можно обратиться с пустым именем и паролем. Этот факт был продемонстрирован в программе RedButton и подтвержден Microsoft [4.2.1 - Q143474]. Можно явным образом запретить такие действия анонимного пользователя, как описано в [4.2.1 - Q143474].
  2. при установлении соединения по протоколу NetBIOS сервер никаким образом не проверяет имя, переданное ему клиентом и не протоколирует установленное соединение до тех пор, пока не произойдет установление SMB-сессии. В любом случае сервер протоколирует только имя, сообщенное ему клиентом, а не IP-адрес. Это может быть использовано, например, для обхода установленного ограничения на станции, с которых может обращаться к серверу данный пользователь. Кроме того, это позволяет эффективно "заметать следы" несанкционированного доступа.
  3. клиент определяет используемый диалект протокола (сообщая, какие протоколы он поддерживает), а также решает, использовать или не использовать шифрование. Это означает, что сервер не может потребовать шифрования или отказаться от соединения, не использующего шифрование. Потенциальный взломщик может использовать этот момент для того чтобы, например, сэкономить время на шифровании паролей, в процессе подбора пароля.
  4. при установлении соединения Windows NT (так же как Windows 95, Windows for Workgroups и проч.) по умолчанию посылает имя и пароль, под которым пользователь зашел в систему. Можно предложить простейший способ использования этого свойства для "коллекционирования" чужих паролей: поместить на web-странице ссылку вида <IMG SRC="file:////smb_server/sharename/somepicture.gif">, где smb_server - специально сконфигурированный сервер, перехватывающий пароли. Таким образом можно получить passsword hash, который потом можно попытаться взломать/расшифровать. Эта методика реализована Аароном Спанглером в [4.2.18] .
  5. передаваемый сервером challenge и ответ клиента можно перехватить (сетевым анализатором, например) и попытаться взломать подбором. Это умеет делать, например l0phtcrack.
  6. описанная схема чувствительна к различным атакам класса Man in the Middle, типа перехвата сессии. Рассмотрим, например, такой сценарий: Злоумышленник посылает серверу запрос на установление соединения. Сервер отвечает посылкой challenge. Злоумышленник ждет запроса на установление соединения от легального пользователя и в ответ посылает ему challenge, полученный от сервера. Легальный пользователь шифрует полученный challenge, используя в качестве ключа свой пароль. Злоумышленник перехватывает пакет и пересылает его серверу уже от себя. (http://www.ntsecurity.net/security/CIFS-MiM.htm - Dominique Brezinski). Возможен также перехват сессии с подделкой номера последовательности на уровне TCP/IP и значений UID и MID.

Для борьбы с атаками, использующими криптографическую слабость LM password hash, Microsoft выпустил hot-fix (lm-fix), который, однако, сейчас недоступен в связи с обнаруженными в нем ошибками. Вероятно, он войдет в Service Pack 4. Однако этот метод не сработает в смешанной сети, включающей в себя например клиентов Windows 95 или Windows for Workgroups, поскольку они могут использовать только схему шифрования паролей LAN Manager.

Весьма серьезной угрозой является возможность "подслушивания" паролей в сети. Существует общедоступная утилита для Windows NT, позволяющая выделять из сетевого трафика пароли (readsmb.exe - входит в комплект l0phtcrack 2.02). Также существуют утилиты для UNIX (tcpdump), позволяющие "слушать" трафик в сети и, вероятно, не составит большого труда написать фильтр, выделяющий из всего трафика сообщения SMB, включающие пароли.

Весьма опасна, на мой взгляд, атака, описанная в пункте 4. Она совершенно незаметна для пользователя и может быть весьма эффективно и просто использована для нарушения безопасности системы. Для защиты, во-первых, необходимо использовать межсетевые экраны, не пропускающие SMB-трафик между корпоративной сетью и Интернет, и, во-вторых, контролировать внутренние web-сервера.

Атаки вида Man in the Middle, а также возможности перехвата и расшифровки паролей наводят на мысль, что безопасное использование Windows NT в сетях, небезопасных на транспортном уровне, таких как Интернет, требует использования дополнительного уровня защиты на транспортном уровне, как например VPN (VPN - virtual private network - создание криптографически защищенного канала внутри общедоступной сети передачи данных).

Замечу, наконец, что передача данных по протоколу SMB происходит в незашифрованном виде и также доступна для подслушивания или перехвата.

1.4.6. SNMP

В Windows NT реализована поддержка протокола SNMP (Simple Network Management Protocol). Сам по себе протокол SNMP не содержит механизмов защиты информации. Для получения ответа на запрос у SNMP системы нужно знать IP-адрес системы и имя сообщества (community name). Имя сообщества является своеобразным паролем, но не имеет никаких механизмов защиты от подбора паролей и по умолчанию устанавливается в значение public.

База данных MIB II для Windows NT содержит много информации, которая может оказаться полезной взломщику и использована для нарушения безопасности. В нижеследующей таблице содержится перечисление объектов MIB такого рода [4.3.1]. В таблице указаны последние цифры идентификатора объекта, следующие после .1.3.6.1.4.1.77.1 и последние поля названия объекта, следующие после .iso.org.dod.internet.private.enterprises.lanmanager.lanmgr-2

Таблица 1.5
MIB object identifier Название объекта Описание Тип доступа
.1.1common.comVersionMagСтаршая цифра номера версии ПОчтение
.1.2common.comVersionMinМладшая цифра номера версии ПОчтение
.2.3server.SvSvcTableТаблица сервисов, запущенных на сервере. Включает название сервиса и состояние. чтение
.2.10server.svStatPwErrorsЧисло парольных нарушений, произошедших на сервере чтение
.2.15server.svSecurityModeИспользуемый тип разграничения доступа - на уровне пользователей или на уровне ресурсов.чтение
.2.20server.svSessionTableСписок сессий, установленных клиентами с данным сервером (содержит имена пользователей, клиентских компьютеров, состояние сессии и др.)чтение ко всем полям кроме svSesStat (чтение-запись)
.2.25server.svUserTableСписок активных пользовательских учетных записей на сервере.чтение
.2.27server.svShareTableСписок разделяемых ресурсов на сервере с указанием локальных путейчтение
.4.1domain.domPrimaryИмя домена, к которому принадлежит серверчтение


Предыдущая глава | Содержание | Следующая глава
Используются технологии uCoz