Курсовая работа icon

Курсовая работа



Смотрите также:


Факультет вычислительной математики и кибернетики

Лаборатория вычислительных комплексов


Курсовая работа:


Исследование возможности удаленной идентификации сетевых объектов.


студента 422 группы

Студеникина Р.В.


Научный руководитель:

Гамаюнов Д.Ю.


Москва, 2007

1. Аннотация



Данная курсовая работа посвящена вопросу возможности удалённой идентификации сетевых объектов в сетях TCP/IP/Ethernet. Приведено описание разработанного метода построения профиля объекта при помощи пассивного сканирования, результаты применения метода на компьютерах тестового стенда, а так же планы дальнейшего развития и применения метода.


2. Содержание





1. Аннотация 2

2. Содержание 3

3. Введение 4

4. Постановка задачи 5

5. Формальная постановка задачи 5

6. Обзор сетевых снифферов 6

7. Структура профиля объекта 7

8. Семантика профиля объекта 9

9. Алгоритмы работы системы 10

10.Алгоритм идентификации 12

11. Результаты и перспективы 12

12. Литература 14



3. Введение



Значительную часть компьютерных сетей составляет пользовательское оборудование и серверы. Пользовательское оборудование – это рабочие станции, ноутбуки, карманные компьютеры, прочие мобильные устройства с сетевыми интерфейсами. От каждого такого устройства можно получить довольно много идентифицирующей его и его хозяина информации – имена, адреса разных уровней сетевого стека, версия операционной системы, набор установленных сетевых приложений и так далее. Большинство этих характеристик легко изменить, подделать, и ни одна из них не может на 100% идентифицировать устройство, или его владельца. Поэтому возникает вопрос – существует ли возможность формирования сетевого «отпечатка» устройства, являющегося уникальным хотя бы в рамках отдельной локальной сети.

Задача удаленной идентификации сетевых устройств представляет интерес во многих областях. Например, это задача отслеживания перемещения пользовательских компьютеров в пределах корпоративной сети. В ряде случаев у администраторов частных сетей нет возможности устанавливать программные "метки" на пользовательские компьютеры (понятно, что можно было бы однозначно идентифицировать узел, установив на него специальную прошивку в область BIOS или некий специализированный сетевой сервис). Такой сетью может являться сеть университета, университетского кампуса, сети "домового" провайдера доступа в Интернет. Также большой интерес данная задача представляет для области расследования инцидентов информационной безопасности – отслеживания нарушителей, центров управления ботнетами, и т.п.

Другая область применения - дополнительная проверка аутентичности пользователей при удаленном доступе к некоторым сервисам корпоративной сети. Например, есть сервер терминального доступа, на который пользователи могут получить терминал с использованием SSH. При этом можно использовать стандартные способы аутентификации – пароль, публичный ключ (тем или иным способом - аппаратные ключи, файлы на диске), одноразовые пароли и т.д. (то, что например предоставляет PAM в unix-like системах). Но всегда есть опасность, что паролем или ключом завладеет кто-то, кроме законного владельца. В таких случаях может оказаться полезным отслеживать идентичность тех физических компьютеров, с которых происходит терминальный доступ и, например, оповещать администратора сервера в тех случаях, когда пользователь пытается зайти с ранее неизвестного компьютера. Также следует учитывать, что в таких условиях тот же IP-адрес или доменное имя узла не могут служить его однозначным идентификатором, т.к. могут быть подделаны злоумышленником.

Ещё один пример – отслеживание перемещений мобильных пользователей в масштабах глобальной или региональной сети. Здесь важно учитывать, что интерес для отслеживания могут предоставлять узлы, которые долгое время находятся в пользовании конкретных людей и можно сопоставить устройство его пользователю - мобильные телефоны, ноутбуки, коммуникаторы и т.п.

Для решения рассмотренных проблем очень удобно объединить сетевое устройство, ПО, установленное на этом устройстве и пользователя этого устройства в единое целое. Такое объединение будем называть сетевым объектом. При введенном нами обозначении, очень легко описать всю активность внутри сети.

К примеру, если у нас в сети есть 10 пользователей, работающих на 8 устройствах поочередно, так, что трое из них используют только 2 устройства, шестеро 5 других устройств и одно из 2-х вышеупомянутых, а один пользователь использует только одно оставшееся устройство, то описать состояние сети в данный момент времени, используя понятия «пользователь», «ПО» и «устройство» довольно трудно, особенно если на некоторых устройствах используется несколько операционных систем. Если же описать сеть на уровне объектов, то мы можем сказать, что в сети возможно появление 43 объектов, при этом одновременно может появиться не более, чем 8 и в данный момент находится 5 из них.

