Расширение привилегий

Если взломщик смог добраться до учетной записи пользователя в системе Windows 2000, то следующим его желанием станет получение исключительных привилегий — прав администратора. К счастью, операционная система Win 2000 является более устойчивой, чем ее предшественницы в смысле противостояния таким попыткам (по крайней мере угрозы типа getadmin и sechole ей теперь не страшны). Но к сожалению, если взломщик смог получить данные интерактивной учетной записи, то предотвратить возможность расширения его привилегий очень сложно (интерактивные учетные записи получили гораздо более широкое распространение с появлением терминального сервера Windows 2000, применяемого в целях удаленного управления и распределенной обработки данных).

Использование именованных конвейеров для запуска программ с системными привилегиями


Атака, обеспечивающая расширение привилегий на основе прогнозирования создания именованного канала при инициализации системных служб Windows 2000 (таких как Server, Workstation, Alerter и ClipBook, связанных с учетной записью SYSTEM), была разработана Майком Шифманом (Mike Schiffman) и отправлена в бюллетень Bugtraq (ID 1535). Перед запуском каждой службы на сервере создается именованный канал с прогнозируемой последовательностью имен. Эту последовательность можно получить из параметра системного реестра HKLM\System\CurrentControlSet\Control\ ServiceCurrent.
Любой интерактивный пользователь Win 2000 (включая удаленных пользователей терминального сервера) может спрогнозировать имя канала, инсталлировать его и таким образом запустить программу с системными привилегиями. Если к этому именованному каналу добавить посторонний код, то он тоже получит системные привилегии и сможет выполнить практически любые действия в локальной системе (например, добавить текущего пользователя в группу администраторов).
Тестовый код, написанный хакером Мачо (Масео), несколько менее эффективен: он находит пользователя с относительным идентификатором RID 500 (более подробная информация об идентификаторах RID содержится в главе 5), т.е. учетную запись администратора независимо от того, была ли она переименована, и выводит на экран его пароль в зашифрованном виде. Так работает приведенная ниже программа взлома main. Однако сначала покажем, что текущий интерактивный пользователь является членом группы операторов резервного копирования Backup Operators, запустив утилиту whoami.

C:\>whoami /groups
[Group 1] = "Everyone"
[Group 2] = "BUILTIN\Backup Operators"
[Group 3] = "LOCAL"
[Group 4] = "NT AUTHORITYMNTERACTIVE"
[Group 5] = "NT AUTHORITYXAuthenticated Users"
G:\>main
The ClipBook service is not started.
More 'help is available by typing NET HELPMSG 3521.
Impersonating: SYSTEM Dumping SAM for RID 500 ...
F:Ox020001000000000000000000000000000000000000COO.
V:0x00000000a800000002000100a80000001a000000000c4.

Обратите внимание, что эта программа взлома для выполнения своих губительных действий использует учетную запись SYSTEM. Теперь хакер может взломать пароль администратора и зарегистрироваться в системе. (Напомним, что при наличии системных привилегий это не составляет труда. Гораздо сложнее "пробраться" в группу администраторов.)

Контрмеры против использования именованных каналов


Компания Microsoft выпустила модуль обновления, изменяющий способ создания и размещения именованных каналов диспетчером Win 2000 Service Control Manager (SCM). Его можно найти по адресу http://www.microsoft.com/technet/security/ bulletin/MS00-053 .asp. Этот модуль обновления не вошел в сервисный пакет SP1 и может применяться как до, так и после установки этого пакета.
Привилегии интерактивных учетных записей конечно же необходимо жестко ограничить в любой системе, содержащей конфиденциальные данные, поскольку в противном случае задачи хакера значительно облегчаются. Чтобы проверить права интерактивных учетных записей в системе Windows 2000, запустите аплет Security Policy (либо для локальной политики либо для политики групп), найдите элемент User Rights Assignment в группе Local Policies и ознакомьтесь с тем, как выделяются права при локальной регистрации.
В Win 2000 появилась новая возможность отменять для некоторых групп или пользователей действие многих привилегий. Например, как видно из рисунка, возможность локальной регистрации отменяется путем выбора политики Deny logon locally.


По умолчанию группа users и учетная запись Guest обладают правом локальной регистрации в системе Win 2000 Professional и на автономных серверах Win 2000 Server. Права пользователей контроллера домена ограничены более жестко благодаря специальной используемой по умолчанию политике (правами локальной регистрации обладают все группы операторов). Мы рекомендуем отменить это право для группы users и учетной записи Guest и строго следить за тем, кому предоставляются такие привилегии.

 Нарушение доступа к рабочим станциям


Большинство администраторов Windows никогда не слышали о рабочих станциях в контексте одного из наиболее загадочных разделов программирования для Windows. Модель безопасности Win 2000 определяет иерархию контейнеров, предназначенных для разграничения функций зашиты между различными процессами. В этой иерархии объекты упорядочены от общего к частному: сеанс, рабочая станция, рабочий стол. При этом сеанс содержит одну или несколько рабочих станций, которые, в свою очередь, могут включать один или несколько рабочих столов. В рамках этой концепции сфера действия процессов ограничена рабочей станцией, а потоки одного процесса работают с одним или несколькими рабочими столами. Однако по каким-то причинам эта концепция не была реализована в исходной версии Win 2000. При некоторых условиях процесс с более низкими привилегиями, работающий на одном из рабочих столов, в рамках одного сеанса мог получать информацию от рабочего стола другой рабочей станции.
Следствием этого явилась возможность для злоумышленников интерактивно зарегистрироваться в системе Win 2000 и взаимодействовать с процессами, работающими в рамках этого же интерактивного сеанса. (Заметим, что при этом нельзя взаимодействовать с другими пользователями терминального сервера, поскольку они работают в отдельных сеансах.) Взломщики также могут создать процесс на другой рабочей станции. Однако до конца не ясно, какие действия они могут предпринять, даже если созданный ими процесс обладает системными привилегиями. Хакеры, как минимум, могут считывать вводимую с клавиатуры и выводимую на экран информацию.

Контрмеры против нарушения доступа к рабочим станциям


Поскольку эта проблема связана с некорректной реализацией модели безопасности компанией Microsoft, то и в ее решении придется положиться на модуль обновления этой компании. Такой модуль, обеспечивающий корректное разделение процессов для различных рабочих столов, можно получить по адресу http://www.microsoft.com/technet/
security/bulletin/ms00-020.asp.
Кроме того, он вошел в состав сервисного пакета SP1.
Еще один полезный совет сводится к ограничению привилегий интерактивной учетной записи (см. приведенное выше описание проблемы с именованными каналами).
Эта проблема наделала много шума и обсуждалась даже в бюллетене NTBugtraq (http://www.ntbugtraq.com), однако она не принесла никакого вреда, хотя основные трудности, возможно, еще впереди. Следует отметить, правда, что к моменту выхода в свет этой книги ни о каких новых проблемах речь не шла. Все же советуем читателям периодически обращаться к Web-узлу компании Microsoft, посвященному вопросам безопасности.