Удаленное проникновение: состояние DoS и переполнение буфера

В этом разделе мы немного поговорим о том, как может разворачиваться ситуация в том случае, если взломщику не удастся подобрать пароль к интересующей его системе. В таких случаях у него есть несколько возможностей. Первая из них состоит в поиске скрытого недостатка архитектуры NT, которым можно было бы воспользоваться для удаленного проникновения и получения доступа к системе. Вторая заключается в генерации состояния DoS (DoS — отказ в обслуживании), — последней надежды неудачливого взломщика.

Удаленное переполнение буфера


О Windows NT ходят легенды, что в ней существуют многочисленные секретные "лазейки", с помощью которых можно получить статус администратора любой удаленной системы. На самом деле в настоящее время известно лишь несколько подобных недостатков, которые при определенных условиях могут дать подобный эффект, однако все они относятся к приложениям, а не к самой системе Windows NT. Чем это объясняется, то ли относительной "молодостью" NT, то ли архитектурой, заложенной в нее разработчиками Microsoft, — это спорный вопрос.
С точки зрения удаленного проникновения самые тяжелые последствия способна вызвать ошибка переполнения буфера (buffer overflow). Более подробно переполнение буфера будет рассматриваться в главе 14, а сейчас для продолжения обсуждения достаточно сказать, что переполнение буфера возникает тогда, когда программы не способны адекватно отслеживать длину вводимых данных. В таких случаях избыточные данные записываются поверх части стека центрального процессора. Если это произойдет не случайно, а в результате передачи в качестве избыточных данных соответствующих команд, то новый код может привести к выполнению операций, подобранных высококвалифицированным программистом. Одной из наиболее значимых статей, посвященных проблеме переполнения буфера, является работа Алефа Вана (Aleph One) Smashing the stack for fan and profit. Ее можно найти по адресу http://phrack.infonexus.com/archive.html. К другим статьям о переполнении буфера системы Windows относятся Tao of Windows Buffer Overflow хакера Дилдога (Dildog), Win32 Buffer Overflows Барнаби Джека (Barnaby Jack) в Phrack 55, а также статьи членов группы CIS (Cerberus Information Security).
Переполнение буфера можно отнести к одному из двух основных классов: удаленное и локальное. Для достижения локального переполнения требуется доступ к консоли, и его обычно могут осуществить лишь интерактивные пользователи. Удаленное переполнение буфера является гораздо более опасным. Такой возможностью могут воспользоваться взломщики, имеющие нулевые привилегии на целевом компьютере и находящиеся на любом узле сети. Как правило, удаленное переполнение буфера связано с размещением на целевой системе "полезного груза" (т.е. кода, помещенного в стек центрального процессора), что впоследствии позволяет взломщику удовлетворить практически любые свои желания. В табл. 5.3 приведены некоторые наиболее известные публикации об ошибках переполнения буфера системы NT и других программных продуктов компании Microsoft.
Теоретически, учитывая огромный объем и сложность исходного кода Windows NT, в нем должно существовать довольно много изъянов подобного рода. Однако, как видно из табл. 5.3, между двумя изданиями этой книги практически не появилось новых хакерских программ, вызывающих переполнение буфера самой операционной системы NT/2000. В то же время, как видно из табл. 5.3, службы (IIS) и приложения (Outlook) системы Windows являются достаточно уязвимыми. Поэтому не стоит рассчитывать на абсолютную защищенность операционной системы: все возрастающий поток исследований проблемы переполнения буфера Win32 в любой момент может привести к прорыву обороны.

Таблица 5.3. Некоторые публикации о выявленных ошибках переполнения буфера Windows

Мишень и разработчики программы взлома
Адрес URL
Принцип действия
Netmeeting 2x, группа хакеров Cult of the Dead Cow (cDc)
http://www.cultdeadcow.com/ cDc_files/cDc-351
Проверка концепции, сводящаяся к загрузке графического файла с узла cDc
NT RAS, группа Cerberus Information Security (CIS)
http://www. infowar.co.uk/ mnemonix/ntbufferoverruns.htm
Открытие окна командной строки с привилегиями System
winhlp32, группа CIS
http://www.infowar.со.uk/ mnemonix/ntbufferoverruns.htm
Запуск командного файла с привилегиями System
IISHack, компания еЕуе
http://www.eeye.com
Выполнение заданного кода на Web-сервере, работающем под управлением NT US
Oracle Web Listener 4.0, группа CIS
http://www.cerberus-infosec. co.uk/advowl.html
Удаленное выполнение команды с привилегиями System
Outlook GMT, лаборатория Underground Security Systems Research (USSR)
http: //www.ussrback.com/labs50.html
Переполнение буфера за счет выполнения заданного кода при синтаксическом анализе электронного сообщения