То есть, как легко заметить, объект – очень удобная для описания активности в сети единица. Соответственно, возник вопрос: возможно ли по активности объекта в сети однозначно его опознать? При этом мы имеем существенные ограничения на возможности наблюдателя: наблюдатель может только взаимодействовать с объектом в рамках поддерживаемых этим объектом сетевых протоколов, либо прослушивать сетевой трафик, генерируемый объектом (и трафик в обратном направлении - от других объектов сети).

В данной курсовой работе приведено описание результатов исследования возможности получения параметров, описывающих объект и построения модели поведения объекта при помощи пассивного сканирования – то есть пассивного прослушивания и последующего анализа сетевого трафика, генерируемого объектами.


^

4. Постановка задачи





  1. Провести обзор средств сбора и анализа сетевого траффика, выбрать наиболее подходящее для решения задачи;

  2. Разработать структуру и семантику профиля объекта;

  3. Разработать и реализовать алгоритм построения профиля объекта по результатам пассивного сканирования сети;

  4. Реализовать простейший алгоритм идентификации по профилю;

  5. Протестировать алгоритм идентификации на тестовом стенде.



^

5. Формальная постановка задачи



Объект – абстрактная сущность, порождающая сетевую активность в результате взаимодействия устройства, пользователя устройства и ПО, установленного на этом устройстве.

Сеть представляет собой граф G=(V,E), где V- множество вершин (сетевых объектов), E- множество связей между ними. Каждый сетевой объект V представляет собой структуру вида: {x1(t), x2(t), ... , xN(t)} , где xi(t) – параметр объекта, определенный в момент времени t и который может быть замерен удаленно. V может меняться с течением времени.

Определим для каждого объекта его профиль: профилем объекта называется некоторая область P в пространстве параметров {(x1', x1''), (x2', x2''), ...., (xN', xN'')}. Набор профилей всех v из V назовём базой B профилей сети G. Будем говорить о точной идентификации устройства, если в некоторый момент времени, когда производится идентификация, наблюдаемые параметры устройства полностью попадают в профиль устройства.

Для каждого из параметров возможно сопоставить некоторые весовые коэффициенты, которые будут использованы для вычисления функции вероятности F(v, P) принадлежности объекта профилю. При наличии такой функции мы имеем возможность определить неточную идентификацию при «частичном» попадании устройства в профиль, как ситуацию когда F(v,P) > A, F(v, Pi) < A, где A – некоторое пороговое значение вероятности, Pi – любой профиль из имеющейся базы профилей.


Задача идентификации разбивается на две подзадачи:


1) Дано: Сеть, то есть граф G=(V,E).

Необходимо: Для каждого v из V построить профиль.


2) Дано: некоторый объект v'.

Необходимо: определить вектор параметров v' и определить, насколько v' соответствует каждому профилю из B.
^



6. Обзор сетевых снифферов



Пассивное сканирование представляет собой перехват сетевого трафика внутри сегмента сети. Для этого сетевой интерфейс переводится в режим приема всех пакетов, а не только адресованных ему. Программы, использующие эту возможность называются сетевыми снифферами.

Для решения задачи был сделан небольшой обзор популярных снифферов. Были сформулированы требования к функциональности, которой должен обладать сниффер для наибольшего удобства при решении задачи построения профиля:

- Бесплатный

Разумеется, из двух снифферов с одинаковой функциональностью предпочтение будет отдано бесплатному(по понятным причинам).

- Декодирует текст

Самая минимальная функциональность, которой должен обладать сниффер – декодировать текст, переданный в незашифрованном виде

- Парсит протоколы

В лучшем случае, сниффер должен уметь разбирать полученные данные на основе спецификаций протоколов прикладного уровня и предоставлять пользователю результаты разбора.

- Экспорт результатов

Для возможности последующего анализа данных от сниффера, с целью выделения необходимых параметров, необходима возможность экспорта результатов работы сниффера в пригодном для анализа формате: текстовом, либо xml.

- Дружественный интерфейс

Разумеется, интуитивно понятный интерфейс для любой программы является плюсом. Поэтому мы не будем опускать эту характеристику.


