Удаленное проникновение: состояние DoS и переполнение буфера
В этом разделе мы немного поговорим о том, как может разворачиваться ситуация в том случае, если взломщику не удастся подобрать пароль к интересующей его системе. В таких случаях у него есть несколько возможностей. Первая из них состоит в поиске скрытого недостатка архитектуры NT, которым можно было бы воспользоваться для удаленного проникновения и получения доступа к системе. Вторая заключается в генерации состояния DoS (DoS — отказ в обслуживании), — последней надежды неудачливого взломщика.
Удаленное переполнение буфера
О Windows NT ходят легенды, что в ней существуют многочисленные секретные "лазейки", с помощью которых можно получить статус администратора любой удаленной системы. На самом деле в настоящее время известно лишь несколько подобных недостатков, которые при определенных условиях могут дать подобный эффект, однако все они относятся к приложениям, а не к самой системе Windows NT. Чем это объясняется, то ли относительной "молодостью" NT, то ли архитектурой, заложенной в нее разработчиками Microsoft, — это спорный вопрос.
Таблица 5.3. Некоторые публикации о выявленных ошибках переполнения буфера Windows
Контрмеры: защита от переполнения буфера
Лучшим ответом на атаки с применением переполнения буфера является профессиональное программирование. Упоминавшиеся выше статьи предоставляют опытному программисту некоторые идеи, реализация которых позволит избежать подобной угрозы при написании приложений (при их изучении пригодится знание языка С и низкоуровневого языка программирования Assembler). Однако поскольку создание программных продуктов, подобных системе Windows, выполняется практически без непосредственного участия пользователей, то ответственность за устранение выявленных проблем должна ложиться на плечи группы разработчиков.
Программа eNTercept от компании ClickNet Software Corp. представляет собой систему предотвращения вторжений, которая может использоваться в качестве оболочки ядра системы NT, которая обеспечивает мониторинг всех вызовов. Это приложение хорошо подходит для выявления и предотвращения известных атак, направленных на переполнение буфера. По адресу http://immunix.org/ можно получить улучшенную версию компилятора GNU С (gcc) StackGuard. С его помощью можно генерировать исполняемые файлы, которые более устойчивы к разрушению стека, чем обычные программы. Это достигается путем помещения слова-признака (canary word) за адресом возврата при вызове функции. Если после завершения выполнения функции это слово-признак оказалось другим, значит, была предпринята попытка переполнения буфера. При этом программа, скомпилированная с помощью StackGuard, помещает соответствующую запись в системный журнал. Поскольку в рассмотренном случае требуется использование компилятора gcc, то описанный подход неприменим в системе NT. Однако, возможно, некоторые из читателей все же будут вдохновлены... Впоследствии для устранения подобных атак потребуются кардинальные изменения в программных моделях (например, язык Java, в котором отсутствуют внутренние структуры, затрагиваемые при этом) или в самой архитектуре центральных процессоров. Отказ в обслуживании (DoS)
Атаки, приводившие к генерации состояния DoS, были чрезвычайно популярны в 1997-1998 годах, что объясняется появлением многочисленных утилит, предназначенных для повреждения стека TCP/IP на самых различных платформах. Некоторые из них были направлены исключительно на систему Windows. Мы не будем тратить время на описание всех используемых при этом недостатков реализации стека протоколов TCP/IP, поскольку все они уже устранены в пакетах обновления. Кроме того, обсуждению атак DoS посвящена целая глава (см. главу 11, а также часть главы 4, где были рассмотрены методы предотвращения подобных угроз для платформы Win 9х).
Контрмеры: предотвращение состояния DоS
Установка самого последнего сервисного пакета (при написании книги — версии 6А) позволяет защитить систему NT от большинства известных способов генерации состояния DoS. Кроме того, следите также за появлением промежуточных пакетов обновления, особенно, если они относятся непосредственно к стеку протоколов TCP/IP систем NT/2000, tcpip.sys. (Естественно, обновление используемой операционной системы до Win 2000 позволяет достигнуть того же результата.) Многие серьезные атаки DoS, связанные с применением средств land, newtear и ООВ, стали недоступными после
установки промежуточных пакетов обновления, появившихся после SP3. Конечно, обновление до Win 2000 представляет собой самый лучший сервисный пакет, в котором нашли отражение все выпущенные ранее пакеты обновления.
Для получения более подробной информации о ключах системного реестра, с помощью которых от атак DoS можно защитить серверы Internet под управлением Windows, читайте главу 6. Мы рекомендуем познакомиться также с другими программными продуктами, направленными на предотвращение атак DoS на стек TCP/IP, таких как teardrop, land, OOB и т.д. Они подробно рассматриваются в главе 12.Модули обновления, появившиеся после сервисного пакета SP3, позволяют устранить угрозу атак DoS с применением таких средств, как snork и пгрс (обоим утилитам требуется доступ к портам с номерами 135-139). Теперь снова вернемся к обсуждению приемов получения статуса администратора. Расширение привилегий
Предположим, что попытка подбора пароля увенчалась успехом — в ваших руках регистрационное имя и связанный с ним пароль пользователя интересующего вас сервера NT, не имеющего прав администратора. В мире NT шаг, заключающийся в получении доступа к системе в качестве одного из ее пользователей, несмотря на всю его сложность, является сравнительно простым. Последующие шаги потребуют гораздо больших знаний, изобретательности и везения. Так, например, существуют средства, позволяющие расширить полномочия, соответствующие пользовательской учетной записи. Однако, как уже отмечалось, этим средствами нельзя воспользоваться, обладая правами лишь обычного пользователя NT, так как такой пользователь по умолчанию не имеет права интерактивной регистрации. Однако если системный администратор допустил несколько серьезных промахов, с помощью этих средств взломщик сможет расширить свои полномочия.
Сбор информации
Если взломщику удалось завладеть учетной записью пользователя, не обладающего правами администратора, то единственной реальной возможностью, которой ему осталось воспользоваться, является дальнейший сбор информации, которая позволит расширить привилегии. В процессе сбора таких данных используются многие методы инвентаризации, которые уже упоминались в главе 3. Анализируя все полученные сведения, взломщик может получить доступ к критичным ресурсам. Вот некоторые из средств и приемов для сбора важных данных.
Контрмеры: защита от сбора информации
Для проверки степени защищенности системы от деятельности подобного рода лучше всего попробовать выполнить описанные действия самостоятельно. Для этого зарегистрируйтесь на удаленном компьютере под именем обычного пользователя и проверьте, удастся ли такому пользователю выполнить описанные выше операции. Автоматизировать процесс поиска можно с использованием команд find и findstr системы NT.
Утилита getadmin
getadmin — это небольшая программа, написанная Константином Соболевым (Konstantin Sobolev), которая добавляет пользователя в локальную группу Administrators. Она использует низкоуровневую процедуру ядра NT для установки глобального флага, позволяющего получить доступ к любому запущенному процессу, а затем с помощью приема, называемого внедрение в DLL (DLL injection), вставить специальный исполняемый код в какой-нибудь процесс, который обладает привилегией добавления пользователей в группу Administrators. (Как правило, в качестве такого процесса выбирается winlogon, который использует учетную запись System). Более подробная информация об утилите getadmin и ее исполняемый код можно найти по адресу
http://www.ntsecurity.net/security/getadmin.htm.
Контрмеры: защита от использования ynunnugetadmin
Изъян, на котором основывается принцип работы утилиты getadmin, исправлен в дополнительном модуле обновления к сервисному пакету SP
3. Этот модуль входит также во все впоследствии выпущенные сервисные пакеты. Согласно некоторым источникам, модернизированная версия утилиты getadmin, названная crash4, способна обойти исправления, если она будет запушена перед getadmin. Однако нет каких-либо подтверждений, что этот прием является работоспособным.
Утилита sechole
Утилита sechole предоставляет те же возможности, что и getadmin: она добаштяет текущего пользователя в локальную группу администраторов. Обновленная версия этой утилиты secholed помещает пользователя в группу администраторов домена.) Однако для выполнения тех же действий, что и getadmin, эта утилита использует другие механизмы. Как отмечают Прасад Дабак (Prasad Dabak), Сандип Фадк (Sandeep Phadke) и Милинд Бора (Milind Borate), sechole модифицирует в оперативной памяти код вызова процедуры OpenProcess, и это позволяет ей успешно подключаться к привилегированному процессу, независимо от того, имеет ли она для этого соответствующие разрешения. После успешного подключения она работает так же, как и утилита getadmin, выполняя код внутри процесса-носителя, и добавляет текущего пользователя в указанную группу Administrators. Полный код и подробное описание можно найти на Web-узле NT Security по адресу http://www.ntsecurity.net/security/sechole.htm.
Удаленный запуск утилиты sechole
Рассмотрим пример применения основного подхода, используемого при нападении на Web-серверы, который в различных формах применяется в Internet. Успешность такой атаки зависит от того, существует ли каталог US-сервера, доступный для записи и запуска программ. К счастью, компания Microsoft "предоставила" много каталогов с такими разрешениями, используемыми по умолчанию.
Таблица 5.4. Виртуальные каталоги сервера US, имеющие по умолчанию разрешения Execute, к соответствующие им физические каталоги
Однако не будем торопиться. Выше уже упоминалось, что утилита sechole добавляет пользователя в локальную или доменную группу администраторов. Если же она была запущена посредством Web-броузера, то в группу администраторов будет добавлена учетная запись 1изп_имя_машины. А это не очень хорошо, поскольку этой учетной записи назначается случайный пароль, который взломщику придется подбирать при удаленной регистрации. Как же в группе администраторов создать новую учетную запись пользователя с паролем, который выбрал сам взломщик? Это просто осуществить с помощью встроенной команды net localgroup. Создайте простой командный файл (например, с именем adduser.bat) со следующей строкой:
Далее вместо того чтобы регистрироваться с использованием учетной записи IUSR, пароль которой пока неизвестен, взломщик добавит нового пользователя с помощью файла сценария adduser.bat, запущенного в броузере с использованием следующего сложного адреса
URL.
Контрмеры: защита от применения утилиты sесhо1е
Существует два простых метода защиты как от утилиты sechole, так и от удаленного выполнения команд в Web. Во-первых, установите самый последний сервисный пакет (6А или более новый). Для систем, на которых установлен сервисный пакет SP5, можно воспользоваться модулем обновления. Более подробную информацию можно получить в статье KB Q190288. Затем, независимо от того, волнует ли вас проблема sechole или нет, запретите доступ для записи в каталоги сервера Internet, в которых содержатся исполняемые файлы (см. табл. 5.4). Для этого проще всего заблокировать доступ к портам TCP и UDP сервера с номерами 135-139 и, таким образом, исключить доступ к совместно используемым ресурсам Windows. Если доступ с использованием протокола SMB заблокирован, обязательно убедитесь в том, отключен также доступ на запись по протоколу FTP.
После щелчка на кнопке Edit Properties на экране появится диалоговое окно, показанное на следующем рисунке.
Менее известный способ расширения привилегий, обеспечиваемый утилитой besysadm, появился после выпуска сервисного пакета Service Pack 5. Информацию о соответствующем модуле обновления можно найти по адресу http://www. microsoft.cam/technet/eecurity/bullatin/ms99-006.asp Ложные запросы к портам LPC
Такую возможность обнаружила группа исследователей RAZOR (http://razor. bindview.com) и предоставила авторам проверочный код, который, однако, не был открыт для широкого использования. В приведенном коде иллюстрируется изъян одной из функций интерфейса с портами LPC (Local Procedure Call — локальный вызов процедур), который позволяет потокам и процессам на локальном узле взаимодействовать друг с другом. Обычно порты LPC обеспечивают интерфейс между потоком сервера и клиентными потоками, которые генерируют запросы на использование служб. Кроме того, порты LPC выполняют проверку легитимности клиента. Однако взломщик, у которого имеется возможность создать оба потока, и сервера и клиента. может обойти такую проверку и связать клиентный поток с любым пользователем, даже имеющим привилегии SYSTEM.
С:\>whoami
C:\>net looalgroup administrators mallory /add
C:\>hk net localgroup administrators mallory /add
C:\>net localgroup administrators Применяйте модули обновления!
Компания Microsoft выпустила модуль обновления сервисного пакета SP6A, который изменяет вызов функции проверки достоверности, входящей в состав программного интерфейса с портами LPC. Этот модуль обновления можно найти в бюллетене
MS00-003 компании Microsoft по адресу http://www.microsoft.com/technet/security/bulletin/ms00-003.asp.
"Троянские кони" и параметры реестра
Основной принцип расширения привилегий заключается в том, чтобы ввести в заблуждение других пользователей (лучше всего администратора) и выполнить код, который позволит учетной записи взломщика получить привилегии суперпользователя. Аналогичный подход состоит во внедрении какого-либо кода, который будет выполнен при наступлении некоторого обычного события в системе (например, в процессе перезагрузки). Обе из этих стратегий, а также методы борьбы с ними, обсуждаются ниже.
Многие из описанных ниже методов гораздо глубже и полнее освещаются на страницах прекрасного Web-узла Security Bugware, которые можно найти по адресу http://Oliver.efri.hr/-crv/security/bugs/NT/getadmt#].html, где # — числа от 2 до 7. "Троянские кони" и расширение привилегий
"Троянский конь" (Trojan horse) — это программа, которая предоставляет некоторые полезные функции, однако на самом деле предназначена для скрытного выполнения злонамеренных или разрушительных действий (для получения более подробной информации читайте главу 14). От одной только мысли о возможностях, открывающихся при переименовании стандартных утилит NT, голова идет кругом! Например, вместо программы regedit.exe взломщик может поместить в каталог winnt\system32 командный файл regedit.cmd. Когда ничего не подозревающий администратор введет в командной строке regedit, чтобы выполнить какие-то операции с системным реестром, будет запущен командный файл. Обычно с его помощью выполняется тот или иной вариант следующей команды. net localgroup administrators <пользователь> /add
Контрмеры: защита от "троянских коней"
Хотя предлагаемые контрмеры и не обеспечивают стопроцентной защиты, все же будьте внимательны при запуске приложений. Обращайте внимание на различные аномалии (например, быстро промелькнувшее окно командной строки в момент вызова полноценной программы Windows).
Подсистема защиты файлов системы Win 2000 (WFP — Windows File Protection) обеспечивает хранение резервных копий около шестисот важных файлов в каталоге %windir% и предотвращает их от перезаписи. Поскольку "троянских коней" очень трудно обнаружить (особенно те из них, которые выполняют модификацию самого ядра NT), стоит поддерживать максимальные меры предосторожности. А именно, создавайте резервные копии своих данных, переустанавливайте операционную систему и все приложения только с проверенных носителей информации. Некоторые из наиболее коварных "троянских коней", называемых наборами rootkit, будут рассмотрены ниже в данной главе.Параметры реестра, обеспечивающие выполнение программ
Еще одним хорошим методом скрытого запуска командного файла является использование специальных значений в системном реестре NT. В зависимости от разрешений пользователя, под именем которого взломщик проник в систему,
ему могут быть доступны некоторые из таких параметров системного реестра. Помните, что удаленный доступ к системному реестру могут получить только администраторы, а на консоли сервера могут зарегистрироваться лишь несколько пользователей из встроенных учетных записей NT. Поэтому вероятность того, что взломщику удастся воспользоваться описанным здесь способом, очень мала. Ему повезет только в том случае, когда используемая им учетная запись входит в группу Server Operators. В табл. 5.5 перечислены некоторые параметры системного реестра и разрешения, установленные для них по умолчанию, которыми могут воспользоваться взломщики для запуска программ.
Таблица 5.5. Параметры системного реестра, которые можно использовать для вызова программ, расширяющих привилегии пользователя
Защита параметров системного реестра
С использованием редактора системного реестра regedt32 для этих параметров необходимо задать следующие разрешения.
Несколько заключительных слов о расширении привилегий
Теперь у вас не вызывает сомнений тот факт, что расширить привилегии чрезвычайно сложно. Единственное, что может помочь взломщику, — это грубые ошибки в настройке системы или же получение доступа к учетной записи, которая и так обладает достаточно высокими привилегиями (например, является членом группы Server Operators). Далее мы рассмотрим самый худший (с точки зрения безопасности) сценарий -— взломщик получил доступ к системе на уровне администратора.
|