Контрмеры: защита от переполнения буфера


Лучшим ответом на атаки с применением переполнения буфера является профессиональное программирование. Упоминавшиеся выше статьи предоставляют опытному программисту некоторые идеи, реализация которых позволит избежать подобной угрозы при написании приложений (при их изучении пригодится знание языка С и низкоуровневого языка программирования Assembler). Однако поскольку создание программных продуктов, подобных системе Windows, выполняется практически без непосредственного участия пользователей, то ответственность за устранение выявленных проблем должна ложиться на плечи группы разработчиков.
Для разрешения проблемы переполнения буфера могут использоваться различные программные продукты. Одним из самых новых средств этой категории является программа BOWall Андрея Колишака (Andrey Kolishak). Программа BOWall предотвращает переполнение буфера двумя способами.

  •  Замещает библиотеки DLL их двоичными копиями, в которые включены процедуры мониторинга вызовов потенциально уязвимых функций (например, strcpy, wstrcpy, strncpy, wstrncpy, strcat, wcscat, strncat, wstrncat, memcpy, memmove, sprintf, swprintf, scanf, wscanf, gets, getws, fgets, fgetws). После этого вызовы таких функций проверяются на предмет целостности возвращаемого адреса стека (stack return address).
  •  Ограничивает выполнение функций динамических библиотек из сегмента данных и стека (data and stack memory).
Замещение системных динамически подключаемых библиотек для предотвращения переполнения буфера является несколько кардинальным, однако все же такой подход, очевидно, достоин внимания.
Программа 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х).
Генерация состояния отказа в обслуживании не всегда преследует цель вызвать раздражение сетевого администратора. Зачастую такой подход используется для того, чтобы добиться перезагрузки системы и автоматического запуска требуемых утилит. Как вы увидите позднее, изучение кода многочисленных файлов загрузки Windows NT является одним из эффективных методов проникновения в систему.

 Контрмеры: предотвращение состояния 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, так как такой пользователь по умолчанию не имеет права интерактивной регистрации. Однако если системный администратор допустил несколько серьезных промахов, с помощью этих средств взломщик сможет расширить свои полномочия.
В этом разделе мы приведем основные принципы расширения полномочий учетной записи обычного пользователя до уровня учетной записи 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 при удаленном подключении достаточно проблематично. Для этого необходимо совпадение двух событий: взломщик должен иметь доступ к какому-нибудь каталогу, открытому для записи, а также право выполнения программ, содержащихся в этом каталоге. Как можно добиться такого результата, вы узнаете чуть ниже.

Утилита 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.
Подобно getadmin, утилита sechole должна быть запущена локально. Однако, если на целевом узле запущен сервер IIS компании Microsoft и, кроме этого, выполняются и некоторые дополнительные условия, sechole можно запустить и удаленно, добавив используемую по умолчанию учетную запись пользователя Internet 1изк_имя_машины в группу Administrators или Domain Admins. Вот описание того, как это можно осуществить.

Удаленный запуск утилиты sechole


Рассмотрим пример применения основного подхода, используемого при нападении на Web-серверы, который в различных формах применяется в Internet. Успешность такой атаки зависит от того, существует ли каталог US-сервера, доступный для записи и запуска программ. К счастью, компания Microsoft "предоставила" много каталогов с такими разрешениями, используемыми по умолчанию.
Виртуальные каталоги сервера 1IS, представленные в табл. 5.4, помечены как доступные для выполнения. Соответствующие им физические каталоги (также перечисленные в табл. 5.4.) по умолчанию имеют разрешения Read, Write, Execute и Delete (RWXD).
После анализа заданных по умолчанию разрешений становится очевидно, что сервером может быть выполнен любой ложный исполняемый файл, расположенный в любом из этих каталогов. У взломщика имеется лишь одно препятствие: удаленно поместить в какой-либо из этих каталогов требуемый исполняемый файл.
На самом деле это совсем не трудно, как может показаться на первый взгляд. Для этих целей можно воспользоваться открытыми для совместного использования разделами жесткого диска, неудачно организованными каталогами FTP, которые перекрывают каталоги, представленные в табл. 5.4. Для решения поставленной задачи можно воспользоваться также недостаточно защищенными командами удаленного управления (например, telnet), методами PUT протокола HTTP или даже средствами авторизации в Web, предоставляемыми приложением FrontPage.
Предположим, что взломщику удалось воспользоваться какой-нибудь из перечисленных возможностей и успешно загрузить утилиту sechole и связанные с ней библиотеки DLL в один из каталогов, представленных в табл. 5.4. И что теперь? Поскольку эта программа запускается из командной строки, то взломщику необходимо поместить в тот же каталог и командный интерпретатор (в системе NT командный интерпретатор, cmd.exe, находится в каталоге %windir%\system32).