В обзоре учавствовали снифферы Iris, Ettercap, Wireshark(продолжение проекта ethereal) и классический TCPDump с набором дополнительных утилит[1]. Все снифферы были установлены и протестированы. Результаты тестирования представлены в следующей таблице:





Iris

Ettercap

Wireshark(ethereal)

TCPDump

Бесплатный

Нет

Да

Да

Да

Декодирует текст

Да

Да

Да

Да

Парсит протоколы

Да

Да

Да

Нет

Экспорт результатов

Нет

Нет

Да

Нет

Дружественный интерфейс

Да

Нет

Да

Нет

Таблица 1. Сравнение сетевых снифферов

После проведения обзора, для решения задачи построения профиля объекта вспомогательным инструментом был выбран сниффер Wireshark, удовлетворяющий всем представленным требованиям.

^



7. Структура профиля объекта



Множество параметров профиля итоговой системы идентификации можно разбить на три класса:

  1. Получаемые в результате активного сканирования при помощи сканера nmap Этот класс рассмотрен в рамках работы по курсовой прошлого года; [15], [16], [17]

  2. Получаемые в результате пассивного прослушивания и анализа трафика при помощи сниффера wireshark.[19] Этот класс отличен от остальных тем, что параметры, полученные при сканировании, помимо «описания» объекта, содержат информацию, по которой возможно построение модели поведения объекта. Построение профиля по параметрам данного класса было основной задачей этого года;

  3. Получаемые при помощи дополнительных алгоритмов. [14] Получение параметров этого класса планируется реализовать летом/в начале следующего года.


Ниже приводится список параметров, которые можно получить посредством пассивного сканирования. Все параметры разбиты по соответствующим им протоколам прикладного уровня и по позиции клиент-серверной модели. Здесь «Сторона пользователя» означает, что вложенные параметры являются параметрами, характеризующими объект, являющийся клиентом при сетевом взаимодействии по соответствующему протоколу в пределах некоторой сессии. Соответственно, «Сторона сервера» - параметры, характеризующие объект, выступающий сервером при взаимодествии в пределах некоторой сессии. Для некоторых протоколов в списке параметров нет разделения по клиент-серверной модели – это означает, что данный протокол не реализует клиент-серверную модель, либо для этого протокола от обеих сторон можно получить одну и ту же информацию. Профиль объекта может содержать как параметры со стороны сервера, так и со стороны клиента, если за время сканирования объект выступал и в роли сервера и в роли клиента. Для реализации алгоритма выбирались наиболее часто используемые протоколы с открытой спецификацией.


HTTP [5]

  • Сторона пользователя:

    • Запрошенные страницы

    • Введённые в формы данные

    • Браузер

    • Cookies

  • Сторона сервера:

    • Строка сервера


POP [6]

  • Сторона пользователя:

    • Адреса запрошенных серверов

    • Имя пользователя, пароль

    • Частота опроса сервера

    • Кол-во сообщений на сервере

  • Сторона сервера:

    • Строка ответа +OK


SMTP [7], [8]

  • Сторона пользователя:

    • Имя пользователя

    • Почтовый агент

    • Расширения Агента (к примеру enigmail)

    • Зашифрованный пароль

    • Частота обращений

  • Сторона сервера:

    • Приветствие в ответ на EHLO

    • Расширения ESMTP


AOL [20]

  • Сторона пользователя:

    • Номер ICQ

    • Запрошенные сервисы

    • Контакт-лист

  • Сторона Сервера:

    • Список возможностей сервера


SSH [9]

  • Протокол

  • Алгоритмы шифрования

  • Алгоритмы сжатия

  • Mac алгоритмы

  • Kex алгоритмы


TLS [10]

  • Сторона пользователя:

    • Алгоритмы шифрования

  • Сторона сервера:

    • Версия

    • Алгоритм шифрования

    • Сертификат


FTP [11]

  • Сторона пользователя:

    • Имя пользователя, пароль

    • Директория по умолчанию

  • Сторона сервера:

    • Строка server ready

    • Строка welcome

    • Ответ на Syst


NET BIOS [12]

- Имя компьютера

- Домен / Рабочая группа


MS BROWSER

- Тип сервера

- Комментарий


DNS

  • Сторона пользователя:

    • Адрес сервера



^

8. Семантика профиля объекта



Система построения профиля реализована на языке C# для Windows и фреймворка .Net версии не ниже 2.0. Часть профиля, строящаяся на основе вышеописанных параметров, в программной реализации представляет собой набор классов, а именно:


Public class profile_http;

Public class profile_pop;

