В докладе рассматривается положение дел с безопасностью в самой передовой ОС фирмы Microsoft - Windows NT 4.0,
недавно выпущенной на рынок. Тот факт, что она может использоваться не
только как клиентская, но и сетевая ОС (в т.ч. и в глобальных сетях) в
сочетании с ее молодостью, отсутствием исходных текстов и претензией на
защищенность, вызвал повышенный интерес к ней со стороны хакеров. Этот
интерес усугубляется тем, что сертификация Windows NT в соответствии с
классом C2 носила довольно формальный характер. При этом можно отметить
не только явное несоответствие некоторых требований к системе класса С2
с истинной реализацией данной ОС, но и то, что спроектированная как
сетевая ОС, она оценивалась в соответствии с требованиями к локальным
системам. Также вызывает удивление тот факт, что оценка системы
проводилась в конфигурации без дисковода. (Условия эксплуатации без
сетевой карты и дисковода по крайней мере снизили бы коммерческий успех
данной ОС, и, естественно, она так никогда не используется). Эти причины и приводят к росту уязвимостей Windows NT, который в 1997 году можно назвать обвальным. Предметом настоящего доклада являются уязвимости, приводящие к несанкционированному доступу к защищенной информации в Windows NT и не рассматриваются многочисленные уязвимости, приводящие к отказу в обслуживании,
хотя их наличие ставит под сомнение претензии фирмы Microsoft на роль
Windows NT как сервера масштаба предприятия. Можно отметить, что отказ
в обслуживании может быть вызван как локальным пользователем системы,
так и незарегистрированным удаленным (иначе говоря, с любого
компьютера, подключенного к Internet). Также авторы не рассматривают
уязвимости, связанные с вирусами и уязвимости, вызванные некорректным
функционированием приложений, "чемпионом" по ошибкам из которых
является Internet Explorer фирмы Microsoft. Рассмотрение уязвимостей ОС Windows NT по аналогии с UNIX-системами начнем с уязвимостей парольной системы. Информация о всех пользователях Windows NT и их паролях хранится в базе данных системы (registry), а физически расположена в файле %SystemRoot%\SYSTEM32\CONFIG\SAM
- базе данных безопасности системы. Данный файл является по умолчанию
читаемым, но "запертым", т.к. используется прочими компонентами
системы. Копия данного файла содержится в директории %SystemRoot%\REPAIR\ после создания администратором восстановительного (repair)
диска и легко может быть скопирована оттуда. После инсталляции ОС база
данных безопасности системы содержит только пользователей Administrator и Guest. Однако
сами пароли в открытом виде, естественно, не содержатся в данном файле.
Пароль пользователя (в кодировке UNICODE) с использованием
хэш-алгоритма MD4 превращается в 16-байтное значение, которое и
находится в файле SAM. Таким образом, для того, чтобы сломать
пароль в Windows NT, злоумышленнику необходимо выделить из базы данных
безопасности системы имя пользователя и соответствующее ему
хэш-значение. Данная процедура может быть выполнена с использованием
программы PWDUMP, разработанной Jeremy Allison и
свободно распространяемой. Использование данной программы требует
привилегий Administrator (для того, чтобы иметь доступ по чтению к
соответствующим значениям registry), но она может использоваться в том
случае, если с атакуемой системы удалось получить копию базы данных
безопасности системы. После выделения паролей и соответствующих
им хэш-значений может быть использована одна из многих программ взлома
пароля методом перебора или атаки по словарю - скорость перебора
составляет примерно 2500 паролей/сек на компьютере класса Pentium. При
этом, в отличие от UNIX, в Windows NT отсутствует понятие salt,
вследствие чего словарь может быть предварительно схэширован и скорость
тем самым может быть поднята на несколько порядков. В Service Pack 3
хэш-значения зашифрованы алгоритмом DES, причем ключом является значение, легко выводимое из атрибута пользователя RID. Как
было отмечено в начале, Windows NT оценивалась в конфигурации "без
дисковода". Существуют нарушения безопасности системы, связанные с
получением злоумышленником доступа к консоли, если дисковод все же
есть. Может быть получен доступ к любым файлам в системе при загрузке с
дискеты ОС MS DOS, если используется файловая система VFAT. При использовании же файловой системы NTFS возможен беспрепятственный доступ по чтению с помощью утилиты NTFSDOS. Аналогично, загрузка с дискеты ОС Linux с последующим монтированием раздела NTFS обеспечивает доступ к нему по чтению и записи. Как
также было отмечено, ОС Windows NT сертифицировалась в конфигурации не
только без дисковода, но и в отсутствии сетевого окружения. При этом
использование ее как ОС, подключенной к сетям TCP/IP автоматически
приводит к успеху типовых удаленных атак, распространенных в этих
сетях: подмену IP-адреса (IP spoofing), внедрение ложных объектов через протоколы ARP, DNS и ICMP, предсказание TCP-идентификатора (TCP number prediction) и т.п. Более
того, Windows NT оказалась не только не лучше отражающей эти атаки, чем
UNIX, а даже хуже - в частности, она подвержена атаке, связанной с
IP-фрагментацией. Эта атака предназначена для проникновения через
файрвол (firewall), путем разбиения IP-пакета на пакеты меньшей
длины и последующим его восстановлением на атакуемом хосте. Из-за
ошибки в ОС, которая не отслеживает накладывающиеся друг на друга
фрагменты, может быть получен такой пакет, который иначе был бы не
пропущен файрволом. Существуют также удаленные атаки, специфичные только для Windows NT. В результате атаки, называемой Red Button,
база данных registry становится доступной для незарегистрированного
пользователя. При этом может быть получен список пользователей системы
и список разделяемых объектов системы. Это происходит из-за того, что в
системе имеется встроенный пользователь anonymous, обычно используемый при связи между двумя машинами. Данный пользователь является членом группы Everyone. Следовательно: - любой, разделяемый группой Everyone объект является уязвимостью;
- файл аудита системы и приложений может быть прочитан;
- все элементы базы данных системы, к которым Everyone имеет соответствующий доступ, могут быть записаны и прочитаны;
- с использованием Lan Manager может быть получен список всех пользователей и разделяемых объектов.
Если группа Everyone имеет доступ к приложениям, в систему может быть встроен троянский конь. Если
все рассмотренные выше уязвимости системы были связаны с ошибками в
проектировании, то далее мы рассмотрим уязвимость, связанную с ошибкой
в реализации системы. Данная уязвимость приводит к возможности атаки,
называемой GetAdmin. Уязвимым является системный сервис NtAddAtom, не проверяющий параметры, переданные ему, и устанавливающий бит 0 по адресу NtGlobalFlag+2. Для этого необходимо открыть файл ntoskrnl.exe и найти точку входа в NtAddAtom. Установка данного бита отключается проверка привилегий отладчика в NtOpenProcess и NtOpenThread.
Таким образом, любой пользователь имеет право открыть любой процесс в
системе. Атака открывает процесс Winlogon и встраивает dll к нему. Так
как данный сервис имеет привилегии SYSTEM, он может добавить
пользователя к группе Administrator или удалить его из данной группы.
Теоретически возможны и другие нарушения безопасности системы.
|