Россия, Москва, Московский Государственный Открытый Университет, 2007 |
Сканеры портов
WUPS
Поскольку FScan и nmap осуществляют TCP- и UDP-сканирование и работают на всех платформах, мы лишь упомянем еще о двух сканерах, которые могут работать с протоколом UDP. В начале мы рассмотрим Windows UDP-сканер WUPS. Этот сканер можно загрузить по адресу http://ntsecurity.nu/toolbox/wups/.
Реализация
Одно из замечательных свойств WUPS - удобный графический интерфейс, показанный на рис. 6.9. Как и с другими UDP-сканерами, фильтры пакетов, перехватывающие сообщения " port unreachable ", могут вернуть ложную положительную информацию для сканирования. Другой недостаток WUPS - возможность одновременно обрабатывать только один IP-адрес. На рис. 6.9 мы представляем процесс сканирования портов от 1 до 1024 по адресу 192.168.1.102 с задержкой по времени 100 миллисекунд. Видно, что по адресу 192.168.1.102 отзывается Windows-машина, поскольку на портах 137 и 138 выполняется NetBIOS, а на порту 445 SMB поверх IP-протокола, также являющийся службой Microsoft.
UDP_SCAN
Udp_scan - часть старой программы SATAN. Это UDP-сканер для Unix, выполняющийся из командной строки. Он может быть загружен отдельно от SATAN вместе с таким же tcp-сканером tcp_scan по адресу ftp://ftp.porcupine.org/pub/security/port-scan.tar.gz. Udp_scan, как и другие TCP-сканеры для Unix, называемые индикаторами, имеет все требуемые функции, но был отодвинут на задний план более новыми программами.
Установка
Как и большинство Unix-программ, udp_scan поставляется в исходных кодах. После загрузки и распаковки архива port-scan.tar.gz вам потребуется войти в директорию с исходными текстами и выполнить команду make.
Реализация
Использование Udp_scan очень просто; введите IP-адрес и интервал портов и запустите на выполнение.
# ./udp_scan 192.168.1.102 1-1024 37:netbios-ns: 138:netbios-dgm: 445:UNKNOWN: 500:UNKNOWN
Udp_scan использует изощренную технику оптимизации сканирования. Сначала (по умолчанию) он посылает UDP-пакет по адресу 1 порта UDP сканируемого хоста. Затем он ожидает получения сообщения " ICMP port unreachable error". Если оно не приходит, он делает вывод о том, что хост не работает (если только брандмауэр не блокировал передачу этого сообщения), и не продолжает сканирование этого хоста. Сканирование 1-го порта UDP можно изменить, воспользовавшись опцией -p port. Тестируемый порт всегда должен быть портом UDP, который не будет использоваться каким-либо сервисом на сканируемом хосте.
Udp_scan аккуратно отслеживает свою деятельность в сети при сканировании. По умолчанию он может открыть до 100 одновременных UDP-соединений (вы можете изменить эту верхнюю цифру, используя флаг -l <max_connections> в командной строке). Он использует анализ времени возврата своих пакетов, определенных в начальной фазе тестирования, чтобы вычислить максимальное количество одновременно выполняемых тестов, которое возможно в данной сети. Каждый UDP-пакет, посланный udp_scan, содержит только один байт данных (символ "0") с целью минимизации загрузки полосы пропускания и получения наиболее достоверного результата. Некоторые UDP-службы и фильтры портов по-разному реагируют на UDP-пакеты без данных, поэтому UDP-пакеты сопровождаются полезной нагрузкой.
Есть только несколько опций, которые вы можете использовать с udp_scan. Опция -a сообщает программе о необходимости выводить все сообщения об ошибках, так же как и о протестированных UDP-портах. Опция -u указывает, что в случае получения ICMP-сообщения " host unreachable " необходимо вывести номер UDP-порта, который вернул ошибку. С другой стороны, опция -U выдаст вам совершенно противоположное сообщение, выведя сообщения о портах, для которых не были получены ICMP-сообщения об ошибках " host unreachable ". Еще только с помощью одной опции для udp_scan можно определить, какой UDP-порт использовать на сканирующей машине, задав в командной строке параметр -s <source_port>.
У Udp_scan есть несколько ограничений в использовании. Поскольку он использует ICMP-сокеты, udp_scan может быть запущен только root-пользователем или с полномочиями суперпользователя ( uid 0 ). Как и WUPS, одновременно он может поддерживать соединение только с одним IP-адресом.
Пример из жизни. Порты пишут картину
Используя сканер портов, мы можем быстро получить карту различных служб, запускаемых на удаленном хосте. Если мы устанавливаем TCP-соединение по порту 80 и получаем ответ, есть шансы, что на хосте работает Web-сервер. Анализируя ответ, мы можем проверить это предположение. Сканер порта дает нам информацию, необходимую при идентификации целевых хостов. Идентификация служб, проводимая на хосте, говорит нам о цели хоста и подскажет несколько мест, которые мы можем проверить на слабость. При ожидании на каждом открытом порте можно сказать, что уязвимая служба просто ждет, чтобы ее использовали.
Поскольку различные операционные системы приходят с различными инсталлированными службами, работающими по умолчанию, иногда только выходная информация со сканирования порта может помочь в идентификации операционной системы хоста. Давайте проведем сканирование порта машины в моей сети и посмотрим, что мы найдем.
[bjohnson@originix nmap-2.54BETA30]$ ./nmap 192.168.1.100 Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on (192.168.1.100): (The 1541 ports scanned but not shown below are in state: closed) Port State Service 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 80/tcp open http 1024/tcp open kdm 1030/tcp open iad1 6000/tcp open X11 8888/tcp open sun-answerbook Nmap run completed - 1 IP address (1 host up) scanned in 1 second [bjohnson@originix nmap-2.54BETA30]$
Выглядит так, как будто на этой машине работает множество обычных подозрительных программ FTP, SSH, telnet и Web. В конечном счете, мы захотим увидеть, что произойдет, когда мы запустим FTP-, telnet- или Web-броузер на этом хосте. Но что это за последняя запись - sun-answerbook? После небольшого исследования мы находим, что эта служба обычно инсталлируется по умолчанию и запускается при запуске большинства систем Sun. Выглядит так, как будто мы нашли хост Sun Solaris.
Но не так быстро. Просто потому, что пришел ответ на порт 8888 (порт, используемый службой Answerbook ), не факт, что это действительно Answerbook! Это может быть что угодно: Web-сервер, FTP-сервер или черный ход, установленный хакером! Оказывается, системный администратор установил средство Netcat (см. лекцию "NETCAT и CRYPTCAT" ), чтобы прослушивать порт 8888, в качестве своеобразной ловушки. Системный администратор может обмануть неопытного хакера, и тот может подумать, что Linux-машина - это на самом деле хост Sun.