Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
75
Добавлен:
24.02.2016
Размер:
6.44 Mб
Скачать
  1. Обхід обмеження для анонімних з'єднань

Параметр реестра RestrictAnonymous

Прежде чем перейти к мерам противодействия, необходимо остановиться на параметрах безопасности, которые предшествовали появлению систем Windows Server 2003, и средствах для обмана этих защитных мер.

После выпуска версии Windows NT4 Service Pack 3 компания Microsoft попыталась предотвратить получение потенциально опасной информации при проведении инвентаризации через нулевые соединения. Для этой цели был создан параметр реестра RestrictAnonymous.

HKLM\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous

В Windows 2000 для изменения значений многих скрытых параметров реестра, связанных с системой защиты, через графический интерфейс можно использовать оснастку Security Policy консоли управления ММС. В NT4 эти параметры необходимо конфигурировать вручную. В Windows 2000 параметр получил название "Additional Restrictions for Anonymous Connections" ("Дополнительные ограничения для анонимных соединений", a eгo третье значение "No access Without Explicit Anonymous Permissions" ("Запрет доступа без явного разрешения для анонимных пользователей") эквивалентно установке в реестре значения 2 для параметра RestrictAnonymous (см. табл. 1). Этот параметр теперь уже недоступен в интерфейсе Security Policy (Политика безопасности) систем Windows XP и Windows Server 2003, но значения в реестре сохранили актуальность.

Параметр RestrictAnonymous имеет тип REG_DWORD и может принимать одно из трех значений: 0, 1, 2. Эти значения описаны в табл. 1.

Таблица 1. 3начения параметра RestrictAnonymous

Значение

Уровень защиты

0

Отсутствует. Остаются значения по умолчанию

1

Не разрешать инвентаризацию имен и учетных записей SAM

2

Запрещает доступ без явных разрешений для анонимного соединения

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

Установка значения 2 для параметра RestrictAnonymous предотвращает добавление специального идентификатора Everyone в анонимные маркеры доступа. Установка этого значения 2 может привести к нежелательным проблемам при установке соединений для программ других производителей или на других версиях платформы Windows. Зато это эффективно блокирует создание нулевых сеансов.

C:\>net use \\mgmgrand\ipc$ "" /u: ""

System error 5 has occurred.

Access is denied.

При значении 1 параметра RestrictAnonymous некоторые программы все еще смогут работать через нулевые соединения. Некоторые из них мы опишем далее.

Обход ограничений RestrictAnonymous=1

Программы sid2user и user2sid, написанные Евгением Рудным (Evgenii Rudnyi), — очень мощные средства инвентаризации ресурсов систем семейства Windows NT. Эти программы запускаются из командной строки, которые по имени пользователя определяют идентификатор безопасности (SID) и наоборот (SID описаны в разделе "Архитектура системы безопасности Windows Server 2003"). Для удаленного использования этих программ требуется предварительно установить доступ к интересующему компьютеру через нулевое соединение. Следующий метод будет работать даже при значении 1 параметра RestrictAnonymous.

Сначала с помощью программы user2sid извлекаем SID домена.

В результате получаем идентификатор SID компьютера — строку чисел, разделенных дефисами, которая начинается с символов s-1.

Последовательность цифр после последнего дефиса называется относительным идентификатором (relative identifier, RID). Идентификатор RID предопределен для стандартных пользователей систем семейства Windows NT и групп наподобие Administrator или Guest. Например, идентификатор RID для записи Administrator всегда равен 500, а для записи Guest — 501. Вооружившись этой информацией, хакер может использовать программу sid2user для поиска учетной записи администратора по известному идентификатору RID, равному 500 (даже если учетная запись была переименована).

Обратите внимание, что при вводе идентификатора SID нужно пропускать символы S-1 и дефисы. Еще один интересный факт — если первая учетная запись, созданная в любой локальной системе или домене NT/2000, получила идентификатор RID 1000, то все последующие объекты будут получать последовательно увеличивающиеся идентификаторы R1D (1000, 1002, 1003 и т.д. — идентификаторы RID для текущей инсталляции не повторяются и не используются повторно). Таким образом, узнав один номер SID, хакер может элементарно инвентаризовать всех пользователей и все группы системы NT/2000, бывших и настоящих.

Рассмотрим простой пример получения всех доступных учетных записей пользователей системы с помощью программ sid2user/user2sid. Перед запуском этого сценария определили идентификатор SID исследуемой системы, используя user2sid при установленном нулевом сеансе, как было показано в предыдущем примере. Напомним, что система NT/2000 присваивает новым идентификаторам RID значения, начиная с 1000. С помощью команды FOR командного интерпретатора систем NT/2000 и программы sid2user (см. выше) исследуем до 50 учетных записей системы.

Выводимые этим сценарием необработанные данные можно пропустить через фильтр, который оставляет только имена пользователей. Конечно, для написания сценариев не обязательно использовать только командный интерпретатор систем Windows NT — можно применить Perl, VBScript или еще какой-либо знакомый язык программирования. И еще одно последнее предупреждение: этот сценарий выведет список пользователей только в том случае, если открыт TCP-порт 139 или 445. Наличие установленного параметра RestrictAnonymous=1 никак, не влияет на результат.

Кратко описанная далее программа UserDump позволяет автоматизировать процесс последовательного просмотра идентификаторов SID.

Чтобы предотвратить эту атаку в системах Windows XP и Windows Server 2003, в средстве администрирования Security Policy (Локальная политика безопасности) установите значение Disabled (Отключен) для параметра "Network Access: Allow Anonymous SID/Name Translation" (Доступ по сети: разрешить предоставление анонимным пользователям идентификатора SID и имен пользователей").

Программа UserInfo

Программа UserInfo, которую написал Тим Муллен (Tim Mullen, Thor Shammer of god.com), позволяет во время нулевого сеанса собирать информацию о пользователях при значении параметра RestrictAnonymous=1. Вызывая функцию API NetUserGetlnfо на уровне выполнения 3, программа Userlnfo получает доступ к той же критически важной информации, которую позволяют просмотреть утилиты типа DumpSec, ограничиваемые параметром RestrictAnonyitious=1. Ниже показан пример получения сведений об учетной записи Administrator на удаленной машине с помощью программы UserInfo при значении параметра RestrictAnonymous=1.

Программа UserDump

Еше одна программа Тима Муллена — UserDump. Эта программа "собирает" идентификаторы SID удаленной системы, а затем исследует ожидаемые значения RID, чтобы получить всю информацию об именах учетных записей. Программа UserDump берет известное имя пользователя или группы и "проходит" заданное пользователем количество раз по идентификаторам SID, начиная с номера 1001. Начинает эта программа всегда с идентификатора RID 500 (администратор), а затем продолжает проверку с RID 1001 плюс указанное максимальное количество запросов (при значении 0 или неуказанном значении параметра MaxQueries будут выведены сведения об идентификаторах SID 500 и 1001). Рассмотрим пример работы программы UserDump.

Программа GetAcct

Программа GetAcct выполняет аналогичный просмотр идентификаторов SID. Эта программа обладает графическим интерфейсом и позволяет экспортировать результаты в текстовый файл для последующего анализа. Для ее работы не обязательно присутствие на исследуемом сервере учетной записи Administrator или Guest. На рис. 2 показано окно программы GetAcct во время получения данных о пользователе из системы с установленным ограничением RestrictAnonymous=1.

Рис. 2. При установленном нулевом сеансе программа GetAcct еыполняет перебор идентификаторов SID независимо от ограничения RestrietAnonymous=1

Утилита walksam

Утилита walksam, одна из трех утилит пакета RPCTools Тодда Сабина, также выполняет просмотр базы данных SAM и выводит информацию о каждом найденном пользователе. Она поддерживает "традиционный" способ работы через именованные каналы и дополнительные механизмы, используемые в контроллерах доменов Windows Server 2003. В случаях, когда существует возможность установить нулевой сеанс, она может обходить ограничение RestrictAnonymous=1. Далее приведен сокращенный пример работы утилиты walksam (помните, что с исследуемым сервером уже установлено нулевое соединение).

Соседние файлы в папке Лекции