ИССЛЕДОВАНИЕ ВОЗМОЖНОСТИ УДАЛЕННОЙ ИДЕНТИФИКАЦИИ СЕТЕВЫХ УСТРОЙСТВ Гамаюнов Д.Ю., Студеникин Р.В. Факультет ВМиК МГУ им. М.В. Ломоносова, Россия 119992, Москва, ГСП-2, Ленинские горы, МГУ, 2-й уч. корпус, ф-т ВМиК Emails: [email protected], [email protected] Аннотация Данная статья посвящена задаче удалённой идентификации сетевых устройств в сетях TCP/IP/Ethernet по профилю - набору параметров устройств, позволяющих отличать устройства друг от друга. Приведено описание метода идентификации на ограниченном наборе параметров и результаты применения метода на компьютерах тестовой сети. Введение Значительную часть компьютерных сетей составляет пользовательское оборудование и серверы. Пользовательское оборудование – это рабочие станции, ноутбуки, карманные компьютеры, прочие мобильные устройства с поддержкой WiFi. Каждое пользовательское устройство в сети содержит большое количество идентифицирующей его информации – имена, адреса разных уровней сетевого стека, версия операционной системы, набор установленных сетевых приложений и так далее. Большинство этих характеристик легко изменить, подделать и ни одна из них не может на 100% идентифицировать устройство. Поэтому возникает вопрос – существует ли возможность формирования сетевого «отпечатка» устройства, являющегося уникальным хотя бы в рамках отдельной локальной сети. Задача удаленной идентификации сетевых устройств представляет интерес во многих областях. Например, это задача отслеживания перемещения пользовательских компьютеров в пределах корпоративной сети. В ряде случаев у администраторов частных сетей нет возможности устанавливать программные "метки" на пользовательские компьютеры (понятно, что можно было бы однозначно идентифицировать узел, установив на него специальную прошивку в область BIOS или некий специализированный сетевой сервис). Такой сетью может являться сеть университета, университетского кампуса, сети "домового" провайдера доступа в Интернет. Также большой интерес данная задача представляет для области расследования инцидентов информационной безопасности – отслеживания нарушителей, центров управления ботнетами, и т.п. Другая область применения - дополнительная проверка аутентичности пользователей при удаленном доступе к некоторым сервисам корпоративной сети. Например, есть сервер терминального доступа, на который пользователи могут получить терминал с использованием SSH. При этом можно использовать стандартные способы аутентификации – пароль, публичный ключ (тем или иным способом - аппаратные ключи, файлы на диске), одноразовые пароли и т.д. (то, что например предоставляет PAM в unix-like системах). Но всегда есть опасность, что паролем или ключом завладеет кто-то, кроме законного владельца. В таких случаях может оказаться полезным отслеживать идентичность тех физических компьютеров, с которых происходит терминальный доступ и, например, оповещать администратора сервера в тех случаях, когда пользователь пытается зайти с ранее неизвестного компьютера. Также следует учитывать, что в таких условиях тот же IP-адрес 1 или доменное имя узла не могут служить его однозначным идентификатором, т.к. могут быть подделаны злоумышленником. Ещё один пример – отслеживание перемещений мобильных пользователей в масштабах глобальной или региональной сети. Здесь важно учитывать, что интерес для отслеживания могут предоставлять узлы, которые долгое время находятся в пользовании конкретных людей и можно сопоставить устройство его пользователю - мобильные телефоны, ноутбуки, коммуникаторы и т.п. Во всех таких случаях задача сводится к вопросу - можно ли по активности устройства в сети однозначно его опознать. При этом мы имеем существенные ограничения на возможности наблюдателя: наблюдатель может только взаимодействовать с устройством в рамках поддерживаемых этим устройством сетевых протоколов, либо прослушивать сетевой трафик, генерируемый устройством (и трафик в обратном направлении - от различных узлов сети к устройству). В данной статье проведено описание результатов исследования возможности удаленной идентификации методом удаленного сканирования – то есть при помощи активных сканирующих "проб" - запросов к сетевым устройствам и анализа получаемых ответов. Сетевой профиль устройства Основным объектом исследования в данной работе является сетевой профиль устройства, или просто профиль. Под профилем мы будем понимать структуру списочного типа, в которой элементом структуры является набор характеристик устройства для отдельного уровня стека TCP/IP. Как уже было упомянуто во введении, мы рассматриваем, по возможности, все характеристики, которые могут отличать одно устройство от другого: это идентификаторы устройства, операционной системы, приложения или пользователя на различных уровнях сетевого стека, идентифицирующую и авторизующую информацию различных прикладных протоколов, временные метки, «отпечатки» операционных систем и т.д. Данные характеристики различаются как по уровню, так и по методу замера: активный метод: характеристики замеряются в ходе процесса, инициированного замеряющим устройством, активное сканирование; пассивный метод: характеристики замеряются в ходе пассивного анализа сетевого трафика от анализируемого устройства в ходе взаимодействия с остальными устройствами в сети или в Итернете (например, на установленном в сети сниффере); полупассивный метод: характеристики замеряются в ходе взаимодействия замеряющего устройства с анализируемым по соединению, инициированному анализируемым устройством (например, на web-сервере, на proxy-сервере и т.п.). В рамках данной статьи будут рассмотрены только те харатеристики, которые можно получить активным методом. В дальнейшем планируется расширить профиль остальными характеристиками, которые требуют намного большего объёма экспериментов. Также мы рассматриваем только те характеристики, которые не зависят от географического положения устройства и способа его подключения к сети (кабель, WiFi, модем и т.п.). Семантически профиль устройства представляет собой объединение отпечатков аппаратной части устройства, операционной системы с набором коммуникационного программного обеспечения, и отпечатков пользователей данного устройства. Соответствующие отпечатки естественным образом ложатся на различные уровни сетевого стека. 2 Характеристики аппаратуры Аппаратная часть устройства в сети обладает рядом уникальных в рамках этой сети характеристик, что обусловлено как требованиями стандартов, так и физическими свойствами аппаратуры. Рассмотрим характеристики устройства, которые можно замерить удалённо на физическом и канальном уровнях сетевого стека: Физический уровень Отклонение системных часов – скорость убегания или отставания аппаратных часов устройства. Активный замер данной характеристики возможен с помощью запросов ICMP TimeStamp. Подробно вопрос удаленного замера отклонения часов рассмотрен в работе [9], включая экспериментальное исследование уникальности данной характеристики. Канальный уровень Список MAC-адресов сетевых интерфейсов устройства. Данная характеристика является условно уникальной в масштабе всего Интернета, хотя на практике данное требование часто нарушается. Тем не менее, в рамках одной коммутированной сети MACадрес устройства можно считать уникальным. Данная характеристика для большинства операционных систем является неустойчивой к изменению состава аппаратной части устройства – замене сетевых интерфейсов или добавлению новых (исключая ОС Solaris). Характеристики операционной системы и ПО Удалённое определение типа операционной системы давно активно используется для решения различных задач информационной безопасности, и в настоящее время доступно несколько инструментальных средств удалённого определения операционной системы: nmap [10], xprobe2 [14] и p0f [13]. В данной работе мы используем набор тестов сканера nmap для получения готового отпечатка операционной системы. При этом нас будет интересовать не тип операционной системы, а сам отпечаток. Рассмотрим перечень характеристик, которые можно удалённо получить удалённым сканированием устройства на сетевом, транспортном и прикладном уровнях: Сетевой уровень Реакция на ICMP сообщения (тест nmap). Транспортный Параметры TCP (тесты nmap): закон изменения ISN устройства; определение TCP- опций (SYN пакет на открытый порт); результат обработки NULL-пакета, отправленного на открытый порт; тест обработки SYN|FIN|PSH|URG-пакета, отправленного на открытый порт; тест обработки ACK-пакета, отправленного на открытый порт; тест обработки SYN-пакета, отправленного на закрытый порт; тест обработки ACK-пакета, отправленного на закрытый порт; тест обработки FIN|PSH|URG-пакета, отправленного на закрытый порт; Прикладной Список открытых портов (список коммуникационных приложений). Версия приложения. При составлении данного списка характеристик было сделано существенное предположение о том, что для каждого активно используемого устройства характерен свой набор коммуникационных приложений и их версий, и данный набор меняется со временем не очень существенно. Данное предположение эмпирически недоказуемо, но с большой вероятностью верно для персональных устройств отдельных пользователей, а также северов 3 приложений с большим количеством пользователей, т.к. в каждом из этих случаев состав приложений определяется функциональным назначением устройства. Также следует учитывать, что отдельно каждая характеристика профиля может изменяться в достаточно широких пределах, и определение «порога» идентификации по профилю – доли совпадающих характеристик, необходимой для успешной идентификации, является отдельной сложной задачей, которую необходимо решить в ходе дальнейших исследований. Задача идентификации В данной работе задача идентификации устройства по профилю формулируется следующим образом: для каждого устройства в заданной сети в некоторый момент времени построить профиль и постоянно отслеживать состав устройств в сети и их соответствие построенному набору профилей. В таком виде задача соответствует задаче контроля состава устройств в сети, их перемещения и изменений программно-аппаратной конфигурации. Формально задачу идентификации можно разбить на две подзадачи: 1) Построение базы профилей Дано: Сеть, то есть граф G=(V,E). V-множество узлов сети, E-множество связей между ними. Необходимо: Для каждого v из V построить профиль. 2) Сопоставление устройства и профиля Дано: Некоторый узел v' и база профилей B. Необходимо: Построить текущий профиль v' и определить, насколько v' соответствует каждому профилю из B. Решение первой подзадачи, по сути, представляет собой фазу «обучения» системы идентификации – период первоначального построения эталонной базы профилей устройств в сети. Решение второй задачи сводится к распознаванию принадлежности устройства к множеству известных устройств в произвольный момент времени. Построенная экспериментальная система идентификации представляет собой программное решение двух вышеописанных подзадач задачи идентификации и состоит из следующих элементов: База профилей: набор файлов с профилями, описывающими устройства исследуемой сети. Сканер: в качестве сканера был выбран сетевой сканер nmap. Используется для активного сканирования удалённого устройства с целью получения параметров для формирования профиля устройства. Модуль анализа результатов сканирования и идентификации: реализует простой метод идентификации сопоставлением профилей. 4 1. Режим первоначального построения базы профилей (рис. 1). Рис. 1. Период обучения системы идентификации На вход программе в виде параметра поступает имя (или IP-адрес) устройства v, после чего происходит сканирование указанного устройства, разбор результатов сканирования (формирование профиля P устройства) и вывод профиля в указанный отдельный файл. Эту операцию необходимо провести для каждого v из V. 2. Идентификация устройства по запросу (рис. 2): Рис. 2. Идентификация устройства по запросу. На вход программе в виде параметра поступает имя устройства (или его ip-адрес), после чего происходит сканирование указанного устройства, разбор результатов сканирования (формирование вектора параметров v'). После этого выполняется сравнение 5 полученного вектора параметров со всеми профилями из базы профилей. Сравнение представляет собой попарное сравнение каждого параметра xi из v' c соответствующими параметрами профиля. Описание и результаты экспериментов Для эксперимента была использована локальная сеть лаборатории на факультете ВМиК МГУ. Данная сеть является коммутированной гетерогенной сетью, в которой представлены различные способы подключения (FastEthernet, WiFi), различные операционные системы (Linux, Windows, Solaris) и различные по назначению сетевые устройства – серверы приложений, персональные рабочие станции. Поскольку исследуемый метод идентификации предполагает сравнение полученного профиля устройства с профилями из заранее составленной базы, то на первом этапе была сформирована база профилей доступных устройств. Для этих целей из arp-таблицы одного из серверов тестовой сети были получены IP-адреса устройств, активных на тот момент. После чего все устройства были просканированы и результаты сканирования сохранены в разные файлы. На первом этапе удалось просканировать 18 различных устройств. Для «чистоты эксперимента» при формировании профилей не производился замер отклонения часов удаленного устройства, т.к. данная характеристика достаточно полно исследована в работе [9]. В результате сканирования было обнаружено, что 5 из них имеют абсолютно идентичные профили (один открытый порт и одинаковую реакцию на нестандартные tcpпакеты), а 4 устройства не имеют ни одного открытого порта, и, соответственно, проведение полного tcp-сканирования невозможно. При анализе результатов построения профилей оказалось, что 5 идентичных профилей были построены для тонких клиентов SunRay, а 4 упомянутых устройства фильтровали входящий трафик встроенным межсетевым экраном. Т.к. различать эти устройства можно только по отклонению часов, при проведении второй части эксперимента они были отброшены и дальнейшее исследование проводилось без них. Т.е. в базе оказалось 9 профилей устройств. Второй этап эксперимента был проведен дважды. Через 3 дня после первого этапа (построения базы профилей) сеть была просканирована и для каждого устройства заново построен профиль, каждый из которых был сопоставлен со всем профилями из базы профилей. В результате эксперимента все 9 устройств были удачно сопоставлены своим профилям (т.е. идентифицированы). При идентификации одного из устройств результат идентификации для 2-х профилей, не соответствующих в реальности данному устройству был выше нормы, а именно 0.73. В это же время для профиля, описывающего данное устройство результат был 0.89. Для всех остальных устройств такой близости профилей не наблюдалось. Второй эксперимент был проведен через месяц после формирования базы профилей. В этом эксперименте также удачно были идентифицированы все 9 устройств, но, для 2-х из них, функция идентификации показала результат 0.65-0.67 при работе с профилями, описывающими соответствующие устройства. Для профилей, не описывающих идентифицируемое устройство, результат для всех (кроме одного) профилей был в диапазоне 0.05-0.23, для одного – 0.4. 6 Заключение Проведенные эксперименты показали, что при условии отсутствия на устройствах межсетевых экранов, настроенных на блокирование всех входящих соединений (что типично для некоторых межсетевых экранов пользовательских машин), идентификация устройства использованным нами методом даёт хорошие результаты. Следует отметить, что в экспериментах был использован простейший алгоритм идентификации по профилю устройства, в котором выполняется непосредственное сравнение параметров профиля с полученными от устройства. Напрашивается идея использовать отработанные методы распознавания образов и классификации, такие как нейронные сети и кластерный анализ, для решения данной задачи, так как постановка задачи практически повторяет типовые постановки задачи распознавания образов. В связи с тем, что процент отфильтрованных машин довольно велик, следует сделать вывод об ограниченной применимости удалённой идентификации устройств лишь на основе активного сканирования – требуется расширение набора входящих в профиль параметров, в частности, за счет использования пассивного и полупассивного сканирования. В состав профиля можно внести «модель окружения» данного устройства: типичный для него набор взаимодействующих узлов и сервисов в сети, идентифицирующие данные прикладных протоколов и т.д. Литература [1] J. Postel, RFC 792 - «Internet Control Message Protocol», DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION // September 1981 [2] J. Klensin, RFC 2821 - «Simple Mail Transfer Protocol» // April 2001 [3] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee, RFC 2616 «Hypertext Transfer Protocol – HTTP/1.1» // June 1999 [4] J. Postel, J. Reynolds, RFC 959 - «File Transfer Protocol» // October 1985 [5] Cisco Systems, Inc, «Программа сетевой академии Cisco CCNA 1 и 2. Вспомогательное руководство, 3-е издание» // «Вильямс» 2005г [6] Xylan Corporation, «Модель OSI», http://www.citforum.ru/nets/switche/osi.shtml //1997 [7] Wikipedia, the free encyclopedia, «OSI model», http://en.wikipedia.org/wiki/OSI_model [8] Брежнев А.Ф., Смелянский Р.Л., «Семейство протоколов TCP/IP» http://www.markitt.ru/FWO/tcpip/ // 1994 [9] Tadayoshi Kohno, Andre Broido, K.C. Claffi, «Remote Physical Device Fingerprinting» // IEEE Computer Society Press, May 2005 [10] Fyodor<[email protected]>, Алексей Волков<[email protected]>, «Определение операционной системы удаленного хоста», http://www.insecure.org/nmap/nmap-fingerprintingarticle-ru.html // 1997-2000 [11] Wikipedia, the free encyclopedia, «List of TCP and UDP port numbers», 7 http://en.wikipedia.org/wiki/TCP_and_UDP_port_numbers [12] Bernard Aboba <[email protected]>, Tony Ballardie <[email protected]>, Barry Howard <[email protected]>, «Protocol Numbers», http://www.iana.org/assignments/protocol-numbers // last updated 28 March 2006 [13] Michal Zalewski, P0f Project Information // http://lcamtuf.coredump.cx/p0f.shtml [14] Xprobe2, Active OS Fingerprinting Tool, 2007// http://xprobe.sourceforge.net/ 8