Таблица 5.4. Виртуальные каталоги сервера US, имеющие по умолчанию разрешения Execute, к соответствующие им физические каталоги

Виртуальный каталог
Физическое расположение
/W3SVC/l/ROOT/msadc
C \program f iles\common\system\msadc
/ W3 SVC /1/ROOT/News
C \InetPub\News
/W3SVC/l/ROOT/Mail
C \InetPub\Mail
/W3 SVC/1/ROOT/ cgi -bin
C \InetPub\wwwroot\cgi-bin
/W3 SVC/1/ROOT/ scripts
C \InetPub\scripts
/W3SVC/1/ROOT/ iisadmpwd
С \WINNT\System32\inetsrv\iisadmpwd
/W3SVC/l/ROOT/_vti_bin
(Отсутствует, если не установлены расширения FrontPage)
/W3SVC/l/ROOT/_vti_bin/ vti_adm
(Отсутствует, если не установлены расширения FrontPage)
/W3SVC/l/ROOT/_vti_bin/_vti_aut
(Отсутствует, если не установлены расширения FrontPage)

Однако не будем торопиться. Выше уже упоминалось, что утилита sechole добавляет пользователя в локальную или доменную группу администраторов. Если же она была запущена посредством Web-броузера, то в группу администраторов будет добавлена учетная запись 1изп_имя_машины. А это не очень хорошо, поскольку этой учетной записи назначается случайный пароль, который взломщику придется подбирать при удаленной регистрации. Как же в группе администраторов создать новую учетную запись пользователя с паролем, который выбрал сам взломщик? Это просто осуществить с помощью встроенной команды net localgroup. Создайте простой командный файл (например, с именем adduser.bat) со следующей строкой:
net user mallory qpensesame /add && net localgroup administrators mallory /add
После того как в требуемый каталог помещены утилита sechole, связанные с ней динамически подключаемые библиотеки, командный интерпретатор cmd.exe и файл adduser.bat, для его запуска взломщику достаточно ввести соответствующий адрес URL в Web-броузере, подключенном к удаленному компьютеру. В примере, показанном на рис. 5.4, утилита sechole была помещена в виртуальный каталог /WSSVC/I/ROOT/SCRIPTS (т.е. в физический каталог C:\inetpub\SCRiPTS), а затем запущена с помощью соответствующего адреса URL.



Рис. 5.4. Взлом удаленной системы с помощью утилиты sechole

Далее вместо того чтобы регистрироваться с использованием учетной записи IUSR, пароль которой пока неизвестен, взломщик добавит нового пользователя с помощью файла сценария adduser.bat, запущенного в броузере с использованием следующего сложного адреса URL.
http://192.168.202.154/scripts/cmd.exe?/c%20c:\inetpub\scripts\adduser.bat
Подстрока %20 интерпретируется Web-сервером как символ пробела, что приводит к преобразованию адреса URL в команду, которая выполнится на удаленном узле (команда cmd /с будет передавать команды, содержащиеся в файле adduser.bat, командной оболочке).
Теперь, когда учетная запись IUSR внесена в группу администраторов и добавлен новый пользователь с привилегиями администратора, взломщик стал "владельцем" Web-сервера.

Контрмеры: защита от применения утилиты sесhо1е


