Обвальный рост уязвимостей в ОС Windows NT
В докладе рассматривается положение дел с безопасностью в самой передовой
ОС фирмы 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 или удалить его из данной группы. Теоретически возможны
и другие нарушения безопасности системы.
Ё