КОЛЛЕКЦИЯ ОТПЕЧАТКОВ OS fingerprints - определение ОС удаленной системы

Спецвыпуск Xakep, номер #023, стр. 023-014-3


Поле ACK из TCP-пакета. На закрытый TCP-порт отправляется FIN|PSH|URG-пакет с известным значением ISN в поле ISS. Большинство ОС скопируют значение ISN, прибывшее в ISS, в поле ACK ответа. Однако ОС Windows и некоторые сетевые принтеры отправят в поле ACK ответа ISN+1. Если же послать SYN|FIN|PSH|URG-пакет, поведение Windows предсказать трудно. Иногда эта ОС отправляет в поле ACK ответа прибывший ISN, иногда — ISN+1, иногда — по всей видимости, случайное значение. Остается только догадываться, какой код написала Microsoft для обработки подобной ситуации.

Скорость генерации ICMP-пакетов. Стандарт RFC 1812 рекомендует ограничивать количество отправляемых ICMP-сообщений об ошибках. Так Linux, следуя данной рекомендации, позволяет только до 80 сообщений в 4 секунды с простоем в четверть секунды, если это значение было превышено. Замечу, что проведение данного теста требует много времени и создает большую нагрузку на канал.

Этот список можно продолжать и продолжать, но давай в этой маленькой статье рассмотрим и другие способы.

СЕТЕВЫЕ СЛУЖБЫ

Eсли мы посмотрим, какие службы "торчат" из исследуемой осы, то мы можем с большой вероятностью угадать тип ОСи, стоящей на компе. Так понятно, что служба identd/auth (113) работает обычно только на nix'ах. Для ручной проверки запускаем любой сканер сетевых служб и смотрим результаты. А дальше чешем репу и пытаемся вычислить операционку на основе этих результатов.

СТАНДАРТНЫЕ СЕТЕВЫЕ СЛУЖБЫ

На рабочем сервер всегда запущена куча стандартных служб (сервер же не только комнату обогревает, он еще и делает что-то полезное). Так почти всегда на сервере можно найти http, ftp, smtp и pop3 сервер. Если мы узнаем, какие программы используются для обслуживания этих сервером, то мы опять же легко вычислим тип операционной системы. Так если мы обнаружили, что на сервере стоит IIS, то ОС, скорее всего, винды, а sendmail, скорее, крутится под nix'ом. Также у многих служб можно просто спросить версию операционной системы. Даже если версию ОС мы не узнали, а узнали только версию http-сервера, то этого может быть вполне достаточно для запуска exploit'а.

HTTP

Простейший ручной способ для получения инфы по http-серверу – telnet <host> 80, далее HTTP / GET/1.0{Enter}, в первых строчках ответа будет название http-сервера.

FTP

Для получения инфы от ftp – telnet <host> 21, в ответе от сервера будет названия FTP-сервера, далее залогинившись и набрав команду SYST можно узнать версию операционной системы (но большинство nix уже давно возвращает липовую версию, обычно это - UNIX Type: L8 ;).

SMTP/POP3

telnet <host> smtp, в ответе опять же присутствует название smtp-сервера. Все то же самое и для pop3-сервера: telnet <host> pop3. У nix'овых серверов можно также запросить инфу у identd/auth-сервиса.

Сразу предупреждаю, что все эти простейшие способы известны давно и поэтому админы (особенно nix'овые) сразу меняют данные заголовки на что-нибудь непотребное. Кроме выше перечисленных прямых методов можно использовать косвенные: какие фичи поддерживаются данными программами, файлы с какими расширениями используются, есть/нет шифрование/архивация трафика, какие методы используются для идентификации пользователя и т.д. Ручные способы: меняем регистр запроса (вместо <host>/index.htm пишем <host>/Index.htm), если все прошло без ошибок – значит сервер Windows, иначе - nix, то же самое можно проделать и на ftp. Также можно посмотреть, файлы с каким расширением использует http-сервер для генерации страничек, так расширение asp/aspx с головой выдает Windows, а cgi/bin чаще используется под nix-ами (ну это уже совсем примерно, сойдет разве что для проверки и подтверждения уже определенной OC – прим. ред.).

Назад на стр. 023-014-2  Содержание  Вперед на стр. 023-014-4