Существует два простых метода защиты как от утилиты sechole, так и от удаленного выполнения команд в Web. Во-первых, установите самый последний сервисный пакет (6А или более новый). Для систем, на которых установлен сервисный пакет SP5, можно воспользоваться модулем обновления. Более подробную информацию можно получить в статье KB Q190288. Затем, независимо от того, волнует ли вас проблема sechole или нет, запретите доступ для записи в каталоги сервера Internet, в которых содержатся исполняемые файлы (см. табл. 5.4). Для этого проще всего заблокировать доступ к портам TCP и UDP сервера с номерами 135-139 и, таким образом, исключить доступ к совместно используемым ресурсам Windows. Если доступ с использованием протокола SMB заблокирован, обязательно убедитесь в том, отключен также доступ на запись по протоколу FTP.
Еще один метод решения проблемы заключается в отключении разрешений Execute для виртуального Web-сервера. Они могут устанавливаться глобально в группе параметров Application Settings во вкладке Home Directory диалогового окна свойств Default Web Site Properties, доступ к которому можно получить с помощью консоли управления Microsoft (рис. 5.5).
Свойства других каталогов можно установить отдельно, в стандартном окне свойств, которое появляется на экране после щелчка правой кнопкой мыши на соответствующей пиктограмме в окне проводника Windows. В открывшемся окне свойств перейдите во вкладку Web Sharing и щелкните на кнопке Edit Properties (см. рис. ниже).



Рис. 5.5. Вкладка Ноте Directory диалогового окна свойств виртуального Web-сервера, на которой отключены разрешения Execute


После щелчка на кнопке 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.
Воспользуемся утилитой hk от группы RAZOR и добавим в группу администраторов пользователя mallory, входящего в состав группы Backup operators и имеющего разрешение на интерактивную регистрацию.
Во-первых, с помощью утилиты whoami из пакета NTRK убедимся, что пользователь mallory действительно принадлежит к группе Backup Operators, а не администраторов.

С:\>whoami
[Group 1] = "IIS47\None"
[Group 2] = "Everyone"
[Group 3] - "BUILTIN\Users"
[Group 4] = "BUILTINXBackup Operators"

Кроме того, удостоверимся в том, что пользователь Mallory не может добавить себя п группу администраторов самостоятельно.

C:\>net looalgroup administrators mallory /add
System error 5 has occurred.
Access is denied,

Теперь воспользуемся командой net use совместно с утилитой hk.

C:\>hk net localgroup administrators mallory /add
Isass pid & tid are: 47 - 48
NtlmpersonateClientOfPort succeeded
Launching line was: net localgroup
administrators mallory /add
Who do you want to be today?

Теперь Мэлори (Mallory) принадлежит к группе администраторов, как видно из приведенного листинга.

C:\>net localgroup administrators
Alias name administrators
Comment Members can fully administer the computer/domain
Members
-------------------------
Administrator mallory
The command completed successfully.

Применяйте модули обновления!


Компания Microsoft выпустила модуль обновления сервисного пакета SP6A, который изменяет вызов функции проверки достоверности, входящей в состав программного интерфейса с портами LPC. Этот модуль обновления можно найти в бюллетене MS00-003 компании Microsoft по адресу http://www.microsoft.com/technet/security/bulletin/ms00-003.asp.
Не лишним будет еще раз повторить, что это модуль обновления сервисного пакета SP6A. Многие организации предпочитают ожидать выпуска следующего сервисного пакета. Такая позиция довольно безрассудна, поскольку до того, как компания Microsoft выпустит сервисный пакет SP7, компьютеры таких компаний остаются уязвимыми для взломщиков. Если SP7 никогда не выйдет в свет, эта ситуация не изменится до тех пор, пока не будет выполнено обновление до Win 2000. Так что лучше всего воспользоваться модулями обновления!
Теперь перейдем к рассмотрению некоторых других методов, с помощью которых взломщик может запустить утилиты getadmin, sechole, besysadm, hk и другие программы, предназначенные для расширения привилегий.

"Троянские кони" и параметры реестра


Основной принцип расширения привилегий заключается в том, чтобы ввести в заблуждение других пользователей (лучше всего администратора) и выполнить код, который позволит учетной записи взломщика получить привилегии суперпользователя. Аналогичный подход состоит во внедрении какого-либо кода, который будет выполнен при наступлении некоторого обычного события в системе (например, в процессе перезагрузки). Обе из этих стратегий, а также методы борьбы с ними, обсуждаются ниже.

Многие из описанных ниже методов гораздо глубже и полнее освещаются на страницах прекрасного 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
Таким образом, администратор собственноручно внес учетную запись взломщика в группу Administrators.