Public class profile_smtp;

Public class profile_aol;

Public class profile_ssh;

Public class profile_ssl;

Public class profile_ftp;

Public class profile_netbios;

Public class profile_browser;

Public class profile_dns;


Каждый из этих классов содержит поля для записи параметров, полученных при анализе соответствующего протокола прикладного уровня модели OSI. Экpемпляр каждого класса присутствует в классе Tprofile, экземпляр которого и есть та структура данных, которую мы называем профилем объекта. Соответственно, каждому объекту приписывается единственный экземпляр этого класса, идентифицирующий его среди остальных объектов сети. Каждый из этих классов является наследником абстрактного класса simple_profile:


public abstract class simple_profile

{

public abstract bool Changed

{

get;

}

public abstract void Clear();

public abstract void Merge(simple_profile pf);


…………………………………

…………………………………


}


Т.е каждый наследник класса simple_profile должен содержать перегруженные процедуры Clear() – «очищение» объекта класса(установление значений по умолчанию) и Merge() – слияние двух объектов описываемого класса в один. Также он должен содержать доступное только для чтения поле Changed, устанавливающееся в true только тогда, когда хотя бы одно из полей этого класса отлично от значения по умолчанию.
^

9. Алгоритмы работы системы



Разработанная система состоит из следующих элементов:

  1. База профилей. Представляет собой один xml файл, содержащий профили всех объектов.

  2. Сниффер. В качестве сниффера выбран сниффер wireshark. Профиль объекта строится на основе параметров, полученных в результате анализа декодированного сниффером сетевого трафика.

  3. Анализатор - модуль анализа декодированного сниффером сетевого трафика. Является основным компонентом системы идентификации. Получает на вход декодированный трафик, выделяет из него нужные параметры и заполняет соответствующие элементы профиля.

  4. Графический интерфейс - модуль отображения и управления профилями объектов. Позволяет манипулировать имеющимимся профилями: добавлять в базу новые профили, полученные при проведенном анализе трафика, удалять из нее старые, либо дополнять их параметрами, полученными при новом сканировании.


Алгоритм построения профиля объекта при помощи анализа трафика, полученного пассивным образом, представляется следующим образом(рис.1):




Рис.1. Схема работы системы


Сетевой сниффер(wireshark) слушает траффик внутри сети, после чего результат его работы, отфильтрованный по списку нужных нам протоколов, сохраняется в виде xml-файла. Этот файл подается на вход системе построения профилей(Анализатору). Анализатор строит профили для всех объектов, учавствовавших во взаимодействиях и зарегистрированных сниффером, после чего, в правой части главной формы системы появляется список построенных профилей (смотри скриншот ниже).




Рис.2. Главное окно системы


После построения списка профилей, можно отбросить из них ненужные, применив маску сети. Выделив галочками нужные профили, можно добавить их в базу профилей для дальнейшего использования(разумеется, базу можно сохранять и загружать). База профилей отображается в левой части окна и её, при необходимости, можно фильтровать по маске сети. Также, для удобства использования, каждому профилю можно дать имя, нажав 2 раза кнопкой мыши на соответствующую запись.

Если в результатах сканирования содержится профиль, описывающий объект, профиль которого уже есть в базе, то можно дополнить существующий профиль данными из вновь построенного. Для этого следует выбрать нужный профиль в списке профилей базы, соответствующий ему профиль из списка новых профилей и нажать кнопку Merge.


^

10.Алгоритм идентификации


В этом году планировалась реализация метода идентификации на основе простого сравнения всех параметров полученного профиля с соответствующими параметрами каждого профиля из базы, но реализации не последовало по следующим причинам:

1. Нехватка ресурсной базы, т.е остутсвие доступа к трафику какой-либо корпоративной сети. Следует отметить, что построение стенда, автоматически имитируещего пользовательскую активность для рассматриваемой задачи, представляет собой задачу, возможно сравнимую по сложности решения с основной задачей. Без построения профилей объектов реальной сети проводить идентификацию бессмысленно, поскольку тестовых профилей было мало и у них практически отсутствовали совпадающие параметры, следовательно функция идентификации давала бы очень высокой результат, по которому совершенно нельзя было бы объективно судить об эффективности метода идентификации.


2. На 5-м курсе планируется реализовать более эффективный алгоритм идентификации(нейросети, статистические методы и т.п.), следовательно реализация этого простейшего метода идентификации без экпериментальной базы не принесет никаких результатов.


^

