NETCAT и CRYPTCAT
Захват службы
Перейдите к системному журналу в вашей любимой операционной системе и запустите команду netstat -a -n. Посмотрите на первые строчки вывода. Вы увидите нечто подобное этому.
Proto Recv-Q Send-Q LocalAddress ForeignAddress (state) tcp4 0 0 *.6000 *.* LISTEN tcp4 0 0 *.80 *.* LISTEN tcp4 0 0 *.22 *.* LISTEN tcp4 0 0 *.23 *.* LISTEN tcp4 0 0 *.21 *.* LISTEN tcp4 0 0 *.512 *.* LISTEN tcp4 0 0 *.513 *.* LISTEN tcp4 0 0 *.514 *.* LISTEN
Последние три строчки - это удаленные службы ( rlogin, rexec, и т.д.), которые могут стать отличной находкой для взломщика, поскольку они незащищены. Вы также можете обратить внимание, что запущены службы telnet, FTP, X Windows, Web, и SSH. Что еще можно узнать? Обратите внимание на символ * у каждой из служб в локальном адресе. Это означает, что все эти службы не ограничены работой с конкретным IP-адресом. Ну и что?
Как оказалось, многие IP-клиенты, пытаясь соединиться со службой по конкретному IP-адресу, предварительно прослушивают все IP-адреса. Попытайтесь выполнить следующую команду.
[root@originix nc] ./nc -l -v -s 192.168.1.102 -p 6000
Теперь запустите на выполнение еще один экземпляр netstat. Вы увидите следующее.
Proto Recv-Q Send-Q LocalAddress ForeignAddress (state) tcp4 0 0 192.168.1.102.6000 *.* LISTEN tcp4 0 0 *.6000 *.* LISTEN
Посмотрите! Вы теперь прослушиваете порт перед X-сервером. Если вы имеете доступ к компьютеру, как пользователь root, вы можете прослушивать порты с номерами менее 1024 и перехватывать такие сервисы, как telnet, Web и другие ресурсы. Но особенно интересны приложения для аутентификации, совместного использования файлов и другие, которые используют большие по номерам порты. Постоянные пользователи вашей системы могут, к примеру, перехватить RADIUS -сервер (который обычно выполняется на порту UDP с номером 1645 или 1812) и запустить команду Netcat с опцией -o для получения шестнадцатеричных протоколов всех попыток аутентификации. Они всего лишь перехватят все пользовательские имена и пароли, не имея при этом полномочий пользователя root. Конечно, пользователи довольно быстро поймут, что служба не отвечает, и "подрывная" деятельность будет раскрыта. Но если пираты хоть что-то знают о службе, которую они перехватили, они могут изобразить псевдослужбу (выдавая поддельные ответы на запрос) или перенаправить запросы на какую-нибудь еще службу.
[root@originix nc] ./nc -l -v -s 192.168.1.102 -p 1812 -e nc_to_radius
где nc_to_radius - это скрипт, который выглядит примерно так:
#!bin/sh DATE='date "+%Y-%m-%d_%H.%M.%S"' /usr/bin/nc -o hexlog-$DATE slave-radius 1812
slave-radius в данном случае имя хоста вторичного RADIUS -сервера в сети. Запуск Netcat на прослушивание таким образом, чтобы он перезапускался после каждого соединения, дает теоретическую возможность перехватить всю информацию, передаваемую в процессе аутентификации (сохранив все в отдельных файлах) и при этом уберечься от того, чтобы кто-нибудь сразу понял, что что-то не так. Этот прием просто записывает информацию в процессе передачи ее на резервный RADIUS -сервер. Может, и не просто заставить это работать, но все же возможно.
Прокси и релей
Вы можете использовать тот же самый прием, что и в предыдущем разделе, для создания прокси или релея на базе Netcat. Netcat в режиме прослушивания может быть использован для запуска вторичного Netcat -соединения, соединенного с другим хостом или портом, осуществляя тем самым релей.
Использование этой возможности требует некоторых навыков написания скриптов. Поскольку с помощью опции -e Netcat может выполнить только одну команду (без аргумента в командной строке), вам потребуется упаковать все команды, которые вы хотите выполнить, в скрипт. С помощью такого подхода вы можете сделать интересную штуку, создав релей, который охватывает несколько разных хостов. Этот прием можно использовать для создания сложного "туннеля", давая возможность взломщикам осложнить выслеживание их системным администратором.
Эта возможность с таким же успехом может быть использована в благих целях. Возможность релея позволяет использовать Netcat, как прокси для web-страниц. Запустите его на прослушивание 80-го порта на другой машине и дайте возможность осуществлять все ваши web-соединения (используя скрипт) и передавать их далее.
Вокруг сетевых фильтров
Netcat может использоваться для проникновения через брандмауэры. Маскировка запрещенного сетевого трафика под разрешенный - единственный способ обойти брандмауэры или фильтры портов.
Некоторые брандмауэры разрешают входящий трафик от источника по 20 порту, который во внутренней сети передается адресату по более высоким номерам портов для обеспечения передачи файлов по FTP. Атака с использованием команды
nc -p 20 targethost 6000
позволит обеспечить доступ к X-серверу на хосте targethost, если брандмауэр плохо сконфигурирован. Таким способом можно имитировать ваше соединение как входящий FTP-запрос и проникнуть внутрь. Конечно, вы сможете получить доступ только к определенному подмножеству портов. Большинство администраторов брандмауэров исключают порт с номером 6000 из числа доступных портов, но вы по-прежнему можете искать другие службы, работающие на портах с номерами больше 1024, которые ответят на входящий запрос по порту с номером 20.
Подобные проблемы есть и у службы DNS. Практически все брандмауэры разрешают исходящие запросы DNS, но не обязательно разрешают входящие. Если вы работаете за брандмауэром, который разрешает и то и другое, вы можете использовать это, чтобы направить запрещенный трафик через брандмауэр, используя исходящий номер порта 53. Из-за брандмауэра, запустив команду
nc -p 53 targethost 9898
, вы сможете пройти фильтр, который обычно запрещает исходящий трафик персонального менеджера сообщений сети AOL (AOL Instant Messenger). Этим можно удовлетвориться, но вы можете увидеть, как с помощью Netcat можно воспользоваться плохо написанными правилами для брандмауэра.
Системные администраторы могут захотеть проверить промахи вроде этих. Для начала, вы запрещаете любой DNS- TCP -трафик, что позволяет закрыть многие проблемы с фильтрацией DNS. Заставляя пользователей использовать пассивный FTP, который не требует сервера для инициализации TCP-соединения с клиентом по порту с номером 20, вы полностью исключаете возможность проникновения в систему описанным выше способом.