Узнай по отпечаткам Павел П. aka UkR-XblP Хакер, номер #070, стр. 070-068-2 * OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc. See COPYING for distribution information. Здесь есть информация о типе сервера (Courier IMAP server), но нет никаких сведений о его версии. Именно это заставило хакеров составлять целые списки подобных приветствий с целью поиска различий между версиями. Если посмотреть на базу отпечатков сервисов популярного сетевого сканера Nmap (Feodor, www.insecure.org), легко видеть, как это практически реализовано. В нашем примере оказалось, что баннер от версии к версии меняется незначительно - модифицируются только даты в копирайтах. Одной цифры уже достаточно, чтобы можно было судить о версии IMAP. Так 1998-2001 годам соответствуют версии 0.36 - 1.4, 1998-2002 - 1.4 - 2.3, а 1998-2003 - 1.6.X - 1.7.X. Подобные фишки заставляют сисадминов изменять приветственные сообщения серверов. Нередко можно встретить в качестве баннеров что-то вроде "Kiss me, darling!" :). Вопрос - ответ Другим и самым действенным методом определения типа сервиса является анализ кодов или полностью содержания ответов сервера. То есть, посылая, к примеру, несуществующую команду, мы можем ожидать сообщения об ошибке, о том, что такой команды не существует, о том, что сервер не может ее распознать, и многое другое, в зависимости от производителя. А все потому, что в RFC определены лишь возможные коды, но не текст, который их описывает. Как сказано в RFC, IMAP серверы, в зависимости от команды, могут давать следующие варианты: OK, NO или BAD. Но вот насчет их описания нет ни слова. Это и дает возможность определить с высокой долей вероятности тип сервера. Давай не будем забираться в теорию, а лучше посмотрим, как это работает на практике. Если при аутентификации послать серверу нечто вроде "LOGIN UST FINGERPRINT", сервер вернет нам, если мы имеем дело с Cyrus IMAP4 server, "NO Login incorrect", а если с Courier IMAP Server, - то "NO Login failed". Может показаться, что этого достаточно, но это не так. Английский язык не так богат, как наш великий и могучий, к тому же производители стремятся к лаконичности и стандартности. Netscape Messaging Server даст на ту же самую команду ответ, аналогичный ответу Cyrus IMAP4, а UW Imapd Server ответит так же, как Courier IMAP. Но ведь мы можем послать несколько разных команд, и наверняка найдется такая, в ответе на которую появится отличие. Соответственно, чем больше мы спросим сервер, тем точнее сможем определить не только тип, но и версию сервиса. Чтобы идти дальше, необходимо представлять себе работу IMAP-сервера. Она схематично приведена на картинке: Снимаем отпечатки До процесса авторизации нам доступны лишь команды LOGIN, AUTHENTICATE, NOOP (применяется для поддержки активности во время сеанса, не производит никаких действий с ящиками или сообщениями) и LOGOUT. На основании этой схемы уже понятно, что возможности наши очень узки. Выбор есть, но он слишком невелик. Какие-либо команды сервер воспринимает только после аутентификации. Итак, вот методы, которые можно использовать для идентификации практически любых сервисов. |