11. Результаты и перспективы



В течение года были проделаны следующие шаги:

  • Сделан обзор средств перехвата и анализа сетевого траффика, из них выбран сниффер Wireshark, полностью удовлетворяющий поставленным для решения задачи требованиям;

  • Разработана структура и семантика профиля объекта;

  • Реализован алгоритм построения профилей объектов по результатом пассивного сканирования сети;

  • Разработан графический интерфейс для использования системы.


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


В следующем году планируется реализовать следующую функциональность системы:

  • Cравнение выбранных профилей, в результате которого будет выведен список отличающихся параметров

  • Идентификация выбранного нового профиля среди профилей базы. В результате этого действия будет выведен список профилей базы, наиболее «похожих» на выбранный из нового списка профиль, с указанием значения функции идентификации, выраженного в процентах, обозначающих вероятность совпадения профилей.

  • Добавить возможность запуска сканера nmap и получения от него результатов с целью добавления в профиль.

  • Добавить реализацию алгоритма идентификации физического устройства [14]

В следующем году, для тестирования системы идентификации, планируется открыть web-сервис, на котором каждый желающий, в качестве развлечения, может нажать кнопку «запомни меня», после чего будет произведено сканирование этого объекта, сформирован профиль и сохранен в базу профелей. Через некоторое время, тот же пользователь может еще раз зайти на сайт и, нажав на кнопку «опознай меня», получить результат идентификации и список изменившихся параметров.


12. Литература



[1] Joseph D. Sloan, «Network Troubleshooting Tools» // O'Reilly press 2001

http://www.opennet.ru/opennews/art.shtml?num=824&showsection=9_

[2] Rafter <igoronli@online.ru>, «Сниффинг сети на коммутаторах» // 5 апреля 2003

http://www.opennet.ru/base/sec/arp_snif.txt.html

[3] Vadim Kolontsov>, «Безопасность TCP/IP» // 2000

http://citforum.ru/internet/securities/tcpip.shtm

[4] Postel, J., "Internet Protocol - DARPA Internet Program Protocol Specification," RFC 791, USC/Information Sciences Institute // September 1981.

[5] R. Fielding, UC Irvine, J. Gettys, “RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1” //June 1999

[6] J. Elliott, “RFC 1399 - Post Office Protocol - Version 3” //January 1997

[7] J. Klensin, AT&T Laboratories – “RFC 2821 - Simple Mail Transfer Protocol” // Апрель 2001

[8] J. Myers – “RFC 2554 - SMTP Service Extension for Authentication” // Март 1999

[9] T. Ylonen, C. Lonvick, “RFC 4251 - The Secure Shell (SSH) Protocol Architecture“ //January 2006

[10] T. Dierks, C. Allen “RFC 2246 - The TLS Protocol” //January 1999

[11] J. Postel, J. Reynolds, “RFC 959 - FILE TRANSFER PROTOCOL (FTP) “ //October 1985

[12] Network Working Group, “RFC 1001 - Protocol standard for a NetBIOS service on a TCP/UDP transport: Concepts and methods” //March 1987

[13] Lance Spitzner, “Passive Fingerprinting” // May 2000

[14] Tadayoshi Kohno, Andre Broido, K.C. Claffy, “Remote physical device fingerprinting” //May 2005

[15] Michal Zalewski, “P0f Project Information” // 2006-09-06

http://lcamtuf.coredump.cx/p0f.shtml

[16] Xprobe2, “Active OS Fingerprinting Tool” // 2007

http://xprobe.sourceforge.net/

[17] Fyodor, Алексей Волков, «Определение операционной системы удаленного хоста» // 1997-2000

http://www.insecure.org/nmap/nmap-fingerprinting-article-ru.html

[18] Cisco Systems, Inc, «Программа сетевой академии Cisco CCNA 1 и 2. Вспомогательное руководство, 3-е издание» // «Вильямс» 2005г

[19] Ulf Lamping , Richard Sharpe , Ed Warnicke, “Wireshark User's Guide” // 2004-2007

[20] Alexandr Shutko, “OSCAR. Open System for Communication in Realtime” // February 2005

http://etherbat.cryptonix.org/





Скачать 181,01 Kb.
Дата конвертации06.03.2013
Размер181,01 Kb.
ТипКурсовая
Разместите кнопку на своём сайте или блоге:
rud.exdat.com


База данных защищена авторским правом ©exdat 2000-2012
При копировании материала укажите ссылку
обратиться к администрации
Документы