Контрмеры: защита от "троянских коней"


Хотя предлагаемые контрмеры и не обеспечивают стопроцентной защиты, все же будьте внимательны при запуске приложений. Обращайте внимание на различные аномалии (например, быстро промелькнувшее окно командной строки в момент вызова полноценной программы Windows).
При выявлении "троянских коней" могут оказаться полезными некоторые средства. К ним относятся встроенные утилиты, например dir, которая при использовании параметра /С выводит размер файлов, а при указании параметра /Т также время его создания, последнего доступа и последней модификации. Команду dir использовать гораздо лучше, чем проводник Windows, поскольку она не изменяет временные параметры файлов. Можно воспользоваться также мощными коммерческими программами защиты файловой системы, например программой Tripwire от компании Tripewire, Inc. (см. табл. 5.2). Эта программа создает для файлов зашифрованные контрольные суммы, так что с ее помощью можно выявить любые изменения.

Подсистема защиты файлов системы Win 2000 (WFP — Windows File Protection) обеспечивает хранение резервных копий около шестисот важных файлов в каталоге %windir% и предотвращает их от перезаписи.

Поскольку "троянских коней" очень трудно обнаружить (особенно те из них, которые выполняют модификацию самого ядра NT), стоит поддерживать максимальные меры предосторожности. А именно, создавайте резервные копии своих данных, переустанавливайте операционную систему и все приложения только с проверенных носителей информации. Некоторые из наиболее коварных "троянских коней", называемых наборами rootkit, будут рассмотрены ниже в данной главе.

Параметры реестра, обеспечивающие выполнение программ


Еще одним хорошим методом скрытого запуска командного файла является использование специальных значений в системном реестре NT. В зависимости от разрешений пользователя, под именем которого взломщик проник в систему, ему могут быть доступны некоторые из таких параметров системного реестра. Помните, что удаленный доступ к системному реестру могут получить только администраторы, а на консоли сервера могут зарегистрироваться лишь несколько пользователей из встроенных учетных записей NT. Поэтому вероятность того, что взломщику удастся воспользоваться описанным здесь способом, очень мала. Ему повезет только в том случае, когда используемая им учетная запись входит в группу Server Operators. В табл. 5.5 перечислены некоторые параметры системного реестра и разрешения, установленные для них по умолчанию, которыми могут воспользоваться взломщики для запуска программ.

Таблица 5.5. Параметры системного реестра, которые можно использовать для вызова программ, расширяющих привилегии пользователя

Параметр
Разрешения по умолчанию
Значение, позволяющее запуск
HKLM\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run
Everyone: Set Value
[любое]
HKLMX SOFTWARE \Microsoft\Windows\ CurrentVersion \RunOnce
Server Operators: Set Value
[любое]
HKLMX SOFTWARE \Microsoft\Windows\ Cur rent Version \RunOnceEx
Everyone: Set Value
[любое]
HKLMX SOFTWARE\Microsoft\WindowsNT\ CurrentVers i on \ AeDebug
Everyone: Set Value
Debugger
HKLMX SOFTWARE\Microsoft\WindowsNT\ CurrentVer si on XWinlogon
Server Operators: Set Value
Userinit

Защита параметров системного реестра


С использованием редактора системного реестра regedt32 для этих параметров необходимо задать следующие разрешения.

  •  CREATOR OWNER: Full control
  •  Administrators: Full Control
  •  SYSTEM: Full control
  •  Everyone: Read
Подобная настройка может повлиять на работоспособность некоторых приложений. Поэтому сначала удостоверьтесь, что внесенные изменения не отразились на функциональности системы. Кроме того, не забывайте о том, что описанные выше параметры системного реестра зачастую используются для скрытого запуска приложений во время загрузки, о чем более подробно вы узнаете ниже в данной главе.

Несколько заключительных слов о расширении привилегий


Теперь у вас не вызывает сомнений тот факт, что расширить привилегии чрезвычайно сложно. Единственное, что может помочь взломщику, — это грубые ошибки в настройке системы или же получение доступа к учетной записи, которая и так обладает достаточно высокими привилегиями (например, является членом группы Server Operators). Далее мы рассмотрим самый худший (с точки зрения безопасности) сценарий -— взломщик получил доступ к системе на уровне администратора.