KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Интернет » Илья Медведовский - Атака на Internet

Илья Медведовский - Атака на Internet

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Илья Медведовский, "Атака на Internet" бесплатно, без регистрации.
Перейти на страницу:

Итак, повторим основные уязвимости Windows NT, делающие возможными атаки типа GetAdmin (первые два пункта могут быть отнесены к люкам):

• возможность отлаживать потоки;

• наличие NtGlobalFlag;

• ошибки в функциях ядра и в системных сервисах, в том числе недостаточные проверки на корректность параметров. Типичный пример непредусмотренных входных данных;

• слишком широкий доступ к параметрам реестра.

Разделение ресурсов и анонимный пользователь

Доступ к файлам и принтерам на удаленных компьютерах под управлением ОС семейства Windows осуществляется через протокол SMB. Более того, этот протокол используется многими компонентами удаленного управления системой, например программами Regedit, User Manager и Server Manager. Поэтому значение протокола с точки зрения безопасности является очень важным. В частности, к нему могут быть применены типовые удаленные атаки (см. главы 3–8).

Но какое отношение он имеет к Internet? Ведь протокол SMB задумывался для разделения ресурсов внутри локальной сети (домена). Дело в том, что SMB, являясь протоколом прикладного уровня, может быть построен на основе любого транспортного протокола, совместимого с интерфейсом NetBIOS. Обычно в сетях Microsoft для этих целей используется NetBEUI, однако может быть использован и IPX, и, естественно, IP (NetBIOS over TCP/IP). Именно поэтому все, что говорится о SMB, относится и к глобальным сетям, построенным на TCP/IP. Например, если вы разрешили доступ на ваш диск С: своему коллеге, сидящему в соседней комнате, и подключились к Internet, то имейте в виду, что доступ к диску теперь получат и пользователи извне, задав команду типа

> net use * \194.94.94.94DISK_C password /USER:user ,

где 194.94.94.94 – ваш IP-адрес;

DISK_C – разделяемое имя диска C:;

user, password – имя и пароль для подключения к ресурсу.

Более того, даже если вы и не стремились предоставить никому доступ к вашим дискам, NT это сделает за вас. В ней есть так называемое административное (или скрытое) разделение ресурсов, отличающееся от обычных символом «$» в конце, а также тем, что эти скрытые ресурсы вновь появляются после перезагрузки, даже если вы их удалите вручную. Их имена – C$, D$ и т. д., обозначающие ваши жесткие диски, а также ADMIN$, указывающий на каталог %SystemRoot%. Такие ресурсы доступны только администратору и не выводятся в списке разделяемых ресурсов командой net view. Настройками в реестре можно отказаться от их наличия, но по умолчанию они существуют.

Хорошо ли, что SMB может быть построен на базе TCP/IP? С точки зрения функциональности – безусловно, Microsoft даже предлагает свой стандарт на глобальную файловую систему – CIFS (Common Internet File System), представляющий собой не что иное, как систему разделения ресурсов от Microsoft в рамках всего Internet. Но с точки зрения безопасности такой подход грозит дополнительными уязвимостями, обусловленными недостатками SMB.

В дальнейших рассуждениях мы предполагаем, что цель атаки – машина под управлением Windows NT, а не Windows for Workgroups или Windows 95/98, хотя они используют для разделения ресурсов тот же самый протокол SMB. Дело в том, что у этих операционных систем есть возможность обеспечивать разделение ресурсов на уровне ресурса (share level), при котором не требуется идентификации пользователя, а нужен только пароль на ресурс. Windows NT же обеспечивает разделение только на уровне пользователя (user level), при котором необходимо вводить и имя, и пароль. Вообще, применение Windows 95/98 в качестве основной ОС для хоста (сервера) в Internet – это нонсенс, и в нашей книге такой вариант практически не рассматривается.

Напомним еще раз, что необходимо знать злоумышленнику для подключения к разделяемому ресурсу на удаленной машине:

IP-адрес. Он его, безусловно, знает.

Имя ресурса. Его можно узнать с помощью той же самой команды net: net view \194.94.94.94. Впрочем, для этого все равно надо знать имя и пароль (то есть сначала злоумышленник должен ввести net use, а потом уже net view).

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

Однако нет ли в Windows NT какого-нибудь способа, позволяющего обойтись без знания имени и/или пароля? Оказывается, есть. Самой системе иногда требуется подключение к компьютеру, например для обеспечения межкомпьютерных связей в домене. И при этом ей приходится как-то идентифицироваться на удаленном компьютере. Такой механизм называется null session (нуль-сеанс, или анонимное подключение). Чтобы его установить, необходимо ввести пустое имя пользователя и пустой пароль, при этом для анонимного подключения всегда открыт специальный ресурс IPC$ (inter-process communication):

