Показать сообщение отдельно

  #2  
Старый 30.09.2006, 02:28
KPOT_f!nd
Познавший АНТИЧАТ
Регистрация: 25.08.2006
Сообщений: 1,524
Провел на форуме:
3405508

Репутация: 1745


Exclamation

Цитата:
ПРОДОЛЖЕНИЕ ТЕМЫ
ICMP Time/Mask
--------------

Internet Control Message Protocol описывает ряд контрольных сообщений и способы реагирования на них, оставляя, однако, некотрую свободу в реализации ICMP на различных ОС. В числе прочих существуют сообщения ICMP Time Request (хост может ответить на него сообщением своего локального времени) и ICMP Mask Request (по спецификации ответить на него может только маршрутизатор).

Рассмотрим следующую таблицу:

Цитата:
ОС Отвечает на ICMP Time Отввечает на ICMP Mask

Windows нет да
FreeBSD да нет
Linux 1.x да да
Linux 2.x да нет
SunOS да да
Solaris да да
HPUX да да
IRIX да ?
Используя эту информацию вкупе с некотороми другими методами, можно попытаться определить ОС удаленной машины.

DNS
---
Стандартный порт - UDP 59. Изначально служба использовалась для установления соответствия меджу сетевым именем и ip-адресом хоста. Часто таблицы соответствий содержат также дополнительную информацию о хосте. В состав операционных систем UN*X, WinNT, Win2K входит стандартная утилита nslookup, являющаяся клиентом этой службы. Подсоединившись к удаленному ns-серверу, мы можем затребовать у него информацию по хосту, принадлежащему его зоне:

Цитата:
E:\FP-art>nslookup
Default Server: *.ru
Address: *.*.*.226

> www.iso.ru
Server: *.ru
Address: *.*.*.226

Name: www.iso.ru
Address: 195.146.82.43

> set querytype=ALL
> www.iso.ru
Server: *.ru
Address: *.*.*.226

Non-authoritative answer:
www.iso.ru internet address = 195.146.82.43

iso.ru nameserver = exchange.iso.ru
iso.ru nameserver = home.relline.ru
iso.ru nameserver = ns.relline.ru
exchange.iso.ru internet address = 195.146.66.195
home.relline.ru internet address = 195.146.64.42
ns.relline.ru internet address = 195.146.81.130
Более того, если ns-сервер настроен не совсем корректно (на сегодняшний день около 50% серверов являются таковыми), мы можем затребовать у него полный список всех хостов зоны вместе со всей связанной с ними информацией.

Цитата:
> server ns.relline.ru
Default Server: ns.relline.ru
Address: 195.146.81.130

> ls -d iso.ru
[ns.relline.ru]
iso.ru. SOA exchange.iso.ru admins.iso.ru.
(1999121558 28800 7200 604800 86400)
iso.ru. NS exchange.iso.ru
iso.ru. NS home.relline.ru
iso.ru. NS ns.relline.ru
iso.ru. MX 40 relay1.macomnet.ru
iso.ru. MX 50 relay2.macomnet.ru
iso.ru. MX 10 exchange.iso.ru
demoserver A 195.146.66.200
admin A 195.146.66.198
www A 195.146.82.43
exchange A 195.146.66.195
ebs A 195.146.66.197
iso.ru. SOA exchange.iso.ru admins.iso.ru.
(1999121558 28800 7200 604800 86400)
Если это удалось, то, во-первых, мы получили список хостов сети, во-вторых, на основе MX-записей (почтовых) мы можем определить основной и вторичный почтовые сервера и маршруты хождения почты (частично).

Получив некоторым образом список хостов сети, мы хотели бы вычислить ее физическую топологию. Это не всегда возможно, однако есть несколько довольно широко используемых тактик.

Traceroute
-----------

Утилита (ее версия под Win называется tracert) предназначена для определения маршрута пакета, посланного к заданному хосту. Ее работа основывается все на том же параметре TTL. В начале TTL выставляется в 1. Тогда первый же маршрутизатор, получивший его, обязан по спецификации его уничтожить. При этом он обычно (однако это не является требованием спецификации) посылает обратно уведомление - "у меня умер пакет, идущий от А к Б". Так мы получаем первый пункт маршрута. Затем устанавливаем TTL в 2. И так далее. Если мы теперь построим маршруты к каждому известному нам хосту подсети, а затем объединим их в граф (обычно дерево), то мы будем иметь некоторое представление о топологии подсети. Если, к тому же, подсеть имеет несколько шлюзов со внешней сетью, то построение такого же дерева из другой начальной точки (точнее такой, чтобы вход в подсеть происходил через другой шлюз) может дать нам дополнительную информацию о ее топологии. Помощь в такого рода исследованиях может оказать служба (http://www.tracert.com/cgi-bin/trace.pl)

Louse route
------------

Эта опция IP протокола позволяет при отсылке пакета указать основные вехи его маршрута, никак не оговаривая то, как он будет передаваться между ними. В сочетании с опцией Timestamping, она дает возможность запустить пакет в исследуемую подсеть, заставить его там "поболтаться", а затем вернуться, собирая по пути информацию о всех пройденных пунктах маршрута. (Все это, конечно, может быть блокированно корректно настроенным firewall-ом.) На основе нескольких таких "трасс" возможно опять-таки построить некоторый граф подсети, не говоря уже об обнаружении новых, ранее не замеченых хостов.

SNMP
----

Simple Network Managment Protocol был разработан для предоставления возможности удаленного управления сетевыми устройствами, в том числе маршрутизаторами. SNMP-агенты (то есть серверные приложения) входят сегодня в состав многих маршрутизаторов, свитчей и тому подобных устройств, кроме того, в ОС WinNT и Win2K имеется встроеный SNMP-Agent, реализованный в виде сервиса (по умолчанию он выключен). Вторая версия данного протокола предусматривает достаточно надежную аутентификацию, однако она пока почти нигде не используется. В первой же версии происходит только проверка так называемой community-string (посылаемой в plain-text виде по UDP). Стандартными значениями community-string являются "public" и "private", и они, в большинстве случаев, не меняются администраторами. Наиболее простым клиентом к SNMP службе является пакет утилит snmputils под Unix, в состав которого входит snmpwalk, позволяющий получить большое количество интересной информации. Так, в случае WinNT/Win2K, мы можем получить список запущенных процессов (с приоритетами и информацией о занимаемой памяти и процессорном времени), список установленного софта с указанием версий (тот, что появляется в меню Start->Control Panel->Add/Remove Programs), список установленного оборудования и всю текущую информацию о маршрутизации. Более того, есть возможность таким образом изменить настройки маршрутизации, чтобы пустить весь траффик по маршруту, где исследователь сможет подвергнуть его анализу.

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: (это Linux, Pine v4.10)

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.

Заключение

==========
Кому же и зачем нужны подобные алгоритмы? Сегодня спектр их применения весьма широк:

HoneyPot и IDS системы оборудуются софтом, работа которого основана на FP-алгоритмах, производящим отслеживание и идентификацию злоумышлеников.
Используя специальное программное обеспечение, администраторы сетей могут быстро обнаруживать аномальные явления (такие, например, как появление Linux машины в сети Windows машин).
Опытные злоумышленики могут, используя подобные методы, определить версии ОС и ПО удаленной машины с тем, чтобы затем, найдя наиболее уязвимое место, произвести целенаправленную атаку.
Script-kiddies, наоборот, ищут системы, уязвимые для имеющихся у них инструментов.

http://bugtraq.ru/library/security/fp.html
Копирайты!

Последний раз редактировалось KPOT_f!nd; 30.09.2006 в 03:29..