Алгоритмы анализа удаленной системы (продолжение)
Passive fingerprinting
Итак, идея passive fingerprinting-а заключается в анализе информации, доступной без непосредственного воздействия на исследуемую систему. Существующие на сегодняшний день методы можно разделить на анализ сетевого трафика и анализ информации уровня приложений.
Метод анализа проходящих пакетов
--------------------------------В сигнатуру пакета, на основе которой предпологается производить определение ОС входят следующие поля:
- TTL - здесь ситуация совпадает с описанной несколько выше (в разделе об анализе TTL с помощью утилиты ping).
- Window Size - размер TCP-окна это количество пакетов, которое может послать отправитель без прихода подтверждения от получателя. Оно может меняеться в зависимости от качества связи. Различные ОС используют различные начальные значения этого параметра и различные алгоритмы его модификации. Так, например, Linux, Solaris, FreeBSD поддерживают более-менее постоянное значение, а Cisco и Windows непрерывно его модифицируют.
- DF - этот флаг TCP-пакета используется для запрета его фрагментации. Практически все ОС устанавливают его, однако некоторые (такие как OpenBSD или SCO-Unix) не делают этого.
- TOS - это поле определяет желаемые характеристики соединения (скорость, качество, дешевизну), и его анализ так же может помочь в определении ОС.
- ID - первоначальное (при установке соединения) значения этого поля также различно для разных операционных систем.
При применении данного метода следует использовать статистический подход - накапливать информацию, относящуюся к одному соединению, а затем определять по заранее составленным таблицам наиболее вероятную ОС.
Анализ проходящего трафика на менее глубоком уровне также может дать некоторую информацию - например какими сервисами каких удаленных систем пользуется система, относительно которой производится сбор информации. Удобным в установке и настройке сниффером (инструментом для анализа проходящих пакетов) является snort (www.snort.org).
Application level passive fingerprinting
----------------------------------------Другим подходом к пассивному анализу удаленной системы является анализ информации уровня приложений. Он может осуществляться как на основе анализа проходящего трафика (как в предыдущем методе), так и на основе анализа информации, получаемой серверными приложениями исследующей системы от различных удаленных клиентов. Примером последнего метода могут послужить decoy server-ы - способ определения атак на систему путем подмены обычных серверных приложений (таких, как ftp, http, smtp, pop3 сервера) на приложения, выполняющие их функции и попутно регистрирующие нетипичную деятельность клиента.
Рассмотрим, какую информацию об удаленной системе можно получить, анализируя взаимодействие ее клиентского програмного обеспечения с серверным.
Ping-payload
------------Принцип работы утилиты ping основан на посылке ICMP пакета ICMP-Echo, содержащего произвольные данные, на который хост-адресат отвечает пакетом ICMP-Echo-Reply, содержащим те же самые данные. Время между отправкой ping-пакета и получением ответа на него и является временем отклика удаленной системы. С точки зрения пассивного анализа, интерес представляет способ генерации, данных заполняющих пакет. Различные операционные системы используют различное наполнение. Так, в случае Win2K, содержимое пакета будут составлять строчные символы латинского алфавита ("abcde...xyzabcd..."), а в случае RedHat 6.1 в содержимом будут и цифры, и специальные символы. Эти отличия позволяют попытаться распознать операционную систему ping-ующего хоста.
HTTP
----Данный протокол позволяет серверу получить некоторую информацию о клиентской машине, основываясь, главным образом, на составе и порядке header-ов в запросе (несущих вспомогательную информацию). Так, например, заголовок User-Agent: содержит информацию об используемом браузере, а зачастую, и о клиентской операционной системе.
Более подробную информацию о клиенте (которым, собственно, является браузер) сервер может получить, отослав клиенту html-документ, содержащий специальный javascript-код, определяющий необходимые серверу параметры и возвращающий их серверу, используя, например, механизм CGI. На этом основывается работа многочисленных баннерных сетей и счетчиков. Хорошим примером подобного javascript-кода может служить счетчик spylog-а. Однако подобная техника не может считаться полностью пассивной, так как может быть опознана на клиентской стороне.
FTP
---Несмотря на кажущуюся простоту, и этот протокол позволяет серверу достаточно точно определить клиентское программное обеспечение. При успешном соединении клиент в начале ftp-сессии подает некоторые из следующих команд: AUTH, USER, PASS, PWD, PORT, SYST, EPSV, PASV, LIST, CWD. То, какие именно команды и в каком порядке он подает, позволяет уверено различать многих клиентов:
- линукс-клиент (AUTH, USER, PASS, SYST, PORT)
- стандартный Windows-клиент (USER, PASS, PORT)
- клиент, встроенный в Far (USER, PASS, PWD)
- FreeBSD-клиент (USER, PASS, SYST, EPSV)
- MSIE (USER anonymous, PASS IEUser@, TYPE I, PASV, CWD)
- Go!Zilla (USER anonymous, PASS gozilla@anon.com, PASV, LIST)
- ReGet (USER anonymous, PASS User@x-x-x-xxx.ReGet.Com, SYST)
Telnet
------Протокол telnet предписывает обмен определенными параметрами между серверной и клиентской сторонами при установке соединения. Различные реализации имеют различные наборы параметров и их порядок в наборах, что позволяет определить клиентское програмное обеспечение.
SMTP/POP3/NNTP
--------------Служебные заголовки сообщений электронной почты дают обильную информацию об источнике и процессе пересылки письма. Анализируя их, исследователь может получить список хостов внутри сети исследуемой системы, участвующих в процессе пересылки почты, и сделать некоторые предположения относительно правил маршрутизации почты в исследуемой подсети. В заголовках всегда фигурирует ip или hostname источника письма. Рассмотрение таких полей, как Message-ID, X-Mailer, User-Agent дает возможность определить клиентское программное обеспечение, использованное при написании и отсылке письма (вплоть до номера версии) и, часто, операционную систему клиента. Например:
Message-ID: <PINE.LNX.4.10.XXXXX...> X-Mailer: QUALCOMM Windows Eudora Version 4.3.2 X-Mailer: Microsoft Outlook Express 5.00.3018.1300Аналогичную информацию можно получить, анализируя заголовки новостных сообщений (NNTP). Здесь наиболее выразительными являются User-Agent, X-Http-User-Agent, X-Mailer, Message-ID, X-Newsreader, X-Operating-System.