Удаленное проникновение: состояние DoS и переполнение буфера
Расширение привилегий
Предположим, что попытка подбора пароля увенчалась успехом – в ваших руках регистрационное имя и связанный с ним пароль пользователя интересующего вас сервера NT, не имеющего прав администратора. В мире NT шаг, заключающийся в получении доступа к системе в качестве одного из ее пользователей, несмотря на всю его сложность, является сравнительно простым. Последующие шаги потребуют гораздо больших знаний, изобретательности и везения. Так, например, существуют средства, позволяющие расширить полномочия, соответствующие пользовательской учетной записи. Однако, как уже отмечалось, этим средствами нельзя воспользоваться, обладая правами лишь обычного пользователя NT, так как такой пользователь по умолчанию не имеет права интерактивной регистрации. Однако если системный администратор допустил несколько серьезных промахов, с помощью этих средств взломщик сможет расширить свои полномочия.
В этом разделе мы приведем основные принципы расширения полномочий учетной записи обычного пользователя до уровня учетной записи Administrator. В ходе рассмотрения мы коснемся также некоторых возможностей по использованию тех или иных средств для выполнения несанкционированных операций как с удаленного компьютера, так и с локальной консоли.
Сбор информации
Если взломщику удалось завладеть учетной записью пользователя, не обладающего правами администратора, то единственной реальной возможностью, которой ему осталось воспользоваться, является дальнейший сбор информации, которая позволит расширить привилегии. В процессе сбора таких данных используются многие методы инвентаризации, которые уже упоминались в главе 3. Анализируя все полученные сведения, взломщик может получить доступ к критичным ресурсам. Вот некоторые из средств и приемов для сбора важных данных.
- Утилита srvinfo из набора NTRK может использоваться для поиска совместно используемых ресурсов. При этом важными источниками информации являются папки %systemroot%system32 и \repair, а также доступные для записи папки Web- или FTP-сервера.
- Стандартная утилита поиска системы Windows может использоваться для поиска строка вида password в файлах .bat или файлах сценариев.
- Утилиту regdmp из набора NTRK или команда Connect Network Registry редактора системного реестра можно попробовать применить для получения доступа к различным частям системного реестра.
Этот процесс высасывания (hoovering) информации из всех "закоулков" получил свое определение в английском языке по названию производителя популярных пылесосов.
Контрмеры: защита от сбора информации
Для проверки степени защищенности системы от деятельности подобного рода лучше всего попробовать выполнить описанные действия самостоятельно. Для этого зарегистрируйтесь на удаленном компьютере под именем обычного пользователя и проверьте, удастся ли такому пользователю выполнить описанные выше операции. Автоматизировать процесс поиска можно с использованием команд find и findstr системы NT.
Далее мы опишем некоторые механизмы, с помощью которых взломщик может добавить себя в группу Administrators.
Утилита getadmin
Утилита getadmin – это небольшая программа, написанная Константином Соболевым (Konstantin Sobolev), которая добавляет пользователя в локальную группу Administrators. Она использует низкоуровневую процедуру ядра NT для установки глобального флага, позволяющего получить доступ к любому запущенному процессу, а затем с помощью приема, называемого внедрение в DLL (DLL injection), вставить специальный исполняемый код в какой-нибудь процесс, который обладает привилегией добавления пользователей в группу Administrators. (Как правило, в качестве такого процесса выбирается winlogon, который использует учетную запись System). Более подробная информация об утилите getadmin и ее исполняемый код можно найти по адресу http://www.ntsecurity.net/security/getadmin.htm.
Мощь утилиты getadmin несколько затмевает тот факт, что она должна быть запущена локально. Поскольку большинство пользователей по умолчанию не могут зарегистрироваться на сервере NT локально, эта утилита, как правило, может помочь только в создании фиктивных членов различных встроенных групп Operators (Account, Backup, Server и т.д.) и используемой по умолчанию учетной записи сервера Internet IUSR_имя_машины при наличии соответствующих привилегий. Однако если злоумышленники уже имеют такой уровень привилегий на вашем сервере, то утилита getadmin не сможет усугубить ситуацию, так как они и без ее помощи имеют доступ ко всем требуемым ресурсам.
Утилита getadmin запускается из командной строки следующим образом:
getadmin имя_пользователя
Прежде чем воспользоваться полученными привилегиям, новый пользователь, добавленный в группу Administrators, сначала должен завершить текущий сеанс работы. (Для того чтобы убедиться, что пользователь получил права администратора, достаточно попробовать запустить утилиту windisk. Это сможет осуществить только член группы Administrators.)
Контрмеры: защита от использования ynunnugetadmin
Изъян, на котором основывается принцип работы утилиты getadmin, исправлен в дополнительном модуле обновления к сервисному пакету SP 3. Этот модуль входит также во все впоследствии выпущенные сервисные пакеты. Согласно некоторым источникам, модернизированная версия утилиты getadmin, названная crash4, способна обойти исправления, если она будет запущена перед getadmin. Однако нет каких-либо подтверждений, что этот прием является работоспособным.
В связи с тем, что для выполнения большинства потенциально опасных операций в системе NT на удаленном компьютере требуются привилегии администратора, извлечь какую-то пользу из применения getadmin при удаленном подключении достаточно проблематично. Для этого необходимо совпадение двух событий: взломщик должен иметь доступ к какому-нибудь каталогу, открытому для записи, а также право выполнения программ, содержащихся в этом каталоге. Как можно добиться такого результата, вы узнаете чуть ниже.