net use \194.94.94.94IPC$ «„ /USER:“»

Анонимный доступ имеет ряд ограничений, в частности не позволяет подключать непосредственно разделяемые диски, но может предоставить следующие возможности:

• вывести список разделяемых ресурсов;

• удаленно просмотреть реестр с помощью стандартных программ Regedit или Regedt32 (если не запрещено его разделение). При этом ему будут доступны те разделы реестра, которые доступны Everyone, то есть многие. Например, в каталоге HKLMSOFTWARE MicrosoftWindows NTCurrentVersionWinlogon существуют поля «DefaultUsername» и «DefaultPassword», означающие имя и пароль пользователя при autologon (автоматический вход в систему);

• запустить User Manager и просмотреть список существующих пользователей и групп;

• запустить Event Viewer и другие средства удаленного администрирования, использующие SMB.

Такая атака получила название RedButton, как и вышедшая в 1997 году программа-демонстратор, хотя о возможности анонимного подключения было известно со времен Windows NT 3.5. Service Pack 3 закрывает большинство этих возможностей, но не устраняет причину – анонимного пользователя. Поэтому после установки Service Pack 3 все равно можно просмотреть разделяемые ресурсы, а также узнать имена всех пользователей и групп в системе благодаря наличию общеизвестных (well-known) имен и идентификаторов субъектов.

С целью идентификации субъектов (пользователей или групп) Windows NT использует SID (security identifier – идентификаторы безопасности), но, в отличие от UID в UNIX, они у NT более сложные, имеют большую длину и уникальны для каждого пользователя даже на разных компьютерах. SID принято записывать в виде S-1-XXXXX-YYYYY1-YYYYY2-…,

где S-1 – идентификатор безопасности, версия 1;

XXXXX – номер ведомства (authority);

YYYYYn – номера подразделений (subauthority), причем последний из них задает RID (relative identifier – относительный идентификатор), который не будет уникальным для каждого компьютера. Например, для администратора – RID всегда 500 (прямая аналогия с UID root в UNIX, который всегда 0).

Итак, каждый идентификатор сопоставляется с некоторым субъектом, и существуют функции Win32 API, позволяющие получить SID по имени (LookupAccountName), и наоборот (LookupAccountSid).

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

Например, чтобы найти настоящее имя администратора (для большей безопасности Microsoft рекомендует его переименовывать), можно использовать примерную схему:

1. Осуществить поиск любого стандартного имени на удаленном компьютере, к примеру "Domain Users":

>user2sid \194.94.94.94 «Domain users»,

что выдаст, например: S-1-5-21-111111111-22222222-33333333-513, то есть ведомство 5, подразделение 21-111111111-22222222-33333333, RID 513. 2. Найти имя администратора (он же входит в пользователи домена, а RID всегда один и тот же!):

>sid2user \194.94.94.94 5 21 111111111 22222222 33333333 500

Name is Vovse_Ne_Administrator

Domain is Vovse_Ne_Domain

Type of SID is SidTypeUser

Далее можно просмотреть всех остальных пользователей и, более того, отследить временную иерархию их создания или удаления.

Несколько похоже на получение информации о системе через finger, не так ли? С одним маленьким дополнением – службу finger запретить легко, а здесь ничего не сделать.

Протокол SMB в глобальных сетях

Протокол SMB известен давно и имеет несколько диалектов – от PC Network Program, предназначенного для сетевых расширений DOS, до NT LM 0.12, применяемого уже в Windows NT. К сожалению, с точки зрения безопасности эти диалекты совместимы снизу-вверх, точнее, серверу приходится поддерживать несколько из них. Это приводит, например, к такой простой атаке, как указание клиенту передавать пароль в открытом виде, потому что сервер якобы не поддерживает зашифрованные пароли. Естественно, роль сервера здесь выполняет ложный сервер злоумышленника (см. главу 3).

Из-за поддержки устаревших с точки зрения безопасности сетевых решений SMB может быть подвержен атаке на получение доступа ко всему диску, если у злоумышленника есть права только на его часть (каталог). Для этого взломщику достаточно указать имя каталога через «..» [19]. Успех атаки заключен в том, что проверка правильности вводимого имени производится не на сервере, а на клиенте. Windows-клиент не пропустит имя каталога, содержащее «..», но ведь возможно использовать, например, UNIX-клиент SMB, слегка его подправив, благо, он есть в исходных текстах. Действия кракера при наличии легального доступа к каталогу SOME_DIR могли бы выглядеть примерно так:
Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*